From 1a64deeb894dc95e2645a75771732c6cc53a79ad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Isma=C3=ABl=20Bouya?=
Date: Wed, 4 Oct 2023 01:35:06 +0200
Subject: Squash changes containing private information
There were a lot of changes since the previous commit, but a lot of them
contained personnal information about users. All thos changes got
stashed into a single commit (history is kept in a different place) and
private information was moved in a separate private repository
---
.envrc | 32 +-
.gitconfig | 9 -
.gitignore | 3 +-
.gitmodules | 3 -
DOCUMENTATION.md | 30 +-
Makefile | 130 +-
default.nix | 14 +-
deploy/flake.lock | 9816 +++++++++++++++
deploy/flake.nix | 45 +
environments/default.nix | 4 -
environments/immae-eu.nix | 146 -
flake.lock | 9825 +++++++++++++++
flake.nix | 47 +
flakes/backports/flake.lock | 13 +-
flakes/backports/flake.nix | 105 +-
flakes/copanier/default.nix | 30 +
flakes/copanier/fix_reduce.patch | 13 +
flakes/copanier/flake.lock | 59 +
flakes/copanier/flake.nix | 28 +
flakes/copanier/poetry.lock | 995 ++
flakes/copanier/pyproject.toml | 40 +
flakes/diaspora/default.nix | 74 +
flakes/diaspora/flake.lock | 75 +
flakes/diaspora/flake.nix | 214 +
flakes/diaspora/gemset.nix | 3047 +++++
flakes/diaspora/gemset_ldap.nix | 3056 +++++
flakes/diaspora/ldap.patch | 256 +
flakes/etherpad-lite/default.nix | 68 +
flakes/etherpad-lite/etherpad_cleanup.sql | 30 +
flakes/etherpad-lite/flake.lock | 150 +
flakes/etherpad-lite/flake.nix | 227 +
flakes/etherpad-lite/libreoffice_patch.diff | 12 +
.../ep_aa_file_menu_toolbar/node-packages.json | 1 +
.../ep_aa_file_menu_toolbar/node-packages.nix | 26 +
.../modules/ep_adminpads/node-packages.json | 1 +
.../modules/ep_adminpads/node-packages.nix | 27 +
.../modules/ep_align/node-packages.json | 1 +
.../modules/ep_align/node-packages.nix | 26 +
.../modules/ep_bookmark/node-packages.json | 1 +
.../modules/ep_bookmark/node-packages.nix | 26 +
.../modules/ep_clear_formatting/node-packages.json | 1 +
.../modules/ep_clear_formatting/node-packages.nix | 25 +
.../modules/ep_colors/node-packages.json | 1 +
.../modules/ep_colors/node-packages.nix | 25 +
.../modules/ep_comments_page/node-packages.json | 1 +
.../modules/ep_comments_page/node-packages.nix | 342 +
.../ep_copy_paste_select_all/node-packages.json | 1 +
.../ep_copy_paste_select_all/node-packages.nix | 26 +
.../modules/ep_cursortrace/node-packages.json | 1 +
.../modules/ep_cursortrace/node-packages.nix | 26 +
.../ep_delete_empty_pads/node-packages.json | 1 +
.../modules/ep_delete_empty_pads/node-packages.nix | 26 +
.../etherpad-lite/modules/ep_embedmedia/fix.patch | 85 +
.../modules/ep_embedmedia/node-packages.json | 1 +
.../modules/ep_embedmedia/node-packages.nix | 29 +
.../modules/ep_font_family/node-packages.json | 1 +
.../modules/ep_font_family/node-packages.nix | 27 +
.../modules/ep_font_size/node-packages.json | 1 +
.../modules/ep_font_size/node-packages.nix | 27 +
.../modules/ep_headings2/node-packages.json | 1 +
.../modules/ep_headings2/node-packages.nix | 26 +
.../etherpad-lite/modules/ep_immae_buttons/ep.json | 13 +
.../modules/ep_immae_buttons/hooks.js | 6 +
.../modules/ep_immae_buttons/node-packages.nix | 22 +
.../modules/ep_immae_buttons/package.json | 10 +
.../modules/ep_immae_buttons/static/js/main.js | 67 +
.../ep_immae_buttons/templates/editbarButtons.ejs | 12 +
.../modules/ep_ldapauth/node-packages.json | 1 +
.../modules/ep_ldapauth/node-packages.nix | 392 +
.../etherpad-lite/modules/ep_line_height/fix.patch | 30 +
.../modules/ep_line_height/node-packages.json | 1 +
.../modules/ep_line_height/node-packages.nix | 28 +
.../modules/ep_markdown/node-packages.json | 1 +
.../modules/ep_markdown/node-packages.nix | 300 +
.../etherpad-lite/modules/ep_mypads/fix_ldap.patch | 59 +
.../modules/ep_mypads/node-packages.json | 1 +
.../modules/ep_mypads/node-packages.nix | 2156 ++++
.../modules/ep_page_view/node-packages.json | 1 +
.../modules/ep_page_view/node-packages.nix | 26 +
.../modules/ep_previewimages/node-packages.json | 1 +
.../modules/ep_previewimages/node-packages.nix | 26 +
.../modules/ep_private_pad/node-packages.json | 1 +
.../modules/ep_private_pad/node-packages.nix | 2056 +++
.../modules/ep_ruler/node-packages.json | 1 +
.../modules/ep_ruler/node-packages.nix | 27 +
.../modules/ep_scrollto/node-packages.json | 1 +
.../modules/ep_scrollto/node-packages.nix | 29 +
.../modules/ep_set_title_on_pad/node-packages.json | 1 +
.../modules/ep_set_title_on_pad/node-packages.nix | 26 +
.../ep_subscript_and_superscript/font.patch | 22 +
.../node-packages.json | 1 +
.../ep_subscript_and_superscript/node-packages.nix | 28 +
.../modules/ep_timesliderdiff/node-packages.json | 1 +
.../modules/ep_timesliderdiff/node-packages.nix | 26 +
flakes/etherpad-lite/node-packages.nix | 2934 +++++
flakes/files-watcher/flake.nix | 2 +
flakes/flake.lock | 9669 +++++++++++++++
flakes/flake.nix | 67 +
flakes/grocy/default.nix | 47 +
flakes/grocy/flake.lock | 150 +
flakes/grocy/flake.nix | 35 +
flakes/grocy/php-packages.nix | 457 +
flakes/grocy/yarn-packages.nix | 1085 ++
flakes/grocy/yarn.patch | 67 +
flakes/lib/flake.lock | 272 +-
flakes/lib/flake.nix | 76 +-
flakes/loginctl-linger/flake.nix | 56 +
flakes/mastodon/default.nix | 94 +
flakes/mastodon/flake.lock | 75 +
flakes/mastodon/flake.nix | 331 +
flakes/mastodon/gemset.nix | 2816 +++++
flakes/mastodon/yarn-packages.nix | 12344 +++++++++++++++++++
flakes/mediagoblin/bower-packages.nix | 8 +
flakes/mediagoblin/default.nix | 213 +
flakes/mediagoblin/flake.lock | 78 +
flakes/mediagoblin/flake.nix | 271 +
flakes/mediagoblin/ldap_fix.py | 93 +
flakes/mediagoblin/plugins/basicsearch/default.nix | 18 +
flakes/multi-apache-container/flake.lock | 36 +
flakes/multi-apache-container/flake.nix | 389 +
flakes/mypackages/flake.lock | 83 +
flakes/mypackages/flake.nix | 43 +
flakes/mypackages/lib/default.nix | 37 +
flakes/mypackages/lib/flake-parts-lib.nix | 10 +
flakes/mypackages/lib/node-env.nix | 542 +
flakes/mypackages/lib/private/default.nix | 20 +
.../overlays/bitlbee-discord/default.nix | 12 +
.../overlays/bitlbee/bitlbee_long_nicks.patch | 56 +
flakes/mypackages/overlays/bitlbee/default.nix | 5 +
.../overlays/databases/mysql/default.nix | 28 +
.../overlays/databases/postgresql/default.nix | 8 +
flakes/mypackages/overlays/default.nix | 25 +
flakes/mypackages/overlays/gitolite/default.nix | 8 +
flakes/mypackages/overlays/gitolite/invite | 172 +
flakes/mypackages/overlays/gitweb/default.nix | 7 +
.../overlays/gitweb/theme/git-favicon.png | Bin 0 -> 1125 bytes
.../mypackages/overlays/gitweb/theme/git-logo.png | Bin 0 -> 2412 bytes
flakes/mypackages/overlays/gitweb/theme/gitweb.css | 783 ++
flakes/mypackages/overlays/gitweb/theme/gitweb.js | 27 +
flakes/mypackages/overlays/goaccess/default.nix | 13 +
flakes/mypackages/overlays/kanboard/default.nix | 19 +
flakes/mypackages/overlays/morph/default.nix | 27 +
flakes/mypackages/overlays/morph/dry-run.patch | 59 +
flakes/mypackages/overlays/morph/verbose_nix.patch | 12 +
.../overlays/php-packages/mysqli_patch.patch | 11 +
flakes/mypackages/overlays/postfix/default.nix | 3 +
.../overlays/taskwarrior/TW-1778_patch.diff | 12 +
flakes/mypackages/overlays/taskwarrior/default.nix | 16 +
flakes/mypackages/overlays/ympd/default.nix | 14 +
.../overlays/ympd/ympd-password-env.patch | 23 +
flakes/mypackages/pkgs/bash-libs/default.nix | 33 +
flakes/mypackages/pkgs/boinctui/default.nix | 21 +
flakes/mypackages/pkgs/cnagios/default.nix | 32 +
flakes/mypackages/pkgs/commento/default.nix | 20 +
flakes/mypackages/pkgs/composer-env/default.nix | 243 +
.../mypackages/pkgs/crypto/cardano-cli/default.nix | 16 +
flakes/mypackages/pkgs/crypto/cardano/default.nix | 35 +
.../pkgs/crypto/iota-cli-app/default.nix | 29 +
.../pkgs/crypto/iota-cli-app/node-packages.nix | 1814 +++
flakes/mypackages/pkgs/crypto/sia/default.nix | 21 +
flakes/mypackages/pkgs/default.nix | 64 +
.../dovecot/plugins/deleted_to_trash/default.nix | 30 +
.../plugins/deleted_to_trash/fix_mbox.patch | 12 +
flakes/mypackages/pkgs/flrn/default.nix | 22 +
flakes/mypackages/pkgs/fluent-bit/default.nix | 47 +
flakes/mypackages/pkgs/fluentd/Gemfile | 3 +
flakes/mypackages/pkgs/fluentd/Gemfile.lock | 38 +
flakes/mypackages/pkgs/fluentd/default.nix | 20 +
flakes/mypackages/pkgs/fluentd/gemset.nix | 126 +
flakes/mypackages/pkgs/gearmand/default.nix | 16 +
flakes/mypackages/pkgs/genius/default.nix | 19 +
flakes/mypackages/pkgs/ical2html/default.nix | 11 +
.../mypackages/pkgs/monitoring-plugins/default.nix | 33 +
flakes/mypackages/pkgs/mtop/default.nix | 24 +
flakes/mypackages/pkgs/mutt-ics/default.nix | 15 +
flakes/mypackages/pkgs/muttprint/0.73-4.diff.gz | Bin 0 -> 16525 bytes
flakes/mypackages/pkgs/muttprint/default.nix | 44 +
flakes/mypackages/pkgs/muttprint/regex.patch | 11 +
flakes/mypackages/pkgs/muttprint/two_edge.patch | 19 +
.../mypackages/pkgs/naemon-livestatus/default.nix | 32 +
flakes/mypackages/pkgs/naemon/default.nix | 44 +
flakes/mypackages/pkgs/nagios-cli/default.nix | 12 +
flakes/mypackages/pkgs/nagnu/default.nix | 21 +
flakes/mypackages/pkgs/nb/default.nix | 22 +
flakes/mypackages/pkgs/note/default.nix | 19 +
.../pkgs/notmuch/notmuch-python/default.nix | 16 +
.../pkgs/notmuch/notmuch-vim/default.nix | 11 +
.../pkgs/perl-ical-parser-html/default.nix | 48 +
flakes/mypackages/pkgs/pgpid/default.nix | 33 +
flakes/mypackages/pkgs/predixy/default.nix | 19 +
flakes/mypackages/pkgs/proftpd/default.nix | 22 +
flakes/mypackages/pkgs/pure-ftpd/default.nix | 30 +
flakes/mypackages/pkgs/riotkit-do/default.nix | 60 +
flakes/mypackages/pkgs/rrsync_sudo/default.nix | 8 +
flakes/mypackages/pkgs/rrsync_sudo/sudo.patch | 20 +
flakes/mypackages/pkgs/shaarli/default.nix | 24 +
flakes/mypackages/pkgs/shaarli/shaarli_ldap.patch | 425 +
flakes/mypackages/pkgs/signaldctl/default.nix | 13 +
flakes/mypackages/pkgs/slang_1/default.nix | 25 +
.../pkgs/status_engine/host_perfdata.patch | 47 +
flakes/mypackages/pkgs/status_engine/interface.nix | 24 +
.../pkgs/status_engine/interface_composer.lock | 1323 ++
.../pkgs/status_engine/interface_php_packages.nix | 217 +
flakes/mypackages/pkgs/status_engine/module.nix | 19 +
flakes/mypackages/pkgs/status_engine/worker.nix | 37 +
.../pkgs/status_engine/worker_composer.lock | 2072 ++++
.../pkgs/status_engine/worker_php_packages.nix | 266 +
.../pkgs/telegram-history-dump/default.nix | 18 +
flakes/mypackages/pkgs/telegramircd/default.nix | 22 +
flakes/mypackages/pkgs/telethon_sync/default.nix | 24 +
.../mypackages/pkgs/terminal-velocity/default.nix | 37 +
.../pkgs/terminal-velocity/fix_build.patch | 21 +
.../pkgs/terminal-velocity/python3_support.patch | 215 +
.../pkgs/terminal-velocity/sort_found_notes.patch | 73 +
flakes/mypackages/pkgs/tiv/default.nix | 19 +
flakes/mypackages/pkgs/tiv/tiv_builder.sh | 8 +
flakes/mypackages/pkgs/twins/default.nix | 15 +
flakes/mypackages/pkgs/umami/build-geo.patch | 15 +
flakes/mypackages/pkgs/umami/default.nix | 72 +
flakes/mypackages/pkgs/unicode/default.nix | 48 +
flakes/mypackages/pkgs/upcmd/default.nix | 13 +
flakes/mypackages/pkgs/webapps/adminer/default.nix | 14 +
.../pkgs/webapps/apache-theme/default.nix | 88 +
.../pkgs/webapps/apache-theme/theme/.htaccess | 9 +
.../pkgs/webapps/apache-theme/theme/footer.html | 31 +
.../pkgs/webapps/apache-theme/theme/header.html | 3 +
.../webapps/apache-theme/theme/icons/archive.png | Bin 0 -> 551 bytes
.../webapps/apache-theme/theme/icons/audio.png | Bin 0 -> 554 bytes
.../webapps/apache-theme/theme/icons/authors.png | Bin 0 -> 492 bytes
.../pkgs/webapps/apache-theme/theme/icons/bin.png | Bin 0 -> 551 bytes
.../webapps/apache-theme/theme/icons/blank.png | Bin 0 -> 227 bytes
.../pkgs/webapps/apache-theme/theme/icons/bmp.png | Bin 0 -> 663 bytes
.../pkgs/webapps/apache-theme/theme/icons/c.png | Bin 0 -> 554 bytes
.../pkgs/webapps/apache-theme/theme/icons/calc.png | Bin 0 -> 506 bytes
.../pkgs/webapps/apache-theme/theme/icons/cd.png | Bin 0 -> 757 bytes
.../webapps/apache-theme/theme/icons/copying.png | Bin 0 -> 699 bytes
.../pkgs/webapps/apache-theme/theme/icons/cpp.png | Bin 0 -> 599 bytes
.../pkgs/webapps/apache-theme/theme/icons/css.png | Bin 0 -> 592 bytes
.../pkgs/webapps/apache-theme/theme/icons/deb.png | Bin 0 -> 671 bytes
.../webapps/apache-theme/theme/icons/default.png | Bin 0 -> 311 bytes
.../pkgs/webapps/apache-theme/theme/icons/diff.png | Bin 0 -> 586 bytes
.../pkgs/webapps/apache-theme/theme/icons/doc.png | Bin 0 -> 535 bytes
.../pkgs/webapps/apache-theme/theme/icons/draw.png | Bin 0 -> 679 bytes
.../pkgs/webapps/apache-theme/theme/icons/eps.png | Bin 0 -> 619 bytes
.../pkgs/webapps/apache-theme/theme/icons/exe.png | Bin 0 -> 846 bytes
.../apache-theme/theme/icons/folder-home.png | Bin 0 -> 618 bytes
.../apache-theme/theme/icons/folder-open.png | Bin 0 -> 431 bytes
.../apache-theme/theme/icons/folder-page.png | Bin 0 -> 591 bytes
.../apache-theme/theme/icons/folder-parent-old.png | Bin 0 -> 494 bytes
.../apache-theme/theme/icons/folder-parent.png | Bin 0 -> 621 bytes
.../webapps/apache-theme/theme/icons/folder.png | Bin 0 -> 395 bytes
.../pkgs/webapps/apache-theme/theme/icons/gif.png | Bin 0 -> 655 bytes
.../pkgs/webapps/apache-theme/theme/icons/gzip.png | Bin 0 -> 551 bytes
.../pkgs/webapps/apache-theme/theme/icons/h.png | Bin 0 -> 504 bytes
.../pkgs/webapps/apache-theme/theme/icons/hpp.png | Bin 0 -> 530 bytes
.../pkgs/webapps/apache-theme/theme/icons/html.png | Bin 0 -> 770 bytes
.../pkgs/webapps/apache-theme/theme/icons/ico.png | Bin 0 -> 792 bytes
.../webapps/apache-theme/theme/icons/image.png | Bin 0 -> 671 bytes
.../webapps/apache-theme/theme/icons/install.png | Bin 0 -> 788 bytes
.../pkgs/webapps/apache-theme/theme/icons/java.png | Bin 0 -> 658 bytes
.../pkgs/webapps/apache-theme/theme/icons/jpg.png | Bin 0 -> 675 bytes
.../pkgs/webapps/apache-theme/theme/icons/js.png | Bin 0 -> 540 bytes
.../pkgs/webapps/apache-theme/theme/icons/json.png | Bin 0 -> 540 bytes
.../pkgs/webapps/apache-theme/theme/icons/log.png | Bin 0 -> 423 bytes
.../webapps/apache-theme/theme/icons/makefile.png | Bin 0 -> 614 bytes
.../webapps/apache-theme/theme/icons/markdown.png | Bin 0 -> 627 bytes
.../webapps/apache-theme/theme/icons/package.png | Bin 0 -> 614 bytes
.../pkgs/webapps/apache-theme/theme/icons/pdf.png | Bin 0 -> 799 bytes
.../pkgs/webapps/apache-theme/theme/icons/php.png | Bin 0 -> 757 bytes
.../webapps/apache-theme/theme/icons/playlist.png | Bin 0 -> 610 bytes
.../pkgs/webapps/apache-theme/theme/icons/png.png | Bin 0 -> 679 bytes
.../pkgs/webapps/apache-theme/theme/icons/pres.png | Bin 0 -> 629 bytes
.../pkgs/webapps/apache-theme/theme/icons/ps.png | Bin 0 -> 817 bytes
.../pkgs/webapps/apache-theme/theme/icons/psd.png | Bin 0 -> 622 bytes
.../pkgs/webapps/apache-theme/theme/icons/py.png | Bin 0 -> 743 bytes
.../pkgs/webapps/apache-theme/theme/icons/rar.png | Bin 0 -> 621 bytes
.../pkgs/webapps/apache-theme/theme/icons/rb.png | Bin 0 -> 781 bytes
.../webapps/apache-theme/theme/icons/readme.png | Bin 0 -> 384 bytes
.../pkgs/webapps/apache-theme/theme/icons/rpm.png | Bin 0 -> 660 bytes
.../pkgs/webapps/apache-theme/theme/icons/rss.png | Bin 0 -> 660 bytes
.../pkgs/webapps/apache-theme/theme/icons/rtf.png | Bin 0 -> 627 bytes
.../webapps/apache-theme/theme/icons/script.png | Bin 0 -> 613 bytes
.../webapps/apache-theme/theme/icons/source.png | Bin 0 -> 586 bytes
.../pkgs/webapps/apache-theme/theme/icons/sql.png | Bin 0 -> 510 bytes
.../pkgs/webapps/apache-theme/theme/icons/tar.png | Bin 0 -> 406 bytes
.../pkgs/webapps/apache-theme/theme/icons/tex.png | Bin 0 -> 677 bytes
.../pkgs/webapps/apache-theme/theme/icons/text.png | Bin 0 -> 463 bytes
.../pkgs/webapps/apache-theme/theme/icons/tiff.png | Bin 0 -> 654 bytes
.../webapps/apache-theme/theme/icons/unknown.png | Bin 0 -> 556 bytes
.../pkgs/webapps/apache-theme/theme/icons/vcal.png | Bin 0 -> 556 bytes
.../webapps/apache-theme/theme/icons/video.png | Bin 0 -> 739 bytes
.../pkgs/webapps/apache-theme/theme/icons/xml.png | Bin 0 -> 585 bytes
.../pkgs/webapps/apache-theme/theme/icons/zip.png | Bin 0 -> 617 bytes
.../pkgs/webapps/apache-theme/theme/style.css | 160 +
flakes/mypackages/pkgs/webapps/awl/default.nix | 16 +
flakes/mypackages/pkgs/webapps/davical/default.nix | 23 +
flakes/mypackages/pkgs/webapps/default.nix | 24 +
.../mypackages/pkgs/webapps/dokuwiki/default.nix | 54 +
.../pkgs/webapps/dokuwiki/plugins/farmer.nix | 25 +
.../pkgs/webapps/dokuwiki/plugins/todo.nix | 18 +
.../mypackages/pkgs/webapps/infcloud/default.nix | 19 +
.../pkgs/webapps/infcloud/infcloud_config.js | 1446 +++
.../pkgs/webapps/mantisbt_2/bug_report.php.diff | 20 +
.../webapps/mantisbt_2/bug_report_page.php.diff | 53 +
.../pkgs/webapps/mantisbt_2/bugnote_add.php.diff | 20 +
.../webapps/mantisbt_2/bugnote_add_inc.php.diff | 52 +
.../mypackages/pkgs/webapps/mantisbt_2/default.nix | 44 +
.../webapps/mantisbt_2/plugins/slack/default.nix | 18 +
.../plugins/source-integration/Source.API.php.diff | 12 +
.../plugins/source-integration/default.nix | 22 +
.../pkgs/webapps/nextcloud/apps/audioplayer.nix | 15 +
.../pkgs/webapps/nextcloud/apps/bookmarks.nix | 21 +
.../pkgs/webapps/nextcloud/apps/calendar.nix | 15 +
.../pkgs/webapps/nextcloud/apps/carnet.nix | 15 +
.../pkgs/webapps/nextcloud/apps/contacts.nix | 15 +
.../pkgs/webapps/nextcloud/apps/cookbook.nix | 15 +
.../pkgs/webapps/nextcloud/apps/deck.nix | 27 +
.../pkgs/webapps/nextcloud/apps/drawio.nix | 24 +
.../pkgs/webapps/nextcloud/apps/external.nix | 27 +
.../pkgs/webapps/nextcloud/apps/extract.nix | 15 +
.../pkgs/webapps/nextcloud/apps/files_markdown.nix | 15 +
.../pkgs/webapps/nextcloud/apps/files_mindmap.nix | 15 +
.../pkgs/webapps/nextcloud/apps/files_readmemd.nix | 14 +
.../pkgs/webapps/nextcloud/apps/flowupload.nix | 14 +
.../pkgs/webapps/nextcloud/apps/gpxedit.nix | 22 +
.../pkgs/webapps/nextcloud/apps/gpxpod.nix | 31 +
.../pkgs/webapps/nextcloud/apps/groupfolders.nix | 27 +
.../pkgs/webapps/nextcloud/apps/impersonate.nix | 27 +
.../webapps/nextcloud/apps/integration_dropbox.nix | 13 +
.../pkgs/webapps/nextcloud/apps/keeweb.nix | 24 +
.../pkgs/webapps/nextcloud/apps/maps.nix | 15 +
.../pkgs/webapps/nextcloud/apps/metadata.nix | 15 +
.../pkgs/webapps/nextcloud/apps/music.nix | 15 +
.../pkgs/webapps/nextcloud/apps/notes.nix | 15 +
.../pkgs/webapps/nextcloud/apps/ocsms.nix | 21 +
.../pkgs/webapps/nextcloud/apps/onlyoffice.nix | 21 +
.../pkgs/webapps/nextcloud/apps/passman.nix | 21 +
.../pkgs/webapps/nextcloud/apps/polls.nix | 15 +
.../pkgs/webapps/nextcloud/apps/side_menu.nix | 16 +
.../pkgs/webapps/nextcloud/apps/social.nix | 14 +
.../pkgs/webapps/nextcloud/apps/spreed.nix | 27 +
.../webapps/nextcloud/apps/talk_matterbridge.nix | 14 +
.../pkgs/webapps/nextcloud/apps/tasks.nix | 15 +
.../mypackages/pkgs/webapps/nextcloud/default.nix | 84 +
flakes/mypackages/pkgs/webapps/phpbb/default.nix | 61 +
.../pkgs/webapps/phpbb/extensions/adduser.nix | 22 +
.../webapps/phpbb/extensions/autosubscribe.nix | 19 +
.../pkgs/webapps/phpbb/extensions/mailinglist.nix | 18 +
.../pkgs/webapps/phpbb/extensions/markdown.nix | 20 +
.../pkgs/webapps/phpbb/extensions/mchat.nix | 21 +
.../webapps/phpbb/extensions/monitoranswers.nix | 19 +
flakes/mypackages/pkgs/webapps/phpbb/langs/fr.nix | 12 +
.../pkgs/webapps/phpldapadmin/default.nix | 27 +
.../webapps/phpldapadmin/ldap-align-button.patch | 11 +
.../webapps/phpldapadmin/ldap-fix-password.patch | 13 +
.../phpldapadmin/ldap-sort-in-templates.patch | 12 +
flakes/mypackages/pkgs/webapps/rompr/default.nix | 17 +
.../pkgs/webapps/roundcubemail/add_all.patch | 209 +
.../pkgs/webapps/roundcubemail/default.nix | 85 +
.../plugins/automatic_addressbook/default.nix | 7 +
.../roundcubemail/plugins/carddav/default.nix | 7 +
.../roundcubemail/plugins/contextmenu/default.nix | 7 +
.../plugins/contextmenu_folder/default.nix | 7 +
.../plugins/html5_notifier/default.nix | 7 +
.../roundcubemail/plugins/ident_switch/default.nix | 7 +
.../plugins/message_highlight/default.nix | 7 +
.../plugins/thunderbird_labels/default.nix | 7 +
flakes/mypackages/pkgs/webapps/spip/default.nix | 32 +
.../pkgs/webapps/spip/spip_ldap_patch.patch | 60 +
.../pkgs/webapps/spip/spip_mes_options.php | 18 +
flakes/mypackages/pkgs/webapps/ttrss/default.nix | 37 +
.../webapps/ttrss/plugins/af_feedmod/default.nix | 18 +
.../ttrss/plugins/af_feedmod/type_replace.patch | 12 +
.../webapps/ttrss/plugins/auth_ldap/default.nix | 17 +
.../webapps/ttrss/plugins/feediron/default.nix | 18 +
.../ttrss/plugins/feediron/json_reformat.patch | 18 +
.../webapps/ttrss/plugins/ff_instagram/default.nix | 17 +
.../ttrss/plugins/tumblr_gdpr_ua/default.nix | 17 +
.../mypackages/pkgs/webapps/wallabag/default.nix | 54 +
flakes/mypackages/pkgs/webapps/wallabag/ldap.patch | 664 +
flakes/mypackages/pkgs/webapps/yourls/default.nix | 37 +
.../pkgs/webapps/yourls/plugins/ldap/default.nix | 17 +
flakes/myuids/flake.nix | 14 +-
flakes/naemon/flake.nix | 191 +
flakes/naemon/naemon.cfg | 1059 ++
flakes/openarc/flake.lock | 17 +-
flakes/openarc/flake.nix | 6 +-
flakes/opendmarc/flake.lock | 17 +-
flakes/opendmarc/flake.nix | 8 +-
flakes/openfoodnetwork/default.nix | 39 +
flakes/openfoodnetwork/gemset.nix | 2896 +++++
flakes/paste/flake.nix | 2 +
flakes/paste/paste/paste.py | 29 +-
flakes/peertube/flake.lock | 17 +-
flakes/peertube/flake.nix | 10 +-
flakes/private/buildbot/buildslist/bower.nix | 9 +
flakes/private/buildbot/buildslist/default.nix | 64 +
.../private/buildbot/buildslist/yarn-packages.nix | 9293 ++++++++++++++
flakes/private/buildbot/common/build_helpers.py | 293 +
flakes/private/buildbot/common/libvirt.py | 318 +
flakes/private/buildbot/common/master.cfg | 93 +
flakes/private/buildbot/flake.lock | 61 +
flakes/private/buildbot/flake.nix | 74 +
flakes/private/buildbot/test_project/__init__.py | 121 +
flakes/private/chatons/flake.lock | 23 +
flakes/private/chatons/flake.nix | 142 +
flakes/private/environment-dummy/flake.nix | 18 +
flakes/private/environment-dummy/ldap.conf | 13 +
flakes/private/environment-dummy/vars.yml | 1 +
flakes/private/environment/flake.nix | 1135 ++
flakes/private/mail-relay/filter-rewrite-from.py | 68 +
flakes/private/mail-relay/flake.lock | 36 +
flakes/private/mail-relay/flake.nix | 58 +
flakes/private/milters/flake.lock | 186 +
flakes/private/milters/flake.nix | 106 +
flakes/private/milters/verify_from.py | 60 +
flakes/private/monitoring/flake.lock | 67 +
flakes/private/monitoring/flake.nix | 267 +
flakes/private/monitoring/myplugins.nix | 400 +
flakes/private/monitoring/nagios-cli.cfg | 68 +
flakes/private/monitoring/objects_common.nix | 227 +
flakes/private/monitoring/plugins/check_backup_age | 66 +
flakes/private/monitoring/plugins/check_bandwidth | 122 +
flakes/private/monitoring/plugins/check_command | 113 +
flakes/private/monitoring/plugins/check_emails | 121 +
flakes/private/monitoring/plugins/check_eriomem | 83 +
.../private/monitoring/plugins/check_ftp_database | 11 +
flakes/private/monitoring/plugins/check_git | 81 +
.../monitoring/plugins/check_imap_connection | 52 +
.../monitoring/plugins/check_last_file_date | 28 +
flakes/private/monitoring/plugins/check_mem.sh | 31 +
.../monitoring/plugins/check_mysql_replication | 41 +
.../monitoring/plugins/check_openldap_replication | 54 +
flakes/private/monitoring/plugins/check_ovh_sms | 25 +
.../plugins/check_postgres_database_count | 32 +
.../monitoring/plugins/check_postgres_replication | 35 +
.../monitoring/plugins/check_redis_replication | 38 +
.../private/monitoring/plugins/check_zfs_snapshot | 325 +
.../private/monitoring/plugins/notify_by_apprise | 31 +
flakes/private/monitoring/plugins/notify_by_email | 29 +
flakes/private/monitoring/plugins/notify_by_slack | 46 +
flakes/private/monitoring/plugins/send_nrdp.sh | 57 +
flakes/private/monitoring/send_mails | 15 +
flakes/private/monitoring/to_objects.nix | 77 +
flakes/private/openarc/flake.lock | 72 +-
flakes/private/openarc/flake.nix | 96 +-
flakes/private/opendmarc/flake.lock | 85 +-
flakes/private/opendmarc/flake.nix | 125 +-
flakes/private/openldap/flake.nix | 6 +
flakes/private/openldap/immae.ldif | 83 +
flakes/private/openldap/immae.schema | 179 +
flakes/private/paste/flake.lock | 51 +-
flakes/private/paste/flake.nix | 36 +-
flakes/private/peertube/flake.lock | 89 +-
flakes/private/peertube/flake.nix | 16 +-
flakes/private/php/flake.lock | 62 +
flakes/private/php/flake.nix | 40 +
flakes/private/ssh/flake.lock | 36 +
flakes/private/ssh/flake.nix | 107 +
flakes/private/ssh/ldap_authorized_keys.sh | 62 +
flakes/private/system/flake.lock | 185 +
flakes/private/system/flake.nix | 168 +
flakes/private/system/public_keys/Immae.pub | 322 +
flakes/rsync_backup/flake.nix | 4 +-
flakes/secrets/flake.nix | 60 +-
flakes/surfer/default.nix | 12 +
flakes/surfer/flake.lock | 149 +
flakes/surfer/flake.nix | 36 +
flakes/surfer/node-packages.nix | 2437 ++++
flakes/taskwarrior-web/Gemfile.lock | 139 +
flakes/taskwarrior-web/default.nix | 25 +
flakes/taskwarrior-web/fixes.patch | 113 +
flakes/taskwarrior-web/flake.lock | 62 +
flakes/taskwarrior-web/flake.nix | 33 +
flakes/taskwarrior-web/gemset.nix | 567 +
flakes/taskwarrior-web/thin.patch | 23 +
lib/default.nix | 16 -
lib/flake-compat-patched.nix | 190 -
lib/flake-compat.nix | 8 -
lib/node-env.nix | 542 -
lib/private/default.nix | 20 -
modules/default.nix | 29 -
modules/duply_backup/default.nix | 124 -
modules/naemon/default.nix | 183 -
modules/naemon/naemon.cfg | 1059 --
modules/private/buildbot/common/build_helpers.py | 277 -
modules/private/buildbot/common/libvirt.py | 318 -
modules/private/buildbot/common/master.cfg | 69 -
modules/private/buildbot/default.nix | 244 -
.../private/buildbot/projects/caldance/__init__.py | 198 -
.../buildbot/projects/cryptoportfolio/__init__.py | 169 -
.../private/buildbot/projects/denise/__init__.py | 186 -
.../private/buildbot/projects/immaeEu/__init__.py | 314 -
.../projects/immaeEu/scripts/lacells_download | 163 -
modules/private/buildbot/projects/test/__init__.py | 197 -
modules/private/certificates.nix | 199 -
modules/private/databases/default.nix | 57 -
modules/private/databases/mariadb.nix | 182 -
modules/private/databases/mariadb_replication.nix | 251 -
modules/private/databases/openldap/default.nix | 147 -
.../private/databases/openldap/eldiron_schemas.nix | 21 -
modules/private/databases/openldap/immae.schema | 179 -
modules/private/databases/openldap_replication.nix | 166 -
modules/private/databases/postgresql.nix | 228 -
.../private/databases/postgresql_replication.nix | 182 -
modules/private/databases/redis.nix | 133 -
modules/private/databases/redis_replication.nix | 171 -
modules/private/databases/utils.nix | 30 -
modules/private/default.nix | 136 -
modules/private/dns.nix | 197 -
modules/private/ejabberd/default.nix | 92 -
modules/private/ejabberd/ejabberd.yml | 231 -
modules/private/environment.nix | 1492 ---
modules/private/ftp.nix | 248 -
modules/private/ftp_sync.sh | 47 -
modules/private/gemini/default.nix | 26 -
modules/private/gemini/public/index.gmi | 70 -
modules/private/gitolite/default.nix | 77 -
modules/private/gitolite/gitolite_ldap_groups.sh | 15 -
modules/private/gitolite/ldap_gitolite.sh | 33 -
modules/private/irc.nix | 54 -
modules/private/loginctl-linger.nix | 47 -
modules/private/mail/default.nix | 42 -
modules/private/mail/dovecot.nix | 292 -
modules/private/mail/filter-rewrite-from.py | 68 -
modules/private/mail/milters.nix | 88 -
modules/private/mail/opensmtpd.nix | 57 -
modules/private/mail/postfix.nix | 471 -
modules/private/mail/relay.nix | 235 -
modules/private/mail/rspamd.nix | 87 -
modules/private/mail/scan_reported_mails | 21 -
modules/private/mail/sieve_bin/imapsieve_copy | 8 -
modules/private/mail/sieve_scripts/backup.sieve | 7 -
.../private/mail/sieve_scripts/report_ham.sieve | 11 -
.../private/mail/sieve_scripts/report_spam.sieve | 3 -
modules/private/mail/sympa.nix | 213 -
modules/private/mail/verify_from.py | 60 -
modules/private/monitoring/default.nix | 249 -
modules/private/monitoring/myplugins.nix | 389 -
modules/private/monitoring/nagios-cli.cfg | 68 -
modules/private/monitoring/objects_backup-2.nix | 111 -
modules/private/monitoring/objects_common.nix | 253 -
modules/private/monitoring/objects_dilion.nix | 32 -
modules/private/monitoring/objects_eban.nix | 70 -
modules/private/monitoring/objects_eldiron.nix | 38 -
modules/private/monitoring/objects_master.nix | 39 -
.../private/monitoring/objects_monitoring-1.nix | 714 --
modules/private/monitoring/objects_phare.nix | 17 -
.../private/monitoring/objects_quatresaisons.nix | 38 -
modules/private/monitoring/objects_tiboqorl-fr.nix | 174 -
modules/private/monitoring/objects_ulminfo-fr.nix | 17 -
.../private/monitoring/plugins/check_backup_age | 66 -
modules/private/monitoring/plugins/check_bandwidth | 123 -
modules/private/monitoring/plugins/check_command | 113 -
modules/private/monitoring/plugins/check_emails | 121 -
modules/private/monitoring/plugins/check_eriomem | 83 -
.../private/monitoring/plugins/check_ftp_database | 11 -
modules/private/monitoring/plugins/check_git | 81 -
.../monitoring/plugins/check_imap_connection | 52 -
.../monitoring/plugins/check_last_file_date | 28 -
modules/private/monitoring/plugins/check_mem.sh | 29 -
.../monitoring/plugins/check_mysql_replication | 41 -
.../monitoring/plugins/check_openldap_replication | 54 -
modules/private/monitoring/plugins/check_ovh_sms | 25 -
.../plugins/check_postgres_database_count | 32 -
.../monitoring/plugins/check_postgres_replication | 35 -
.../monitoring/plugins/check_redis_replication | 38 -
.../private/monitoring/plugins/check_zfs_snapshot | 325 -
modules/private/monitoring/plugins/notify_by_email | 29 -
modules/private/monitoring/plugins/notify_by_slack | 46 -
modules/private/monitoring/plugins/notify_eban_url | 6 -
modules/private/monitoring/plugins/send_nrdp.sh | 57 -
modules/private/monitoring/send_mails | 15 -
modules/private/monitoring/status.nix | 93 -
modules/private/monitoring/status/app.py | 414 -
modules/private/monitoring/status_engine.nix | 115 -
modules/private/monitoring/to_objects.nix | 77 -
modules/private/mpd.nix | 60 -
modules/private/pub/default.nix | 56 -
modules/private/pub/ldap_pub.sh | 56 -
modules/private/pub/restrict | 64 -
modules/private/pub/tmux.restrict.conf | 43 -
modules/private/ssh/default.nix | 91 -
modules/private/ssh/ldap_authorized_keys.sh | 52 -
modules/private/ssh/ldap_regular.sh | 19 -
modules/private/system.nix | 98 -
modules/private/system/backup-2.nix | 137 -
modules/private/system/dilion.nix | 242 -
modules/private/system/dilion/vms.nix | 185 -
.../system/dilion/vms/base_configuration.nix | 21 -
modules/private/system/dilion/vms/base_image.nix | 94 -
.../system/dilion/vms/buildbot_configuration.nix | 67 -
modules/private/system/eldiron.nix | 228 -
modules/private/system/monitoring-1.nix | 69 -
modules/private/system/quatresaisons.nix | 436 -
modules/private/system/quatresaisons/databases.nix | 147 -
modules/private/system/quatresaisons/landing.yml | 32 -
.../private/system/quatresaisons/landing_4c.yml | 24 -
modules/private/system/quatresaisons/nextcloud.nix | 141 -
modules/private/tasks/default.nix | 355 -
modules/private/tasks/www/index.php | 168 -
modules/private/vpn/default.nix | 65 -
modules/private/vpn/tinc/host-down | 7 -
modules/private/vpn/tinc/host-up | 11 -
modules/private/vpn/tinc/tinc-down | 12 -
modules/private/vpn/tinc/tinc-up | 14 -
modules/private/vpn/tinc/tinc.conf | 11 -
.../websites/_www/googleb6d69446ff4ca3e5.html | 1 -
modules/private/websites/_www/index.htm | 9 -
.../private/websites/_www/maintenance_immae.html | 58 -
modules/private/websites/_www/nossl.html | 11 -
modules/private/websites/bakeer/cloud.nix | 23 -
.../capitaines/discourse_static/discourse.png | Bin 2440 -> 0 bytes
.../capitaines/discourse_static/index.html | 28 -
.../private/websites/capitaines/landing_pages.nix | 57 -
.../websites/capitaines/mastodon_static/index.html | 29 -
.../websites/capitaines/mastodon_static/oops.png | Bin 120305 -> 0 bytes
modules/private/websites/chloe/app/default.nix | 22 -
modules/private/websites/chloe/config/chmod.php | 4 -
modules/private/websites/chloe/config/connect.php | 15 -
modules/private/websites/chloe/config/ldap.php | 9 -
modules/private/websites/chloe/integration.nix | 104 -
modules/private/websites/chloe/production.nix | 112 -
modules/private/websites/cip-ca/sympa.nix | 28 -
modules/private/websites/commons/adminer.nix | 4 -
.../websites/connexionswing/app/default.nix | 29 -
.../websites/connexionswing/app/php-packages.nix | 597 -
.../websites/connexionswing/integration.nix | 141 -
.../private/websites/connexionswing/production.nix | 110 -
modules/private/websites/default.nix | 324 -
modules/private/websites/denise/aventuriers.nix | 26 -
modules/private/websites/denise/bingo.nix | 100 -
modules/private/websites/denise/denisejerome.nix | 31 -
modules/private/websites/denise/evariste.nix | 104 -
modules/private/websites/denise/oms.nix | 100 -
modules/private/websites/denise/production.nix | 25 -
.../private/websites/emilia/atelierfringant.nix | 65 -
modules/private/websites/emilia/moodle.nix | 65 -
modules/private/websites/emilia/moodle/pause.html | 48 -
modules/private/websites/florian/app.nix | 142 -
modules/private/websites/florian/app/default.nix | 27 -
.../private/websites/florian/app/php-packages.nix | 389 -
modules/private/websites/florian/integration.nix | 34 -
modules/private/websites/florian/production.nix | 34 -
.../websites/immae/chatons/immae-eu.properties | 46 -
.../immae/chatons/service-etherpad.properties | 164 -
.../immae/eurl/certificates/2021-certificate.crt | 23 -
modules/private/websites/immae/matrix/client | 8 -
modules/private/websites/immae/matrix/server | 3 -
modules/private/websites/immae/production.nix | 137 -
modules/private/websites/immae/release.nix | 39 -
modules/private/websites/immae/temp.nix | 64 -
.../private/websites/isabelle/aten_app/default.nix | 61 -
.../websites/isabelle/aten_app/php-packages.nix | 740 --
.../websites/isabelle/aten_app/yarn-packages.nix | 7871 ------------
.../private/websites/isabelle/aten_integration.nix | 91 -
.../private/websites/isabelle/aten_production.nix | 90 -
modules/private/websites/isabelle/config/chmod.php | 4 -
.../private/websites/isabelle/config/connect.php | 15 -
modules/private/websites/isabelle/config/ldap.php | 9 -
modules/private/websites/isabelle/iridologie.nix | 113 -
.../websites/isabelle/iridologie_app/default.nix | 19 -
modules/private/websites/jerome/naturaloutil.nix | 97 -
modules/private/websites/leila/production.nix | 114 -
modules/private/websites/ludivine/app/default.nix | 37 -
.../private/websites/ludivine/app/php-packages.nix | 868 --
modules/private/websites/ludivine/integration.nix | 145 -
modules/private/websites/ludivine/production.nix | 116 -
modules/private/websites/moomin.txt | 16 -
modules/private/websites/nassime/production.nix | 35 -
modules/private/websites/nath/villon.nix | 42 -
modules/private/websites/papa/maison_bbc.nix | 28 -
.../websites/papa/maison_bbc_static/data.json | 4101 ------
.../websites/papa/maison_bbc_static/favicon.ico | Bin 318 -> 0 bytes
.../websites/papa/maison_bbc_static/index.html | 164 -
.../websites/papa/maison_bbc_static/lamaison.png | Bin 259991 -> 0 bytes
modules/private/websites/papa/surveillance.nix | 50 -
.../websites/patrick_fodella/altermondia.nix | 73 -
.../private/websites/patrick_fodella/ecolyeu.nix | 72 -
.../private/websites/piedsjaloux/app/default.nix | 29 -
.../websites/piedsjaloux/app/php-packages.nix | 1009 --
.../private/websites/piedsjaloux/integration.nix | 135 -
.../private/websites/piedsjaloux/production.nix | 106 -
.../private/websites/ressourcerie_banon/cloud.nix | 20 -
.../websites/ressourcerie_banon/cryptpad.nix | 49 -
.../websites/ressourcerie_banon/production.nix | 70 -
modules/private/websites/richie/production.nix | 106 -
modules/private/websites/syden/peertube.nix | 132 -
.../private/websites/telio_tortay/production.nix | 81 -
modules/private/websites/tools/assets/default.nix | 39 -
.../websites/tools/assets/static/favicon.png | Bin 1734 -> 0 bytes
.../websites/tools/assets/static/logger.png | Bin 3340 -> 0 bytes
.../websites/tools/assets/static/logger.txt | 3 -
.../private/websites/tools/assets/static/logo.jpg | Bin 6931 -> 0 bytes
.../private/websites/tools/assets/static/logo.txt | 7 -
.../websites/tools/assets/static/logo_big.jpg | Bin 16390 -> 0 bytes
.../websites/tools/assets/static/logo_big.txt | 7 -
.../websites/tools/assets/static/logo_center.jpg | Bin 29509 -> 0 bytes
.../websites/tools/assets/static/logo_center.txt | 8 -
.../websites/tools/assets/static/monitoring.png | Bin 57395 -> 0 bytes
.../websites/tools/assets/static/monitoring.txt | 3 -
.../websites/tools/assets/static/photos/ct.jpg | Bin 55914 -> 0 bytes
.../tools/assets/static/photos/fretlink.jpg | Bin 1520106 -> 0 bytes
.../websites/tools/assets/static/photos/raton.jpg | Bin 17614 -> 0 bytes
modules/private/websites/tools/cloud/default.nix | 184 -
modules/private/websites/tools/cloud/farm.nix | 123 -
.../private/websites/tools/commento/default.nix | 59 -
.../private/websites/tools/cryptpad/default.nix | 50 -
modules/private/websites/tools/cryptpad/farm.nix | 180 -
modules/private/websites/tools/dav/davical.nix | 133 -
modules/private/websites/tools/dav/default.nix | 55 -
modules/private/websites/tools/dav/www/index.html | 42 -
modules/private/websites/tools/db/default.nix | 21 -
.../private/websites/tools/diaspora/default.nix | 185 -
modules/private/websites/tools/ether/default.nix | 216 -
.../websites/tools/games/codenames/codenames.patch | 8306 -------------
.../websites/tools/games/codenames/default.nix | 50 -
.../websites/tools/games/codenames/deps.nix | 11 -
.../websites/tools/games/codenames/elm-srcs.nix | 77 -
.../websites/tools/games/codenames/frontend.nix | 22 -
.../websites/tools/games/codenames/greenapid.nix | 18 -
.../websites/tools/games/codenames/greenapid.patch | 39 -
.../tools/games/codenames/node-packages.nix | 7621 ------------
.../websites/tools/games/codenames/registry.dat | Bin 105421 -> 0 bytes
.../websites/tools/games/codenames/shell.nix | 50 -
.../tools/games/codenames/wordlists/french.txt | 694 --
.../tools/games/terraforming-mars/default.nix | 48 -
.../games/terraforming-mars/node-packages.nix | 4353 -------
.../games/terraforming-mars/terraforming-mars.nix | 36 -
modules/private/websites/tools/git/default.nix | 49 -
modules/private/websites/tools/git/gitweb.nix | 119 -
modules/private/websites/tools/git/mantisbt.nix | 91 -
modules/private/websites/tools/im/default.nix | 42 -
.../private/websites/tools/im/www/converse.html | 57 -
modules/private/websites/tools/im/www/index.html | 47 -
modules/private/websites/tools/mail/default.nix | 79 -
modules/private/websites/tools/mail/mta-sts.nix | 54 -
modules/private/websites/tools/mail/rainloop.nix | 54 -
.../private/websites/tools/mail/roundcubemail.nix | 118 -
modules/private/websites/tools/mail/www/index.html | 74 -
.../private/websites/tools/mastodon/default.nix | 136 -
modules/private/websites/tools/mgoblin/default.nix | 134 -
.../private/websites/tools/peertube/default.nix | 94 -
.../private/websites/tools/performance/default.nix | 88 -
modules/private/websites/tools/stats/default.nix | 51 -
modules/private/websites/tools/tools/adminer.nix | 46 -
.../private/websites/tools/tools/csp_reports.nix | 11 -
modules/private/websites/tools/tools/default.nix | 429 -
.../private/websites/tools/tools/dmarc_reports.nix | 59 -
.../websites/tools/tools/dmarc_reports/api.php | 122 -
.../websites/tools/tools/dmarc_reports/app.js | 103 -
.../websites/tools/tools/dmarc_reports/default.css | 130 -
.../websites/tools/tools/dmarc_reports/index.html | 128 -
modules/private/websites/tools/tools/dokuwiki.nix | 56 -
modules/private/websites/tools/tools/grocy.nix | 48 -
modules/private/websites/tools/tools/kanboard.nix | 80 -
modules/private/websites/tools/tools/landing.nix | 29 -
.../websites/tools/tools/landing/ldap_password.php | 140 -
.../websites/tools/tools/landing/ldap_ssh_keys.php | 348 -
.../private/websites/tools/tools/landing/myip.php | 1 -
.../websites/tools/tools/landing/node-packages.nix | 130 -
.../tools/tools/landing/report_csp_violation.php | 22 -
.../websites/tools/tools/landing/yarn-packages.nix | 9357 --------------
modules/private/websites/tools/tools/ldap.nix | 69 -
modules/private/websites/tools/tools/phpbb.nix | 55 -
modules/private/websites/tools/tools/rompr.nix | 72 -
modules/private/websites/tools/tools/shaarli.nix | 66 -
modules/private/websites/tools/tools/ttrss.nix | 129 -
modules/private/websites/tools/tools/wallabag.nix | 142 -
modules/private/websites/tools/tools/webhooks.nix | 17 -
modules/private/websites/tools/tools/ympd.nix | 40 -
modules/private/websites/tools/tools/yourls.nix | 86 -
modules/private/websites/tools/vpn/default.nix | 13 -
modules/private/websites/tools/vpn/www/index.html | 91 -
modules/private/websites/tools/vpn/www/style.css | 61 -
modules/webapps/diaspora.nix | 173 -
modules/webapps/etherpad-lite.nix | 162 -
modules/webapps/mastodon.nix | 265 -
modules/webapps/mediagoblin.nix | 231 -
modules/webapps/webstats/default.nix | 80 -
modules/webapps/webstats/goaccess.conf | 100 -
modules/websites/default.nix | 281 -
modules/websites/httpd-service-builder.nix | 735 --
modules/websites/httpd-service-builder.patch | 150 -
modules/websites/nosslVhost/index.html | 11 -
modules/websites/php-application.nix | 224 -
modules/zrepl.nix | 45 -
nix/README.md | 2 -
nix/sources.json | 209 -
nix/sources.nix | 135 -
nixops/.gitignore | 1 -
nixops/.sops.yaml | 19 -
nixops/Makefile | 102 -
nixops/default.nix | 8 -
nixops/public_keys/Immae.pub | 322 -
nixops/scripts/setup | 90 -
nixops/scripts/with_env | 22 -
nixops/secrets | 1 -
overlays/bitlbee-discord/default.nix | 12 -
overlays/bitlbee/bitlbee_long_nicks.patch | 56 -
overlays/bitlbee/default.nix | 5 -
overlays/bonfire/default.nix | 36 -
overlays/bugwarrior/default.nix | 5 -
overlays/bugwarrior/mantisbt.patch | 379 -
overlays/bundix/default.nix | 7 -
overlays/databases/mysql/default.nix | 24 -
overlays/databases/postgresql/default.nix | 8 -
overlays/default.nix | 48 -
overlays/doing/default.nix | 10 -
overlays/dwm/default.nix | 7 -
overlays/dwm/dwm_config.h | 98 -
overlays/elinks/default.nix | 14 -
overlays/elinks/elinks.json | 15 -
overlays/gitolite/default.nix | 8 -
overlays/gitolite/invite | 172 -
overlays/gitweb/default.nix | 7 -
overlays/gitweb/theme/git-favicon.png | Bin 1125 -> 0 bytes
overlays/gitweb/theme/git-logo.png | Bin 2412 -> 0 bytes
overlays/gitweb/theme/gitweb.css | 783 --
overlays/gitweb/theme/gitweb.js | 27 -
overlays/goaccess/default.nix | 13 -
overlays/kanboard/default.nix | 18 -
overlays/khal/default.nix | 8 -
overlays/ledger/default.nix | 20 -
overlays/lesspipe/default.nix | 5 -
overlays/morph/default.nix | 5 -
overlays/morph/dry-run.patch | 59 -
overlays/morph/verbose_nix.patch | 12 -
overlays/neomutt/default.nix | 7 -
overlays/neomutt/tx.patch | 44 -
overlays/nix-direnv/default.nix | 7 -
overlays/nixops/default.nix | 20 -
overlays/nixops/fix_glibc.patch | 15 -
overlays/nixops/hetzner_cloud.patch | 480 -
overlays/pass/default.nix | 5 -
overlays/pass/pass-fix-pass-init.patch | 42 -
overlays/pelican/default.nix | 7 -
overlays/php-packages/default.nix | 6 -
overlays/php-packages/mysqli_patch.patch | 11 -
overlays/postfix/default.nix | 3 -
overlays/procps-ng/default.nix | 5 -
overlays/python-packages/buildbot.nix | 8 -
overlays/python-packages/default.nix | 29 -
overlays/sc-im/default.nix | 9 -
overlays/shaarli/default.nix | 15 -
overlays/shaarli/shaarli_ldap.patch | 425 -
overlays/slrn/default.nix | 5 -
overlays/taskwarrior/TW-1778_patch.diff | 12 -
overlays/taskwarrior/default.nix | 16 -
overlays/vcsh/default.nix | 7 -
overlays/weechat/default.nix | 12 -
overlays/ympd/default.nix | 5 -
overlays/ympd/ympd-password-env.patch | 23 -
overlays/ympd/ympd.json | 15 -
pkgs/boinctui/default.nix | 20 -
pkgs/cnagios/cnagios.json | 15 -
pkgs/cnagios/default.nix | 22 -
pkgs/commento/default.nix | 20 -
pkgs/composer-env/default.nix | 280 -
pkgs/crypto/cardano-cli/default.nix | 16 -
pkgs/crypto/cardano/daedalus.json | 15 -
pkgs/crypto/cardano/default.nix | 29 -
pkgs/crypto/iota-cli-app/default.nix | 20 -
pkgs/crypto/iota-cli-app/iota-cli-app.json | 15 -
pkgs/crypto/iota-cli-app/node-packages.nix | 1814 ---
pkgs/crypto/sia/default.nix | 21 -
pkgs/default.nix | 64 -
pkgs/dovecot/plugins/deleted_to_trash/default.nix | 21 -
.../deleted_to_trash/dovecot-deleted_to_trash.json | 15 -
.../plugins/deleted_to_trash/fix_mbox.patch | 12 -
pkgs/flrn/default.nix | 13 -
pkgs/flrn/flrn.json | 15 -
pkgs/gearmand/default.nix | 16 -
pkgs/genius/default.nix | 19 -
pkgs/monitoring-plugins/default.nix | 33 -
pkgs/mtop/default.nix | 24 -
pkgs/mutt-ics/default.nix | 5 -
pkgs/mutt-ics/mutt-ics.json | 15 -
pkgs/muttprint/0.73-4.diff.gz | Bin 16525 -> 0 bytes
pkgs/muttprint/default.nix | 44 -
pkgs/muttprint/regex.patch | 11 -
pkgs/muttprint/two_edge.patch | 19 -
pkgs/naemon-livestatus/default.nix | 23 -
pkgs/naemon-livestatus/naemon-livestatus.json | 15 -
pkgs/naemon/default.nix | 35 -
pkgs/naemon/naemon.json | 15 -
pkgs/nagios-cli/default.nix | 2 -
pkgs/nagios-cli/nagios-cli.json | 15 -
pkgs/nagnu/default.nix | 12 -
pkgs/nagnu/nagnu.json | 15 -
pkgs/nb/default.nix | 20 -
pkgs/note/default.nix | 19 -
pkgs/notmuch/notmuch-python/default.nix | 16 -
pkgs/notmuch/notmuch-vim/default.nix | 11 -
pkgs/pgloader/default.nix | 40 -
pkgs/predixy/default.nix | 10 -
pkgs/predixy/predixy.json | 15 -
pkgs/proftpd/default.nix | 23 -
pkgs/pure-ftpd/default.nix | 30 -
pkgs/python-packages/blivet/default.nix | 118 -
pkgs/python-packages/blivet/fix_path.patch | 21 -
pkgs/python-packages/blivet/poetry.lock | 96 -
pkgs/python-packages/blivet/pyproject.toml | 20 -
.../buildbot/plugins/buildslist/bower.nix | 9 -
.../buildbot/plugins/buildslist/default.nix | 65 -
.../buildbot/plugins/buildslist/yarn-packages.nix | 9293 --------------
pkgs/python-packages/buildbot/plugins/default.nix | 6 -
pkgs/python-packages/default.nix | 7 -
pkgs/python-packages/pymilter.nix | 11 -
pkgs/python-packages/wokkel.nix | 11 -
pkgs/rrsync_sudo/default.nix | 8 -
pkgs/rrsync_sudo/sudo.patch | 20 -
pkgs/signaldctl/default.nix | 13 -
pkgs/slang_1/default.nix | 25 -
pkgs/status_engine/host_perfdata.patch | 47 -
pkgs/status_engine/interface.nix | 21 -
pkgs/status_engine/interface_composer.lock | 1323 --
pkgs/status_engine/interface_php_packages.nix | 217 -
pkgs/status_engine/module.json | 15 -
pkgs/status_engine/module.nix | 10 -
pkgs/status_engine/worker.json | 15 -
pkgs/status_engine/worker.nix | 24 -
pkgs/status_engine/worker_composer.lock | 1457 ---
pkgs/status_engine/worker_php_packages.nix | 217 -
pkgs/telegram-history-dump/default.nix | 9 -
.../telegram-history-dump.json | 15 -
pkgs/telegramircd/default.nix | 16 -
pkgs/telegramircd/telegramircd.json | 15 -
pkgs/telethon_sync/default.nix | 24 -
pkgs/terminal-velocity/default.nix | 37 -
pkgs/terminal-velocity/fix_build.patch | 21 -
pkgs/terminal-velocity/python3_support.patch | 215 -
pkgs/terminal-velocity/sort_found_notes.patch | 73 -
pkgs/tiv/default.nix | 19 -
pkgs/tiv/tiv_builder.sh | 8 -
pkgs/twins/default.nix | 15 -
pkgs/umami/build-geo.patch | 15 -
pkgs/umami/default.nix | 72 -
pkgs/unicode/default.nix | 48 -
pkgs/webapps/adminer/default.nix | 14 -
pkgs/webapps/apache-theme/default.nix | 88 -
pkgs/webapps/apache-theme/theme/.htaccess | 9 -
pkgs/webapps/apache-theme/theme/footer.html | 31 -
pkgs/webapps/apache-theme/theme/header.html | 3 -
pkgs/webapps/apache-theme/theme/icons/archive.png | Bin 551 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/audio.png | Bin 554 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/authors.png | Bin 492 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/bin.png | Bin 551 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/blank.png | Bin 227 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/bmp.png | Bin 663 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/c.png | Bin 554 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/calc.png | Bin 506 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/cd.png | Bin 757 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/copying.png | Bin 699 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/cpp.png | Bin 599 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/css.png | Bin 592 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/deb.png | Bin 671 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/default.png | Bin 311 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/diff.png | Bin 586 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/doc.png | Bin 535 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/draw.png | Bin 679 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/eps.png | Bin 619 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/exe.png | Bin 846 -> 0 bytes
.../apache-theme/theme/icons/folder-home.png | Bin 618 -> 0 bytes
.../apache-theme/theme/icons/folder-open.png | Bin 431 -> 0 bytes
.../apache-theme/theme/icons/folder-page.png | Bin 591 -> 0 bytes
.../apache-theme/theme/icons/folder-parent-old.png | Bin 494 -> 0 bytes
.../apache-theme/theme/icons/folder-parent.png | Bin 621 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/folder.png | Bin 395 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/gif.png | Bin 655 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/gzip.png | Bin 551 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/h.png | Bin 504 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/hpp.png | Bin 530 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/html.png | Bin 770 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/ico.png | Bin 792 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/image.png | Bin 671 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/install.png | Bin 788 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/java.png | Bin 658 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/jpg.png | Bin 675 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/js.png | Bin 540 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/json.png | Bin 540 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/log.png | Bin 423 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/makefile.png | Bin 614 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/markdown.png | Bin 627 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/package.png | Bin 614 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/pdf.png | Bin 799 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/php.png | Bin 757 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/playlist.png | Bin 610 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/png.png | Bin 679 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/pres.png | Bin 629 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/ps.png | Bin 817 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/psd.png | Bin 622 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/py.png | Bin 743 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/rar.png | Bin 621 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/rb.png | Bin 781 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/readme.png | Bin 384 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/rpm.png | Bin 660 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/rss.png | Bin 660 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/rtf.png | Bin 627 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/script.png | Bin 613 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/source.png | Bin 586 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/sql.png | Bin 510 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/tar.png | Bin 406 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/tex.png | Bin 677 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/text.png | Bin 463 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/tiff.png | Bin 654 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/unknown.png | Bin 556 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/vcal.png | Bin 556 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/video.png | Bin 739 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/xml.png | Bin 585 -> 0 bytes
pkgs/webapps/apache-theme/theme/icons/zip.png | Bin 617 -> 0 bytes
pkgs/webapps/apache-theme/theme/style.css | 160 -
pkgs/webapps/awl/default.nix | 16 -
pkgs/webapps/davical/default.nix | 23 -
pkgs/webapps/default.nix | 27 -
pkgs/webapps/diaspora/default.nix | 69 -
pkgs/webapps/diaspora/diaspora.json | 15 -
pkgs/webapps/diaspora/gemset.nix | 3047 -----
pkgs/webapps/diaspora/gemset_ldap.nix | 3056 -----
pkgs/webapps/diaspora/ldap.patch | 256 -
pkgs/webapps/dokuwiki/default.nix | 45 -
pkgs/webapps/dokuwiki/dokuwiki.json | 15 -
pkgs/webapps/dokuwiki/plugins/farmer.nix | 25 -
pkgs/webapps/dokuwiki/plugins/todo.nix | 18 -
pkgs/webapps/etherpad-lite/default.nix | 63 -
pkgs/webapps/etherpad-lite/etherpad-lite.json | 15 -
pkgs/webapps/etherpad-lite/libreoffice_patch.diff | 12 -
.../ep_aa_file_menu_toolbar/node-packages.json | 1 -
.../ep_aa_file_menu_toolbar/node-packages.nix | 26 -
.../modules/ep_adminpads/node-packages.json | 1 -
.../modules/ep_adminpads/node-packages.nix | 27 -
.../modules/ep_align/node-packages.json | 1 -
.../modules/ep_align/node-packages.nix | 26 -
.../modules/ep_bookmark/node-packages.json | 1 -
.../modules/ep_bookmark/node-packages.nix | 26 -
.../modules/ep_clear_formatting/node-packages.json | 1 -
.../modules/ep_clear_formatting/node-packages.nix | 25 -
.../modules/ep_colors/node-packages.json | 1 -
.../modules/ep_colors/node-packages.nix | 25 -
.../modules/ep_comments_page/node-packages.json | 1 -
.../modules/ep_comments_page/node-packages.nix | 342 -
.../ep_copy_paste_select_all/node-packages.json | 1 -
.../ep_copy_paste_select_all/node-packages.nix | 26 -
.../modules/ep_cursortrace/node-packages.json | 1 -
.../modules/ep_cursortrace/node-packages.nix | 26 -
.../ep_delete_empty_pads/node-packages.json | 1 -
.../modules/ep_delete_empty_pads/node-packages.nix | 26 -
.../etherpad-lite/modules/ep_embedmedia/fix.patch | 85 -
.../modules/ep_embedmedia/node-packages.json | 1 -
.../modules/ep_embedmedia/node-packages.nix | 29 -
.../modules/ep_font_family/node-packages.json | 1 -
.../modules/ep_font_family/node-packages.nix | 27 -
.../modules/ep_font_size/node-packages.json | 1 -
.../modules/ep_font_size/node-packages.nix | 27 -
.../modules/ep_headings2/node-packages.json | 1 -
.../modules/ep_headings2/node-packages.nix | 26 -
.../etherpad-lite/modules/ep_immae_buttons/ep.json | 13 -
.../modules/ep_immae_buttons/hooks.js | 6 -
.../modules/ep_immae_buttons/node-packages.nix | 22 -
.../modules/ep_immae_buttons/package.json | 10 -
.../modules/ep_immae_buttons/static/js/main.js | 67 -
.../ep_immae_buttons/templates/editbarButtons.ejs | 12 -
.../modules/ep_ldapauth/node-packages.json | 1 -
.../modules/ep_ldapauth/node-packages.nix | 392 -
.../etherpad-lite/modules/ep_line_height/fix.patch | 30 -
.../modules/ep_line_height/node-packages.json | 1 -
.../modules/ep_line_height/node-packages.nix | 28 -
.../modules/ep_markdown/node-packages.json | 1 -
.../modules/ep_markdown/node-packages.nix | 300 -
.../etherpad-lite/modules/ep_mypads/fix_ldap.patch | 59 -
.../modules/ep_mypads/node-packages.json | 1 -
.../modules/ep_mypads/node-packages.nix | 2156 ----
.../modules/ep_page_view/node-packages.json | 1 -
.../modules/ep_page_view/node-packages.nix | 26 -
.../modules/ep_previewimages/node-packages.json | 1 -
.../modules/ep_previewimages/node-packages.nix | 26 -
.../modules/ep_private_pad/node-packages.json | 1 -
.../modules/ep_private_pad/node-packages.nix | 2056 ---
.../modules/ep_ruler/node-packages.json | 1 -
.../modules/ep_ruler/node-packages.nix | 27 -
.../modules/ep_scrollto/node-packages.json | 1 -
.../modules/ep_scrollto/node-packages.nix | 29 -
.../modules/ep_set_title_on_pad/node-packages.json | 1 -
.../modules/ep_set_title_on_pad/node-packages.nix | 26 -
.../ep_subscript_and_superscript/font.patch | 22 -
.../node-packages.json | 1 -
.../ep_subscript_and_superscript/node-packages.nix | 28 -
.../modules/ep_timesliderdiff/node-packages.json | 1 -
.../modules/ep_timesliderdiff/node-packages.nix | 26 -
pkgs/webapps/etherpad-lite/node-packages.nix | 2934 -----
pkgs/webapps/grocy/default.nix | 45 -
pkgs/webapps/grocy/grocy.json | 15 -
pkgs/webapps/grocy/php-packages.nix | 457 -
pkgs/webapps/grocy/yarn-packages.nix | 1085 --
pkgs/webapps/grocy/yarn.patch | 67 -
pkgs/webapps/infcloud/default.nix | 19 -
pkgs/webapps/infcloud/infcloud_config.js | 1446 ---
pkgs/webapps/mantisbt_2/bug_report.php.diff | 20 -
pkgs/webapps/mantisbt_2/bug_report_page.php.diff | 53 -
pkgs/webapps/mantisbt_2/bugnote_add.php.diff | 20 -
pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff | 52 -
pkgs/webapps/mantisbt_2/default.nix | 43 -
pkgs/webapps/mantisbt_2/plugins/slack/default.nix | 18 -
.../plugins/source-integration/Source.API.php.diff | 12 -
.../plugins/source-integration/default.nix | 21 -
pkgs/webapps/mastodon/default.nix | 92 -
pkgs/webapps/mastodon/gemset.nix | 2816 -----
pkgs/webapps/mastodon/mastodon.json | 15 -
pkgs/webapps/mastodon/yarn-packages.nix | 12344 -------------------
pkgs/webapps/mediagoblin/bower-packages.nix | 8 -
pkgs/webapps/mediagoblin/default.nix | 210 -
pkgs/webapps/mediagoblin/ldap_fix.py | 93 -
.../mediagoblin/plugins/basicsearch/default.nix | 18 -
pkgs/webapps/mediagoblin/tempita.json | 15 -
pkgs/webapps/nextcloud/apps/apporder.nix | 8 -
pkgs/webapps/nextcloud/apps/audioplayer.nix | 8 -
pkgs/webapps/nextcloud/apps/bookmarks.nix | 8 -
pkgs/webapps/nextcloud/apps/calendar.nix | 8 -
pkgs/webapps/nextcloud/apps/carnet.nix | 8 -
pkgs/webapps/nextcloud/apps/circles.nix | 8 -
pkgs/webapps/nextcloud/apps/contacts.nix | 8 -
pkgs/webapps/nextcloud/apps/cookbook.nix | 14 -
pkgs/webapps/nextcloud/apps/deck.nix | 8 -
pkgs/webapps/nextcloud/apps/extract.nix | 8 -
pkgs/webapps/nextcloud/apps/files_markdown.nix | 8 -
pkgs/webapps/nextcloud/apps/files_readmemd.nix | 8 -
pkgs/webapps/nextcloud/apps/flowupload.nix | 8 -
pkgs/webapps/nextcloud/apps/gpxedit.nix | 16 -
pkgs/webapps/nextcloud/apps/gpxpod.nix | 16 -
pkgs/webapps/nextcloud/apps/impersonate.nix | 9 -
pkgs/webapps/nextcloud/apps/keeweb.nix | 17 -
pkgs/webapps/nextcloud/apps/maps.nix | 8 -
pkgs/webapps/nextcloud/apps/metadata.nix | 8 -
pkgs/webapps/nextcloud/apps/music.nix | 9 -
pkgs/webapps/nextcloud/apps/notes.nix | 8 -
pkgs/webapps/nextcloud/apps/ocsms.nix | 12 -
pkgs/webapps/nextcloud/apps/passman.nix | 10 -
pkgs/webapps/nextcloud/apps/polls.nix | 8 -
pkgs/webapps/nextcloud/apps/social.nix | 9 -
pkgs/webapps/nextcloud/apps/spreed.nix | 8 -
pkgs/webapps/nextcloud/apps/tasks.nix | 8 -
pkgs/webapps/nextcloud/default.nix | 69 -
pkgs/webapps/phpbb/default.nix | 61 -
pkgs/webapps/phpbb/extensions/adduser.nix | 22 -
pkgs/webapps/phpbb/extensions/autosubscribe.nix | 19 -
pkgs/webapps/phpbb/extensions/mailinglist.nix | 18 -
pkgs/webapps/phpbb/extensions/markdown.nix | 20 -
pkgs/webapps/phpbb/extensions/mchat.nix | 21 -
pkgs/webapps/phpbb/extensions/monitoranswers.nix | 19 -
pkgs/webapps/phpbb/langs/fr.nix | 12 -
pkgs/webapps/phpldapadmin/default.nix | 27 -
pkgs/webapps/phpldapadmin/ldap-align-button.patch | 11 -
pkgs/webapps/phpldapadmin/ldap-fix-password.patch | 13 -
.../phpldapadmin/ldap-sort-in-templates.patch | 12 -
pkgs/webapps/rompr/default.nix | 8 -
pkgs/webapps/rompr/rompr.json | 15 -
pkgs/webapps/roundcubemail/add_all.patch | 209 -
pkgs/webapps/roundcubemail/default.nix | 85 -
.../plugins/automatic_addressbook/default.nix | 7 -
.../roundcubemail/plugins/carddav/default.nix | 7 -
.../roundcubemail/plugins/contextmenu/default.nix | 7 -
.../plugins/contextmenu_folder/default.nix | 7 -
.../plugins/html5_notifier/default.nix | 7 -
.../roundcubemail/plugins/ident_switch/default.nix | 7 -
.../plugins/message_highlight/default.nix | 7 -
.../plugins/thunderbird_labels/default.nix | 7 -
pkgs/webapps/spip/default.nix | 32 -
pkgs/webapps/spip/spip_ldap_patch.patch | 60 -
pkgs/webapps/spip/spip_mes_options.php | 18 -
pkgs/webapps/surfer/default.nix | 12 -
pkgs/webapps/surfer/node-packages.nix | 2437 ----
pkgs/webapps/taskwarrior-web/Gemfile.lock | 139 -
pkgs/webapps/taskwarrior-web/default.nix | 22 -
pkgs/webapps/taskwarrior-web/fixes.patch | 56 -
pkgs/webapps/taskwarrior-web/gemset.nix | 567 -
pkgs/webapps/taskwarrior-web/taskwarrior-web.json | 15 -
pkgs/webapps/taskwarrior-web/thin.patch | 23 -
pkgs/webapps/ttrss/default.nix | 37 -
.../ttrss/plugins/af_feedmod/af_feedmod.json | 15 -
pkgs/webapps/ttrss/plugins/af_feedmod/default.nix | 9 -
.../ttrss/plugins/af_feedmod/type_replace.patch | 12 -
.../webapps/ttrss/plugins/auth_ldap/auth-ldap.json | 15 -
pkgs/webapps/ttrss/plugins/auth_ldap/default.nix | 8 -
pkgs/webapps/ttrss/plugins/feediron/default.nix | 9 -
pkgs/webapps/ttrss/plugins/feediron/feediron.json | 15 -
.../ttrss/plugins/feediron/json_reformat.patch | 18 -
.../webapps/ttrss/plugins/ff_instagram/default.nix | 8 -
.../ttrss/plugins/ff_instagram/ff_instagram.json | 15 -
.../ttrss/plugins/tumblr_gdpr_ua/default.nix | 8 -
.../plugins/tumblr_gdpr_ua/tumblr_gdpr_ua.json | 15 -
pkgs/webapps/wallabag/default.nix | 54 -
pkgs/webapps/wallabag/ldap.patch | 664 -
pkgs/webapps/yourls/default.nix | 28 -
pkgs/webapps/yourls/plugins/ldap/default.nix | 8 -
pkgs/webapps/yourls/plugins/ldap/ldap.json | 15 -
pkgs/webapps/yourls/yourls.json | 15 -
scripts/fetch_version | 173 -
scripts/make-nur | 2 +-
scripts/refresh_flakes | 71 +
scripts/setup | 90 +
scripts/update_flake | 18 +
scripts/with_env | 27 +
shell.nix | 18 -
systems/backup-2/base.nix | 164 +
systems/backup-2/databases/mariadb_replication.nix | 271 +
.../backup-2/databases/openldap_replication.nix | 165 +
.../backup-2/databases/postgresql_replication.nix | 203 +
systems/backup-2/databases/redis_replication.nix | 171 +
systems/backup-2/databases/utils.nix | 30 +
systems/backup-2/flake.lock | 1159 ++
systems/backup-2/flake.nix | 51 +
systems/backup-2/mail/relay.nix | 196 +
systems/backup-2/monitoring.nix | 117 +
systems/dilion/base.nix | 309 +
systems/dilion/flake.lock | 695 ++
systems/dilion/flake.nix | 43 +
systems/dilion/monitoring.nix | 43 +
systems/dilion/ssh_ldap_regular.sh | 19 +
systems/dilion/vms.nix | 200 +
systems/dilion/vms/base_configuration.nix | 27 +
systems/dilion/vms/base_image.nix | 98 +
systems/dilion/vms/buildbot_configuration.nix | 73 +
systems/eldiron/base.nix | 371 +
systems/eldiron/buildbot/default.nix | 310 +
systems/eldiron/coturn.nix | 73 +
systems/eldiron/databases/default.nix | 56 +
systems/eldiron/databases/mariadb.nix | 188 +
systems/eldiron/databases/openldap/default.nix | 304 +
systems/eldiron/databases/postgresql.nix | 236 +
systems/eldiron/databases/redis.nix | 138 +
systems/eldiron/dns.nix | 290 +
systems/eldiron/duply_backup.nix | 151 +
systems/eldiron/ejabberd/default.nix | 141 +
systems/eldiron/ejabberd/ejabberd.yml | 231 +
systems/eldiron/ejabberd/warn_xmpp_email.py | 112 +
systems/eldiron/flake.lock | 2758 +++++
systems/eldiron/flake.nix | 90 +
systems/eldiron/ftp.nix | 339 +
systems/eldiron/ftp_sync.sh | 47 +
systems/eldiron/gemini/default.nix | 50 +
systems/eldiron/gemini/public/index.gmi | 70 +
systems/eldiron/gitolite/default.nix | 127 +
systems/eldiron/gitolite/gitolite_ldap_groups.sh | 15 +
systems/eldiron/gitolite/ldap_gitolite.sh | 28 +
systems/eldiron/irc.nix | 80 +
systems/eldiron/mail/default.nix | 44 +
systems/eldiron/mail/dovecot.nix | 348 +
systems/eldiron/mail/postfix.nix | 497 +
systems/eldiron/mail/rspamd.nix | 88 +
systems/eldiron/mail/scan_reported_mails | 21 +
systems/eldiron/mail/sieve_bin/imapsieve_copy | 8 +
systems/eldiron/mail/sieve_scripts/backup.sieve | 7 +
.../eldiron/mail/sieve_scripts/report_ham.sieve | 11 +
.../eldiron/mail/sieve_scripts/report_spam.sieve | 3 +
systems/eldiron/mail/sympa.nix | 232 +
systems/eldiron/monitoring.nix | 51 +
systems/eldiron/mpd.nix | 60 +
systems/eldiron/pub/default.nix | 100 +
systems/eldiron/pub/ldap_pub.sh | 38 +
systems/eldiron/pub/restrict | 71 +
systems/eldiron/pub/tmux.restrict.conf | 43 +
systems/eldiron/tasks/default.nix | 384 +
systems/eldiron/tasks/www/index.php | 168 +
systems/eldiron/vpn/default.nix | 92 +
systems/eldiron/vpn/tinc/host-down | 7 +
systems/eldiron/vpn/tinc/host-up | 11 +
systems/eldiron/vpn/tinc/tinc-down | 12 +
systems/eldiron/vpn/tinc/tinc-up | 14 +
systems/eldiron/vpn/tinc/tinc.conf | 11 +
.../websites/_www/googleb6d69446ff4ca3e5.html | 1 +
systems/eldiron/websites/_www/index.htm | 9 +
.../eldiron/websites/_www/maintenance_immae.html | 58 +
systems/eldiron/websites/_www/nossl.html | 11 +
systems/eldiron/websites/assets/default.nix | 98 +
systems/eldiron/websites/assets/static/favicon.png | Bin 0 -> 1734 bytes
systems/eldiron/websites/assets/static/logger.png | Bin 0 -> 3340 bytes
systems/eldiron/websites/assets/static/logger.txt | 3 +
systems/eldiron/websites/assets/static/logo.jpg | Bin 0 -> 6931 bytes
systems/eldiron/websites/assets/static/logo.txt | 7 +
.../eldiron/websites/assets/static/logo_big.jpg | Bin 0 -> 16390 bytes
.../eldiron/websites/assets/static/logo_big.txt | 7 +
.../eldiron/websites/assets/static/logo_center.jpg | Bin 0 -> 29509 bytes
.../eldiron/websites/assets/static/logo_center.txt | 8 +
.../eldiron/websites/assets/static/monitoring.png | Bin 0 -> 57395 bytes
.../eldiron/websites/assets/static/monitoring.txt | 3 +
.../eldiron/websites/assets/static/photos/ct.jpg | Bin 0 -> 55914 bytes
.../websites/assets/static/photos/fretlink.jpg | Bin 0 -> 1520106 bytes
.../websites/assets/static/photos/raton.jpg | Bin 0 -> 17614 bytes
systems/eldiron/websites/cloud/add-htaccess.php | 70 +
systems/eldiron/websites/cloud/default.nix | 151 +
systems/eldiron/websites/cloud/farm.nix | 221 +
systems/eldiron/websites/commento/default.nix | 84 +
systems/eldiron/websites/cryptpad/default.nix | 89 +
systems/eldiron/websites/cryptpad/farm.nix | 186 +
systems/eldiron/websites/dav/davical.nix | 128 +
systems/eldiron/websites/dav/default.nix | 140 +
systems/eldiron/websites/dav/www/index.html | 42 +
systems/eldiron/websites/db/default.nix | 32 +
systems/eldiron/websites/default.nix | 319 +
systems/eldiron/websites/diaspora/default.nix | 224 +
systems/eldiron/websites/ether/default.nix | 251 +
.../websites/games/codenames/codenames.patch | 8306 +++++++++++++
.../eldiron/websites/games/codenames/default.nix | 76 +
systems/eldiron/websites/games/codenames/deps.nix | 11 +
.../eldiron/websites/games/codenames/elm-srcs.nix | 77 +
.../eldiron/websites/games/codenames/frontend.nix | 22 +
.../eldiron/websites/games/codenames/greenapid.nix | 18 +
.../websites/games/codenames/greenapid.patch | 39 +
.../websites/games/codenames/immae-assets.patch | 15 +
.../websites/games/codenames/node-packages.nix | 7622 ++++++++++++
.../eldiron/websites/games/codenames/registry.dat | Bin 0 -> 105421 bytes
systems/eldiron/websites/games/codenames/shell.nix | 50 +
.../websites/games/codenames/wordlists/french.txt | 694 ++
.../websites/games/terraforming-mars/default.nix | 75 +
.../games/terraforming-mars/immae-assets.patch | 13 +
.../games/terraforming-mars/node-packages.nix | 4353 +++++++
.../games/terraforming-mars/terraforming-mars.nix | 39 +
systems/eldiron/websites/git/cgit_js.html | 16 +
systems/eldiron/websites/git/default.nix | 98 +
systems/eldiron/websites/git/gitweb.nix | 124 +
systems/eldiron/websites/git/mantisbt.nix | 86 +
systems/eldiron/websites/im/default.nix | 118 +
systems/eldiron/websites/im/www/converse.html | 57 +
systems/eldiron/websites/im/www/index.html | 47 +
systems/eldiron/websites/immae/matrix/client | 11 +
systems/eldiron/websites/immae/matrix/server | 3 +
systems/eldiron/websites/immae/production.nix | 107 +
systems/eldiron/websites/immae/release.nix | 40 +
.../immae/sarl/certificates/2021-certificate.crt | 23 +
systems/eldiron/websites/kanboard/farm.nix | 183 +
systems/eldiron/websites/mail/default.nix | 141 +
systems/eldiron/websites/mail/mta-sts.nix | 42 +
systems/eldiron/websites/mail/rainloop.nix | 54 +
systems/eldiron/websites/mail/roundcubemail.nix | 119 +
systems/eldiron/websites/mail/www/index.html | 74 +
systems/eldiron/websites/mastodon/default.nix | 174 +
systems/eldiron/websites/mgoblin/default.nix | 173 +
systems/eldiron/websites/moomin.txt | 16 +
systems/eldiron/websites/nossl/index.html | 11 +
systems/eldiron/websites/peertube/default.nix | 147 +
systems/eldiron/websites/performance/default.nix | 93 +
systems/eldiron/websites/stats/default.nix | 51 +
systems/eldiron/websites/tools/adminer.nix | 83 +
systems/eldiron/websites/tools/default.nix | 547 +
systems/eldiron/websites/tools/dmarc_reports.nix | 61 +
.../eldiron/websites/tools/dmarc_reports/api.php | 122 +
.../eldiron/websites/tools/dmarc_reports/app.js | 103 +
.../websites/tools/dmarc_reports/default.css | 130 +
.../websites/tools/dmarc_reports/index.html | 128 +
systems/eldiron/websites/tools/dokuwiki.nix | 106 +
systems/eldiron/websites/tools/grocy.nix | 48 +
systems/eldiron/websites/tools/kanboard.nix | 81 +
systems/eldiron/websites/tools/landing.nix | 38 +
.../websites/tools/landing/ldap_password.php | 170 +
.../websites/tools/landing/ldap_ssh_keys.php | 343 +
systems/eldiron/websites/tools/landing/myip.php | 1 +
.../websites/tools/landing/node-packages.nix | 130 +
.../websites/tools/landing/yarn-packages.nix | 9357 ++++++++++++++
systems/eldiron/websites/tools/ldap.nix | 77 +
systems/eldiron/websites/tools/phpbb.nix | 69 +
systems/eldiron/websites/tools/rompr.nix | 86 +
systems/eldiron/websites/tools/shaarli.nix | 102 +
systems/eldiron/websites/tools/ttrss.nix | 167 +
systems/eldiron/websites/tools/wallabag.nix | 180 +
systems/eldiron/websites/tools/webhooks.nix | 25 +
systems/eldiron/websites/tools/ympd.nix | 54 +
systems/eldiron/websites/tools/yourls.nix | 118 +
systems/eldiron/websites/visio/default.nix | 63 +
systems/eldiron/websites/vpn/default.nix | 13 +
systems/eldiron/websites/vpn/www/index.html | 91 +
systems/eldiron/websites/vpn/www/style.css | 61 +
systems/eldiron/webstats/default.nix | 80 +
systems/eldiron/webstats/goaccess.conf | 100 +
systems/monitoring-1/base.nix | 75 +
systems/monitoring-1/flake.lock | 790 ++
systems/monitoring-1/flake.nix | 45 +
systems/monitoring-1/monitoring-master.nix | 87 +
systems/monitoring-1/monitoring.nix | 61 +
systems/monitoring-1/monitoring/master.nix | 43 +
systems/monitoring-1/monitoring/phare.nix | 20 +
systems/monitoring-1/monitoring/ulminfo-fr.nix | 20 +
systems/monitoring-1/status.nix | 84 +
systems/monitoring-1/status/app.py | 414 +
systems/monitoring-1/status_engine.nix | 123 +
systems/quatresaisons/flake.lock | 767 ++
systems/quatresaisons/flake.nix | 49 +
systems/zoldene/Immae.pub | 322 +
systems/zoldene/base.nix | 122 +
systems/zoldene/disko.nix | 87 +
systems/zoldene/flake.lock | 560 +
systems/zoldene/flake.nix | 29 +
systems/zoldene/logging.nix | 138 +
1392 files changed, 160009 insertions(+), 138496 deletions(-)
delete mode 100644 .gitconfig
delete mode 100644 .gitmodules
create mode 100644 deploy/flake.lock
create mode 100644 deploy/flake.nix
delete mode 100644 environments/default.nix
delete mode 100644 environments/immae-eu.nix
create mode 100644 flake.lock
create mode 100644 flake.nix
create mode 100644 flakes/copanier/default.nix
create mode 100644 flakes/copanier/fix_reduce.patch
create mode 100644 flakes/copanier/flake.lock
create mode 100644 flakes/copanier/flake.nix
create mode 100644 flakes/copanier/poetry.lock
create mode 100644 flakes/copanier/pyproject.toml
create mode 100644 flakes/diaspora/default.nix
create mode 100644 flakes/diaspora/flake.lock
create mode 100644 flakes/diaspora/flake.nix
create mode 100644 flakes/diaspora/gemset.nix
create mode 100644 flakes/diaspora/gemset_ldap.nix
create mode 100644 flakes/diaspora/ldap.patch
create mode 100644 flakes/etherpad-lite/default.nix
create mode 100644 flakes/etherpad-lite/etherpad_cleanup.sql
create mode 100644 flakes/etherpad-lite/flake.lock
create mode 100644 flakes/etherpad-lite/flake.nix
create mode 100644 flakes/etherpad-lite/libreoffice_patch.diff
create mode 100644 flakes/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_adminpads/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_adminpads/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_align/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_align/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_bookmark/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_bookmark/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_clear_formatting/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_clear_formatting/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_colors/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_colors/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_comments_page/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_comments_page/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_cursortrace/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_cursortrace/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_delete_empty_pads/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_delete_empty_pads/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_embedmedia/fix.patch
create mode 100644 flakes/etherpad-lite/modules/ep_embedmedia/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_embedmedia/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_font_family/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_font_family/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_font_size/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_font_size/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_headings2/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_headings2/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_immae_buttons/ep.json
create mode 100644 flakes/etherpad-lite/modules/ep_immae_buttons/hooks.js
create mode 100644 flakes/etherpad-lite/modules/ep_immae_buttons/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_immae_buttons/package.json
create mode 100644 flakes/etherpad-lite/modules/ep_immae_buttons/static/js/main.js
create mode 100644 flakes/etherpad-lite/modules/ep_immae_buttons/templates/editbarButtons.ejs
create mode 100644 flakes/etherpad-lite/modules/ep_ldapauth/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_ldapauth/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_line_height/fix.patch
create mode 100644 flakes/etherpad-lite/modules/ep_line_height/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_line_height/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_markdown/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_markdown/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_mypads/fix_ldap.patch
create mode 100644 flakes/etherpad-lite/modules/ep_mypads/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_mypads/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_page_view/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_page_view/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_previewimages/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_previewimages/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_private_pad/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_private_pad/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_ruler/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_ruler/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_scrollto/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_scrollto/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_set_title_on_pad/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_set_title_on_pad/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_subscript_and_superscript/font.patch
create mode 100644 flakes/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.nix
create mode 100644 flakes/etherpad-lite/modules/ep_timesliderdiff/node-packages.json
create mode 100644 flakes/etherpad-lite/modules/ep_timesliderdiff/node-packages.nix
create mode 100644 flakes/etherpad-lite/node-packages.nix
create mode 100644 flakes/flake.lock
create mode 100644 flakes/flake.nix
create mode 100644 flakes/grocy/default.nix
create mode 100644 flakes/grocy/flake.lock
create mode 100644 flakes/grocy/flake.nix
create mode 100644 flakes/grocy/php-packages.nix
create mode 100644 flakes/grocy/yarn-packages.nix
create mode 100644 flakes/grocy/yarn.patch
create mode 100644 flakes/loginctl-linger/flake.nix
create mode 100644 flakes/mastodon/default.nix
create mode 100644 flakes/mastodon/flake.lock
create mode 100644 flakes/mastodon/flake.nix
create mode 100644 flakes/mastodon/gemset.nix
create mode 100644 flakes/mastodon/yarn-packages.nix
create mode 100644 flakes/mediagoblin/bower-packages.nix
create mode 100644 flakes/mediagoblin/default.nix
create mode 100644 flakes/mediagoblin/flake.lock
create mode 100644 flakes/mediagoblin/flake.nix
create mode 100644 flakes/mediagoblin/ldap_fix.py
create mode 100644 flakes/mediagoblin/plugins/basicsearch/default.nix
create mode 100644 flakes/multi-apache-container/flake.lock
create mode 100644 flakes/multi-apache-container/flake.nix
create mode 100644 flakes/mypackages/flake.lock
create mode 100644 flakes/mypackages/flake.nix
create mode 100644 flakes/mypackages/lib/default.nix
create mode 100644 flakes/mypackages/lib/flake-parts-lib.nix
create mode 100644 flakes/mypackages/lib/node-env.nix
create mode 100644 flakes/mypackages/lib/private/default.nix
create mode 100644 flakes/mypackages/overlays/bitlbee-discord/default.nix
create mode 100644 flakes/mypackages/overlays/bitlbee/bitlbee_long_nicks.patch
create mode 100644 flakes/mypackages/overlays/bitlbee/default.nix
create mode 100644 flakes/mypackages/overlays/databases/mysql/default.nix
create mode 100644 flakes/mypackages/overlays/databases/postgresql/default.nix
create mode 100644 flakes/mypackages/overlays/default.nix
create mode 100644 flakes/mypackages/overlays/gitolite/default.nix
create mode 100755 flakes/mypackages/overlays/gitolite/invite
create mode 100644 flakes/mypackages/overlays/gitweb/default.nix
create mode 100644 flakes/mypackages/overlays/gitweb/theme/git-favicon.png
create mode 100644 flakes/mypackages/overlays/gitweb/theme/git-logo.png
create mode 100644 flakes/mypackages/overlays/gitweb/theme/gitweb.css
create mode 100644 flakes/mypackages/overlays/gitweb/theme/gitweb.js
create mode 100644 flakes/mypackages/overlays/goaccess/default.nix
create mode 100644 flakes/mypackages/overlays/kanboard/default.nix
create mode 100644 flakes/mypackages/overlays/morph/default.nix
create mode 100644 flakes/mypackages/overlays/morph/dry-run.patch
create mode 100644 flakes/mypackages/overlays/morph/verbose_nix.patch
create mode 100644 flakes/mypackages/overlays/php-packages/mysqli_patch.patch
create mode 100644 flakes/mypackages/overlays/postfix/default.nix
create mode 100644 flakes/mypackages/overlays/taskwarrior/TW-1778_patch.diff
create mode 100644 flakes/mypackages/overlays/taskwarrior/default.nix
create mode 100644 flakes/mypackages/overlays/ympd/default.nix
create mode 100644 flakes/mypackages/overlays/ympd/ympd-password-env.patch
create mode 100644 flakes/mypackages/pkgs/bash-libs/default.nix
create mode 100644 flakes/mypackages/pkgs/boinctui/default.nix
create mode 100644 flakes/mypackages/pkgs/cnagios/default.nix
create mode 100644 flakes/mypackages/pkgs/commento/default.nix
create mode 100644 flakes/mypackages/pkgs/composer-env/default.nix
create mode 100644 flakes/mypackages/pkgs/crypto/cardano-cli/default.nix
create mode 100644 flakes/mypackages/pkgs/crypto/cardano/default.nix
create mode 100644 flakes/mypackages/pkgs/crypto/iota-cli-app/default.nix
create mode 100644 flakes/mypackages/pkgs/crypto/iota-cli-app/node-packages.nix
create mode 100644 flakes/mypackages/pkgs/crypto/sia/default.nix
create mode 100644 flakes/mypackages/pkgs/default.nix
create mode 100644 flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/default.nix
create mode 100644 flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch
create mode 100644 flakes/mypackages/pkgs/flrn/default.nix
create mode 100644 flakes/mypackages/pkgs/fluent-bit/default.nix
create mode 100644 flakes/mypackages/pkgs/fluentd/Gemfile
create mode 100644 flakes/mypackages/pkgs/fluentd/Gemfile.lock
create mode 100644 flakes/mypackages/pkgs/fluentd/default.nix
create mode 100644 flakes/mypackages/pkgs/fluentd/gemset.nix
create mode 100644 flakes/mypackages/pkgs/gearmand/default.nix
create mode 100644 flakes/mypackages/pkgs/genius/default.nix
create mode 100644 flakes/mypackages/pkgs/ical2html/default.nix
create mode 100644 flakes/mypackages/pkgs/monitoring-plugins/default.nix
create mode 100644 flakes/mypackages/pkgs/mtop/default.nix
create mode 100644 flakes/mypackages/pkgs/mutt-ics/default.nix
create mode 100644 flakes/mypackages/pkgs/muttprint/0.73-4.diff.gz
create mode 100644 flakes/mypackages/pkgs/muttprint/default.nix
create mode 100644 flakes/mypackages/pkgs/muttprint/regex.patch
create mode 100644 flakes/mypackages/pkgs/muttprint/two_edge.patch
create mode 100644 flakes/mypackages/pkgs/naemon-livestatus/default.nix
create mode 100644 flakes/mypackages/pkgs/naemon/default.nix
create mode 100644 flakes/mypackages/pkgs/nagios-cli/default.nix
create mode 100644 flakes/mypackages/pkgs/nagnu/default.nix
create mode 100644 flakes/mypackages/pkgs/nb/default.nix
create mode 100644 flakes/mypackages/pkgs/note/default.nix
create mode 100644 flakes/mypackages/pkgs/notmuch/notmuch-python/default.nix
create mode 100644 flakes/mypackages/pkgs/notmuch/notmuch-vim/default.nix
create mode 100644 flakes/mypackages/pkgs/perl-ical-parser-html/default.nix
create mode 100644 flakes/mypackages/pkgs/pgpid/default.nix
create mode 100644 flakes/mypackages/pkgs/predixy/default.nix
create mode 100644 flakes/mypackages/pkgs/proftpd/default.nix
create mode 100644 flakes/mypackages/pkgs/pure-ftpd/default.nix
create mode 100644 flakes/mypackages/pkgs/riotkit-do/default.nix
create mode 100644 flakes/mypackages/pkgs/rrsync_sudo/default.nix
create mode 100644 flakes/mypackages/pkgs/rrsync_sudo/sudo.patch
create mode 100644 flakes/mypackages/pkgs/shaarli/default.nix
create mode 100644 flakes/mypackages/pkgs/shaarli/shaarli_ldap.patch
create mode 100644 flakes/mypackages/pkgs/signaldctl/default.nix
create mode 100644 flakes/mypackages/pkgs/slang_1/default.nix
create mode 100644 flakes/mypackages/pkgs/status_engine/host_perfdata.patch
create mode 100644 flakes/mypackages/pkgs/status_engine/interface.nix
create mode 100644 flakes/mypackages/pkgs/status_engine/interface_composer.lock
create mode 100644 flakes/mypackages/pkgs/status_engine/interface_php_packages.nix
create mode 100644 flakes/mypackages/pkgs/status_engine/module.nix
create mode 100644 flakes/mypackages/pkgs/status_engine/worker.nix
create mode 100644 flakes/mypackages/pkgs/status_engine/worker_composer.lock
create mode 100644 flakes/mypackages/pkgs/status_engine/worker_php_packages.nix
create mode 100644 flakes/mypackages/pkgs/telegram-history-dump/default.nix
create mode 100644 flakes/mypackages/pkgs/telegramircd/default.nix
create mode 100644 flakes/mypackages/pkgs/telethon_sync/default.nix
create mode 100644 flakes/mypackages/pkgs/terminal-velocity/default.nix
create mode 100644 flakes/mypackages/pkgs/terminal-velocity/fix_build.patch
create mode 100644 flakes/mypackages/pkgs/terminal-velocity/python3_support.patch
create mode 100644 flakes/mypackages/pkgs/terminal-velocity/sort_found_notes.patch
create mode 100644 flakes/mypackages/pkgs/tiv/default.nix
create mode 100644 flakes/mypackages/pkgs/tiv/tiv_builder.sh
create mode 100644 flakes/mypackages/pkgs/twins/default.nix
create mode 100644 flakes/mypackages/pkgs/umami/build-geo.patch
create mode 100644 flakes/mypackages/pkgs/umami/default.nix
create mode 100644 flakes/mypackages/pkgs/unicode/default.nix
create mode 100644 flakes/mypackages/pkgs/upcmd/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/adminer/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/.htaccess
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/footer.html
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/header.html
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/archive.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/audio.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/authors.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bin.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/blank.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bmp.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/c.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/calc.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cd.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/copying.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cpp.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/css.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/deb.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/default.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/diff.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/doc.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/draw.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/eps.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/exe.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-home.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-open.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-page.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gif.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gzip.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/h.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/hpp.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/html.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ico.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/image.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/install.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/java.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/jpg.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/js.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/json.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/log.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/makefile.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/markdown.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/package.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pdf.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/php.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/playlist.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/png.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pres.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ps.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/psd.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/py.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rar.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rb.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/readme.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rpm.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rss.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rtf.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/script.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/source.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/sql.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tar.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tex.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/text.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tiff.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/unknown.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/vcal.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/video.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/xml.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/zip.png
create mode 100644 flakes/mypackages/pkgs/webapps/apache-theme/theme/style.css
create mode 100644 flakes/mypackages/pkgs/webapps/awl/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/davical/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/dokuwiki/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix
create mode 100644 flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix
create mode 100644 flakes/mypackages/pkgs/webapps/infcloud/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/infcloud/infcloud_config.js
create mode 100644 flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report.php.diff
create mode 100644 flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report_page.php.diff
create mode 100644 flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add.php.diff
create mode 100644 flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff
create mode 100644 flakes/mypackages/pkgs/webapps/mantisbt_2/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/slack/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/Source.API.php.diff
create mode 100644 flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/audioplayer.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/bookmarks.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/calendar.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/carnet.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/contacts.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/cookbook.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/deck.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/drawio.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/external.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/extract.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/files_markdown.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/files_mindmap.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/files_readmemd.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/flowupload.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxedit.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxpod.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/groupfolders.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/impersonate.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/integration_dropbox.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/keeweb.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/maps.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/metadata.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/music.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/notes.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/ocsms.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/onlyoffice.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/passman.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/polls.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/side_menu.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/social.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/spreed.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/talk_matterbridge.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/apps/tasks.nix
create mode 100644 flakes/mypackages/pkgs/webapps/nextcloud/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/phpbb/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/phpbb/extensions/adduser.nix
create mode 100644 flakes/mypackages/pkgs/webapps/phpbb/extensions/autosubscribe.nix
create mode 100644 flakes/mypackages/pkgs/webapps/phpbb/extensions/mailinglist.nix
create mode 100644 flakes/mypackages/pkgs/webapps/phpbb/extensions/markdown.nix
create mode 100644 flakes/mypackages/pkgs/webapps/phpbb/extensions/mchat.nix
create mode 100644 flakes/mypackages/pkgs/webapps/phpbb/extensions/monitoranswers.nix
create mode 100644 flakes/mypackages/pkgs/webapps/phpbb/langs/fr.nix
create mode 100644 flakes/mypackages/pkgs/webapps/phpldapadmin/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-align-button.patch
create mode 100644 flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-fix-password.patch
create mode 100644 flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch
create mode 100644 flakes/mypackages/pkgs/webapps/rompr/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/roundcubemail/add_all.patch
create mode 100644 flakes/mypackages/pkgs/webapps/roundcubemail/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/roundcubemail/plugins/carddav/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/spip/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/spip/spip_ldap_patch.patch
create mode 100644 flakes/mypackages/pkgs/webapps/spip/spip_mes_options.php
create mode 100644 flakes/mypackages/pkgs/webapps/ttrss/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch
create mode 100644 flakes/mypackages/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch
create mode 100644 flakes/mypackages/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/wallabag/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/wallabag/ldap.patch
create mode 100644 flakes/mypackages/pkgs/webapps/yourls/default.nix
create mode 100644 flakes/mypackages/pkgs/webapps/yourls/plugins/ldap/default.nix
create mode 100644 flakes/naemon/flake.nix
create mode 100644 flakes/naemon/naemon.cfg
create mode 100644 flakes/openfoodnetwork/default.nix
create mode 100644 flakes/openfoodnetwork/gemset.nix
create mode 100644 flakes/private/buildbot/buildslist/bower.nix
create mode 100644 flakes/private/buildbot/buildslist/default.nix
create mode 100644 flakes/private/buildbot/buildslist/yarn-packages.nix
create mode 100644 flakes/private/buildbot/common/build_helpers.py
create mode 100644 flakes/private/buildbot/common/libvirt.py
create mode 100644 flakes/private/buildbot/common/master.cfg
create mode 100644 flakes/private/buildbot/flake.lock
create mode 100644 flakes/private/buildbot/flake.nix
create mode 100644 flakes/private/buildbot/test_project/__init__.py
create mode 100644 flakes/private/chatons/flake.lock
create mode 100644 flakes/private/chatons/flake.nix
create mode 100644 flakes/private/environment-dummy/flake.nix
create mode 100644 flakes/private/environment-dummy/ldap.conf
create mode 100644 flakes/private/environment-dummy/vars.yml
create mode 100644 flakes/private/environment/flake.nix
create mode 100755 flakes/private/mail-relay/filter-rewrite-from.py
create mode 100644 flakes/private/mail-relay/flake.lock
create mode 100644 flakes/private/mail-relay/flake.nix
create mode 100644 flakes/private/milters/flake.lock
create mode 100644 flakes/private/milters/flake.nix
create mode 100755 flakes/private/milters/verify_from.py
create mode 100644 flakes/private/monitoring/flake.lock
create mode 100644 flakes/private/monitoring/flake.nix
create mode 100644 flakes/private/monitoring/myplugins.nix
create mode 100644 flakes/private/monitoring/nagios-cli.cfg
create mode 100644 flakes/private/monitoring/objects_common.nix
create mode 100755 flakes/private/monitoring/plugins/check_backup_age
create mode 100755 flakes/private/monitoring/plugins/check_bandwidth
create mode 100755 flakes/private/monitoring/plugins/check_command
create mode 100755 flakes/private/monitoring/plugins/check_emails
create mode 100755 flakes/private/monitoring/plugins/check_eriomem
create mode 100755 flakes/private/monitoring/plugins/check_ftp_database
create mode 100755 flakes/private/monitoring/plugins/check_git
create mode 100755 flakes/private/monitoring/plugins/check_imap_connection
create mode 100755 flakes/private/monitoring/plugins/check_last_file_date
create mode 100755 flakes/private/monitoring/plugins/check_mem.sh
create mode 100755 flakes/private/monitoring/plugins/check_mysql_replication
create mode 100755 flakes/private/monitoring/plugins/check_openldap_replication
create mode 100755 flakes/private/monitoring/plugins/check_ovh_sms
create mode 100755 flakes/private/monitoring/plugins/check_postgres_database_count
create mode 100755 flakes/private/monitoring/plugins/check_postgres_replication
create mode 100755 flakes/private/monitoring/plugins/check_redis_replication
create mode 100755 flakes/private/monitoring/plugins/check_zfs_snapshot
create mode 100755 flakes/private/monitoring/plugins/notify_by_apprise
create mode 100755 flakes/private/monitoring/plugins/notify_by_email
create mode 100755 flakes/private/monitoring/plugins/notify_by_slack
create mode 100755 flakes/private/monitoring/plugins/send_nrdp.sh
create mode 100755 flakes/private/monitoring/send_mails
create mode 100644 flakes/private/monitoring/to_objects.nix
create mode 100644 flakes/private/openldap/flake.nix
create mode 100644 flakes/private/openldap/immae.ldif
create mode 100644 flakes/private/openldap/immae.schema
create mode 100644 flakes/private/php/flake.lock
create mode 100644 flakes/private/php/flake.nix
create mode 100644 flakes/private/ssh/flake.lock
create mode 100644 flakes/private/ssh/flake.nix
create mode 100755 flakes/private/ssh/ldap_authorized_keys.sh
create mode 100644 flakes/private/system/flake.lock
create mode 100644 flakes/private/system/flake.nix
create mode 100644 flakes/private/system/public_keys/Immae.pub
create mode 100644 flakes/surfer/default.nix
create mode 100644 flakes/surfer/flake.lock
create mode 100644 flakes/surfer/flake.nix
create mode 100644 flakes/surfer/node-packages.nix
create mode 100644 flakes/taskwarrior-web/Gemfile.lock
create mode 100644 flakes/taskwarrior-web/default.nix
create mode 100644 flakes/taskwarrior-web/fixes.patch
create mode 100644 flakes/taskwarrior-web/flake.lock
create mode 100644 flakes/taskwarrior-web/flake.nix
create mode 100644 flakes/taskwarrior-web/gemset.nix
create mode 100644 flakes/taskwarrior-web/thin.patch
delete mode 100644 lib/default.nix
delete mode 100644 lib/flake-compat-patched.nix
delete mode 100644 lib/flake-compat.nix
delete mode 100644 lib/node-env.nix
delete mode 100644 lib/private/default.nix
delete mode 100644 modules/default.nix
delete mode 100644 modules/duply_backup/default.nix
delete mode 100644 modules/naemon/default.nix
delete mode 100644 modules/naemon/naemon.cfg
delete mode 100644 modules/private/buildbot/common/build_helpers.py
delete mode 100644 modules/private/buildbot/common/libvirt.py
delete mode 100644 modules/private/buildbot/common/master.cfg
delete mode 100644 modules/private/buildbot/default.nix
delete mode 100644 modules/private/buildbot/projects/caldance/__init__.py
delete mode 100644 modules/private/buildbot/projects/cryptoportfolio/__init__.py
delete mode 100644 modules/private/buildbot/projects/denise/__init__.py
delete mode 100644 modules/private/buildbot/projects/immaeEu/__init__.py
delete mode 100755 modules/private/buildbot/projects/immaeEu/scripts/lacells_download
delete mode 100644 modules/private/buildbot/projects/test/__init__.py
delete mode 100644 modules/private/certificates.nix
delete mode 100644 modules/private/databases/default.nix
delete mode 100644 modules/private/databases/mariadb.nix
delete mode 100644 modules/private/databases/mariadb_replication.nix
delete mode 100644 modules/private/databases/openldap/default.nix
delete mode 100644 modules/private/databases/openldap/eldiron_schemas.nix
delete mode 100644 modules/private/databases/openldap/immae.schema
delete mode 100644 modules/private/databases/openldap_replication.nix
delete mode 100644 modules/private/databases/postgresql.nix
delete mode 100644 modules/private/databases/postgresql_replication.nix
delete mode 100644 modules/private/databases/redis.nix
delete mode 100644 modules/private/databases/redis_replication.nix
delete mode 100644 modules/private/databases/utils.nix
delete mode 100644 modules/private/default.nix
delete mode 100644 modules/private/dns.nix
delete mode 100644 modules/private/ejabberd/default.nix
delete mode 100644 modules/private/ejabberd/ejabberd.yml
delete mode 100644 modules/private/environment.nix
delete mode 100644 modules/private/ftp.nix
delete mode 100755 modules/private/ftp_sync.sh
delete mode 100644 modules/private/gemini/default.nix
delete mode 100644 modules/private/gemini/public/index.gmi
delete mode 100644 modules/private/gitolite/default.nix
delete mode 100755 modules/private/gitolite/gitolite_ldap_groups.sh
delete mode 100644 modules/private/gitolite/ldap_gitolite.sh
delete mode 100644 modules/private/irc.nix
delete mode 100644 modules/private/loginctl-linger.nix
delete mode 100644 modules/private/mail/default.nix
delete mode 100644 modules/private/mail/dovecot.nix
delete mode 100755 modules/private/mail/filter-rewrite-from.py
delete mode 100644 modules/private/mail/milters.nix
delete mode 100644 modules/private/mail/opensmtpd.nix
delete mode 100644 modules/private/mail/postfix.nix
delete mode 100644 modules/private/mail/relay.nix
delete mode 100644 modules/private/mail/rspamd.nix
delete mode 100755 modules/private/mail/scan_reported_mails
delete mode 100755 modules/private/mail/sieve_bin/imapsieve_copy
delete mode 100644 modules/private/mail/sieve_scripts/backup.sieve
delete mode 100644 modules/private/mail/sieve_scripts/report_ham.sieve
delete mode 100644 modules/private/mail/sieve_scripts/report_spam.sieve
delete mode 100644 modules/private/mail/sympa.nix
delete mode 100755 modules/private/mail/verify_from.py
delete mode 100644 modules/private/monitoring/default.nix
delete mode 100644 modules/private/monitoring/myplugins.nix
delete mode 100644 modules/private/monitoring/nagios-cli.cfg
delete mode 100644 modules/private/monitoring/objects_backup-2.nix
delete mode 100644 modules/private/monitoring/objects_common.nix
delete mode 100644 modules/private/monitoring/objects_dilion.nix
delete mode 100644 modules/private/monitoring/objects_eban.nix
delete mode 100644 modules/private/monitoring/objects_eldiron.nix
delete mode 100644 modules/private/monitoring/objects_master.nix
delete mode 100644 modules/private/monitoring/objects_monitoring-1.nix
delete mode 100644 modules/private/monitoring/objects_phare.nix
delete mode 100644 modules/private/monitoring/objects_quatresaisons.nix
delete mode 100644 modules/private/monitoring/objects_tiboqorl-fr.nix
delete mode 100644 modules/private/monitoring/objects_ulminfo-fr.nix
delete mode 100755 modules/private/monitoring/plugins/check_backup_age
delete mode 100755 modules/private/monitoring/plugins/check_bandwidth
delete mode 100755 modules/private/monitoring/plugins/check_command
delete mode 100755 modules/private/monitoring/plugins/check_emails
delete mode 100755 modules/private/monitoring/plugins/check_eriomem
delete mode 100755 modules/private/monitoring/plugins/check_ftp_database
delete mode 100755 modules/private/monitoring/plugins/check_git
delete mode 100755 modules/private/monitoring/plugins/check_imap_connection
delete mode 100755 modules/private/monitoring/plugins/check_last_file_date
delete mode 100755 modules/private/monitoring/plugins/check_mem.sh
delete mode 100755 modules/private/monitoring/plugins/check_mysql_replication
delete mode 100755 modules/private/monitoring/plugins/check_openldap_replication
delete mode 100755 modules/private/monitoring/plugins/check_ovh_sms
delete mode 100755 modules/private/monitoring/plugins/check_postgres_database_count
delete mode 100755 modules/private/monitoring/plugins/check_postgres_replication
delete mode 100755 modules/private/monitoring/plugins/check_redis_replication
delete mode 100755 modules/private/monitoring/plugins/check_zfs_snapshot
delete mode 100755 modules/private/monitoring/plugins/notify_by_email
delete mode 100755 modules/private/monitoring/plugins/notify_by_slack
delete mode 100755 modules/private/monitoring/plugins/notify_eban_url
delete mode 100755 modules/private/monitoring/plugins/send_nrdp.sh
delete mode 100755 modules/private/monitoring/send_mails
delete mode 100644 modules/private/monitoring/status.nix
delete mode 100755 modules/private/monitoring/status/app.py
delete mode 100644 modules/private/monitoring/status_engine.nix
delete mode 100644 modules/private/monitoring/to_objects.nix
delete mode 100644 modules/private/mpd.nix
delete mode 100644 modules/private/pub/default.nix
delete mode 100644 modules/private/pub/ldap_pub.sh
delete mode 100644 modules/private/pub/restrict
delete mode 100644 modules/private/pub/tmux.restrict.conf
delete mode 100644 modules/private/ssh/default.nix
delete mode 100755 modules/private/ssh/ldap_authorized_keys.sh
delete mode 100644 modules/private/ssh/ldap_regular.sh
delete mode 100644 modules/private/system.nix
delete mode 100644 modules/private/system/backup-2.nix
delete mode 100644 modules/private/system/dilion.nix
delete mode 100644 modules/private/system/dilion/vms.nix
delete mode 100644 modules/private/system/dilion/vms/base_configuration.nix
delete mode 100644 modules/private/system/dilion/vms/base_image.nix
delete mode 100644 modules/private/system/dilion/vms/buildbot_configuration.nix
delete mode 100644 modules/private/system/eldiron.nix
delete mode 100644 modules/private/system/monitoring-1.nix
delete mode 100644 modules/private/system/quatresaisons.nix
delete mode 100644 modules/private/system/quatresaisons/databases.nix
delete mode 100644 modules/private/system/quatresaisons/landing.yml
delete mode 100644 modules/private/system/quatresaisons/landing_4c.yml
delete mode 100644 modules/private/system/quatresaisons/nextcloud.nix
delete mode 100644 modules/private/tasks/default.nix
delete mode 100644 modules/private/tasks/www/index.php
delete mode 100644 modules/private/vpn/default.nix
delete mode 100755 modules/private/vpn/tinc/host-down
delete mode 100755 modules/private/vpn/tinc/host-up
delete mode 100755 modules/private/vpn/tinc/tinc-down
delete mode 100755 modules/private/vpn/tinc/tinc-up
delete mode 100644 modules/private/vpn/tinc/tinc.conf
delete mode 100644 modules/private/websites/_www/googleb6d69446ff4ca3e5.html
delete mode 100644 modules/private/websites/_www/index.htm
delete mode 100644 modules/private/websites/_www/maintenance_immae.html
delete mode 100644 modules/private/websites/_www/nossl.html
delete mode 100644 modules/private/websites/bakeer/cloud.nix
delete mode 100644 modules/private/websites/capitaines/discourse_static/discourse.png
delete mode 100644 modules/private/websites/capitaines/discourse_static/index.html
delete mode 100644 modules/private/websites/capitaines/landing_pages.nix
delete mode 100644 modules/private/websites/capitaines/mastodon_static/index.html
delete mode 100644 modules/private/websites/capitaines/mastodon_static/oops.png
delete mode 100644 modules/private/websites/chloe/app/default.nix
delete mode 100644 modules/private/websites/chloe/config/chmod.php
delete mode 100644 modules/private/websites/chloe/config/connect.php
delete mode 100644 modules/private/websites/chloe/config/ldap.php
delete mode 100644 modules/private/websites/chloe/integration.nix
delete mode 100644 modules/private/websites/chloe/production.nix
delete mode 100644 modules/private/websites/cip-ca/sympa.nix
delete mode 100644 modules/private/websites/commons/adminer.nix
delete mode 100644 modules/private/websites/connexionswing/app/default.nix
delete mode 100644 modules/private/websites/connexionswing/app/php-packages.nix
delete mode 100644 modules/private/websites/connexionswing/integration.nix
delete mode 100644 modules/private/websites/connexionswing/production.nix
delete mode 100644 modules/private/websites/default.nix
delete mode 100644 modules/private/websites/denise/aventuriers.nix
delete mode 100644 modules/private/websites/denise/bingo.nix
delete mode 100644 modules/private/websites/denise/denisejerome.nix
delete mode 100644 modules/private/websites/denise/evariste.nix
delete mode 100644 modules/private/websites/denise/oms.nix
delete mode 100644 modules/private/websites/denise/production.nix
delete mode 100644 modules/private/websites/emilia/atelierfringant.nix
delete mode 100644 modules/private/websites/emilia/moodle.nix
delete mode 100644 modules/private/websites/emilia/moodle/pause.html
delete mode 100644 modules/private/websites/florian/app.nix
delete mode 100644 modules/private/websites/florian/app/default.nix
delete mode 100644 modules/private/websites/florian/app/php-packages.nix
delete mode 100644 modules/private/websites/florian/integration.nix
delete mode 100644 modules/private/websites/florian/production.nix
delete mode 100644 modules/private/websites/immae/chatons/immae-eu.properties
delete mode 100644 modules/private/websites/immae/chatons/service-etherpad.properties
delete mode 100644 modules/private/websites/immae/eurl/certificates/2021-certificate.crt
delete mode 100644 modules/private/websites/immae/matrix/client
delete mode 100644 modules/private/websites/immae/matrix/server
delete mode 100644 modules/private/websites/immae/production.nix
delete mode 100644 modules/private/websites/immae/release.nix
delete mode 100644 modules/private/websites/immae/temp.nix
delete mode 100644 modules/private/websites/isabelle/aten_app/default.nix
delete mode 100644 modules/private/websites/isabelle/aten_app/php-packages.nix
delete mode 100644 modules/private/websites/isabelle/aten_app/yarn-packages.nix
delete mode 100644 modules/private/websites/isabelle/aten_integration.nix
delete mode 100644 modules/private/websites/isabelle/aten_production.nix
delete mode 100644 modules/private/websites/isabelle/config/chmod.php
delete mode 100644 modules/private/websites/isabelle/config/connect.php
delete mode 100644 modules/private/websites/isabelle/config/ldap.php
delete mode 100644 modules/private/websites/isabelle/iridologie.nix
delete mode 100644 modules/private/websites/isabelle/iridologie_app/default.nix
delete mode 100644 modules/private/websites/jerome/naturaloutil.nix
delete mode 100644 modules/private/websites/leila/production.nix
delete mode 100644 modules/private/websites/ludivine/app/default.nix
delete mode 100644 modules/private/websites/ludivine/app/php-packages.nix
delete mode 100644 modules/private/websites/ludivine/integration.nix
delete mode 100644 modules/private/websites/ludivine/production.nix
delete mode 100644 modules/private/websites/moomin.txt
delete mode 100644 modules/private/websites/nassime/production.nix
delete mode 100644 modules/private/websites/nath/villon.nix
delete mode 100644 modules/private/websites/papa/maison_bbc.nix
delete mode 100644 modules/private/websites/papa/maison_bbc_static/data.json
delete mode 100644 modules/private/websites/papa/maison_bbc_static/favicon.ico
delete mode 100644 modules/private/websites/papa/maison_bbc_static/index.html
delete mode 100644 modules/private/websites/papa/maison_bbc_static/lamaison.png
delete mode 100644 modules/private/websites/papa/surveillance.nix
delete mode 100644 modules/private/websites/patrick_fodella/altermondia.nix
delete mode 100644 modules/private/websites/patrick_fodella/ecolyeu.nix
delete mode 100644 modules/private/websites/piedsjaloux/app/default.nix
delete mode 100644 modules/private/websites/piedsjaloux/app/php-packages.nix
delete mode 100644 modules/private/websites/piedsjaloux/integration.nix
delete mode 100644 modules/private/websites/piedsjaloux/production.nix
delete mode 100644 modules/private/websites/ressourcerie_banon/cloud.nix
delete mode 100644 modules/private/websites/ressourcerie_banon/cryptpad.nix
delete mode 100644 modules/private/websites/ressourcerie_banon/production.nix
delete mode 100644 modules/private/websites/richie/production.nix
delete mode 100644 modules/private/websites/syden/peertube.nix
delete mode 100644 modules/private/websites/telio_tortay/production.nix
delete mode 100644 modules/private/websites/tools/assets/default.nix
delete mode 100644 modules/private/websites/tools/assets/static/favicon.png
delete mode 100644 modules/private/websites/tools/assets/static/logger.png
delete mode 100644 modules/private/websites/tools/assets/static/logger.txt
delete mode 100644 modules/private/websites/tools/assets/static/logo.jpg
delete mode 100644 modules/private/websites/tools/assets/static/logo.txt
delete mode 100644 modules/private/websites/tools/assets/static/logo_big.jpg
delete mode 100644 modules/private/websites/tools/assets/static/logo_big.txt
delete mode 100644 modules/private/websites/tools/assets/static/logo_center.jpg
delete mode 100644 modules/private/websites/tools/assets/static/logo_center.txt
delete mode 100644 modules/private/websites/tools/assets/static/monitoring.png
delete mode 100644 modules/private/websites/tools/assets/static/monitoring.txt
delete mode 100644 modules/private/websites/tools/assets/static/photos/ct.jpg
delete mode 100644 modules/private/websites/tools/assets/static/photos/fretlink.jpg
delete mode 100644 modules/private/websites/tools/assets/static/photos/raton.jpg
delete mode 100644 modules/private/websites/tools/cloud/default.nix
delete mode 100644 modules/private/websites/tools/cloud/farm.nix
delete mode 100644 modules/private/websites/tools/commento/default.nix
delete mode 100644 modules/private/websites/tools/cryptpad/default.nix
delete mode 100644 modules/private/websites/tools/cryptpad/farm.nix
delete mode 100644 modules/private/websites/tools/dav/davical.nix
delete mode 100644 modules/private/websites/tools/dav/default.nix
delete mode 100644 modules/private/websites/tools/dav/www/index.html
delete mode 100644 modules/private/websites/tools/db/default.nix
delete mode 100644 modules/private/websites/tools/diaspora/default.nix
delete mode 100644 modules/private/websites/tools/ether/default.nix
delete mode 100644 modules/private/websites/tools/games/codenames/codenames.patch
delete mode 100644 modules/private/websites/tools/games/codenames/default.nix
delete mode 100644 modules/private/websites/tools/games/codenames/deps.nix
delete mode 100644 modules/private/websites/tools/games/codenames/elm-srcs.nix
delete mode 100644 modules/private/websites/tools/games/codenames/frontend.nix
delete mode 100644 modules/private/websites/tools/games/codenames/greenapid.nix
delete mode 100644 modules/private/websites/tools/games/codenames/greenapid.patch
delete mode 100644 modules/private/websites/tools/games/codenames/node-packages.nix
delete mode 100644 modules/private/websites/tools/games/codenames/registry.dat
delete mode 100644 modules/private/websites/tools/games/codenames/shell.nix
delete mode 100644 modules/private/websites/tools/games/codenames/wordlists/french.txt
delete mode 100644 modules/private/websites/tools/games/terraforming-mars/default.nix
delete mode 100644 modules/private/websites/tools/games/terraforming-mars/node-packages.nix
delete mode 100644 modules/private/websites/tools/games/terraforming-mars/terraforming-mars.nix
delete mode 100644 modules/private/websites/tools/git/default.nix
delete mode 100644 modules/private/websites/tools/git/gitweb.nix
delete mode 100644 modules/private/websites/tools/git/mantisbt.nix
delete mode 100644 modules/private/websites/tools/im/default.nix
delete mode 100644 modules/private/websites/tools/im/www/converse.html
delete mode 100644 modules/private/websites/tools/im/www/index.html
delete mode 100644 modules/private/websites/tools/mail/default.nix
delete mode 100644 modules/private/websites/tools/mail/mta-sts.nix
delete mode 100644 modules/private/websites/tools/mail/rainloop.nix
delete mode 100644 modules/private/websites/tools/mail/roundcubemail.nix
delete mode 100644 modules/private/websites/tools/mail/www/index.html
delete mode 100644 modules/private/websites/tools/mastodon/default.nix
delete mode 100644 modules/private/websites/tools/mgoblin/default.nix
delete mode 100644 modules/private/websites/tools/peertube/default.nix
delete mode 100644 modules/private/websites/tools/performance/default.nix
delete mode 100644 modules/private/websites/tools/stats/default.nix
delete mode 100644 modules/private/websites/tools/tools/adminer.nix
delete mode 100644 modules/private/websites/tools/tools/csp_reports.nix
delete mode 100644 modules/private/websites/tools/tools/default.nix
delete mode 100644 modules/private/websites/tools/tools/dmarc_reports.nix
delete mode 100644 modules/private/websites/tools/tools/dmarc_reports/api.php
delete mode 100644 modules/private/websites/tools/tools/dmarc_reports/app.js
delete mode 100644 modules/private/websites/tools/tools/dmarc_reports/default.css
delete mode 100644 modules/private/websites/tools/tools/dmarc_reports/index.html
delete mode 100644 modules/private/websites/tools/tools/dokuwiki.nix
delete mode 100644 modules/private/websites/tools/tools/grocy.nix
delete mode 100644 modules/private/websites/tools/tools/kanboard.nix
delete mode 100644 modules/private/websites/tools/tools/landing.nix
delete mode 100644 modules/private/websites/tools/tools/landing/ldap_password.php
delete mode 100644 modules/private/websites/tools/tools/landing/ldap_ssh_keys.php
delete mode 100644 modules/private/websites/tools/tools/landing/myip.php
delete mode 100644 modules/private/websites/tools/tools/landing/node-packages.nix
delete mode 100644 modules/private/websites/tools/tools/landing/report_csp_violation.php
delete mode 100644 modules/private/websites/tools/tools/landing/yarn-packages.nix
delete mode 100644 modules/private/websites/tools/tools/ldap.nix
delete mode 100644 modules/private/websites/tools/tools/phpbb.nix
delete mode 100644 modules/private/websites/tools/tools/rompr.nix
delete mode 100644 modules/private/websites/tools/tools/shaarli.nix
delete mode 100644 modules/private/websites/tools/tools/ttrss.nix
delete mode 100644 modules/private/websites/tools/tools/wallabag.nix
delete mode 100644 modules/private/websites/tools/tools/webhooks.nix
delete mode 100644 modules/private/websites/tools/tools/ympd.nix
delete mode 100644 modules/private/websites/tools/tools/yourls.nix
delete mode 100644 modules/private/websites/tools/vpn/default.nix
delete mode 100644 modules/private/websites/tools/vpn/www/index.html
delete mode 100644 modules/private/websites/tools/vpn/www/style.css
delete mode 100644 modules/webapps/diaspora.nix
delete mode 100644 modules/webapps/etherpad-lite.nix
delete mode 100644 modules/webapps/mastodon.nix
delete mode 100644 modules/webapps/mediagoblin.nix
delete mode 100644 modules/webapps/webstats/default.nix
delete mode 100644 modules/webapps/webstats/goaccess.conf
delete mode 100644 modules/websites/default.nix
delete mode 100644 modules/websites/httpd-service-builder.nix
delete mode 100644 modules/websites/httpd-service-builder.patch
delete mode 100644 modules/websites/nosslVhost/index.html
delete mode 100644 modules/websites/php-application.nix
delete mode 100644 modules/zrepl.nix
delete mode 100644 nix/README.md
delete mode 100644 nix/sources.json
delete mode 100644 nix/sources.nix
delete mode 100644 nixops/.gitignore
delete mode 100644 nixops/.sops.yaml
delete mode 100644 nixops/Makefile
delete mode 100644 nixops/default.nix
delete mode 100644 nixops/public_keys/Immae.pub
delete mode 100755 nixops/scripts/setup
delete mode 100755 nixops/scripts/with_env
delete mode 160000 nixops/secrets
delete mode 100644 overlays/bitlbee-discord/default.nix
delete mode 100644 overlays/bitlbee/bitlbee_long_nicks.patch
delete mode 100644 overlays/bitlbee/default.nix
delete mode 100644 overlays/bonfire/default.nix
delete mode 100644 overlays/bugwarrior/default.nix
delete mode 100644 overlays/bugwarrior/mantisbt.patch
delete mode 100644 overlays/bundix/default.nix
delete mode 100644 overlays/databases/mysql/default.nix
delete mode 100644 overlays/databases/postgresql/default.nix
delete mode 100644 overlays/default.nix
delete mode 100644 overlays/doing/default.nix
delete mode 100644 overlays/dwm/default.nix
delete mode 100644 overlays/dwm/dwm_config.h
delete mode 100644 overlays/elinks/default.nix
delete mode 100644 overlays/elinks/elinks.json
delete mode 100644 overlays/gitolite/default.nix
delete mode 100755 overlays/gitolite/invite
delete mode 100644 overlays/gitweb/default.nix
delete mode 100644 overlays/gitweb/theme/git-favicon.png
delete mode 100644 overlays/gitweb/theme/git-logo.png
delete mode 100644 overlays/gitweb/theme/gitweb.css
delete mode 100644 overlays/gitweb/theme/gitweb.js
delete mode 100644 overlays/goaccess/default.nix
delete mode 100644 overlays/kanboard/default.nix
delete mode 100644 overlays/khal/default.nix
delete mode 100644 overlays/ledger/default.nix
delete mode 100644 overlays/lesspipe/default.nix
delete mode 100644 overlays/morph/default.nix
delete mode 100644 overlays/morph/dry-run.patch
delete mode 100644 overlays/morph/verbose_nix.patch
delete mode 100644 overlays/neomutt/default.nix
delete mode 100644 overlays/neomutt/tx.patch
delete mode 100644 overlays/nix-direnv/default.nix
delete mode 100644 overlays/nixops/default.nix
delete mode 100644 overlays/nixops/fix_glibc.patch
delete mode 100644 overlays/nixops/hetzner_cloud.patch
delete mode 100644 overlays/pass/default.nix
delete mode 100644 overlays/pass/pass-fix-pass-init.patch
delete mode 100644 overlays/pelican/default.nix
delete mode 100644 overlays/php-packages/default.nix
delete mode 100644 overlays/php-packages/mysqli_patch.patch
delete mode 100644 overlays/postfix/default.nix
delete mode 100644 overlays/procps-ng/default.nix
delete mode 100644 overlays/python-packages/buildbot.nix
delete mode 100644 overlays/python-packages/default.nix
delete mode 100644 overlays/sc-im/default.nix
delete mode 100644 overlays/shaarli/default.nix
delete mode 100644 overlays/shaarli/shaarli_ldap.patch
delete mode 100644 overlays/slrn/default.nix
delete mode 100644 overlays/taskwarrior/TW-1778_patch.diff
delete mode 100644 overlays/taskwarrior/default.nix
delete mode 100644 overlays/vcsh/default.nix
delete mode 100644 overlays/weechat/default.nix
delete mode 100644 overlays/ympd/default.nix
delete mode 100644 overlays/ympd/ympd-password-env.patch
delete mode 100644 overlays/ympd/ympd.json
delete mode 100644 pkgs/boinctui/default.nix
delete mode 100644 pkgs/cnagios/cnagios.json
delete mode 100644 pkgs/cnagios/default.nix
delete mode 100644 pkgs/commento/default.nix
delete mode 100644 pkgs/composer-env/default.nix
delete mode 100644 pkgs/crypto/cardano-cli/default.nix
delete mode 100644 pkgs/crypto/cardano/daedalus.json
delete mode 100644 pkgs/crypto/cardano/default.nix
delete mode 100644 pkgs/crypto/iota-cli-app/default.nix
delete mode 100644 pkgs/crypto/iota-cli-app/iota-cli-app.json
delete mode 100644 pkgs/crypto/iota-cli-app/node-packages.nix
delete mode 100644 pkgs/crypto/sia/default.nix
delete mode 100644 pkgs/default.nix
delete mode 100644 pkgs/dovecot/plugins/deleted_to_trash/default.nix
delete mode 100644 pkgs/dovecot/plugins/deleted_to_trash/dovecot-deleted_to_trash.json
delete mode 100644 pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch
delete mode 100644 pkgs/flrn/default.nix
delete mode 100644 pkgs/flrn/flrn.json
delete mode 100644 pkgs/gearmand/default.nix
delete mode 100644 pkgs/genius/default.nix
delete mode 100644 pkgs/monitoring-plugins/default.nix
delete mode 100644 pkgs/mtop/default.nix
delete mode 100644 pkgs/mutt-ics/default.nix
delete mode 100644 pkgs/mutt-ics/mutt-ics.json
delete mode 100644 pkgs/muttprint/0.73-4.diff.gz
delete mode 100644 pkgs/muttprint/default.nix
delete mode 100644 pkgs/muttprint/regex.patch
delete mode 100644 pkgs/muttprint/two_edge.patch
delete mode 100644 pkgs/naemon-livestatus/default.nix
delete mode 100644 pkgs/naemon-livestatus/naemon-livestatus.json
delete mode 100644 pkgs/naemon/default.nix
delete mode 100644 pkgs/naemon/naemon.json
delete mode 100644 pkgs/nagios-cli/default.nix
delete mode 100644 pkgs/nagios-cli/nagios-cli.json
delete mode 100644 pkgs/nagnu/default.nix
delete mode 100644 pkgs/nagnu/nagnu.json
delete mode 100644 pkgs/nb/default.nix
delete mode 100644 pkgs/note/default.nix
delete mode 100644 pkgs/notmuch/notmuch-python/default.nix
delete mode 100644 pkgs/notmuch/notmuch-vim/default.nix
delete mode 100644 pkgs/pgloader/default.nix
delete mode 100644 pkgs/predixy/default.nix
delete mode 100644 pkgs/predixy/predixy.json
delete mode 100644 pkgs/proftpd/default.nix
delete mode 100644 pkgs/pure-ftpd/default.nix
delete mode 100644 pkgs/python-packages/blivet/default.nix
delete mode 100644 pkgs/python-packages/blivet/fix_path.patch
delete mode 100644 pkgs/python-packages/blivet/poetry.lock
delete mode 100644 pkgs/python-packages/blivet/pyproject.toml
delete mode 100644 pkgs/python-packages/buildbot/plugins/buildslist/bower.nix
delete mode 100644 pkgs/python-packages/buildbot/plugins/buildslist/default.nix
delete mode 100644 pkgs/python-packages/buildbot/plugins/buildslist/yarn-packages.nix
delete mode 100644 pkgs/python-packages/buildbot/plugins/default.nix
delete mode 100644 pkgs/python-packages/default.nix
delete mode 100644 pkgs/python-packages/pymilter.nix
delete mode 100644 pkgs/python-packages/wokkel.nix
delete mode 100644 pkgs/rrsync_sudo/default.nix
delete mode 100644 pkgs/rrsync_sudo/sudo.patch
delete mode 100644 pkgs/signaldctl/default.nix
delete mode 100644 pkgs/slang_1/default.nix
delete mode 100644 pkgs/status_engine/host_perfdata.patch
delete mode 100644 pkgs/status_engine/interface.nix
delete mode 100644 pkgs/status_engine/interface_composer.lock
delete mode 100644 pkgs/status_engine/interface_php_packages.nix
delete mode 100644 pkgs/status_engine/module.json
delete mode 100644 pkgs/status_engine/module.nix
delete mode 100644 pkgs/status_engine/worker.json
delete mode 100644 pkgs/status_engine/worker.nix
delete mode 100644 pkgs/status_engine/worker_composer.lock
delete mode 100644 pkgs/status_engine/worker_php_packages.nix
delete mode 100644 pkgs/telegram-history-dump/default.nix
delete mode 100644 pkgs/telegram-history-dump/telegram-history-dump.json
delete mode 100644 pkgs/telegramircd/default.nix
delete mode 100644 pkgs/telegramircd/telegramircd.json
delete mode 100644 pkgs/telethon_sync/default.nix
delete mode 100644 pkgs/terminal-velocity/default.nix
delete mode 100644 pkgs/terminal-velocity/fix_build.patch
delete mode 100644 pkgs/terminal-velocity/python3_support.patch
delete mode 100644 pkgs/terminal-velocity/sort_found_notes.patch
delete mode 100644 pkgs/tiv/default.nix
delete mode 100644 pkgs/tiv/tiv_builder.sh
delete mode 100644 pkgs/twins/default.nix
delete mode 100644 pkgs/umami/build-geo.patch
delete mode 100644 pkgs/umami/default.nix
delete mode 100644 pkgs/unicode/default.nix
delete mode 100644 pkgs/webapps/adminer/default.nix
delete mode 100644 pkgs/webapps/apache-theme/default.nix
delete mode 100644 pkgs/webapps/apache-theme/theme/.htaccess
delete mode 100644 pkgs/webapps/apache-theme/theme/footer.html
delete mode 100644 pkgs/webapps/apache-theme/theme/header.html
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/archive.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/audio.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/authors.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/bin.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/blank.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/bmp.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/c.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/calc.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/cd.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/copying.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/cpp.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/css.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/deb.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/default.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/diff.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/doc.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/draw.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/eps.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/exe.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/folder-home.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/folder-open.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/folder-page.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/folder-parent.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/folder.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/gif.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/gzip.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/h.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/hpp.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/html.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/ico.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/image.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/install.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/java.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/jpg.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/js.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/json.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/log.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/makefile.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/markdown.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/package.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/pdf.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/php.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/playlist.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/png.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/pres.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/ps.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/psd.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/py.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/rar.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/rb.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/readme.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/rpm.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/rss.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/rtf.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/script.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/source.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/sql.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/tar.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/tex.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/text.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/tiff.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/unknown.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/vcal.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/video.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/xml.png
delete mode 100644 pkgs/webapps/apache-theme/theme/icons/zip.png
delete mode 100644 pkgs/webapps/apache-theme/theme/style.css
delete mode 100644 pkgs/webapps/awl/default.nix
delete mode 100644 pkgs/webapps/davical/default.nix
delete mode 100644 pkgs/webapps/default.nix
delete mode 100644 pkgs/webapps/diaspora/default.nix
delete mode 100644 pkgs/webapps/diaspora/diaspora.json
delete mode 100644 pkgs/webapps/diaspora/gemset.nix
delete mode 100644 pkgs/webapps/diaspora/gemset_ldap.nix
delete mode 100644 pkgs/webapps/diaspora/ldap.patch
delete mode 100644 pkgs/webapps/dokuwiki/default.nix
delete mode 100644 pkgs/webapps/dokuwiki/dokuwiki.json
delete mode 100644 pkgs/webapps/dokuwiki/plugins/farmer.nix
delete mode 100644 pkgs/webapps/dokuwiki/plugins/todo.nix
delete mode 100644 pkgs/webapps/etherpad-lite/default.nix
delete mode 100644 pkgs/webapps/etherpad-lite/etherpad-lite.json
delete mode 100644 pkgs/webapps/etherpad-lite/libreoffice_patch.diff
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_adminpads/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_adminpads/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_align/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_align/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_bookmark/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_bookmark/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_clear_formatting/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_clear_formatting/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_colors/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_colors/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_comments_page/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_comments_page/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_cursortrace/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_cursortrace/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_delete_empty_pads/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_delete_empty_pads/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_embedmedia/fix.patch
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_embedmedia/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_embedmedia/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_font_family/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_font_family/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_font_size/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_font_size/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_headings2/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_headings2/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_immae_buttons/ep.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_immae_buttons/hooks.js
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_immae_buttons/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_immae_buttons/package.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_immae_buttons/static/js/main.js
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_immae_buttons/templates/editbarButtons.ejs
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_ldapauth/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_ldapauth/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_line_height/fix.patch
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_line_height/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_line_height/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_markdown/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_markdown/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_mypads/fix_ldap.patch
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_mypads/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_mypads/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_page_view/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_page_view/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_previewimages/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_previewimages/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_private_pad/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_private_pad/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_ruler/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_ruler/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_scrollto/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_scrollto/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_set_title_on_pad/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_set_title_on_pad/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_subscript_and_superscript/font.patch
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_timesliderdiff/node-packages.json
delete mode 100644 pkgs/webapps/etherpad-lite/modules/ep_timesliderdiff/node-packages.nix
delete mode 100644 pkgs/webapps/etherpad-lite/node-packages.nix
delete mode 100644 pkgs/webapps/grocy/default.nix
delete mode 100644 pkgs/webapps/grocy/grocy.json
delete mode 100644 pkgs/webapps/grocy/php-packages.nix
delete mode 100644 pkgs/webapps/grocy/yarn-packages.nix
delete mode 100644 pkgs/webapps/grocy/yarn.patch
delete mode 100644 pkgs/webapps/infcloud/default.nix
delete mode 100644 pkgs/webapps/infcloud/infcloud_config.js
delete mode 100644 pkgs/webapps/mantisbt_2/bug_report.php.diff
delete mode 100644 pkgs/webapps/mantisbt_2/bug_report_page.php.diff
delete mode 100644 pkgs/webapps/mantisbt_2/bugnote_add.php.diff
delete mode 100644 pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff
delete mode 100644 pkgs/webapps/mantisbt_2/default.nix
delete mode 100644 pkgs/webapps/mantisbt_2/plugins/slack/default.nix
delete mode 100644 pkgs/webapps/mantisbt_2/plugins/source-integration/Source.API.php.diff
delete mode 100644 pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix
delete mode 100644 pkgs/webapps/mastodon/default.nix
delete mode 100644 pkgs/webapps/mastodon/gemset.nix
delete mode 100644 pkgs/webapps/mastodon/mastodon.json
delete mode 100644 pkgs/webapps/mastodon/yarn-packages.nix
delete mode 100644 pkgs/webapps/mediagoblin/bower-packages.nix
delete mode 100644 pkgs/webapps/mediagoblin/default.nix
delete mode 100644 pkgs/webapps/mediagoblin/ldap_fix.py
delete mode 100644 pkgs/webapps/mediagoblin/plugins/basicsearch/default.nix
delete mode 100644 pkgs/webapps/mediagoblin/tempita.json
delete mode 100644 pkgs/webapps/nextcloud/apps/apporder.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/audioplayer.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/bookmarks.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/calendar.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/carnet.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/circles.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/contacts.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/cookbook.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/deck.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/extract.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/files_markdown.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/files_readmemd.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/flowupload.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/gpxedit.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/gpxpod.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/impersonate.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/keeweb.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/maps.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/metadata.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/music.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/notes.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/ocsms.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/passman.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/polls.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/social.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/spreed.nix
delete mode 100644 pkgs/webapps/nextcloud/apps/tasks.nix
delete mode 100644 pkgs/webapps/nextcloud/default.nix
delete mode 100644 pkgs/webapps/phpbb/default.nix
delete mode 100644 pkgs/webapps/phpbb/extensions/adduser.nix
delete mode 100644 pkgs/webapps/phpbb/extensions/autosubscribe.nix
delete mode 100644 pkgs/webapps/phpbb/extensions/mailinglist.nix
delete mode 100644 pkgs/webapps/phpbb/extensions/markdown.nix
delete mode 100644 pkgs/webapps/phpbb/extensions/mchat.nix
delete mode 100644 pkgs/webapps/phpbb/extensions/monitoranswers.nix
delete mode 100644 pkgs/webapps/phpbb/langs/fr.nix
delete mode 100644 pkgs/webapps/phpldapadmin/default.nix
delete mode 100644 pkgs/webapps/phpldapadmin/ldap-align-button.patch
delete mode 100644 pkgs/webapps/phpldapadmin/ldap-fix-password.patch
delete mode 100644 pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch
delete mode 100644 pkgs/webapps/rompr/default.nix
delete mode 100644 pkgs/webapps/rompr/rompr.json
delete mode 100644 pkgs/webapps/roundcubemail/add_all.patch
delete mode 100644 pkgs/webapps/roundcubemail/default.nix
delete mode 100644 pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix
delete mode 100644 pkgs/webapps/roundcubemail/plugins/carddav/default.nix
delete mode 100644 pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix
delete mode 100644 pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix
delete mode 100644 pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix
delete mode 100644 pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix
delete mode 100644 pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix
delete mode 100644 pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix
delete mode 100644 pkgs/webapps/spip/default.nix
delete mode 100644 pkgs/webapps/spip/spip_ldap_patch.patch
delete mode 100644 pkgs/webapps/spip/spip_mes_options.php
delete mode 100644 pkgs/webapps/surfer/default.nix
delete mode 100644 pkgs/webapps/surfer/node-packages.nix
delete mode 100644 pkgs/webapps/taskwarrior-web/Gemfile.lock
delete mode 100644 pkgs/webapps/taskwarrior-web/default.nix
delete mode 100644 pkgs/webapps/taskwarrior-web/fixes.patch
delete mode 100644 pkgs/webapps/taskwarrior-web/gemset.nix
delete mode 100644 pkgs/webapps/taskwarrior-web/taskwarrior-web.json
delete mode 100644 pkgs/webapps/taskwarrior-web/thin.patch
delete mode 100644 pkgs/webapps/ttrss/default.nix
delete mode 100644 pkgs/webapps/ttrss/plugins/af_feedmod/af_feedmod.json
delete mode 100644 pkgs/webapps/ttrss/plugins/af_feedmod/default.nix
delete mode 100644 pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch
delete mode 100644 pkgs/webapps/ttrss/plugins/auth_ldap/auth-ldap.json
delete mode 100644 pkgs/webapps/ttrss/plugins/auth_ldap/default.nix
delete mode 100644 pkgs/webapps/ttrss/plugins/feediron/default.nix
delete mode 100644 pkgs/webapps/ttrss/plugins/feediron/feediron.json
delete mode 100644 pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch
delete mode 100644 pkgs/webapps/ttrss/plugins/ff_instagram/default.nix
delete mode 100644 pkgs/webapps/ttrss/plugins/ff_instagram/ff_instagram.json
delete mode 100644 pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix
delete mode 100644 pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/tumblr_gdpr_ua.json
delete mode 100644 pkgs/webapps/wallabag/default.nix
delete mode 100644 pkgs/webapps/wallabag/ldap.patch
delete mode 100644 pkgs/webapps/yourls/default.nix
delete mode 100644 pkgs/webapps/yourls/plugins/ldap/default.nix
delete mode 100644 pkgs/webapps/yourls/plugins/ldap/ldap.json
delete mode 100644 pkgs/webapps/yourls/yourls.json
delete mode 100755 scripts/fetch_version
create mode 100755 scripts/refresh_flakes
create mode 100755 scripts/setup
create mode 100755 scripts/update_flake
create mode 100755 scripts/with_env
delete mode 100644 shell.nix
create mode 100644 systems/backup-2/base.nix
create mode 100644 systems/backup-2/databases/mariadb_replication.nix
create mode 100644 systems/backup-2/databases/openldap_replication.nix
create mode 100644 systems/backup-2/databases/postgresql_replication.nix
create mode 100644 systems/backup-2/databases/redis_replication.nix
create mode 100644 systems/backup-2/databases/utils.nix
create mode 100644 systems/backup-2/flake.lock
create mode 100644 systems/backup-2/flake.nix
create mode 100644 systems/backup-2/mail/relay.nix
create mode 100644 systems/backup-2/monitoring.nix
create mode 100644 systems/dilion/base.nix
create mode 100644 systems/dilion/flake.lock
create mode 100644 systems/dilion/flake.nix
create mode 100644 systems/dilion/monitoring.nix
create mode 100644 systems/dilion/ssh_ldap_regular.sh
create mode 100644 systems/dilion/vms.nix
create mode 100644 systems/dilion/vms/base_configuration.nix
create mode 100644 systems/dilion/vms/base_image.nix
create mode 100644 systems/dilion/vms/buildbot_configuration.nix
create mode 100644 systems/eldiron/base.nix
create mode 100644 systems/eldiron/buildbot/default.nix
create mode 100644 systems/eldiron/coturn.nix
create mode 100644 systems/eldiron/databases/default.nix
create mode 100644 systems/eldiron/databases/mariadb.nix
create mode 100644 systems/eldiron/databases/openldap/default.nix
create mode 100644 systems/eldiron/databases/postgresql.nix
create mode 100644 systems/eldiron/databases/redis.nix
create mode 100644 systems/eldiron/dns.nix
create mode 100644 systems/eldiron/duply_backup.nix
create mode 100644 systems/eldiron/ejabberd/default.nix
create mode 100644 systems/eldiron/ejabberd/ejabberd.yml
create mode 100755 systems/eldiron/ejabberd/warn_xmpp_email.py
create mode 100644 systems/eldiron/flake.lock
create mode 100644 systems/eldiron/flake.nix
create mode 100644 systems/eldiron/ftp.nix
create mode 100755 systems/eldiron/ftp_sync.sh
create mode 100644 systems/eldiron/gemini/default.nix
create mode 100644 systems/eldiron/gemini/public/index.gmi
create mode 100644 systems/eldiron/gitolite/default.nix
create mode 100755 systems/eldiron/gitolite/gitolite_ldap_groups.sh
create mode 100644 systems/eldiron/gitolite/ldap_gitolite.sh
create mode 100644 systems/eldiron/irc.nix
create mode 100644 systems/eldiron/mail/default.nix
create mode 100644 systems/eldiron/mail/dovecot.nix
create mode 100644 systems/eldiron/mail/postfix.nix
create mode 100644 systems/eldiron/mail/rspamd.nix
create mode 100755 systems/eldiron/mail/scan_reported_mails
create mode 100755 systems/eldiron/mail/sieve_bin/imapsieve_copy
create mode 100644 systems/eldiron/mail/sieve_scripts/backup.sieve
create mode 100644 systems/eldiron/mail/sieve_scripts/report_ham.sieve
create mode 100644 systems/eldiron/mail/sieve_scripts/report_spam.sieve
create mode 100644 systems/eldiron/mail/sympa.nix
create mode 100644 systems/eldiron/monitoring.nix
create mode 100644 systems/eldiron/mpd.nix
create mode 100644 systems/eldiron/pub/default.nix
create mode 100644 systems/eldiron/pub/ldap_pub.sh
create mode 100644 systems/eldiron/pub/restrict
create mode 100644 systems/eldiron/pub/tmux.restrict.conf
create mode 100644 systems/eldiron/tasks/default.nix
create mode 100644 systems/eldiron/tasks/www/index.php
create mode 100644 systems/eldiron/vpn/default.nix
create mode 100755 systems/eldiron/vpn/tinc/host-down
create mode 100755 systems/eldiron/vpn/tinc/host-up
create mode 100755 systems/eldiron/vpn/tinc/tinc-down
create mode 100755 systems/eldiron/vpn/tinc/tinc-up
create mode 100644 systems/eldiron/vpn/tinc/tinc.conf
create mode 100644 systems/eldiron/websites/_www/googleb6d69446ff4ca3e5.html
create mode 100644 systems/eldiron/websites/_www/index.htm
create mode 100644 systems/eldiron/websites/_www/maintenance_immae.html
create mode 100644 systems/eldiron/websites/_www/nossl.html
create mode 100644 systems/eldiron/websites/assets/default.nix
create mode 100644 systems/eldiron/websites/assets/static/favicon.png
create mode 100644 systems/eldiron/websites/assets/static/logger.png
create mode 100644 systems/eldiron/websites/assets/static/logger.txt
create mode 100644 systems/eldiron/websites/assets/static/logo.jpg
create mode 100644 systems/eldiron/websites/assets/static/logo.txt
create mode 100644 systems/eldiron/websites/assets/static/logo_big.jpg
create mode 100644 systems/eldiron/websites/assets/static/logo_big.txt
create mode 100644 systems/eldiron/websites/assets/static/logo_center.jpg
create mode 100644 systems/eldiron/websites/assets/static/logo_center.txt
create mode 100644 systems/eldiron/websites/assets/static/monitoring.png
create mode 100644 systems/eldiron/websites/assets/static/monitoring.txt
create mode 100644 systems/eldiron/websites/assets/static/photos/ct.jpg
create mode 100644 systems/eldiron/websites/assets/static/photos/fretlink.jpg
create mode 100644 systems/eldiron/websites/assets/static/photos/raton.jpg
create mode 100644 systems/eldiron/websites/cloud/add-htaccess.php
create mode 100644 systems/eldiron/websites/cloud/default.nix
create mode 100644 systems/eldiron/websites/cloud/farm.nix
create mode 100644 systems/eldiron/websites/commento/default.nix
create mode 100644 systems/eldiron/websites/cryptpad/default.nix
create mode 100644 systems/eldiron/websites/cryptpad/farm.nix
create mode 100644 systems/eldiron/websites/dav/davical.nix
create mode 100644 systems/eldiron/websites/dav/default.nix
create mode 100644 systems/eldiron/websites/dav/www/index.html
create mode 100644 systems/eldiron/websites/db/default.nix
create mode 100644 systems/eldiron/websites/default.nix
create mode 100644 systems/eldiron/websites/diaspora/default.nix
create mode 100644 systems/eldiron/websites/ether/default.nix
create mode 100644 systems/eldiron/websites/games/codenames/codenames.patch
create mode 100644 systems/eldiron/websites/games/codenames/default.nix
create mode 100644 systems/eldiron/websites/games/codenames/deps.nix
create mode 100644 systems/eldiron/websites/games/codenames/elm-srcs.nix
create mode 100644 systems/eldiron/websites/games/codenames/frontend.nix
create mode 100644 systems/eldiron/websites/games/codenames/greenapid.nix
create mode 100644 systems/eldiron/websites/games/codenames/greenapid.patch
create mode 100644 systems/eldiron/websites/games/codenames/immae-assets.patch
create mode 100644 systems/eldiron/websites/games/codenames/node-packages.nix
create mode 100644 systems/eldiron/websites/games/codenames/registry.dat
create mode 100644 systems/eldiron/websites/games/codenames/shell.nix
create mode 100644 systems/eldiron/websites/games/codenames/wordlists/french.txt
create mode 100644 systems/eldiron/websites/games/terraforming-mars/default.nix
create mode 100644 systems/eldiron/websites/games/terraforming-mars/immae-assets.patch
create mode 100644 systems/eldiron/websites/games/terraforming-mars/node-packages.nix
create mode 100644 systems/eldiron/websites/games/terraforming-mars/terraforming-mars.nix
create mode 100644 systems/eldiron/websites/git/cgit_js.html
create mode 100644 systems/eldiron/websites/git/default.nix
create mode 100644 systems/eldiron/websites/git/gitweb.nix
create mode 100644 systems/eldiron/websites/git/mantisbt.nix
create mode 100644 systems/eldiron/websites/im/default.nix
create mode 100644 systems/eldiron/websites/im/www/converse.html
create mode 100644 systems/eldiron/websites/im/www/index.html
create mode 100644 systems/eldiron/websites/immae/matrix/client
create mode 100644 systems/eldiron/websites/immae/matrix/server
create mode 100644 systems/eldiron/websites/immae/production.nix
create mode 100644 systems/eldiron/websites/immae/release.nix
create mode 100644 systems/eldiron/websites/immae/sarl/certificates/2021-certificate.crt
create mode 100644 systems/eldiron/websites/kanboard/farm.nix
create mode 100644 systems/eldiron/websites/mail/default.nix
create mode 100644 systems/eldiron/websites/mail/mta-sts.nix
create mode 100644 systems/eldiron/websites/mail/rainloop.nix
create mode 100644 systems/eldiron/websites/mail/roundcubemail.nix
create mode 100644 systems/eldiron/websites/mail/www/index.html
create mode 100644 systems/eldiron/websites/mastodon/default.nix
create mode 100644 systems/eldiron/websites/mgoblin/default.nix
create mode 100644 systems/eldiron/websites/moomin.txt
create mode 100644 systems/eldiron/websites/nossl/index.html
create mode 100644 systems/eldiron/websites/peertube/default.nix
create mode 100644 systems/eldiron/websites/performance/default.nix
create mode 100644 systems/eldiron/websites/stats/default.nix
create mode 100644 systems/eldiron/websites/tools/adminer.nix
create mode 100644 systems/eldiron/websites/tools/default.nix
create mode 100644 systems/eldiron/websites/tools/dmarc_reports.nix
create mode 100644 systems/eldiron/websites/tools/dmarc_reports/api.php
create mode 100644 systems/eldiron/websites/tools/dmarc_reports/app.js
create mode 100644 systems/eldiron/websites/tools/dmarc_reports/default.css
create mode 100644 systems/eldiron/websites/tools/dmarc_reports/index.html
create mode 100644 systems/eldiron/websites/tools/dokuwiki.nix
create mode 100644 systems/eldiron/websites/tools/grocy.nix
create mode 100644 systems/eldiron/websites/tools/kanboard.nix
create mode 100644 systems/eldiron/websites/tools/landing.nix
create mode 100644 systems/eldiron/websites/tools/landing/ldap_password.php
create mode 100644 systems/eldiron/websites/tools/landing/ldap_ssh_keys.php
create mode 100644 systems/eldiron/websites/tools/landing/myip.php
create mode 100644 systems/eldiron/websites/tools/landing/node-packages.nix
create mode 100644 systems/eldiron/websites/tools/landing/yarn-packages.nix
create mode 100644 systems/eldiron/websites/tools/ldap.nix
create mode 100644 systems/eldiron/websites/tools/phpbb.nix
create mode 100644 systems/eldiron/websites/tools/rompr.nix
create mode 100644 systems/eldiron/websites/tools/shaarli.nix
create mode 100644 systems/eldiron/websites/tools/ttrss.nix
create mode 100644 systems/eldiron/websites/tools/wallabag.nix
create mode 100644 systems/eldiron/websites/tools/webhooks.nix
create mode 100644 systems/eldiron/websites/tools/ympd.nix
create mode 100644 systems/eldiron/websites/tools/yourls.nix
create mode 100644 systems/eldiron/websites/visio/default.nix
create mode 100644 systems/eldiron/websites/vpn/default.nix
create mode 100644 systems/eldiron/websites/vpn/www/index.html
create mode 100644 systems/eldiron/websites/vpn/www/style.css
create mode 100644 systems/eldiron/webstats/default.nix
create mode 100644 systems/eldiron/webstats/goaccess.conf
create mode 100644 systems/monitoring-1/base.nix
create mode 100644 systems/monitoring-1/flake.lock
create mode 100644 systems/monitoring-1/flake.nix
create mode 100644 systems/monitoring-1/monitoring-master.nix
create mode 100644 systems/monitoring-1/monitoring.nix
create mode 100644 systems/monitoring-1/monitoring/master.nix
create mode 100644 systems/monitoring-1/monitoring/phare.nix
create mode 100644 systems/monitoring-1/monitoring/ulminfo-fr.nix
create mode 100644 systems/monitoring-1/status.nix
create mode 100755 systems/monitoring-1/status/app.py
create mode 100644 systems/monitoring-1/status_engine.nix
create mode 100644 systems/quatresaisons/flake.lock
create mode 100644 systems/quatresaisons/flake.nix
create mode 100644 systems/zoldene/Immae.pub
create mode 100644 systems/zoldene/base.nix
create mode 100644 systems/zoldene/disko.nix
create mode 100644 systems/zoldene/flake.lock
create mode 100644 systems/zoldene/flake.nix
create mode 100644 systems/zoldene/logging.nix
diff --git a/.envrc b/.envrc
index 438d807..4718a18 100644
--- a/.envrc
+++ b/.envrc
@@ -1,13 +1,25 @@
# vim: filetype=bash
-export NIX_PATH=nixpkgs=$(cat $(expand_path nix/sources.json) | jq -r '."nixpkgs-nixops".url')
-NIX_PATH=$NIX_PATH:nixpkgs-nix=$(cat $(expand_path nix/sources.json) | jq -r '."nixpkgs-nix".url')
+export DIRENV_FLAKE_DONT_ADD_SOURCES_ROOT=y
+nix_direnv_watch_file() {
+ nix_watches+=("$@")
+ filtered=()
+ for i in "$@"; do
+ case "$i" in
+ */flake.lock)
+ ;;
+ *)
+ filtered+=("$i")
+ esac
+ done
+ watch_file "${filtered[@]}"
+}
-export NIXOPS_ENV_LOADED=1
+if nix eval './deploy#sops-vars-file' 2>/dev/null >/dev/null; then
+ export DEVSHELL_NO_MOTD=1
+ cd deploy
+ use flake . --no-warn-dirty
+ cd ..
+ unset DEVSHELL_NO_MOTD
+fi
-PATH_add $(expand_path scripts)
-PATH_add $(expand_path nixops/scripts)
-
-use nix
-watch_file $(expand_path nix/sources.json)
-
-clean_nix_shell
+use flake . --no-warn-dirty
diff --git a/.gitconfig b/.gitconfig
deleted file mode 100644
index 7aa8870..0000000
--- a/.gitconfig
+++ /dev/null
@@ -1,9 +0,0 @@
-; git config --local include.path '../.gitconfig'
-[push]
- recurseSubmodules = on-demand
-; Find a way to include this file automatically?
-; git -C nixops/secrets config --local diff.gpgdiffer.textconv "gpg --quiet -d"
-[diff "gpgdiffer"]
- textconv = "gpg --quiet -d"
-[diff "sopsdiffer"]
- textconv = "sops -d"
diff --git a/.gitignore b/.gitignore
index ff9c9cf..0c17e7a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
/result*
/versions_log
.direnv/
-/nixops/.gcroots
+/deploy/.gcroots
+/deploy/history
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index c2d9b18..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "nixops/secrets"]
- path = nixops/secrets
- url = gitolite@git.immae.eu:perso/Immae/Config/Nix/Nixops/Secrets
diff --git a/DOCUMENTATION.md b/DOCUMENTATION.md
index 6c68680..fcd0b15 100644
--- a/DOCUMENTATION.md
+++ b/DOCUMENTATION.md
@@ -1,7 +1,7 @@
Get Started
===========
-- You may run ./nixops/scripts/setup to setup the directory and variables
+- You may run ./scripts/setup to setup the directory and variables
The script won’t do anything without asking first, you may stop at any
step.
@@ -43,8 +43,7 @@ The directory is divided in several sections:
of hosts. They tend to be less used now. But sometimes they need to
have an identity (mostly to be able to send e-mails) The subsection
"roles" (ou=roles,ou=hosts,dc=immae,dc=eu) was from a Puppet age and
- is deprecated. Only one host remains handled by Puppet (caldance) and
- should be replaced with an internal VM.
+ is deprecated.
- The "groups" section (ou=groups,dc=immae,dc=eu) contains the generic
groups of users not associated to a service.
- The "group_users" and "users" sections contain the users (usually with
@@ -58,7 +57,7 @@ How does nixpkgs resolve
To build nixops machines
------------------------
-The `NIX_PATH` environment variable is built in nixops/Makefile and
+The `NIX_PATH` environment variable is built in deploy/Makefile and
contains three paths: nixpkgs, nixpkgsNext, nixpkgsPrevious. Only the
first one is actually used most of the time. Derivations that need
pinned nixpkgs should declare it in `nix/sources.json` (it’s the case
@@ -236,13 +235,18 @@ Nextcloud
---------
- Do not skip major versions!
+- Check php supported version (lib/versioncheck.php file)
+- Update all the apps: check on https://apps.nextcloud.com/ and build with
+ ```
+ nix-build -E "with import {};webapps.nextcloud.withApps (a: builtins.attrValues webapps.nextcloud.allApps)"
+ ```
- Put nextcloud in maintenance mode :
```
nextcloud-occ maintenance:mode --on
```
- Do a backup :
```
- sudo -u postgres pg_dump -n owncloud webapps > nextcloud.sql
+ sudo -u postgres pg_dump owncloud > nextcloud.sql
```
- Upgrade
- Run the upgrade task :
@@ -256,6 +260,22 @@ Nextcloud
- Issues :
https://docs.nextcloud.com/server/16/admin_manual/maintenance/manual_upgrade.html
+- Farm :
+ Once a new instance thename is created, create the database:
+ ```
+ CREATE USER nextcloud_thename WITH PASSWORD 'somepassword';
+ CREATE DATABASE nextcloud_thename WITH OWNER nextcloud_thename;
+ ```
+ Then add this to the config.php:
+ ```
+ 'appstoreenabled' => false,
+ ```
+ Then run:
+ ```
+ nextcloud-occ-thename maintenance:install --database=pgsql --database-name=nextcloud_thename --database-host=/run/postgresql --database-user=nextcloud_thename --admin-user=immae --data-dir=/var/lib/nextcloud_farm/thename/data
+ ```
+ Finally, edit the config.php to add the correct trusted domain
+
Flakes
------
diff --git a/Makefile b/Makefile
index 50fa09f..6282df2 100644
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,128 @@
-subrecipes = setup nix-info edit_env edit_vars
-subrecipes += ssh-eldiron ssh-backup-2 ssh-monitoring-1 ssh-4c
-subrecipes += debug build dry-run upload deploy next-boot deploy-reboot
-subrecipes += list-generations delete-generations cleanup
-${subrecipes}:
- @$(MAKE) --no-print-directory -C nixops/ $@
-.PHONY: ${subrecipes}
-
nur:
./scripts/make-nur
curl -o /dev/null -XPOST "https://nur-update.herokuapp.com/update?repo=immae"
shellcheck:
- shellcheck scripts/* nixops/scripts/* modules/private/gitolite/gitolite_ldap_groups.sh modules/private/ssh/ldap_authorized_keys.sh modules/private/pub/restrict
+ shellcheck scripts/* deploy/scripts/* modules/private/gitolite/gitolite_ldap_groups.sh modules/private/ssh/ldap_authorized_keys.sh modules/private/pub/restrict
.PHONY: nur shellcheck
+
+###### Initial setup
+setup:
+ ./scripts/setup
+.PHONY: setup
+
+###### Morph regular tasks
+PROFILE=./deploy/history
+TARGET ?=
+COMMON_COLEMNA_ARGS = -f ./deploy/flake.nix -v
+#Only enabled in colemna 0.4: --nix-option allow-unsafe-native-code-during-evaluation true --nix-option allow-import-from-derivation true --nix-option substituters https://cache.nixos.org/
+MORPH_ARGS ?=
+ifdef TARGET
+ # multiple targets: --on="{machine1,machine2}" (works with * glob too)
+ override MORPH_ARGS +=--on=$(TARGET)
+endif
+SSH_ARGS ?=
+
+nodes= dilion eldiron backup-2 monitoring-1 quatresaisons zoldene
+
+refresh_flakes:
+ @if [ -n "$(TARGET)" ]; then \
+ ./scripts/refresh_flakes --no-new-inputs ./systems/$(TARGET)/flake.nix; \
+ nix --no-warn-dirty flake lock --update-input n-$(TARGET) ./flakes; \
+ nix --no-warn-dirty flake lock --update-input main-flake ./deploy; \
+ else \
+ ./scripts/refresh_flakes --no-new-inputs; \
+ fi
+ (cd deploy ; nix flake lock --update-input secrets-local || true)
+
+.PHONY: refresh_flakes
+
+.PHONY: build $(addprefix build-,$(nodes))
+build-dilion build-eldiron build-backup-2 build-monitoring-1 build-quatresaisons build-zoldene:
+ $(MAKE) build TARGET=$(@:build-%=%)
+build: refresh_flakes
+ colmena build $(COMMON_COLEMNA_ARGS) $(MORPH_ARGS)
+
+.PHONY: deploy $(addprefix deploy-,$(nodes))
+deploy-dilion deploy-eldiron deploy-backup-2 deploy-monitoring-1 deploy-quatresaisons deploy-zoldene:
+ $(MAKE) deploy TARGET=$(@:deploy-%=%)
+deploy: refresh_flakes
+ ./scripts/with_env colmena apply $(COMMON_COLEMNA_ARGS) switch --keep-result $(MORPH_ARGS)
+ $(MAKE) keep-roots
+
+.PHONY: ssh $(addprefix ssh-,$(nodes))
+ssh-4c: ssh-quatresaisons
+ssh-dilion ssh-eldiron ssh-backup-2 ssh-monitoring-1 ssh-quatresaisons ssh-zoldene:
+ $(MAKE) ssh TARGET=$(@:ssh-%=%)
+ssh:
+ ./scripts/with_env bash -c 'ssh -i $$SSH_IDENTITY_FILE root@$(TARGET) $(SSH_ARGS)'
+
+.PHONY: ssh-decrypt $(addsuffix -decrypt,$(addprefix ssh-,$(nodes)))
+ssh-zoldene-decrypt:
+ $(MAKE) ssh-decrypt TARGET=$(@:ssh-%-decrypt=%)
+ssh-decrypt:
+ ./scripts/with_env bash -c 'ssh -p 2222 -i $$SSH_IDENTITY_FILE root@$(TARGET) $(SSH_ARGS)'
+
+.PHONY: debug $(addprefix debug-,$(nodes))
+debug-dilion debug-eldiron debug-backup-2 debug-monitoring-1 debug-quatresaisons debug-zoldene:
+ $(MAKE) debug TARGET=$(@:debug-%=%)
+debug: refresh_flakes
+ colmena build $(COMMON_COLEMNA_ARGS) --show-trace $(MORPH_ARGS)
+
+.PHONY: upload $(addprefix upload-,$(nodes))
+upload-dilion upload-eldiron upload-backup-2 upload-monitoring-1 upload-quatresaisons upload-zoldene:
+ $(MAKE) upload TARGET=$(@:upload-%=%)
+upload: refresh_flakes
+ ./scripts/with_env colmena apply $(COMMON_COLEMNA_ARGS) push $(MORPH_ARGS)
+
+.PHONY: test-deploy $(addprefix test-deploy-,$(nodes))
+test-deploy-dilion test-deploy-eldiron test-deploy-backup-2 test-deploy-monitoring-1 test-deploy-quatresaisons test-deploy-zoldene:
+ $(MAKE) test-deploy TARGET=$(@:test-deploy-%=%)
+test-deploy: refresh_flakes
+ ./scripts/with_env colmena apply $(COMMON_COLEMNA_ARGS) test $(MORPH_ARGS)
+
+.PHONY: next-boot $(addprefix next-boot-,$(nodes))
+next-boot-dilion next-boot-eldiron next-boot-backup-2 next-boot-monitoring-1 next-boot-quatresaisons next-boot-zoldene:
+ $(MAKE) next-boot TARGET=$(@:next-boot-%=%)
+next-boot: refresh_flakes
+ ./scripts/with_env colmena apply $(COMMON_COLEMNA_ARGS) boot $(MORPH_ARGS)
+
+.PHONY: deploy-reboot $(addprefix deploy-reboot-,$(nodes))
+deploy-reboot-dilion deploy-reboot-eldiron deploy-reboot-backup-2 deploy-reboot-monitoring-1 deploy-reboot-quatresaisons deploy-reboot-zoldene:
+ $(MAKE) deploy-reboot TARGET=$(@:deploy-reboot-%=%)
+deploy-reboot: refresh_flakes
+ ./scripts/with_env colmena apply $(COMMON_COLEMNA_ARGS) boot --reboot $(MORPH_ARGS)
+ # Run it a second time because first time uploads the secrets
+ # before rebooting
+ $(MAKE) deploy
+
+keep-roots:
+ mkdir -p $(PROFILE)
+ for i in deploy/.gcroots/node-*; do nix-env -p $(PROFILE)/$$(basename $$i | sed -e "s/node-//") --set "$$i"; done
+
+systems := $(shell find $(PROFILE) -type l -not -name "*link" -printf "%f ")
+###### Cleanup generations and garbage collection
+GEN ?= "+3"
+
+list-generations:
+ @$(foreach system, $(systems), echo $(system);\
+ nix-env -p $(PROFILE)/$(system) --list-generations;\
+ $(MAKE) ssh-$(system) SSH_ARGS="nix-env -p /nix/var/nix/profiles/system --list-generations";\
+ )
+.PHONY: list-generations
+
+delete-generations:
+ $(MAKE) keep-roots
+ @$(foreach system, $(systems), echo $(system); \
+ nix-env -p $(PROFILE)/$(system) --delete-generations $(GEN);\
+ $(MAKE) ssh-$(system) SSH_ARGS="nix-env -p /nix/var/nix/profiles/system --delete-generations $(GEN)";\
+ )
+.PHONY: delete-generations
+
+cleanup: delete-generations
+ nix-store --gc
+ @$(foreach system, $(systems), echo $(system); \
+ $(MAKE) ssh-$(system) SSH_ARGS="nix-store --gc";\
+ )
+.PHONY: cleanup
diff --git a/default.nix b/default.nix
index 1f43cdd..d0bc618 100644
--- a/default.nix
+++ b/default.nix
@@ -1,11 +1,9 @@
-{ sources ? import ./nix/sources.nix, pkgs ? import sources.nixpkgs {} }:
+{}:
let
- mypkgs = pkgs.callPackage ./pkgs {};
+ mypackages = builtins.getFlake "path:${builtins.toString ./flakes/mypackages}";
in
{
- lib = pkgs.callPackage ./lib {};
- modules = import ./modules;
- overlays = import ./overlays;
- pkgs = mypkgs;
- environments = pkgs.callPackage ./environments {};
-} // mypkgs
+ lib = mypackages.mylibs;
+ overlays = mypackages.overlays;
+ pkgs = mypackages.packages."${builtins.currentSystem}";
+} // mypackages.packages."${builtins.currentSystem}"
diff --git a/deploy/flake.lock b/deploy/flake.lock
new file mode 100644
index 0000000..afa2ec5
--- /dev/null
+++ b/deploy/flake.lock
@@ -0,0 +1,9816 @@
+{
+ "nodes": {
+ "backports": {
+ "inputs": {
+ "flake-utils": "flake-utils_6",
+ "nixpkgs": "nixpkgs_11"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_8",
+ "nixpkgs": "nixpkgs_18"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_3": {
+ "inputs": {
+ "flake-utils": "flake-utils_20",
+ "nixpkgs": "nixpkgs_34"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_4": {
+ "inputs": {
+ "flake-utils": "flake-utils_34",
+ "nixpkgs": "nixpkgs_57"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_5": {
+ "inputs": {
+ "flake-utils": "flake-utils_37",
+ "nixpkgs": "nixpkgs_65"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_6": {
+ "inputs": {
+ "flake-utils": "flake-utils_39",
+ "nixpkgs": "nixpkgs_72"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_7": {
+ "inputs": {
+ "flake-utils": "flake-utils_61",
+ "nixpkgs": "nixpkgs_101"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "buildslist": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585697026,
+ "narHash": "sha256-7CO89q6Bmg59eN5tFGYaqJR/rpJrLu7dpulXgJUv/0E=",
+ "ref": "master",
+ "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0",
+ "revCount": 4,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ }
+ },
+ "buildslist_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585697026,
+ "narHash": "sha256-7CO89q6Bmg59eN5tFGYaqJR/rpJrLu7dpulXgJUv/0E=",
+ "ref": "master",
+ "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0",
+ "revCount": 4,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ }
+ },
+ "chatons": {
+ "inputs": {
+ "environment": "environment"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ }
+ },
+ "chatons_2": {
+ "inputs": {
+ "environment": "environment_18"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ }
+ },
+ "colmena": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils_3",
+ "nixpkgs": "nixpkgs_4",
+ "stable": "stable"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_2": {
+ "inputs": {
+ "flake-compat": "flake-compat_2",
+ "flake-utils": "flake-utils_7",
+ "nixpkgs": "nixpkgs_13",
+ "stable": "stable_2"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_3": {
+ "inputs": {
+ "flake-compat": "flake-compat_3",
+ "flake-utils": "flake-utils_10",
+ "nixpkgs": "nixpkgs_20",
+ "stable": "stable_3"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_4": {
+ "inputs": {
+ "flake-compat": "flake-compat_4",
+ "flake-utils": "flake-utils_32",
+ "nixpkgs": "nixpkgs_51",
+ "stable": "stable_4"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_5": {
+ "inputs": {
+ "flake-compat": "flake-compat_5",
+ "flake-utils": "flake-utils_35",
+ "nixpkgs": "nixpkgs_59",
+ "stable": "stable_5"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_6": {
+ "inputs": {
+ "flake-compat": "flake-compat_6",
+ "flake-utils": "flake-utils_38",
+ "nixpkgs": "nixpkgs_67",
+ "stable": "stable_6"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_7": {
+ "inputs": {
+ "flake-compat": "flake-compat_7",
+ "flake-utils": "flake-utils_45",
+ "nixpkgs": "nixpkgs_81",
+ "stable": "stable_7"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "copanier": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1633895178,
+ "narHash": "sha256-0xrh12eBSVpgVeniSbKQAuGBhIyVB/rB/H3Tt7EJ1vQ=",
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "rev": "d1b92cc639f4d25ad31baf4a6579a33c44a0d837",
+ "type": "github"
+ },
+ "original": {
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "type": "github"
+ }
+ },
+ "copanier_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1633895178,
+ "narHash": "sha256-0xrh12eBSVpgVeniSbKQAuGBhIyVB/rB/H3Tt7EJ1vQ=",
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "rev": "d1b92cc639f4d25ad31baf4a6579a33c44a0d837",
+ "type": "github"
+ },
+ "original": {
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "type": "github"
+ }
+ },
+ "devshell": {
+ "inputs": {
+ "nixpkgs": "nixpkgs",
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1688380630,
+ "narHash": "sha256-8ilApWVb1mAi4439zS3iFeIT0ODlbrifm/fegWwgHjA=",
+ "owner": "numtide",
+ "repo": "devshell",
+ "rev": "f9238ec3d75cefbb2b42a44948c4e8fb1ae9a205",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "devshell",
+ "type": "github"
+ }
+ },
+ "diaspora": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1551139311,
+ "narHash": "sha256-Fyv7Af68YccJL2OGz6l9d71UmnLB+LstlWbOlgFZtgo=",
+ "owner": "diaspora",
+ "repo": "diaspora",
+ "rev": "663da1ef2573863eb870e0edbd50050f261f3d30",
+ "type": "github"
+ },
+ "original": {
+ "owner": "diaspora",
+ "ref": "v0.7.10.0",
+ "repo": "diaspora",
+ "type": "github"
+ }
+ },
+ "diaspora_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1551139311,
+ "narHash": "sha256-Fyv7Af68YccJL2OGz6l9d71UmnLB+LstlWbOlgFZtgo=",
+ "owner": "diaspora",
+ "repo": "diaspora",
+ "rev": "663da1ef2573863eb870e0edbd50050f261f3d30",
+ "type": "github"
+ },
+ "original": {
+ "owner": "diaspora",
+ "ref": "v0.7.10.0",
+ "repo": "diaspora",
+ "type": "github"
+ }
+ },
+ "disko": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_5"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_2": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_14"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_3": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_21"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_4": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_52"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_5": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_60"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_6": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_68"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_7": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_82"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "dns-nix": {
+ "inputs": {
+ "flake-utils": "flake-utils_9",
+ "nixpkgs": [
+ "main-flake",
+ "n-eldiron",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1635273082,
+ "narHash": "sha256-EHiDP2jEa7Ai5ZwIf5uld9RVFcV77+2SUxjQXwJsJa0=",
+ "owner": "kirelagin",
+ "repo": "dns.nix",
+ "rev": "c7b9645da9c0ddce4f9de4ef27ec01bb8108039a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "kirelagin",
+ "repo": "dns.nix",
+ "type": "github"
+ }
+ },
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_10": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_11": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_12": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_13": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_14": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_15": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_16": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_17": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_18": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_19": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_20": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_21": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_22": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_23": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_24": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_25": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_26": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_27": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_28": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_29": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_30": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_31": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_32": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_33": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_8": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_9": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "etherpad-lite": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1587951095,
+ "narHash": "sha256-PjAkvkC7tJzRECUqOvuWfoZTz8QqDXk6oXEN3ig24rQ=",
+ "owner": "ether",
+ "repo": "etherpad-lite",
+ "rev": "62101147a0c3495dc80daa87ab53a3366321a205",
+ "type": "github"
+ },
+ "original": {
+ "owner": "ether",
+ "ref": "1.8.3",
+ "repo": "etherpad-lite",
+ "type": "github"
+ }
+ },
+ "etherpad-lite_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1587951095,
+ "narHash": "sha256-PjAkvkC7tJzRECUqOvuWfoZTz8QqDXk6oXEN3ig24rQ=",
+ "owner": "ether",
+ "repo": "etherpad-lite",
+ "rev": "62101147a0c3495dc80daa87ab53a3366321a205",
+ "type": "github"
+ },
+ "original": {
+ "owner": "ether",
+ "ref": "1.8.3",
+ "repo": "etherpad-lite",
+ "type": "github"
+ }
+ },
+ "files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_10": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_11": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_12": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_13": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_14": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_15": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_8": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_9": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_3": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_6": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_7": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_2"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_10": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_13"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_11": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_15"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_12": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_16"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_13": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_18"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_14": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_19"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_15": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_20"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_16": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_21"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_17": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_22"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_18": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_23"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_19": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_24"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_3"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_20": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_25"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_21": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_27"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_22": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_28"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_3": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_5"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_4": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_6"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_5": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_7"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_6": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_9"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_7": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_10"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_8": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_11"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_9": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_12"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_10": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_11": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_12": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_13": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_14": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_15": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_16": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_17": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_18": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_19": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_20": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_21": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_22": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_23": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_24": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_25": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_26": {
+ "locked": {
+ "lastModified": 1649676176,
+ "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_27": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_28": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_29": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_3": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_30": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_31": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_32": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_33": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_34": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_35": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_36": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_37": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_38": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_39": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_4": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_40": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_41": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_42": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_43": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_44": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_45": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_46": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_47": {
+ "locked": {
+ "lastModified": 1649676176,
+ "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_48": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_49": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_5": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_50": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_51": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_52": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_53": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_54": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_55": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_56": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_57": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_58": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_59": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_6": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_60": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_61": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_62": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_63": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_7": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_8": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_9": {
+ "locked": {
+ "lastModified": 1614513358,
+ "narHash": "sha256-LakhOx3S1dRjnh0b5Dg3mbZyH0ToC9I8Y2wKSkBaTzU=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5466c5bbece17adaab2d82fae80b46e807611bf3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "grocy": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585166193,
+ "narHash": "sha256-rq1Fma/VgU01qXQmCghrt5k+LXWYt8z9b0NvGA7+/Y8=",
+ "owner": "grocy",
+ "repo": "grocy",
+ "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "grocy",
+ "repo": "grocy",
+ "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
+ "type": "github"
+ }
+ },
+ "grocy_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585166193,
+ "narHash": "sha256-rq1Fma/VgU01qXQmCghrt5k+LXWYt8z9b0NvGA7+/Y8=",
+ "owner": "grocy",
+ "repo": "grocy",
+ "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "grocy",
+ "repo": "grocy",
+ "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
+ "type": "github"
+ }
+ },
+ "impermanence": {
+ "locked": {
+ "lastModified": 1684264534,
+ "narHash": "sha256-K0zr+ry3FwIo3rN2U/VWAkCJSgBslBisvfRIPwMbuCQ=",
+ "owner": "nix-community",
+ "repo": "impermanence",
+ "rev": "89253fb1518063556edd5e54509c30ac3089d5e6",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "ref": "master",
+ "repo": "impermanence",
+ "type": "github"
+ }
+ },
+ "landing-page": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1691524124,
+ "narHash": "sha256-JyHb02qUrct2t+dgaiOcT5KS8RHkXygjWQXl+55gSMY=",
+ "ref": "main",
+ "rev": "018344d9116b506c662ecdcee2d0d505c857f1cf",
+ "revCount": 573,
+ "type": "git",
+ "url": "https://github.com/bastienwirtz/homer.git"
+ },
+ "original": {
+ "ref": "main",
+ "type": "git",
+ "url": "https://github.com/bastienwirtz/homer.git"
+ }
+ },
+ "loginctl-linger": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "loginctl-linger_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "loginctl-linger_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "mail-relay": {
+ "inputs": {
+ "environment": "environment_3",
+ "secrets": "secrets"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ }
+ },
+ "mail-relay_2": {
+ "inputs": {
+ "environment": "environment_20",
+ "secrets": "secrets_15"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ }
+ },
+ "main-flake": {
+ "inputs": {
+ "n-backup-2": "n-backup-2",
+ "n-dilion": "n-dilion",
+ "n-eldiron": "n-eldiron",
+ "n-monitoring-1": "n-monitoring-1",
+ "n-quatresaisons": "n-quatresaisons",
+ "n-zoldene": "n-zoldene",
+ "s-backports": "s-backports",
+ "s-copanier": "s-copanier",
+ "s-diaspora": "s-diaspora",
+ "s-etherpad-lite": "s-etherpad-lite",
+ "s-fiche": "s-fiche",
+ "s-files-watcher": "s-files-watcher",
+ "s-grocy": "s-grocy",
+ "s-lib": "s-lib",
+ "s-loginctl-linger": "s-loginctl-linger",
+ "s-mastodon": "s-mastodon",
+ "s-mediagoblin": "s-mediagoblin",
+ "s-multi-apache-container": "s-multi-apache-container",
+ "s-mypackages": "s-mypackages",
+ "s-myuids": "s-myuids",
+ "s-naemon": "s-naemon",
+ "s-openarc": "s-openarc",
+ "s-opendmarc": "s-opendmarc",
+ "s-paste": "s-paste",
+ "s-peertube": "s-peertube",
+ "s-private-buildbot": "s-private-buildbot",
+ "s-private-chatons": "s-private-chatons",
+ "s-private-environment": "s-private-environment",
+ "s-private-mail-relay": "s-private-mail-relay",
+ "s-private-milters": "s-private-milters",
+ "s-private-monitoring": "s-private-monitoring",
+ "s-private-openarc": "s-private-openarc",
+ "s-private-opendmarc": "s-private-opendmarc",
+ "s-private-openldap": "s-private-openldap",
+ "s-private-paste": "s-private-paste",
+ "s-private-peertube": "s-private-peertube",
+ "s-private-php": "s-private-php",
+ "s-private-ssh": "s-private-ssh",
+ "s-private-system": "s-private-system",
+ "s-rsync_backup": "s-rsync_backup",
+ "s-secrets": "s-secrets",
+ "s-surfer": "s-surfer",
+ "s-taskwarrior-web": "s-taskwarrior-web",
+ "secrets": [
+ "secrets"
+ ]
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-LBw8FCxHXW6b1WFvsEnmLmNpZjow6+N4Q+3zAfcudIU=",
+ "path": "../flakes",
+ "type": "path"
+ },
+ "original": {
+ "path": "../flakes",
+ "type": "path"
+ }
+ },
+ "mastodon": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1582790581,
+ "narHash": "sha256-YImWfvsJQzJHyKoWI6OP6BA+NvmHF2RiwJqOg0NUN/U=",
+ "owner": "tootsuite",
+ "repo": "mastodon",
+ "rev": "9bace2dd88d127d396794375c8fcb2132619a799",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tootsuite",
+ "ref": "v2.9.4",
+ "repo": "mastodon",
+ "type": "github"
+ }
+ },
+ "mastodon_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1582790581,
+ "narHash": "sha256-YImWfvsJQzJHyKoWI6OP6BA+NvmHF2RiwJqOg0NUN/U=",
+ "owner": "tootsuite",
+ "repo": "mastodon",
+ "rev": "9bace2dd88d127d396794375c8fcb2132619a799",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tootsuite",
+ "ref": "v2.9.4",
+ "repo": "mastodon",
+ "type": "github"
+ }
+ },
+ "mediagoblin": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1531090939,
+ "narHash": "sha256-vSajRbuE/bu2HVsUZm25fkm/vNLXKDIK7Xn8kyKJ5Ps=",
+ "ref": "stable",
+ "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
+ "revCount": 4805,
+ "submodules": true,
+ "type": "git",
+ "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
+ },
+ "original": {
+ "ref": "stable",
+ "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
+ "submodules": true,
+ "type": "git",
+ "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
+ }
+ },
+ "mediagoblin_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1531090939,
+ "narHash": "sha256-vSajRbuE/bu2HVsUZm25fkm/vNLXKDIK7Xn8kyKJ5Ps=",
+ "ref": "stable",
+ "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
+ "revCount": 4805,
+ "submodules": true,
+ "type": "git",
+ "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
+ },
+ "original": {
+ "ref": "stable",
+ "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
+ "submodules": true,
+ "type": "git",
+ "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
+ }
+ },
+ "milters": {
+ "inputs": {
+ "environment": "environment_4",
+ "files-watcher": "files-watcher",
+ "openarc": "openarc",
+ "opendmarc": "opendmarc",
+ "secrets": "secrets_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ }
+ },
+ "monitoring": {
+ "inputs": {
+ "environment": "environment_5",
+ "naemon": "naemon",
+ "nixpkgs-lib": "nixpkgs-lib",
+ "secrets": "secrets_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "monitoring_2": {
+ "inputs": {
+ "environment": "environment_9",
+ "naemon": "naemon_2",
+ "nixpkgs-lib": "nixpkgs-lib_4",
+ "secrets": "secrets_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "monitoring_3": {
+ "inputs": {
+ "environment": "environment_21",
+ "naemon": "naemon_4",
+ "nixpkgs-lib": "nixpkgs-lib_14",
+ "secrets": "secrets_16"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "monitoring_4": {
+ "inputs": {
+ "environment": "environment_24",
+ "naemon": "naemon_5",
+ "nixpkgs-lib": "nixpkgs-lib_17",
+ "secrets": "secrets_18"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "multi-apache-container": {
+ "inputs": {
+ "files-watcher": "files-watcher_11",
+ "myuids": "myuids_25"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ }
+ },
+ "my-lib": {
+ "inputs": {
+ "colmena": "colmena",
+ "disko": "disko",
+ "flake-parts": "flake-parts",
+ "nixos-anywhere": "nixos-anywhere",
+ "nixpkgs": "nixpkgs_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "my-lib_2": {
+ "inputs": {
+ "colmena": "colmena_2",
+ "disko": "disko_2",
+ "flake-parts": "flake-parts_3",
+ "nixos-anywhere": "nixos-anywhere_2",
+ "nixpkgs": "nixpkgs_16"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "my-lib_3": {
+ "inputs": {
+ "colmena": "colmena_3",
+ "disko": "disko_3",
+ "flake-parts": "flake-parts_5",
+ "nixos-anywhere": "nixos-anywhere_3",
+ "nixpkgs": "nixpkgs_23"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "my-lib_4": {
+ "inputs": {
+ "colmena": "colmena_4",
+ "disko": "disko_4",
+ "flake-parts": "flake-parts_11",
+ "nixos-anywhere": "nixos-anywhere_4",
+ "nixpkgs": "nixpkgs_54"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "my-lib_5": {
+ "inputs": {
+ "colmena": "colmena_5",
+ "disko": "disko_5",
+ "flake-parts": "flake-parts_13",
+ "nixos-anywhere": "nixos-anywhere_5",
+ "nixpkgs": "nixpkgs_62"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "my-lib_6": {
+ "inputs": {
+ "colmena": "colmena_6",
+ "disko": "disko_6",
+ "flake-parts": "flake-parts_15",
+ "nixos-anywhere": "nixos-anywhere_6",
+ "nixpkgs": "nixpkgs_70"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_2",
+ "nixpkgs": "nixpkgs_12",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_10": {
+ "inputs": {
+ "flake-parts": "flake-parts_17",
+ "nixpkgs": "nixpkgs_77",
+ "webapps-ttrss": "webapps-ttrss_11"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_11": {
+ "inputs": {
+ "flake-parts": "flake-parts_18",
+ "nixpkgs": "nixpkgs_79",
+ "webapps-ttrss": "webapps-ttrss_12"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_12": {
+ "inputs": {
+ "flake-parts": "flake-parts_21",
+ "nixpkgs": "nixpkgs_102",
+ "webapps-ttrss": "webapps-ttrss_14"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_13": {
+ "inputs": {
+ "flake-parts": "flake-parts_22",
+ "nixpkgs": "nixpkgs_103",
+ "webapps-ttrss": "webapps-ttrss_15"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_2": {
+ "inputs": {
+ "flake-parts": "flake-parts_4",
+ "nixpkgs": "nixpkgs_19",
+ "webapps-ttrss": "webapps-ttrss_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_3": {
+ "inputs": {
+ "flake-parts": "flake-parts_6",
+ "nixpkgs": "nixpkgs_35",
+ "webapps-ttrss": "webapps-ttrss_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_4": {
+ "inputs": {
+ "flake-parts": "flake-parts_7",
+ "nixpkgs": "nixpkgs_38",
+ "webapps-ttrss": "webapps-ttrss_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_5": {
+ "inputs": {
+ "flake-parts": "flake-parts_8",
+ "nixpkgs": "nixpkgs_40",
+ "webapps-ttrss": "webapps-ttrss_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_6": {
+ "inputs": {
+ "flake-parts": "flake-parts_10",
+ "nixpkgs": "nixpkgs_48",
+ "webapps-ttrss": "webapps-ttrss_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_7": {
+ "inputs": {
+ "flake-parts": "flake-parts_12",
+ "nixpkgs": "nixpkgs_58",
+ "webapps-ttrss": "webapps-ttrss_8"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_8": {
+ "inputs": {
+ "flake-parts": "flake-parts_14",
+ "nixpkgs": "nixpkgs_66",
+ "webapps-ttrss": "webapps-ttrss_9"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_9": {
+ "inputs": {
+ "flake-parts": "flake-parts_16",
+ "nixpkgs": "nixpkgs_73",
+ "webapps-ttrss": "webapps-ttrss_10"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_10": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_11": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_12": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_13": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_14": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_15": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_16": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_17": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_18": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_19": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_20": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_21": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_22": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_23": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_24": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_25": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_26": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_27": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_28": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_29": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_30": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_31": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_32": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_33": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_34": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_35": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_36": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_37": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_38": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_39": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_40": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_41": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_42": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_8": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_9": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "n-backup-2": {
+ "inputs": {
+ "chatons": "chatons",
+ "environment": "environment_2",
+ "loginctl-linger": "loginctl-linger",
+ "mail-relay": "mail-relay",
+ "milters": "milters",
+ "monitoring": "monitoring",
+ "my-lib": "my-lib",
+ "myuids": "myuids_3",
+ "nixpkgs": "nixpkgs_8",
+ "openarc": "openarc_3",
+ "opendmarc": "opendmarc_2",
+ "openldap": "openldap",
+ "rsync_backup": "rsync_backup",
+ "secrets": "secrets_6",
+ "system": "system"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-0CPGGyOWQadU9c8y+A4XtveOrmkMlFiH+WJ55RPzJnE=",
+ "path": "../systems/backup-2",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/backup-2",
+ "type": "path"
+ }
+ },
+ "n-dilion": {
+ "inputs": {
+ "environment": "environment_8",
+ "files-watcher": "files-watcher_4",
+ "loginctl-linger": "loginctl-linger_2",
+ "monitoring": "monitoring_2",
+ "my-lib": "my-lib_2",
+ "myuids": "myuids_7",
+ "nixpkgs": "nixpkgs_17",
+ "secrets": "secrets_8",
+ "ssh": "ssh",
+ "system": "system_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Ctp8QY0OkGwv/YkOlipwM1ldEz7OebVDbAqg1O/tRe8=",
+ "path": "../systems/dilion",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/dilion",
+ "type": "path"
+ }
+ },
+ "n-eldiron": {
+ "inputs": {
+ "dns-nix": "dns-nix",
+ "my-lib": "my-lib_3",
+ "nixpkgs": "nixpkgs_24",
+ "private-buildbot": "private-buildbot",
+ "private-chatons": "private-chatons",
+ "private-environment": "private-environment",
+ "private-milters": "private-milters",
+ "private-monitoring": "private-monitoring",
+ "private-openarc": "private-openarc",
+ "private-opendmarc": "private-opendmarc",
+ "private-openldap": "private-openldap",
+ "private-paste": "private-paste",
+ "private-peertube": "private-peertube",
+ "private-php": "private-php",
+ "private-ssh": "private-ssh",
+ "private-system": "private-system",
+ "public-copanier": "public-copanier",
+ "public-diaspora": "public-diaspora",
+ "public-etherpad-lite": "public-etherpad-lite",
+ "public-fiche": "public-fiche",
+ "public-files-watcher": "public-files-watcher",
+ "public-grocy": "public-grocy",
+ "public-loginctl-linger": "public-loginctl-linger",
+ "public-mastodon": "public-mastodon",
+ "public-mediagoblin": "public-mediagoblin",
+ "public-multi-apache-container": "public-multi-apache-container",
+ "public-mypackages": "public-mypackages",
+ "public-myuids": "public-myuids",
+ "public-openarc": "public-openarc",
+ "public-opendmarc": "public-opendmarc",
+ "public-peertube": "public-peertube",
+ "public-secrets": "public-secrets",
+ "public-surfer": "public-surfer",
+ "public-taskwarrior-web": "public-taskwarrior-web"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-g9f3SCavl9ssNr8Xw9Z8KkpeEwCYv+47dqwoIPneMSs=",
+ "path": "../systems/eldiron",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/eldiron",
+ "type": "path"
+ }
+ },
+ "n-monitoring-1": {
+ "inputs": {
+ "chatons": "chatons_2",
+ "environment": "environment_19",
+ "files-watcher": "files-watcher_9",
+ "loginctl-linger": "loginctl-linger_3",
+ "mail-relay": "mail-relay_2",
+ "monitoring": "monitoring_3",
+ "my-lib": "my-lib_4",
+ "myuids": "myuids_23",
+ "nixpkgs": "nixpkgs_55",
+ "php": "php",
+ "secrets": "secrets_17",
+ "system": "system_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-kLIVhZAxEWcN3W1AaF/gmopYuRdq0U43jkA4hliY50I=",
+ "path": "../systems/monitoring-1",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/monitoring-1",
+ "type": "path"
+ }
+ },
+ "n-quatresaisons": {
+ "inputs": {
+ "environment": "environment_23",
+ "files-watcher": "files-watcher_10",
+ "landing-page": "landing-page",
+ "monitoring": "monitoring_4",
+ "multi-apache-container": "multi-apache-container",
+ "my-lib": "my-lib_5",
+ "myuids": "myuids_26",
+ "nixpkgs": "nixpkgs_63",
+ "php": "php_2",
+ "secrets": "secrets_19",
+ "system": "system_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-FtjFgqcSXs0dTkbUggbPwaDeCoOoYZragHCUkcyq538=",
+ "path": "../systems/quatresaisons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/quatresaisons",
+ "type": "path"
+ }
+ },
+ "n-zoldene": {
+ "inputs": {
+ "impermanence": "impermanence",
+ "my-lib": "my-lib_6",
+ "nixpkgs": "nixpkgs_71",
+ "private-environment": "private-environment_2",
+ "private-system": "private-system_2",
+ "public-secrets": "public-secrets_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-YSYLjETf7yMwdHeEisU1V7e5O3yB+YxVoIPLi00PCdo=",
+ "path": "../systems/zoldene",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/zoldene",
+ "type": "path"
+ }
+ },
+ "naemon": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "naemon_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "naemon_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "naemon_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "naemon_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "naemon_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "nixos-2305": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_2": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_3": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_4": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_5": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_6": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_7": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere": {
+ "inputs": {
+ "disko": [
+ "main-flake",
+ "n-backup-2",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "main-flake",
+ "n-backup-2",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305",
+ "nixos-images": "nixos-images",
+ "nixpkgs": "nixpkgs_6",
+ "treefmt-nix": "treefmt-nix"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_2": {
+ "inputs": {
+ "disko": [
+ "main-flake",
+ "n-dilion",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "main-flake",
+ "n-dilion",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_2",
+ "nixos-images": "nixos-images_2",
+ "nixpkgs": "nixpkgs_15",
+ "treefmt-nix": "treefmt-nix_2"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_3": {
+ "inputs": {
+ "disko": [
+ "main-flake",
+ "n-eldiron",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "main-flake",
+ "n-eldiron",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_3",
+ "nixos-images": "nixos-images_3",
+ "nixpkgs": "nixpkgs_22",
+ "treefmt-nix": "treefmt-nix_3"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_4": {
+ "inputs": {
+ "disko": [
+ "main-flake",
+ "n-monitoring-1",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "main-flake",
+ "n-monitoring-1",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_4",
+ "nixos-images": "nixos-images_4",
+ "nixpkgs": "nixpkgs_53",
+ "treefmt-nix": "treefmt-nix_4"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_5": {
+ "inputs": {
+ "disko": [
+ "main-flake",
+ "n-quatresaisons",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "main-flake",
+ "n-quatresaisons",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_5",
+ "nixos-images": "nixos-images_5",
+ "nixpkgs": "nixpkgs_61",
+ "treefmt-nix": "treefmt-nix_5"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_6": {
+ "inputs": {
+ "disko": [
+ "main-flake",
+ "n-zoldene",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "main-flake",
+ "n-zoldene",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_6",
+ "nixos-images": "nixos-images_6",
+ "nixpkgs": "nixpkgs_69",
+ "treefmt-nix": "treefmt-nix_6"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_7": {
+ "inputs": {
+ "disko": [
+ "main-flake",
+ "s-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "main-flake",
+ "s-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_7",
+ "nixos-images": "nixos-images_7",
+ "nixpkgs": "nixpkgs_83",
+ "treefmt-nix": "treefmt-nix_7"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-images": {
+ "inputs": {
+ "nixos-2305": [
+ "main-flake",
+ "n-backup-2",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "main-flake",
+ "n-backup-2",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_2": {
+ "inputs": {
+ "nixos-2305": [
+ "main-flake",
+ "n-dilion",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "main-flake",
+ "n-dilion",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_3": {
+ "inputs": {
+ "nixos-2305": [
+ "main-flake",
+ "n-eldiron",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "main-flake",
+ "n-eldiron",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_4": {
+ "inputs": {
+ "nixos-2305": [
+ "main-flake",
+ "n-monitoring-1",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "main-flake",
+ "n-monitoring-1",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_5": {
+ "inputs": {
+ "nixos-2305": [
+ "main-flake",
+ "n-quatresaisons",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "main-flake",
+ "n-quatresaisons",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_6": {
+ "inputs": {
+ "nixos-2305": [
+ "main-flake",
+ "n-zoldene",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "main-flake",
+ "n-zoldene",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_7": {
+ "inputs": {
+ "nixos-2305": [
+ "main-flake",
+ "s-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "main-flake",
+ "s-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1677383253,
+ "narHash": "sha256-UfpzWfSxkfXHnb4boXZNaKsAcUrZT9Hw+tao1oZxd08=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "9952d6bc395f5841262b006fbace8dd7e143b634",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4_3": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4_4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_10": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_11": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_12": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_13": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_14": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_15": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_16": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_17": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_18": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_19": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_2": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_20": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_21": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_22": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_23": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_24": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_25": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_26": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_27": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_28": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_3": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_4": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_5": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_6": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_7": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_8": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_9": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_10": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_100": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_101": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_102": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_103": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_104": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_105": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_106": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691472822,
+ "narHash": "sha256-XVfYZ2oB3lNPVq6sHCY9WkdQ8lHoIDzzbpg8bB6oBxA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "41c7605718399dcfa53dd7083793b6ae3bc969ff",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_107": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_11": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_12": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_13": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_14": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_15": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_16": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_17": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_18": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_19": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_20": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_21": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_22": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_23": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_24": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_25": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_26": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_27": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_28": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_29": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_30": {
+ "locked": {
+ "lastModified": 1631570365,
+ "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_31": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_32": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_33": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_34": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_35": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_36": {
+ "locked": {
+ "lastModified": 1633901457,
+ "narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "f358794824b4595d77fec93732485d329ed7b0e0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_37": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_38": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_39": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_40": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_41": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_42": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_43": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_44": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_45": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_46": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_47": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_48": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_49": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_50": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_51": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_52": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_53": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_54": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_55": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_56": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_57": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_58": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_59": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_6": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_60": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_61": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_62": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_63": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_64": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_65": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_66": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_67": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_68": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_69": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_7": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_70": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_71": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_72": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_73": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_74": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_75": {
+ "locked": {
+ "lastModified": 1633901457,
+ "narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "f358794824b4595d77fec93732485d329ed7b0e0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_76": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_77": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_78": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_79": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_8": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_80": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_81": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_82": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_83": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_84": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_85": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_86": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_87": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_88": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_89": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_9": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_90": {
+ "locked": {
+ "lastModified": 1631570365,
+ "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_91": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_92": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_93": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_94": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_95": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_96": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_97": {
+ "locked": {
+ "lastModified": 1631570365,
+ "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_98": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_99": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "openarc": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "myuids": "myuids",
+ "nixpkgs": "nixpkgs_2",
+ "openarc": "openarc_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_10": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_11": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_12": {
+ "inputs": {
+ "flake-utils": "flake-utils_53",
+ "myuids": "myuids_36",
+ "nixpkgs": "nixpkgs_93",
+ "openarc": "openarc_13"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_13": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_14": {
+ "inputs": {
+ "flake-utils": "flake-utils_55",
+ "myuids": "myuids_38",
+ "nixpkgs": "nixpkgs_95",
+ "openarc": "openarc_15"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_15": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_3": {
+ "inputs": {
+ "files-watcher": "files-watcher_2",
+ "openarc": "openarc_4",
+ "secrets": "secrets_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ }
+ },
+ "openarc_4": {
+ "inputs": {
+ "flake-utils": "flake-utils_4",
+ "myuids": "myuids_4",
+ "nixpkgs": "nixpkgs_9",
+ "openarc": "openarc_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_6": {
+ "inputs": {
+ "flake-utils": "flake-utils_12",
+ "myuids": "myuids_9",
+ "nixpkgs": "nixpkgs_26",
+ "openarc": "openarc_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_7": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_8": {
+ "inputs": {
+ "flake-utils": "flake-utils_14",
+ "myuids": "myuids_11",
+ "nixpkgs": "nixpkgs_28",
+ "openarc": "openarc_9"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_9": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "opendmarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_2",
+ "myuids": "myuids_2",
+ "nixpkgs": "nixpkgs_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_2": {
+ "inputs": {
+ "environment": "environment_6",
+ "files-watcher": "files-watcher_3",
+ "opendmarc": "opendmarc_3",
+ "secrets": "secrets_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_3": {
+ "inputs": {
+ "flake-utils": "flake-utils_5",
+ "myuids": "myuids_5",
+ "nixpkgs": "nixpkgs_10"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_4": {
+ "inputs": {
+ "flake-utils": "flake-utils_13",
+ "myuids": "myuids_10",
+ "nixpkgs": "nixpkgs_27"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_5": {
+ "inputs": {
+ "flake-utils": "flake-utils_15",
+ "myuids": "myuids_12",
+ "nixpkgs": "nixpkgs_29"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_6": {
+ "inputs": {
+ "flake-utils": "flake-utils_54",
+ "myuids": "myuids_37",
+ "nixpkgs": "nixpkgs_94"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_7": {
+ "inputs": {
+ "flake-utils": "flake-utils_56",
+ "myuids": "myuids_39",
+ "nixpkgs": "nixpkgs_96"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "openldap": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ }
+ },
+ "paste": {
+ "inputs": {
+ "flake-utils": "flake-utils_16",
+ "nixpkgs": "nixpkgs_30"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
+ "path": "../../paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../paste",
+ "type": "path"
+ }
+ },
+ "paste_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_57",
+ "nixpkgs": "nixpkgs_97"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
+ "path": "../../paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../paste",
+ "type": "path"
+ }
+ },
+ "peertube": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1611184594,
+ "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=",
+ "ref": "gitolite_local/open_instance",
+ "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3",
+ "revCount": 6316,
+ "type": "git",
+ "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_3": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1611184594,
+ "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=",
+ "ref": "gitolite_local/open_instance",
+ "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3",
+ "revCount": 6316,
+ "type": "git",
+ "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_6": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_open_instance": {
+ "inputs": {
+ "flake-utils": "flake-utils_17",
+ "myuids": "myuids_13",
+ "nixpkgs": "nixpkgs_31",
+ "peertube": "peertube"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./../../peertube",
+ "type": "path"
+ }
+ },
+ "peertube_open_instance_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_58",
+ "myuids": "myuids_40",
+ "nixpkgs": "nixpkgs_98",
+ "peertube": "peertube_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./../../peertube",
+ "type": "path"
+ }
+ },
+ "peertube_origin": {
+ "inputs": {
+ "flake-utils": "flake-utils_18",
+ "myuids": "myuids_14",
+ "nixpkgs": "nixpkgs_32",
+ "peertube": "peertube_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./../../peertube",
+ "type": "path"
+ }
+ },
+ "peertube_origin_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_59",
+ "myuids": "myuids_41",
+ "nixpkgs": "nixpkgs_99",
+ "peertube": "peertube_6"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./../../peertube",
+ "type": "path"
+ }
+ },
+ "php": {
+ "inputs": {
+ "flake-utils": "flake-utils_33",
+ "nixpkgs": "nixpkgs_56",
+ "nixpkgs-4": "nixpkgs-4_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "../../flakes/private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/php",
+ "type": "path"
+ }
+ },
+ "php_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_36",
+ "nixpkgs": "nixpkgs_64",
+ "nixpkgs-4": "nixpkgs-4_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "../../flakes/private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/php",
+ "type": "path"
+ }
+ },
+ "private-buildbot": {
+ "inputs": {
+ "buildslist": "buildslist",
+ "flake-utils": "flake-utils_11",
+ "nixpkgs": "nixpkgs_25"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-LZRLA37RiN1VyKRqoAdZa9oc61PfQX7dCANSFuwuSa8=",
+ "path": "../../flakes/private/buildbot",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/buildbot",
+ "type": "path"
+ }
+ },
+ "private-chatons": {
+ "inputs": {
+ "environment": "environment_12"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ }
+ },
+ "private-environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "private-environment_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "private-milters": {
+ "inputs": {
+ "environment": "environment_13",
+ "files-watcher": "files-watcher_5",
+ "openarc": "openarc_6",
+ "opendmarc": "opendmarc_4",
+ "secrets": "secrets_10"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ }
+ },
+ "private-monitoring": {
+ "inputs": {
+ "environment": "environment_14",
+ "naemon": "naemon_3",
+ "nixpkgs-lib": "nixpkgs-lib_8",
+ "secrets": "secrets_11"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "private-openarc": {
+ "inputs": {
+ "files-watcher": "files-watcher_6",
+ "openarc": "openarc_8",
+ "secrets": "secrets_12"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ }
+ },
+ "private-opendmarc": {
+ "inputs": {
+ "environment": "environment_15",
+ "files-watcher": "files-watcher_7",
+ "opendmarc": "opendmarc_5",
+ "secrets": "secrets_13"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ }
+ },
+ "private-openldap": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ }
+ },
+ "private-paste": {
+ "inputs": {
+ "paste": "paste"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-w8WnrSJj05Y8hJsJfY46sI6PUSg2xo5h9t0zWP4woog=",
+ "path": "../../flakes/private/paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/paste",
+ "type": "path"
+ }
+ },
+ "private-peertube": {
+ "inputs": {
+ "peertube_open_instance": "peertube_open_instance",
+ "peertube_origin": "peertube_origin"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-1MpzxwaZ+TZJzBf+Do/PFdI9khD1GSvfjuSC0h2Hk58=",
+ "path": "../../flakes/private/peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/peertube",
+ "type": "path"
+ }
+ },
+ "private-php": {
+ "inputs": {
+ "flake-utils": "flake-utils_19",
+ "nixpkgs": "nixpkgs_33",
+ "nixpkgs-4": "nixpkgs-4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "../../flakes/private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/php",
+ "type": "path"
+ }
+ },
+ "private-ssh": {
+ "inputs": {
+ "environment": "environment_16",
+ "secrets": "secrets_14"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ }
+ },
+ "private-system": {
+ "inputs": {
+ "backports": "backports_3",
+ "environment": "environment_17",
+ "mypackages": "mypackages_3",
+ "myuids": "myuids_15",
+ "secrets-public": "secrets-public_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "private-system_2": {
+ "inputs": {
+ "backports": "backports_6",
+ "environment": "environment_26",
+ "mypackages": "mypackages_9",
+ "myuids": "myuids_28",
+ "secrets-public": "secrets-public_6"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "public-copanier": {
+ "inputs": {
+ "copanier": "copanier",
+ "flake-utils": "flake-utils_21",
+ "nixpkgs": "nixpkgs_36"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-v7ZhvU3UAmA7EtPWutYddHE84qbqWx/ugtFAEgpD4H0=",
+ "path": "../../flakes/copanier",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/copanier",
+ "type": "path"
+ }
+ },
+ "public-diaspora": {
+ "inputs": {
+ "diaspora": "diaspora",
+ "flake-utils": "flake-utils_22",
+ "myuids": "myuids_16",
+ "nixpkgs": "nixpkgs_37"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-S+ZZI5/WNGE9m5yRkOM3LlJUTrjtjzcBRLNrHi0fx6M=",
+ "path": "../../flakes/diaspora",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/diaspora",
+ "type": "path"
+ }
+ },
+ "public-etherpad-lite": {
+ "inputs": {
+ "etherpad-lite": "etherpad-lite",
+ "flake-utils": "flake-utils_23",
+ "mypackages": "mypackages_4",
+ "nixpkgs": "nixpkgs_39"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-j6p9rVNwD0C3VN65VdnF3yG8fy5S8aAsi2kRXWPd3VE=",
+ "path": "../../flakes/etherpad-lite",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/etherpad-lite",
+ "type": "path"
+ }
+ },
+ "public-fiche": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-oIMKN1dD4K+5pOGugNaNNdJme5NYlYtnNd3ivvyVoJI=",
+ "path": "../../flakes/fiche",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/fiche",
+ "type": "path"
+ }
+ },
+ "public-files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "public-grocy": {
+ "inputs": {
+ "flake-utils": "flake-utils_24",
+ "grocy": "grocy",
+ "mypackages": "mypackages_5",
+ "nixpkgs": "nixpkgs_41"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Xv5wFz3A1f+jkJ1hxb6DwisBwsZxaQccp/Kwe5lqwy0=",
+ "path": "../../flakes/grocy",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/grocy",
+ "type": "path"
+ }
+ },
+ "public-loginctl-linger": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "public-mastodon": {
+ "inputs": {
+ "flake-utils": "flake-utils_25",
+ "mastodon": "mastodon",
+ "myuids": "myuids_17",
+ "nixpkgs": "nixpkgs_42"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5bh3eTXdSac7Kw17+6EVmjNZpPIdGc7a3E5lb7wYn2U=",
+ "path": "../../flakes/mastodon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/mastodon",
+ "type": "path"
+ }
+ },
+ "public-mediagoblin": {
+ "inputs": {
+ "flake-utils": "flake-utils_26",
+ "mediagoblin": "mediagoblin",
+ "myuids": "myuids_18",
+ "nixpkgs": "nixpkgs_43"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-CVFwdH+i6K9dxyniI6nUeLiNZoD17uKT1Q8/4MaiTGU=",
+ "path": "../../flakes/mediagoblin",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/mediagoblin",
+ "type": "path"
+ }
+ },
+ "public-multi-apache-container": {
+ "inputs": {
+ "files-watcher": "files-watcher_8",
+ "myuids": "myuids_19"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ }
+ },
+ "public-mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_9",
+ "nixpkgs": "nixpkgs_44",
+ "webapps-ttrss": "webapps-ttrss_6"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../flakes/mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/mypackages",
+ "type": "path"
+ }
+ },
+ "public-myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "public-openarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_27",
+ "myuids": "myuids_20",
+ "nixpkgs": "nixpkgs_45",
+ "openarc": "openarc_10"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../flakes/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/openarc",
+ "type": "path"
+ }
+ },
+ "public-opendmarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_28",
+ "myuids": "myuids_21",
+ "nixpkgs": "nixpkgs_46"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../flakes/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/opendmarc",
+ "type": "path"
+ }
+ },
+ "public-peertube": {
+ "inputs": {
+ "flake-utils": "flake-utils_29",
+ "myuids": "myuids_22",
+ "nixpkgs": "nixpkgs_47",
+ "peertube": "peertube_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "../../flakes/peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/peertube",
+ "type": "path"
+ }
+ },
+ "public-secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "public-secrets_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "public-surfer": {
+ "inputs": {
+ "flake-utils": "flake-utils_30",
+ "mypackages": "mypackages_6",
+ "nixpkgs": "nixpkgs_49",
+ "surfer": "surfer"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-67TqavMsANZI6X15AFUQZ2zHSmoWJc80XaXwEGhWsRg=",
+ "path": "../../flakes/surfer",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/surfer",
+ "type": "path"
+ }
+ },
+ "public-taskwarrior-web": {
+ "inputs": {
+ "flake-utils": "flake-utils_31",
+ "nixpkgs": "nixpkgs_50",
+ "taskwarrior-web": "taskwarrior-web"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-0u83WrBwbIpuyy82UK3EUqC/dgoCoDzptRe+G4VhKXo=",
+ "path": "../../flakes/taskwarrior-web",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/taskwarrior-web",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "devshell": "devshell",
+ "main-flake": "main-flake",
+ "nixpkgs": "nixpkgs_106",
+ "secrets": "secrets_26"
+ }
+ },
+ "rsync_backup": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TxLsFx4DTTScMHkvR0pJgzYea6ILiu1Dl6LA67LtYGo=",
+ "path": "../../flakes/rsync_backup",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/rsync_backup",
+ "type": "path"
+ }
+ },
+ "s-backports": {
+ "inputs": {
+ "flake-utils": "flake-utils_40",
+ "nixpkgs": "nixpkgs_74"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "./backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "./backports",
+ "type": "path"
+ }
+ },
+ "s-copanier": {
+ "inputs": {
+ "copanier": "copanier_2",
+ "flake-utils": "flake-utils_41",
+ "nixpkgs": "nixpkgs_75"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-v7ZhvU3UAmA7EtPWutYddHE84qbqWx/ugtFAEgpD4H0=",
+ "path": "./copanier",
+ "type": "path"
+ },
+ "original": {
+ "path": "./copanier",
+ "type": "path"
+ }
+ },
+ "s-diaspora": {
+ "inputs": {
+ "diaspora": "diaspora_2",
+ "flake-utils": "flake-utils_42",
+ "myuids": "myuids_29",
+ "nixpkgs": "nixpkgs_76"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-S+ZZI5/WNGE9m5yRkOM3LlJUTrjtjzcBRLNrHi0fx6M=",
+ "path": "./diaspora",
+ "type": "path"
+ },
+ "original": {
+ "path": "./diaspora",
+ "type": "path"
+ }
+ },
+ "s-etherpad-lite": {
+ "inputs": {
+ "etherpad-lite": "etherpad-lite_2",
+ "flake-utils": "flake-utils_43",
+ "mypackages": "mypackages_10",
+ "nixpkgs": "nixpkgs_78"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-j6p9rVNwD0C3VN65VdnF3yG8fy5S8aAsi2kRXWPd3VE=",
+ "path": "./etherpad-lite",
+ "type": "path"
+ },
+ "original": {
+ "path": "./etherpad-lite",
+ "type": "path"
+ }
+ },
+ "s-fiche": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-oIMKN1dD4K+5pOGugNaNNdJme5NYlYtnNd3ivvyVoJI=",
+ "path": "./fiche",
+ "type": "path"
+ },
+ "original": {
+ "path": "./fiche",
+ "type": "path"
+ }
+ },
+ "s-files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "./files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "./files-watcher",
+ "type": "path"
+ }
+ },
+ "s-grocy": {
+ "inputs": {
+ "flake-utils": "flake-utils_44",
+ "grocy": "grocy_2",
+ "mypackages": "mypackages_11",
+ "nixpkgs": "nixpkgs_80"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Xv5wFz3A1f+jkJ1hxb6DwisBwsZxaQccp/Kwe5lqwy0=",
+ "path": "./grocy",
+ "type": "path"
+ },
+ "original": {
+ "path": "./grocy",
+ "type": "path"
+ }
+ },
+ "s-lib": {
+ "inputs": {
+ "colmena": "colmena_7",
+ "disko": "disko_7",
+ "flake-parts": "flake-parts_19",
+ "nixos-anywhere": "nixos-anywhere_7",
+ "nixpkgs": "nixpkgs_84"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "./lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "./lib",
+ "type": "path"
+ }
+ },
+ "s-loginctl-linger": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "./loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "./loginctl-linger",
+ "type": "path"
+ }
+ },
+ "s-mastodon": {
+ "inputs": {
+ "flake-utils": "flake-utils_46",
+ "mastodon": "mastodon_2",
+ "myuids": "myuids_30",
+ "nixpkgs": "nixpkgs_85"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5bh3eTXdSac7Kw17+6EVmjNZpPIdGc7a3E5lb7wYn2U=",
+ "path": "./mastodon",
+ "type": "path"
+ },
+ "original": {
+ "path": "./mastodon",
+ "type": "path"
+ }
+ },
+ "s-mediagoblin": {
+ "inputs": {
+ "flake-utils": "flake-utils_47",
+ "mediagoblin": "mediagoblin_2",
+ "myuids": "myuids_31",
+ "nixpkgs": "nixpkgs_86"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-CVFwdH+i6K9dxyniI6nUeLiNZoD17uKT1Q8/4MaiTGU=",
+ "path": "./mediagoblin",
+ "type": "path"
+ },
+ "original": {
+ "path": "./mediagoblin",
+ "type": "path"
+ }
+ },
+ "s-multi-apache-container": {
+ "inputs": {
+ "files-watcher": "files-watcher_12",
+ "myuids": "myuids_32"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
+ "path": "./multi-apache-container",
+ "type": "path"
+ },
+ "original": {
+ "path": "./multi-apache-container",
+ "type": "path"
+ }
+ },
+ "s-mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_20",
+ "nixpkgs": "nixpkgs_87",
+ "webapps-ttrss": "webapps-ttrss_13"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "./mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "./mypackages",
+ "type": "path"
+ }
+ },
+ "s-myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "./myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "./myuids",
+ "type": "path"
+ }
+ },
+ "s-naemon": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "./naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "./naemon",
+ "type": "path"
+ }
+ },
+ "s-openarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_48",
+ "myuids": "myuids_33",
+ "nixpkgs": "nixpkgs_88",
+ "openarc": "openarc_11"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "./openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "./openarc",
+ "type": "path"
+ }
+ },
+ "s-opendmarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_49",
+ "myuids": "myuids_34",
+ "nixpkgs": "nixpkgs_89"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "./opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "./opendmarc",
+ "type": "path"
+ }
+ },
+ "s-paste": {
+ "inputs": {
+ "flake-utils": "flake-utils_50",
+ "nixpkgs": "nixpkgs_90"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
+ "path": "./paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "./paste",
+ "type": "path"
+ }
+ },
+ "s-peertube": {
+ "inputs": {
+ "flake-utils": "flake-utils_51",
+ "myuids": "myuids_35",
+ "nixpkgs": "nixpkgs_91",
+ "peertube": "peertube_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./peertube",
+ "type": "path"
+ }
+ },
+ "s-private-buildbot": {
+ "inputs": {
+ "buildslist": "buildslist_2",
+ "flake-utils": "flake-utils_52",
+ "nixpkgs": "nixpkgs_92"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-LZRLA37RiN1VyKRqoAdZa9oc61PfQX7dCANSFuwuSa8=",
+ "path": "./private/buildbot",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/buildbot",
+ "type": "path"
+ }
+ },
+ "s-private-chatons": {
+ "inputs": {
+ "environment": "environment_27"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "./private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/chatons",
+ "type": "path"
+ }
+ },
+ "s-private-environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "./private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/environment",
+ "type": "path"
+ }
+ },
+ "s-private-mail-relay": {
+ "inputs": {
+ "environment": "environment_28",
+ "secrets": "secrets_20"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
+ "path": "./private/mail-relay",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/mail-relay",
+ "type": "path"
+ }
+ },
+ "s-private-milters": {
+ "inputs": {
+ "environment": "environment_29",
+ "files-watcher": "files-watcher_13",
+ "openarc": "openarc_12",
+ "opendmarc": "opendmarc_6",
+ "secrets": "secrets_21"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
+ "path": "./private/milters",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/milters",
+ "type": "path"
+ }
+ },
+ "s-private-monitoring": {
+ "inputs": {
+ "environment": "environment_30",
+ "naemon": "naemon_6",
+ "nixpkgs-lib": "nixpkgs-lib_26",
+ "secrets": "secrets_22"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "./private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/monitoring",
+ "type": "path"
+ }
+ },
+ "s-private-openarc": {
+ "inputs": {
+ "files-watcher": "files-watcher_14",
+ "openarc": "openarc_14",
+ "secrets": "secrets_23"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
+ "path": "./private/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/openarc",
+ "type": "path"
+ }
+ },
+ "s-private-opendmarc": {
+ "inputs": {
+ "environment": "environment_31",
+ "files-watcher": "files-watcher_15",
+ "opendmarc": "opendmarc_7",
+ "secrets": "secrets_24"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
+ "path": "./private/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/opendmarc",
+ "type": "path"
+ }
+ },
+ "s-private-openldap": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
+ "path": "./private/openldap",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/openldap",
+ "type": "path"
+ }
+ },
+ "s-private-paste": {
+ "inputs": {
+ "paste": "paste_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-w8WnrSJj05Y8hJsJfY46sI6PUSg2xo5h9t0zWP4woog=",
+ "path": "./private/paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/paste",
+ "type": "path"
+ }
+ },
+ "s-private-peertube": {
+ "inputs": {
+ "peertube_open_instance": "peertube_open_instance_2",
+ "peertube_origin": "peertube_origin_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-1MpzxwaZ+TZJzBf+Do/PFdI9khD1GSvfjuSC0h2Hk58=",
+ "path": "./private/peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/peertube",
+ "type": "path"
+ }
+ },
+ "s-private-php": {
+ "inputs": {
+ "flake-utils": "flake-utils_60",
+ "nixpkgs": "nixpkgs_100",
+ "nixpkgs-4": "nixpkgs-4_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "./private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/php",
+ "type": "path"
+ }
+ },
+ "s-private-ssh": {
+ "inputs": {
+ "environment": "environment_32",
+ "secrets": "secrets_25"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
+ "path": "./private/ssh",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/ssh",
+ "type": "path"
+ }
+ },
+ "s-private-system": {
+ "inputs": {
+ "backports": "backports_7",
+ "environment": "environment_33",
+ "mypackages": "mypackages_12",
+ "myuids": "myuids_42",
+ "secrets-public": "secrets-public_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "./private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/system",
+ "type": "path"
+ }
+ },
+ "s-rsync_backup": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TxLsFx4DTTScMHkvR0pJgzYea6ILiu1Dl6LA67LtYGo=",
+ "path": "./rsync_backup",
+ "type": "path"
+ },
+ "original": {
+ "path": "./rsync_backup",
+ "type": "path"
+ }
+ },
+ "s-secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "./secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "./secrets",
+ "type": "path"
+ }
+ },
+ "s-surfer": {
+ "inputs": {
+ "flake-utils": "flake-utils_62",
+ "mypackages": "mypackages_13",
+ "nixpkgs": "nixpkgs_104",
+ "surfer": "surfer_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-67TqavMsANZI6X15AFUQZ2zHSmoWJc80XaXwEGhWsRg=",
+ "path": "./surfer",
+ "type": "path"
+ },
+ "original": {
+ "path": "./surfer",
+ "type": "path"
+ }
+ },
+ "s-taskwarrior-web": {
+ "inputs": {
+ "flake-utils": "flake-utils_63",
+ "nixpkgs": "nixpkgs_105",
+ "taskwarrior-web": "taskwarrior-web_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-0u83WrBwbIpuyy82UK3EUqC/dgoCoDzptRe+G4VhKXo=",
+ "path": "./taskwarrior-web",
+ "type": "path"
+ },
+ "original": {
+ "path": "./taskwarrior-web",
+ "type": "path"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_10": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_11": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_12": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_13": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_14": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_15": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_16": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_17": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "secrets_18": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_19": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "secrets_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_20": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_21": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_22": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_23": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_24": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_25": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_26": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_107"
+ },
+ "locked": {
+ "lastModified": 1696144631,
+ "narHash": "sha256-zV7tbNrrrUpPkaATkc6OsQC8n75QybaBKsaD7d5kQGA=",
+ "ref": "master",
+ "rev": "ae51ac0227647e30348256067934b8c9eb7e3f06",
+ "revCount": 688,
+ "type": "git",
+ "url": "git+ssh://gitolite@git.immae.eu/perso/Immae/Config/Nix/Nixops/Secrets"
+ },
+ "original": {
+ "ref": "master",
+ "type": "git",
+ "url": "git+ssh://gitolite@git.immae.eu/perso/Immae/Config/Nix/Nixops/Secrets"
+ }
+ },
+ "secrets_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "secrets_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_8": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "secrets_9": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "ssh": {
+ "inputs": {
+ "environment": "environment_10",
+ "secrets": "secrets_9"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ }
+ },
+ "stable": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_2": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_3": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_4": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_5": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_6": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_7": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "surfer": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1588637864,
+ "narHash": "sha256-B1Sbu1YSHj+ONSoT5v6bVlAHJWtceUV4O5huGhc8b0U=",
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "revCount": 318,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ },
+ "original": {
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ }
+ },
+ "surfer_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1588637864,
+ "narHash": "sha256-B1Sbu1YSHj+ONSoT5v6bVlAHJWtceUV4O5huGhc8b0U=",
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "revCount": 318,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ },
+ "original": {
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ }
+ },
+ "system": {
+ "inputs": {
+ "backports": "backports",
+ "environment": "environment_7",
+ "mypackages": "mypackages",
+ "myuids": "myuids_6",
+ "secrets-public": "secrets-public"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "system_2": {
+ "inputs": {
+ "backports": "backports_2",
+ "environment": "environment_11",
+ "mypackages": "mypackages_2",
+ "myuids": "myuids_8",
+ "secrets-public": "secrets-public_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "system_3": {
+ "inputs": {
+ "backports": "backports_4",
+ "environment": "environment_22",
+ "mypackages": "mypackages_7",
+ "myuids": "myuids_24",
+ "secrets-public": "secrets-public_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "system_4": {
+ "inputs": {
+ "backports": "backports_5",
+ "environment": "environment_25",
+ "mypackages": "mypackages_8",
+ "myuids": "myuids_27",
+ "secrets-public": "secrets-public_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "taskwarrior-web": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546434241,
+ "narHash": "sha256-BLPBglkV1HCJECSIdyMEergChiV+rwNOClYJnzlZGQk=",
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ }
+ },
+ "taskwarrior-web_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546434241,
+ "narHash": "sha256-BLPBglkV1HCJECSIdyMEergChiV+rwNOClYJnzlZGQk=",
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ }
+ },
+ "treefmt-nix": {
+ "inputs": {
+ "nixpkgs": [
+ "main-flake",
+ "n-backup-2",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_2": {
+ "inputs": {
+ "nixpkgs": [
+ "main-flake",
+ "n-dilion",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_3": {
+ "inputs": {
+ "nixpkgs": [
+ "main-flake",
+ "n-eldiron",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_4": {
+ "inputs": {
+ "nixpkgs": [
+ "main-flake",
+ "n-monitoring-1",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_5": {
+ "inputs": {
+ "nixpkgs": [
+ "main-flake",
+ "n-quatresaisons",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_6": {
+ "inputs": {
+ "nixpkgs": [
+ "main-flake",
+ "n-zoldene",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_7": {
+ "inputs": {
+ "nixpkgs": [
+ "main-flake",
+ "s-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_10": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_11": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_12": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_13": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_14": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_15": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_3": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_6": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_7": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_8": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_9": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/deploy/flake.nix b/deploy/flake.nix
new file mode 100644
index 0000000..f613b19
--- /dev/null
+++ b/deploy/flake.nix
@@ -0,0 +1,45 @@
+{
+ inputs = {
+ devshell.url = "github:numtide/devshell";
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable?dir=lib";
+ # Uncomment temporarily below value and replace with local path to
+ # your secrets, and replace "follows" key below to use it.
+ #secrets-local.url = "path:/home/immae/projets/mes_sites/nixops-secrets";
+ secrets = {
+ type = "git";
+ url = "git+ssh://gitolite@git.immae.eu/perso/Immae/Config/Nix/Nixops/Secrets";
+ ref = "master";
+ };
+ main-flake.url = "path:../flakes";
+ main-flake.inputs.secrets.follows = "secrets";
+ };
+ outputs = inputs@{ self, nixpkgs, main-flake, devshell, ... }: {
+ sops-vars-file = (inputs.secrets-local or inputs.secrets).vars-file;
+ # FIXME: next line Can be removed in nix 2.16.*
+ devShell.x86_64-linux = self.devShells.x86_64-linux.default;
+ devShells.x86_64-linux.default = devshell.legacyPackages.x86_64-linux.mkShell {
+ env = [
+ { name = "NIX_BUILD_TOP"; value = ""; }
+ { name = "SOPS_VARS_FILE"; value = builtins.toString self.sops-vars-file; }
+ ];
+ };
+ colmena =
+ let
+ nodeFlakes = main-flake.subflakes.nodes;
+ hosts = builtins.attrNames nodeFlakes;
+ toHostNixpkgs = name: nodeFlakes.${name}.colmena.meta.nixpkgs;
+ toHostSpecialArgs = name: nodeFlakes.${name}.colmena.meta.specialArgs;
+ toHostColmena = name: nodeFlakes.${name}.colmena.${name};
+
+ in nixpkgs.lib.genAttrs hosts toHostColmena
+ // {
+ meta = {
+ # nixpkgs is required for colmena, but only lib is actually used
+ nixpkgs.lib = nixpkgs.lib;
+ specialArgs.secrets = main-flake.subflakes.secrets;
+ nodeNixpkgs = nixpkgs.lib.genAttrs hosts toHostNixpkgs;
+ nodeSpecialArgs = nixpkgs.lib.genAttrs hosts toHostSpecialArgs;
+ };
+ };
+ };
+}
diff --git a/environments/default.nix b/environments/default.nix
deleted file mode 100644
index 5f17eb9..0000000
--- a/environments/default.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-{ callPackage }:
-{
- immae-eu = callPackage ./immae-eu.nix {};
-}
diff --git a/environments/immae-eu.nix b/environments/immae-eu.nix
deleted file mode 100644
index 4def84b..0000000
--- a/environments/immae-eu.nix
+++ /dev/null
@@ -1,146 +0,0 @@
-{ pkgs }: with pkgs;
-let
- # https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh
- # https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks
- vlock' = vlock.overrideAttrs(old: {
- configureFlags = old.configureFlags ++ [ "--enable-root-password=no" ];
- });
- paths = [
- # archives
- lzo unzip bzip2 xz
- # unrar is unfree
-
- # backups
- duply
-
- # calendar/contacts
- abook khard khal cadaver vdirsyncerStable pal
-
- # computing
- boinctui
-
- # cryptocurrencies
- monero
- cointop
- # failing xmr-stak
- solc
- iota-cli-app
-
- # debugging
- rr valgrind netcat-gnu strace shellcheck
-
- # documentations
- unicodeDoc
-
- # e-mails
- muttprint mutt-ics
- notmuch-python2 notmuch-python3 notmuch-vim
- neomutt mairix
- bogofilter fetchmail
- sieve-connect
-
- # git
- vcsh gitRepo stgit tig ripgrep mr
-
- # graphical tools
- nextcloud-client firefox
- dwm dmenu st xorg.xauth tigervnc
-
- # images
- feh imagemagick tiv graphicsmagick qrcode
-
- # internet browsing
- w3m lynx links elinks browsh woob urlview urlscan googler urlwatch
-
- # less
- python3Packages.pygments lesspipe highlight sourceHighlight
-
- # monitoring
- cnagios mtop pg_activity nagios-cli mtr
- iftop htop iotop iperf bonfire
- goaccess tcpdump tshark tcpflow
- mitmproxy
- # nagnu
-
- # messaging/forums/news
- flrn slrn
- signal-cli signaldctl
- telegram-cli telegram-history-dump telegramircd
- weechat profanity
- newsboat irssi
-
- # nix
- yarn2nix-moretea.yarn2nix nixUnstable
- nixops nix-prefetch-scripts nix-generate-from-cpan
- bundix nodePackages.bower2nix nix-diff
- nodePackages.node2nix niv
- # (nixos {}).nixos-generate-config
- # (nixos {}).nixos-install
- # (nixos {}).nixos-enter
- # (nixos {}).manual.manpages
-
- # note taking
- note terminal-velocity jrnl doing nb
-
- # office
- sc-im ranger
- genius bc
- ledger
- tmux
- rtorrent
- ldapvi
- fzf
- buku
- vimPlugins.vim-plug
- (vim_configurable.override { python = python3; })
- mailcap
- webapps.surfer
-
- # password management
- (pass.withExtensions (exts: [ exts.pass-otp ])) apg pwgen
-
- # pdf
- pdftk poppler_utils
-
- # programming
- pelican emacs26-nox ctags
- wdiff patch gnumake
-
- # security
- keybase gnupg
-
- # todolist/time management
- taskwarrior vit timewarrior taskopen
- bugwarrior
-
- # video/music
- youtube-dl ncmpc ncmpcpp ffmpeg
-
- # s6 tools (part of skawarePackages)
- skalibs execline s6 s6-dns s6-linux-utils s6-networking
- s6-portable-utils
-
- # system tools
- telnet bind.dnsutils httpie ngrep nmap p0f socat lsof psmisc
- wget patchelf rename tmux (lib.meta.hiPrio nettools)
- vlock' mosh manpages openssl openssl.doc openssl.man
- sshfs ncdu procps-ng
-
- # other tools
- pgloader s3cmd lftp jq cpulimit libxslt gandi-cli bubblewrap
-
- # Terraform + AWS
- terraform_0_12 awscli
- ansible python3Packages.boto
- openvpn
-
- zsh-completions
- ];
-in
-buildEnv {
- name = "immae-eu-packages";
- inherit paths;
- pathsToLink = [ "/bin" "/etc" "/include" "/lib" "/libexec" "/share"];
- extraOutputsToInstall = [ "bin" "man" "doc" "info" ];
- passthru = { packages = paths; };
-}
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..b109986
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,9825 @@
+{
+ "nodes": {
+ "backports": {
+ "inputs": {
+ "flake-utils": "flake-utils_6",
+ "nixpkgs": "nixpkgs_11"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_8",
+ "nixpkgs": "nixpkgs_18"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_3": {
+ "inputs": {
+ "flake-utils": "flake-utils_20",
+ "nixpkgs": "nixpkgs_34"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_4": {
+ "inputs": {
+ "flake-utils": "flake-utils_34",
+ "nixpkgs": "nixpkgs_57"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_5": {
+ "inputs": {
+ "flake-utils": "flake-utils_37",
+ "nixpkgs": "nixpkgs_65"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_6": {
+ "inputs": {
+ "flake-utils": "flake-utils_39",
+ "nixpkgs": "nixpkgs_72"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "backports_7": {
+ "inputs": {
+ "flake-utils": "flake-utils_61",
+ "nixpkgs": "nixpkgs_101"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "buildslist": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585697026,
+ "narHash": "sha256-7CO89q6Bmg59eN5tFGYaqJR/rpJrLu7dpulXgJUv/0E=",
+ "ref": "master",
+ "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0",
+ "revCount": 4,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ }
+ },
+ "buildslist_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585697026,
+ "narHash": "sha256-7CO89q6Bmg59eN5tFGYaqJR/rpJrLu7dpulXgJUv/0E=",
+ "ref": "master",
+ "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0",
+ "revCount": 4,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ }
+ },
+ "chatons": {
+ "inputs": {
+ "environment": "environment"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ }
+ },
+ "chatons_2": {
+ "inputs": {
+ "environment": "environment_18"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ }
+ },
+ "colmena": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils_3",
+ "nixpkgs": "nixpkgs_4",
+ "stable": "stable"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_2": {
+ "inputs": {
+ "flake-compat": "flake-compat_2",
+ "flake-utils": "flake-utils_7",
+ "nixpkgs": "nixpkgs_13",
+ "stable": "stable_2"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_3": {
+ "inputs": {
+ "flake-compat": "flake-compat_3",
+ "flake-utils": "flake-utils_10",
+ "nixpkgs": "nixpkgs_20",
+ "stable": "stable_3"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_4": {
+ "inputs": {
+ "flake-compat": "flake-compat_4",
+ "flake-utils": "flake-utils_32",
+ "nixpkgs": "nixpkgs_51",
+ "stable": "stable_4"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_5": {
+ "inputs": {
+ "flake-compat": "flake-compat_5",
+ "flake-utils": "flake-utils_35",
+ "nixpkgs": "nixpkgs_59",
+ "stable": "stable_5"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_6": {
+ "inputs": {
+ "flake-compat": "flake-compat_6",
+ "flake-utils": "flake-utils_38",
+ "nixpkgs": "nixpkgs_67",
+ "stable": "stable_6"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "colmena_7": {
+ "inputs": {
+ "flake-compat": "flake-compat_7",
+ "flake-utils": "flake-utils_45",
+ "nixpkgs": "nixpkgs_81",
+ "stable": "stable_7"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "copanier": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1633895178,
+ "narHash": "sha256-0xrh12eBSVpgVeniSbKQAuGBhIyVB/rB/H3Tt7EJ1vQ=",
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "rev": "d1b92cc639f4d25ad31baf4a6579a33c44a0d837",
+ "type": "github"
+ },
+ "original": {
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "type": "github"
+ }
+ },
+ "copanier_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1633895178,
+ "narHash": "sha256-0xrh12eBSVpgVeniSbKQAuGBhIyVB/rB/H3Tt7EJ1vQ=",
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "rev": "d1b92cc639f4d25ad31baf4a6579a33c44a0d837",
+ "type": "github"
+ },
+ "original": {
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "type": "github"
+ }
+ },
+ "devshell": {
+ "inputs": {
+ "nixpkgs": "nixpkgs",
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1688380630,
+ "narHash": "sha256-8ilApWVb1mAi4439zS3iFeIT0ODlbrifm/fegWwgHjA=",
+ "owner": "numtide",
+ "repo": "devshell",
+ "rev": "f9238ec3d75cefbb2b42a44948c4e8fb1ae9a205",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "devshell",
+ "type": "github"
+ }
+ },
+ "diaspora": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1551139311,
+ "narHash": "sha256-Fyv7Af68YccJL2OGz6l9d71UmnLB+LstlWbOlgFZtgo=",
+ "owner": "diaspora",
+ "repo": "diaspora",
+ "rev": "663da1ef2573863eb870e0edbd50050f261f3d30",
+ "type": "github"
+ },
+ "original": {
+ "owner": "diaspora",
+ "ref": "v0.7.10.0",
+ "repo": "diaspora",
+ "type": "github"
+ }
+ },
+ "diaspora_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1551139311,
+ "narHash": "sha256-Fyv7Af68YccJL2OGz6l9d71UmnLB+LstlWbOlgFZtgo=",
+ "owner": "diaspora",
+ "repo": "diaspora",
+ "rev": "663da1ef2573863eb870e0edbd50050f261f3d30",
+ "type": "github"
+ },
+ "original": {
+ "owner": "diaspora",
+ "ref": "v0.7.10.0",
+ "repo": "diaspora",
+ "type": "github"
+ }
+ },
+ "disko": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_5"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_2": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_14"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_3": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_21"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_4": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_52"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_5": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_60"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_6": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_68"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "disko_7": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_82"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "dns-nix": {
+ "inputs": {
+ "flake-utils": "flake-utils_9",
+ "nixpkgs": [
+ "flakes",
+ "n-eldiron",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1635273082,
+ "narHash": "sha256-EHiDP2jEa7Ai5ZwIf5uld9RVFcV77+2SUxjQXwJsJa0=",
+ "owner": "kirelagin",
+ "repo": "dns.nix",
+ "rev": "c7b9645da9c0ddce4f9de4ef27ec01bb8108039a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "kirelagin",
+ "repo": "dns.nix",
+ "type": "github"
+ }
+ },
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_10": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_11": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_12": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_13": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_14": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_15": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_16": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_17": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_18": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_19": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_20": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_21": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_22": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_23": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_24": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_25": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_26": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_27": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_28": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_29": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_30": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_31": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_32": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_33": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_8": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_9": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "etherpad-lite": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1587951095,
+ "narHash": "sha256-PjAkvkC7tJzRECUqOvuWfoZTz8QqDXk6oXEN3ig24rQ=",
+ "owner": "ether",
+ "repo": "etherpad-lite",
+ "rev": "62101147a0c3495dc80daa87ab53a3366321a205",
+ "type": "github"
+ },
+ "original": {
+ "owner": "ether",
+ "ref": "1.8.3",
+ "repo": "etherpad-lite",
+ "type": "github"
+ }
+ },
+ "etherpad-lite_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1587951095,
+ "narHash": "sha256-PjAkvkC7tJzRECUqOvuWfoZTz8QqDXk6oXEN3ig24rQ=",
+ "owner": "ether",
+ "repo": "etherpad-lite",
+ "rev": "62101147a0c3495dc80daa87ab53a3366321a205",
+ "type": "github"
+ },
+ "original": {
+ "owner": "ether",
+ "ref": "1.8.3",
+ "repo": "etherpad-lite",
+ "type": "github"
+ }
+ },
+ "files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_10": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_11": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_12": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_13": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_14": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_15": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_8": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_9": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_3": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_6": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_7": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_10": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_13"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_11": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_14"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_12": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_16"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_13": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_17"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_14": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_19"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_15": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_20"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_16": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_21"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_17": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_22"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_18": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_23"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_19": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_24"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_3"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_20": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_25"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_21": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_26"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_22": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_28"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_23": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_29"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_3": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_4"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_4": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_6"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_5": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_7"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_6": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_8"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_7": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_10"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_8": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_11"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_9": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_12"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_10": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_11": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_12": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_13": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_14": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_15": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_16": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_17": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_18": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_19": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_20": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_21": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_22": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_23": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_24": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_25": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_26": {
+ "locked": {
+ "lastModified": 1649676176,
+ "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_27": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_28": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_29": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_3": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_30": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_31": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_32": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_33": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_34": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_35": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_36": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_37": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_38": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_39": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_4": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_40": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_41": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_42": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_43": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_44": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_45": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_46": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_47": {
+ "locked": {
+ "lastModified": 1649676176,
+ "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_48": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_49": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_5": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_50": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_51": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_52": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_53": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_54": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_55": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_56": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_57": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_58": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_59": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_6": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_60": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_61": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_62": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_63": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_7": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_8": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_9": {
+ "locked": {
+ "lastModified": 1614513358,
+ "narHash": "sha256-LakhOx3S1dRjnh0b5Dg3mbZyH0ToC9I8Y2wKSkBaTzU=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5466c5bbece17adaab2d82fae80b46e807611bf3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flakes": {
+ "inputs": {
+ "n-backup-2": "n-backup-2",
+ "n-dilion": "n-dilion",
+ "n-eldiron": "n-eldiron",
+ "n-monitoring-1": "n-monitoring-1",
+ "n-quatresaisons": "n-quatresaisons",
+ "n-zoldene": "n-zoldene",
+ "s-backports": "s-backports",
+ "s-copanier": "s-copanier",
+ "s-diaspora": "s-diaspora",
+ "s-etherpad-lite": "s-etherpad-lite",
+ "s-fiche": "s-fiche",
+ "s-files-watcher": "s-files-watcher",
+ "s-grocy": "s-grocy",
+ "s-lib": "s-lib",
+ "s-loginctl-linger": "s-loginctl-linger",
+ "s-mastodon": "s-mastodon",
+ "s-mediagoblin": "s-mediagoblin",
+ "s-multi-apache-container": "s-multi-apache-container",
+ "s-mypackages": "s-mypackages",
+ "s-myuids": "s-myuids",
+ "s-naemon": "s-naemon",
+ "s-openarc": "s-openarc",
+ "s-opendmarc": "s-opendmarc",
+ "s-paste": "s-paste",
+ "s-peertube": "s-peertube",
+ "s-private-buildbot": "s-private-buildbot",
+ "s-private-chatons": "s-private-chatons",
+ "s-private-environment": "s-private-environment",
+ "s-private-mail-relay": "s-private-mail-relay",
+ "s-private-milters": "s-private-milters",
+ "s-private-monitoring": "s-private-monitoring",
+ "s-private-openarc": "s-private-openarc",
+ "s-private-opendmarc": "s-private-opendmarc",
+ "s-private-openldap": "s-private-openldap",
+ "s-private-paste": "s-private-paste",
+ "s-private-peertube": "s-private-peertube",
+ "s-private-php": "s-private-php",
+ "s-private-ssh": "s-private-ssh",
+ "s-private-system": "s-private-system",
+ "s-rsync_backup": "s-rsync_backup",
+ "s-secrets": "s-secrets",
+ "s-surfer": "s-surfer",
+ "s-taskwarrior-web": "s-taskwarrior-web",
+ "secrets": "secrets_26"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-LBw8FCxHXW6b1WFvsEnmLmNpZjow6+N4Q+3zAfcudIU=",
+ "path": "./flakes",
+ "type": "path"
+ },
+ "original": {
+ "path": "./flakes",
+ "type": "path"
+ }
+ },
+ "grocy": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585166193,
+ "narHash": "sha256-rq1Fma/VgU01qXQmCghrt5k+LXWYt8z9b0NvGA7+/Y8=",
+ "owner": "grocy",
+ "repo": "grocy",
+ "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "grocy",
+ "repo": "grocy",
+ "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
+ "type": "github"
+ }
+ },
+ "grocy_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585166193,
+ "narHash": "sha256-rq1Fma/VgU01qXQmCghrt5k+LXWYt8z9b0NvGA7+/Y8=",
+ "owner": "grocy",
+ "repo": "grocy",
+ "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "grocy",
+ "repo": "grocy",
+ "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
+ "type": "github"
+ }
+ },
+ "impermanence": {
+ "locked": {
+ "lastModified": 1684264534,
+ "narHash": "sha256-K0zr+ry3FwIo3rN2U/VWAkCJSgBslBisvfRIPwMbuCQ=",
+ "owner": "nix-community",
+ "repo": "impermanence",
+ "rev": "89253fb1518063556edd5e54509c30ac3089d5e6",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "ref": "master",
+ "repo": "impermanence",
+ "type": "github"
+ }
+ },
+ "landing-page": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1691524124,
+ "narHash": "sha256-JyHb02qUrct2t+dgaiOcT5KS8RHkXygjWQXl+55gSMY=",
+ "ref": "main",
+ "rev": "018344d9116b506c662ecdcee2d0d505c857f1cf",
+ "revCount": 573,
+ "type": "git",
+ "url": "https://github.com/bastienwirtz/homer.git"
+ },
+ "original": {
+ "ref": "main",
+ "type": "git",
+ "url": "https://github.com/bastienwirtz/homer.git"
+ }
+ },
+ "loginctl-linger": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "loginctl-linger_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "loginctl-linger_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "mail-relay": {
+ "inputs": {
+ "environment": "environment_3",
+ "secrets": "secrets"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ }
+ },
+ "mail-relay_2": {
+ "inputs": {
+ "environment": "environment_20",
+ "secrets": "secrets_15"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ }
+ },
+ "mastodon": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1582790581,
+ "narHash": "sha256-YImWfvsJQzJHyKoWI6OP6BA+NvmHF2RiwJqOg0NUN/U=",
+ "owner": "tootsuite",
+ "repo": "mastodon",
+ "rev": "9bace2dd88d127d396794375c8fcb2132619a799",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tootsuite",
+ "ref": "v2.9.4",
+ "repo": "mastodon",
+ "type": "github"
+ }
+ },
+ "mastodon_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1582790581,
+ "narHash": "sha256-YImWfvsJQzJHyKoWI6OP6BA+NvmHF2RiwJqOg0NUN/U=",
+ "owner": "tootsuite",
+ "repo": "mastodon",
+ "rev": "9bace2dd88d127d396794375c8fcb2132619a799",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tootsuite",
+ "ref": "v2.9.4",
+ "repo": "mastodon",
+ "type": "github"
+ }
+ },
+ "mediagoblin": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1531090939,
+ "narHash": "sha256-vSajRbuE/bu2HVsUZm25fkm/vNLXKDIK7Xn8kyKJ5Ps=",
+ "ref": "stable",
+ "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
+ "revCount": 4805,
+ "submodules": true,
+ "type": "git",
+ "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
+ },
+ "original": {
+ "ref": "stable",
+ "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
+ "submodules": true,
+ "type": "git",
+ "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
+ }
+ },
+ "mediagoblin_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1531090939,
+ "narHash": "sha256-vSajRbuE/bu2HVsUZm25fkm/vNLXKDIK7Xn8kyKJ5Ps=",
+ "ref": "stable",
+ "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
+ "revCount": 4805,
+ "submodules": true,
+ "type": "git",
+ "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
+ },
+ "original": {
+ "ref": "stable",
+ "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
+ "submodules": true,
+ "type": "git",
+ "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
+ }
+ },
+ "milters": {
+ "inputs": {
+ "environment": "environment_4",
+ "files-watcher": "files-watcher",
+ "openarc": "openarc",
+ "opendmarc": "opendmarc",
+ "secrets": "secrets_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ }
+ },
+ "monitoring": {
+ "inputs": {
+ "environment": "environment_5",
+ "naemon": "naemon",
+ "nixpkgs-lib": "nixpkgs-lib_2",
+ "secrets": "secrets_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "monitoring_2": {
+ "inputs": {
+ "environment": "environment_9",
+ "naemon": "naemon_2",
+ "nixpkgs-lib": "nixpkgs-lib_5",
+ "secrets": "secrets_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "monitoring_3": {
+ "inputs": {
+ "environment": "environment_21",
+ "naemon": "naemon_4",
+ "nixpkgs-lib": "nixpkgs-lib_15",
+ "secrets": "secrets_16"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "monitoring_4": {
+ "inputs": {
+ "environment": "environment_24",
+ "naemon": "naemon_5",
+ "nixpkgs-lib": "nixpkgs-lib_18",
+ "secrets": "secrets_18"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "multi-apache-container": {
+ "inputs": {
+ "files-watcher": "files-watcher_11",
+ "myuids": "myuids_25"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ }
+ },
+ "my-lib": {
+ "inputs": {
+ "colmena": "colmena",
+ "disko": "disko",
+ "flake-parts": "flake-parts_2",
+ "nixos-anywhere": "nixos-anywhere",
+ "nixpkgs": "nixpkgs_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "my-lib_2": {
+ "inputs": {
+ "colmena": "colmena_2",
+ "disko": "disko_2",
+ "flake-parts": "flake-parts_4",
+ "nixos-anywhere": "nixos-anywhere_2",
+ "nixpkgs": "nixpkgs_16"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "my-lib_3": {
+ "inputs": {
+ "colmena": "colmena_3",
+ "disko": "disko_3",
+ "flake-parts": "flake-parts_6",
+ "nixos-anywhere": "nixos-anywhere_3",
+ "nixpkgs": "nixpkgs_23"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "my-lib_4": {
+ "inputs": {
+ "colmena": "colmena_4",
+ "disko": "disko_4",
+ "flake-parts": "flake-parts_12",
+ "nixos-anywhere": "nixos-anywhere_4",
+ "nixpkgs": "nixpkgs_54"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "my-lib_5": {
+ "inputs": {
+ "colmena": "colmena_5",
+ "disko": "disko_5",
+ "flake-parts": "flake-parts_14",
+ "nixos-anywhere": "nixos-anywhere_5",
+ "nixpkgs": "nixpkgs_62"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "my-lib_6": {
+ "inputs": {
+ "colmena": "colmena_6",
+ "disko": "disko_6",
+ "flake-parts": "flake-parts_16",
+ "nixos-anywhere": "nixos-anywhere_6",
+ "nixpkgs": "nixpkgs_70"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_3",
+ "nixpkgs": "nixpkgs_12",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_10": {
+ "inputs": {
+ "flake-parts": "flake-parts_18",
+ "nixpkgs": "nixpkgs_77",
+ "webapps-ttrss": "webapps-ttrss_11"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_11": {
+ "inputs": {
+ "flake-parts": "flake-parts_19",
+ "nixpkgs": "nixpkgs_79",
+ "webapps-ttrss": "webapps-ttrss_12"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_12": {
+ "inputs": {
+ "flake-parts": "flake-parts_22",
+ "nixpkgs": "nixpkgs_102",
+ "webapps-ttrss": "webapps-ttrss_14"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_13": {
+ "inputs": {
+ "flake-parts": "flake-parts_23",
+ "nixpkgs": "nixpkgs_103",
+ "webapps-ttrss": "webapps-ttrss_15"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_2": {
+ "inputs": {
+ "flake-parts": "flake-parts_5",
+ "nixpkgs": "nixpkgs_19",
+ "webapps-ttrss": "webapps-ttrss_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_3": {
+ "inputs": {
+ "flake-parts": "flake-parts_7",
+ "nixpkgs": "nixpkgs_35",
+ "webapps-ttrss": "webapps-ttrss_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_4": {
+ "inputs": {
+ "flake-parts": "flake-parts_8",
+ "nixpkgs": "nixpkgs_38",
+ "webapps-ttrss": "webapps-ttrss_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_5": {
+ "inputs": {
+ "flake-parts": "flake-parts_9",
+ "nixpkgs": "nixpkgs_40",
+ "webapps-ttrss": "webapps-ttrss_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_6": {
+ "inputs": {
+ "flake-parts": "flake-parts_11",
+ "nixpkgs": "nixpkgs_48",
+ "webapps-ttrss": "webapps-ttrss_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_7": {
+ "inputs": {
+ "flake-parts": "flake-parts_13",
+ "nixpkgs": "nixpkgs_58",
+ "webapps-ttrss": "webapps-ttrss_8"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_8": {
+ "inputs": {
+ "flake-parts": "flake-parts_15",
+ "nixpkgs": "nixpkgs_66",
+ "webapps-ttrss": "webapps-ttrss_9"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_9": {
+ "inputs": {
+ "flake-parts": "flake-parts_17",
+ "nixpkgs": "nixpkgs_73",
+ "webapps-ttrss": "webapps-ttrss_10"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_10": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_11": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_12": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_13": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_14": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_15": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_16": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_17": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_18": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_19": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_20": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_21": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_22": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_23": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_24": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_25": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_26": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_27": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_28": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_29": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_30": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_31": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_32": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_33": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_34": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_35": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_36": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_37": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_38": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_39": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_40": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_41": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_42": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_8": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_9": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "n-backup-2": {
+ "inputs": {
+ "chatons": "chatons",
+ "environment": "environment_2",
+ "loginctl-linger": "loginctl-linger",
+ "mail-relay": "mail-relay",
+ "milters": "milters",
+ "monitoring": "monitoring",
+ "my-lib": "my-lib",
+ "myuids": "myuids_3",
+ "nixpkgs": "nixpkgs_8",
+ "openarc": "openarc_3",
+ "opendmarc": "opendmarc_2",
+ "openldap": "openldap",
+ "rsync_backup": "rsync_backup",
+ "secrets": "secrets_6",
+ "system": "system"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-0CPGGyOWQadU9c8y+A4XtveOrmkMlFiH+WJ55RPzJnE=",
+ "path": "../systems/backup-2",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/backup-2",
+ "type": "path"
+ }
+ },
+ "n-dilion": {
+ "inputs": {
+ "environment": "environment_8",
+ "files-watcher": "files-watcher_4",
+ "loginctl-linger": "loginctl-linger_2",
+ "monitoring": "monitoring_2",
+ "my-lib": "my-lib_2",
+ "myuids": "myuids_7",
+ "nixpkgs": "nixpkgs_17",
+ "secrets": "secrets_8",
+ "ssh": "ssh",
+ "system": "system_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Ctp8QY0OkGwv/YkOlipwM1ldEz7OebVDbAqg1O/tRe8=",
+ "path": "../systems/dilion",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/dilion",
+ "type": "path"
+ }
+ },
+ "n-eldiron": {
+ "inputs": {
+ "dns-nix": "dns-nix",
+ "my-lib": "my-lib_3",
+ "nixpkgs": "nixpkgs_24",
+ "private-buildbot": "private-buildbot",
+ "private-chatons": "private-chatons",
+ "private-environment": "private-environment",
+ "private-milters": "private-milters",
+ "private-monitoring": "private-monitoring",
+ "private-openarc": "private-openarc",
+ "private-opendmarc": "private-opendmarc",
+ "private-openldap": "private-openldap",
+ "private-paste": "private-paste",
+ "private-peertube": "private-peertube",
+ "private-php": "private-php",
+ "private-ssh": "private-ssh",
+ "private-system": "private-system",
+ "public-copanier": "public-copanier",
+ "public-diaspora": "public-diaspora",
+ "public-etherpad-lite": "public-etherpad-lite",
+ "public-fiche": "public-fiche",
+ "public-files-watcher": "public-files-watcher",
+ "public-grocy": "public-grocy",
+ "public-loginctl-linger": "public-loginctl-linger",
+ "public-mastodon": "public-mastodon",
+ "public-mediagoblin": "public-mediagoblin",
+ "public-multi-apache-container": "public-multi-apache-container",
+ "public-mypackages": "public-mypackages",
+ "public-myuids": "public-myuids",
+ "public-openarc": "public-openarc",
+ "public-opendmarc": "public-opendmarc",
+ "public-peertube": "public-peertube",
+ "public-secrets": "public-secrets",
+ "public-surfer": "public-surfer",
+ "public-taskwarrior-web": "public-taskwarrior-web"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-g9f3SCavl9ssNr8Xw9Z8KkpeEwCYv+47dqwoIPneMSs=",
+ "path": "../systems/eldiron",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/eldiron",
+ "type": "path"
+ }
+ },
+ "n-monitoring-1": {
+ "inputs": {
+ "chatons": "chatons_2",
+ "environment": "environment_19",
+ "files-watcher": "files-watcher_9",
+ "loginctl-linger": "loginctl-linger_3",
+ "mail-relay": "mail-relay_2",
+ "monitoring": "monitoring_3",
+ "my-lib": "my-lib_4",
+ "myuids": "myuids_23",
+ "nixpkgs": "nixpkgs_55",
+ "php": "php",
+ "secrets": "secrets_17",
+ "system": "system_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-kLIVhZAxEWcN3W1AaF/gmopYuRdq0U43jkA4hliY50I=",
+ "path": "../systems/monitoring-1",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/monitoring-1",
+ "type": "path"
+ }
+ },
+ "n-quatresaisons": {
+ "inputs": {
+ "environment": "environment_23",
+ "files-watcher": "files-watcher_10",
+ "landing-page": "landing-page",
+ "monitoring": "monitoring_4",
+ "multi-apache-container": "multi-apache-container",
+ "my-lib": "my-lib_5",
+ "myuids": "myuids_26",
+ "nixpkgs": "nixpkgs_63",
+ "php": "php_2",
+ "secrets": "secrets_19",
+ "system": "system_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-FtjFgqcSXs0dTkbUggbPwaDeCoOoYZragHCUkcyq538=",
+ "path": "../systems/quatresaisons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/quatresaisons",
+ "type": "path"
+ }
+ },
+ "n-zoldene": {
+ "inputs": {
+ "impermanence": "impermanence",
+ "my-lib": "my-lib_6",
+ "nixpkgs": "nixpkgs_71",
+ "private-environment": "private-environment_2",
+ "private-system": "private-system_2",
+ "public-secrets": "public-secrets_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-YSYLjETf7yMwdHeEisU1V7e5O3yB+YxVoIPLi00PCdo=",
+ "path": "../systems/zoldene",
+ "type": "path"
+ },
+ "original": {
+ "path": "../systems/zoldene",
+ "type": "path"
+ }
+ },
+ "naemon": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "naemon_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "naemon_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "naemon_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "naemon_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "naemon_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "nixos-2305": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_2": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_3": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_4": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_5": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_6": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-2305_7": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere": {
+ "inputs": {
+ "disko": [
+ "flakes",
+ "n-backup-2",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "flakes",
+ "n-backup-2",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305",
+ "nixos-images": "nixos-images",
+ "nixpkgs": "nixpkgs_6",
+ "treefmt-nix": "treefmt-nix"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_2": {
+ "inputs": {
+ "disko": [
+ "flakes",
+ "n-dilion",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "flakes",
+ "n-dilion",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_2",
+ "nixos-images": "nixos-images_2",
+ "nixpkgs": "nixpkgs_15",
+ "treefmt-nix": "treefmt-nix_2"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_3": {
+ "inputs": {
+ "disko": [
+ "flakes",
+ "n-eldiron",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "flakes",
+ "n-eldiron",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_3",
+ "nixos-images": "nixos-images_3",
+ "nixpkgs": "nixpkgs_22",
+ "treefmt-nix": "treefmt-nix_3"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_4": {
+ "inputs": {
+ "disko": [
+ "flakes",
+ "n-monitoring-1",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "flakes",
+ "n-monitoring-1",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_4",
+ "nixos-images": "nixos-images_4",
+ "nixpkgs": "nixpkgs_53",
+ "treefmt-nix": "treefmt-nix_4"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_5": {
+ "inputs": {
+ "disko": [
+ "flakes",
+ "n-quatresaisons",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "flakes",
+ "n-quatresaisons",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_5",
+ "nixos-images": "nixos-images_5",
+ "nixpkgs": "nixpkgs_61",
+ "treefmt-nix": "treefmt-nix_5"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_6": {
+ "inputs": {
+ "disko": [
+ "flakes",
+ "n-zoldene",
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "flakes",
+ "n-zoldene",
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_6",
+ "nixos-images": "nixos-images_6",
+ "nixpkgs": "nixpkgs_69",
+ "treefmt-nix": "treefmt-nix_6"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere_7": {
+ "inputs": {
+ "disko": [
+ "flakes",
+ "s-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "flakes",
+ "s-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305_7",
+ "nixos-images": "nixos-images_7",
+ "nixpkgs": "nixpkgs_83",
+ "treefmt-nix": "treefmt-nix_7"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-images": {
+ "inputs": {
+ "nixos-2305": [
+ "flakes",
+ "n-backup-2",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "flakes",
+ "n-backup-2",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_2": {
+ "inputs": {
+ "nixos-2305": [
+ "flakes",
+ "n-dilion",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "flakes",
+ "n-dilion",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_3": {
+ "inputs": {
+ "nixos-2305": [
+ "flakes",
+ "n-eldiron",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "flakes",
+ "n-eldiron",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_4": {
+ "inputs": {
+ "nixos-2305": [
+ "flakes",
+ "n-monitoring-1",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "flakes",
+ "n-monitoring-1",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_5": {
+ "inputs": {
+ "nixos-2305": [
+ "flakes",
+ "n-quatresaisons",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "flakes",
+ "n-quatresaisons",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_6": {
+ "inputs": {
+ "nixos-2305": [
+ "flakes",
+ "n-zoldene",
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "flakes",
+ "n-zoldene",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixos-images_7": {
+ "inputs": {
+ "nixos-2305": [
+ "flakes",
+ "s-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "flakes",
+ "s-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1677383253,
+ "narHash": "sha256-UfpzWfSxkfXHnb4boXZNaKsAcUrZT9Hw+tao1oZxd08=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "9952d6bc395f5841262b006fbace8dd7e143b634",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4_3": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4_4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_10": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_11": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_12": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_13": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_14": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_15": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_16": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_17": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_18": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_19": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_2": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_20": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_21": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_22": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_23": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_24": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_25": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_26": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_27": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_28": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_29": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_3": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_4": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_5": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_6": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_7": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_8": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_9": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_10": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_100": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_101": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_102": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_103": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_104": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_105": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_106": {
+ "locked": {
+ "lastModified": 1692447944,
+ "narHash": "sha256-fkJGNjEmTPvqBs215EQU4r9ivecV5Qge5cF/QDLVn3U=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "d680ded26da5cf104dd2735a51e88d2d8f487b4d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_11": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_12": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_13": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_14": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_15": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_16": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_17": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_18": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_19": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_20": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_21": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_22": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_23": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_24": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_25": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_26": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_27": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_28": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_29": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_30": {
+ "locked": {
+ "lastModified": 1631570365,
+ "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_31": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_32": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_33": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_34": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_35": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_36": {
+ "locked": {
+ "lastModified": 1633901457,
+ "narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "f358794824b4595d77fec93732485d329ed7b0e0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_37": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_38": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_39": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_40": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_41": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_42": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_43": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_44": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_45": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_46": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_47": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_48": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_49": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_50": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_51": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_52": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_53": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_54": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_55": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_56": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_57": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_58": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_59": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_6": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_60": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_61": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_62": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_63": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_64": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_65": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_66": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_67": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_68": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_69": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_7": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_70": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_71": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_72": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_73": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_74": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_75": {
+ "locked": {
+ "lastModified": 1633901457,
+ "narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "f358794824b4595d77fec93732485d329ed7b0e0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_76": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_77": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_78": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_79": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_8": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_80": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_81": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_82": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_83": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_84": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_85": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_86": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_87": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_88": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_89": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_9": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_90": {
+ "locked": {
+ "lastModified": 1631570365,
+ "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_91": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_92": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_93": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_94": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_95": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_96": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_97": {
+ "locked": {
+ "lastModified": 1631570365,
+ "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_98": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_99": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "openarc": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "myuids": "myuids",
+ "nixpkgs": "nixpkgs_2",
+ "openarc": "openarc_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_10": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_11": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_12": {
+ "inputs": {
+ "flake-utils": "flake-utils_53",
+ "myuids": "myuids_36",
+ "nixpkgs": "nixpkgs_93",
+ "openarc": "openarc_13"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_13": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_14": {
+ "inputs": {
+ "flake-utils": "flake-utils_55",
+ "myuids": "myuids_38",
+ "nixpkgs": "nixpkgs_95",
+ "openarc": "openarc_15"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_15": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_3": {
+ "inputs": {
+ "files-watcher": "files-watcher_2",
+ "openarc": "openarc_4",
+ "secrets": "secrets_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ }
+ },
+ "openarc_4": {
+ "inputs": {
+ "flake-utils": "flake-utils_4",
+ "myuids": "myuids_4",
+ "nixpkgs": "nixpkgs_9",
+ "openarc": "openarc_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_6": {
+ "inputs": {
+ "flake-utils": "flake-utils_12",
+ "myuids": "myuids_9",
+ "nixpkgs": "nixpkgs_26",
+ "openarc": "openarc_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_7": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_8": {
+ "inputs": {
+ "flake-utils": "flake-utils_14",
+ "myuids": "myuids_11",
+ "nixpkgs": "nixpkgs_28",
+ "openarc": "openarc_9"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_9": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "opendmarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_2",
+ "myuids": "myuids_2",
+ "nixpkgs": "nixpkgs_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_2": {
+ "inputs": {
+ "environment": "environment_6",
+ "files-watcher": "files-watcher_3",
+ "opendmarc": "opendmarc_3",
+ "secrets": "secrets_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_3": {
+ "inputs": {
+ "flake-utils": "flake-utils_5",
+ "myuids": "myuids_5",
+ "nixpkgs": "nixpkgs_10"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_4": {
+ "inputs": {
+ "flake-utils": "flake-utils_13",
+ "myuids": "myuids_10",
+ "nixpkgs": "nixpkgs_27"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_5": {
+ "inputs": {
+ "flake-utils": "flake-utils_15",
+ "myuids": "myuids_12",
+ "nixpkgs": "nixpkgs_29"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_6": {
+ "inputs": {
+ "flake-utils": "flake-utils_54",
+ "myuids": "myuids_37",
+ "nixpkgs": "nixpkgs_94"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_7": {
+ "inputs": {
+ "flake-utils": "flake-utils_56",
+ "myuids": "myuids_39",
+ "nixpkgs": "nixpkgs_96"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "openldap": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ }
+ },
+ "paste": {
+ "inputs": {
+ "flake-utils": "flake-utils_16",
+ "nixpkgs": "nixpkgs_30"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
+ "path": "../../paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../paste",
+ "type": "path"
+ }
+ },
+ "paste_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_57",
+ "nixpkgs": "nixpkgs_97"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
+ "path": "../../paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../paste",
+ "type": "path"
+ }
+ },
+ "peertube": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1611184594,
+ "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=",
+ "ref": "gitolite_local/open_instance",
+ "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3",
+ "revCount": 6316,
+ "type": "git",
+ "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_3": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1611184594,
+ "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=",
+ "ref": "gitolite_local/open_instance",
+ "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3",
+ "revCount": 6316,
+ "type": "git",
+ "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_6": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_open_instance": {
+ "inputs": {
+ "flake-utils": "flake-utils_17",
+ "myuids": "myuids_13",
+ "nixpkgs": "nixpkgs_31",
+ "peertube": "peertube"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./../../peertube",
+ "type": "path"
+ }
+ },
+ "peertube_open_instance_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_58",
+ "myuids": "myuids_40",
+ "nixpkgs": "nixpkgs_98",
+ "peertube": "peertube_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./../../peertube",
+ "type": "path"
+ }
+ },
+ "peertube_origin": {
+ "inputs": {
+ "flake-utils": "flake-utils_18",
+ "myuids": "myuids_14",
+ "nixpkgs": "nixpkgs_32",
+ "peertube": "peertube_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./../../peertube",
+ "type": "path"
+ }
+ },
+ "peertube_origin_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_59",
+ "myuids": "myuids_41",
+ "nixpkgs": "nixpkgs_99",
+ "peertube": "peertube_6"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./../../peertube",
+ "type": "path"
+ }
+ },
+ "php": {
+ "inputs": {
+ "flake-utils": "flake-utils_33",
+ "nixpkgs": "nixpkgs_56",
+ "nixpkgs-4": "nixpkgs-4_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "../../flakes/private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/php",
+ "type": "path"
+ }
+ },
+ "php_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_36",
+ "nixpkgs": "nixpkgs_64",
+ "nixpkgs-4": "nixpkgs-4_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "../../flakes/private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/php",
+ "type": "path"
+ }
+ },
+ "private-buildbot": {
+ "inputs": {
+ "buildslist": "buildslist",
+ "flake-utils": "flake-utils_11",
+ "nixpkgs": "nixpkgs_25"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-LZRLA37RiN1VyKRqoAdZa9oc61PfQX7dCANSFuwuSa8=",
+ "path": "../../flakes/private/buildbot",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/buildbot",
+ "type": "path"
+ }
+ },
+ "private-chatons": {
+ "inputs": {
+ "environment": "environment_12"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ }
+ },
+ "private-environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "private-environment_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "private-milters": {
+ "inputs": {
+ "environment": "environment_13",
+ "files-watcher": "files-watcher_5",
+ "openarc": "openarc_6",
+ "opendmarc": "opendmarc_4",
+ "secrets": "secrets_10"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ }
+ },
+ "private-monitoring": {
+ "inputs": {
+ "environment": "environment_14",
+ "naemon": "naemon_3",
+ "nixpkgs-lib": "nixpkgs-lib_9",
+ "secrets": "secrets_11"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "private-openarc": {
+ "inputs": {
+ "files-watcher": "files-watcher_6",
+ "openarc": "openarc_8",
+ "secrets": "secrets_12"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ }
+ },
+ "private-opendmarc": {
+ "inputs": {
+ "environment": "environment_15",
+ "files-watcher": "files-watcher_7",
+ "opendmarc": "opendmarc_5",
+ "secrets": "secrets_13"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ }
+ },
+ "private-openldap": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ }
+ },
+ "private-paste": {
+ "inputs": {
+ "paste": "paste"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-w8WnrSJj05Y8hJsJfY46sI6PUSg2xo5h9t0zWP4woog=",
+ "path": "../../flakes/private/paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/paste",
+ "type": "path"
+ }
+ },
+ "private-peertube": {
+ "inputs": {
+ "peertube_open_instance": "peertube_open_instance",
+ "peertube_origin": "peertube_origin"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-1MpzxwaZ+TZJzBf+Do/PFdI9khD1GSvfjuSC0h2Hk58=",
+ "path": "../../flakes/private/peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/peertube",
+ "type": "path"
+ }
+ },
+ "private-php": {
+ "inputs": {
+ "flake-utils": "flake-utils_19",
+ "nixpkgs": "nixpkgs_33",
+ "nixpkgs-4": "nixpkgs-4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "../../flakes/private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/php",
+ "type": "path"
+ }
+ },
+ "private-ssh": {
+ "inputs": {
+ "environment": "environment_16",
+ "secrets": "secrets_14"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ }
+ },
+ "private-system": {
+ "inputs": {
+ "backports": "backports_3",
+ "environment": "environment_17",
+ "mypackages": "mypackages_3",
+ "myuids": "myuids_15",
+ "secrets-public": "secrets-public_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "private-system_2": {
+ "inputs": {
+ "backports": "backports_6",
+ "environment": "environment_26",
+ "mypackages": "mypackages_9",
+ "myuids": "myuids_28",
+ "secrets-public": "secrets-public_6"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "public-copanier": {
+ "inputs": {
+ "copanier": "copanier",
+ "flake-utils": "flake-utils_21",
+ "nixpkgs": "nixpkgs_36"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-v7ZhvU3UAmA7EtPWutYddHE84qbqWx/ugtFAEgpD4H0=",
+ "path": "../../flakes/copanier",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/copanier",
+ "type": "path"
+ }
+ },
+ "public-diaspora": {
+ "inputs": {
+ "diaspora": "diaspora",
+ "flake-utils": "flake-utils_22",
+ "myuids": "myuids_16",
+ "nixpkgs": "nixpkgs_37"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-S+ZZI5/WNGE9m5yRkOM3LlJUTrjtjzcBRLNrHi0fx6M=",
+ "path": "../../flakes/diaspora",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/diaspora",
+ "type": "path"
+ }
+ },
+ "public-etherpad-lite": {
+ "inputs": {
+ "etherpad-lite": "etherpad-lite",
+ "flake-utils": "flake-utils_23",
+ "mypackages": "mypackages_4",
+ "nixpkgs": "nixpkgs_39"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-j6p9rVNwD0C3VN65VdnF3yG8fy5S8aAsi2kRXWPd3VE=",
+ "path": "../../flakes/etherpad-lite",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/etherpad-lite",
+ "type": "path"
+ }
+ },
+ "public-fiche": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-oIMKN1dD4K+5pOGugNaNNdJme5NYlYtnNd3ivvyVoJI=",
+ "path": "../../flakes/fiche",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/fiche",
+ "type": "path"
+ }
+ },
+ "public-files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "public-grocy": {
+ "inputs": {
+ "flake-utils": "flake-utils_24",
+ "grocy": "grocy",
+ "mypackages": "mypackages_5",
+ "nixpkgs": "nixpkgs_41"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Xv5wFz3A1f+jkJ1hxb6DwisBwsZxaQccp/Kwe5lqwy0=",
+ "path": "../../flakes/grocy",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/grocy",
+ "type": "path"
+ }
+ },
+ "public-loginctl-linger": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "public-mastodon": {
+ "inputs": {
+ "flake-utils": "flake-utils_25",
+ "mastodon": "mastodon",
+ "myuids": "myuids_17",
+ "nixpkgs": "nixpkgs_42"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5bh3eTXdSac7Kw17+6EVmjNZpPIdGc7a3E5lb7wYn2U=",
+ "path": "../../flakes/mastodon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/mastodon",
+ "type": "path"
+ }
+ },
+ "public-mediagoblin": {
+ "inputs": {
+ "flake-utils": "flake-utils_26",
+ "mediagoblin": "mediagoblin",
+ "myuids": "myuids_18",
+ "nixpkgs": "nixpkgs_43"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-CVFwdH+i6K9dxyniI6nUeLiNZoD17uKT1Q8/4MaiTGU=",
+ "path": "../../flakes/mediagoblin",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/mediagoblin",
+ "type": "path"
+ }
+ },
+ "public-multi-apache-container": {
+ "inputs": {
+ "files-watcher": "files-watcher_8",
+ "myuids": "myuids_19"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ }
+ },
+ "public-mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_10",
+ "nixpkgs": "nixpkgs_44",
+ "webapps-ttrss": "webapps-ttrss_6"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../flakes/mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/mypackages",
+ "type": "path"
+ }
+ },
+ "public-myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "public-openarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_27",
+ "myuids": "myuids_20",
+ "nixpkgs": "nixpkgs_45",
+ "openarc": "openarc_10"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../flakes/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/openarc",
+ "type": "path"
+ }
+ },
+ "public-opendmarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_28",
+ "myuids": "myuids_21",
+ "nixpkgs": "nixpkgs_46"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../flakes/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/opendmarc",
+ "type": "path"
+ }
+ },
+ "public-peertube": {
+ "inputs": {
+ "flake-utils": "flake-utils_29",
+ "myuids": "myuids_22",
+ "nixpkgs": "nixpkgs_47",
+ "peertube": "peertube_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "../../flakes/peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/peertube",
+ "type": "path"
+ }
+ },
+ "public-secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "public-secrets_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "public-surfer": {
+ "inputs": {
+ "flake-utils": "flake-utils_30",
+ "mypackages": "mypackages_6",
+ "nixpkgs": "nixpkgs_49",
+ "surfer": "surfer"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-67TqavMsANZI6X15AFUQZ2zHSmoWJc80XaXwEGhWsRg=",
+ "path": "../../flakes/surfer",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/surfer",
+ "type": "path"
+ }
+ },
+ "public-taskwarrior-web": {
+ "inputs": {
+ "flake-utils": "flake-utils_31",
+ "nixpkgs": "nixpkgs_50",
+ "taskwarrior-web": "taskwarrior-web"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-0u83WrBwbIpuyy82UK3EUqC/dgoCoDzptRe+G4VhKXo=",
+ "path": "../../flakes/taskwarrior-web",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/taskwarrior-web",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "devshell": "devshell",
+ "flake-parts": "flake-parts",
+ "flakes": "flakes",
+ "nixpkgs": "nixpkgs_106"
+ }
+ },
+ "rsync_backup": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TxLsFx4DTTScMHkvR0pJgzYea6ILiu1Dl6LA67LtYGo=",
+ "path": "../../flakes/rsync_backup",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/rsync_backup",
+ "type": "path"
+ }
+ },
+ "s-backports": {
+ "inputs": {
+ "flake-utils": "flake-utils_40",
+ "nixpkgs": "nixpkgs_74"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "./backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "./backports",
+ "type": "path"
+ }
+ },
+ "s-copanier": {
+ "inputs": {
+ "copanier": "copanier_2",
+ "flake-utils": "flake-utils_41",
+ "nixpkgs": "nixpkgs_75"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-v7ZhvU3UAmA7EtPWutYddHE84qbqWx/ugtFAEgpD4H0=",
+ "path": "./copanier",
+ "type": "path"
+ },
+ "original": {
+ "path": "./copanier",
+ "type": "path"
+ }
+ },
+ "s-diaspora": {
+ "inputs": {
+ "diaspora": "diaspora_2",
+ "flake-utils": "flake-utils_42",
+ "myuids": "myuids_29",
+ "nixpkgs": "nixpkgs_76"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-S+ZZI5/WNGE9m5yRkOM3LlJUTrjtjzcBRLNrHi0fx6M=",
+ "path": "./diaspora",
+ "type": "path"
+ },
+ "original": {
+ "path": "./diaspora",
+ "type": "path"
+ }
+ },
+ "s-etherpad-lite": {
+ "inputs": {
+ "etherpad-lite": "etherpad-lite_2",
+ "flake-utils": "flake-utils_43",
+ "mypackages": "mypackages_10",
+ "nixpkgs": "nixpkgs_78"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-j6p9rVNwD0C3VN65VdnF3yG8fy5S8aAsi2kRXWPd3VE=",
+ "path": "./etherpad-lite",
+ "type": "path"
+ },
+ "original": {
+ "path": "./etherpad-lite",
+ "type": "path"
+ }
+ },
+ "s-fiche": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-oIMKN1dD4K+5pOGugNaNNdJme5NYlYtnNd3ivvyVoJI=",
+ "path": "./fiche",
+ "type": "path"
+ },
+ "original": {
+ "path": "./fiche",
+ "type": "path"
+ }
+ },
+ "s-files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "./files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "./files-watcher",
+ "type": "path"
+ }
+ },
+ "s-grocy": {
+ "inputs": {
+ "flake-utils": "flake-utils_44",
+ "grocy": "grocy_2",
+ "mypackages": "mypackages_11",
+ "nixpkgs": "nixpkgs_80"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Xv5wFz3A1f+jkJ1hxb6DwisBwsZxaQccp/Kwe5lqwy0=",
+ "path": "./grocy",
+ "type": "path"
+ },
+ "original": {
+ "path": "./grocy",
+ "type": "path"
+ }
+ },
+ "s-lib": {
+ "inputs": {
+ "colmena": "colmena_7",
+ "disko": "disko_7",
+ "flake-parts": "flake-parts_20",
+ "nixos-anywhere": "nixos-anywhere_7",
+ "nixpkgs": "nixpkgs_84"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "./lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "./lib",
+ "type": "path"
+ }
+ },
+ "s-loginctl-linger": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "./loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "./loginctl-linger",
+ "type": "path"
+ }
+ },
+ "s-mastodon": {
+ "inputs": {
+ "flake-utils": "flake-utils_46",
+ "mastodon": "mastodon_2",
+ "myuids": "myuids_30",
+ "nixpkgs": "nixpkgs_85"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5bh3eTXdSac7Kw17+6EVmjNZpPIdGc7a3E5lb7wYn2U=",
+ "path": "./mastodon",
+ "type": "path"
+ },
+ "original": {
+ "path": "./mastodon",
+ "type": "path"
+ }
+ },
+ "s-mediagoblin": {
+ "inputs": {
+ "flake-utils": "flake-utils_47",
+ "mediagoblin": "mediagoblin_2",
+ "myuids": "myuids_31",
+ "nixpkgs": "nixpkgs_86"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-CVFwdH+i6K9dxyniI6nUeLiNZoD17uKT1Q8/4MaiTGU=",
+ "path": "./mediagoblin",
+ "type": "path"
+ },
+ "original": {
+ "path": "./mediagoblin",
+ "type": "path"
+ }
+ },
+ "s-multi-apache-container": {
+ "inputs": {
+ "files-watcher": "files-watcher_12",
+ "myuids": "myuids_32"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
+ "path": "./multi-apache-container",
+ "type": "path"
+ },
+ "original": {
+ "path": "./multi-apache-container",
+ "type": "path"
+ }
+ },
+ "s-mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_21",
+ "nixpkgs": "nixpkgs_87",
+ "webapps-ttrss": "webapps-ttrss_13"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "./mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "./mypackages",
+ "type": "path"
+ }
+ },
+ "s-myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "./myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "./myuids",
+ "type": "path"
+ }
+ },
+ "s-naemon": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "./naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "./naemon",
+ "type": "path"
+ }
+ },
+ "s-openarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_48",
+ "myuids": "myuids_33",
+ "nixpkgs": "nixpkgs_88",
+ "openarc": "openarc_11"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "./openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "./openarc",
+ "type": "path"
+ }
+ },
+ "s-opendmarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_49",
+ "myuids": "myuids_34",
+ "nixpkgs": "nixpkgs_89"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "./opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "./opendmarc",
+ "type": "path"
+ }
+ },
+ "s-paste": {
+ "inputs": {
+ "flake-utils": "flake-utils_50",
+ "nixpkgs": "nixpkgs_90"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
+ "path": "./paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "./paste",
+ "type": "path"
+ }
+ },
+ "s-peertube": {
+ "inputs": {
+ "flake-utils": "flake-utils_51",
+ "myuids": "myuids_35",
+ "nixpkgs": "nixpkgs_91",
+ "peertube": "peertube_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./peertube",
+ "type": "path"
+ }
+ },
+ "s-private-buildbot": {
+ "inputs": {
+ "buildslist": "buildslist_2",
+ "flake-utils": "flake-utils_52",
+ "nixpkgs": "nixpkgs_92"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-LZRLA37RiN1VyKRqoAdZa9oc61PfQX7dCANSFuwuSa8=",
+ "path": "./private/buildbot",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/buildbot",
+ "type": "path"
+ }
+ },
+ "s-private-chatons": {
+ "inputs": {
+ "environment": "environment_27"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "./private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/chatons",
+ "type": "path"
+ }
+ },
+ "s-private-environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "./private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/environment",
+ "type": "path"
+ }
+ },
+ "s-private-mail-relay": {
+ "inputs": {
+ "environment": "environment_28",
+ "secrets": "secrets_20"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
+ "path": "./private/mail-relay",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/mail-relay",
+ "type": "path"
+ }
+ },
+ "s-private-milters": {
+ "inputs": {
+ "environment": "environment_29",
+ "files-watcher": "files-watcher_13",
+ "openarc": "openarc_12",
+ "opendmarc": "opendmarc_6",
+ "secrets": "secrets_21"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
+ "path": "./private/milters",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/milters",
+ "type": "path"
+ }
+ },
+ "s-private-monitoring": {
+ "inputs": {
+ "environment": "environment_30",
+ "naemon": "naemon_6",
+ "nixpkgs-lib": "nixpkgs-lib_27",
+ "secrets": "secrets_22"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "./private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/monitoring",
+ "type": "path"
+ }
+ },
+ "s-private-openarc": {
+ "inputs": {
+ "files-watcher": "files-watcher_14",
+ "openarc": "openarc_14",
+ "secrets": "secrets_23"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
+ "path": "./private/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/openarc",
+ "type": "path"
+ }
+ },
+ "s-private-opendmarc": {
+ "inputs": {
+ "environment": "environment_31",
+ "files-watcher": "files-watcher_15",
+ "opendmarc": "opendmarc_7",
+ "secrets": "secrets_24"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
+ "path": "./private/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/opendmarc",
+ "type": "path"
+ }
+ },
+ "s-private-openldap": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
+ "path": "./private/openldap",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/openldap",
+ "type": "path"
+ }
+ },
+ "s-private-paste": {
+ "inputs": {
+ "paste": "paste_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-w8WnrSJj05Y8hJsJfY46sI6PUSg2xo5h9t0zWP4woog=",
+ "path": "./private/paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/paste",
+ "type": "path"
+ }
+ },
+ "s-private-peertube": {
+ "inputs": {
+ "peertube_open_instance": "peertube_open_instance_2",
+ "peertube_origin": "peertube_origin_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-1MpzxwaZ+TZJzBf+Do/PFdI9khD1GSvfjuSC0h2Hk58=",
+ "path": "./private/peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/peertube",
+ "type": "path"
+ }
+ },
+ "s-private-php": {
+ "inputs": {
+ "flake-utils": "flake-utils_60",
+ "nixpkgs": "nixpkgs_100",
+ "nixpkgs-4": "nixpkgs-4_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "./private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/php",
+ "type": "path"
+ }
+ },
+ "s-private-ssh": {
+ "inputs": {
+ "environment": "environment_32",
+ "secrets": "secrets_25"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
+ "path": "./private/ssh",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/ssh",
+ "type": "path"
+ }
+ },
+ "s-private-system": {
+ "inputs": {
+ "backports": "backports_7",
+ "environment": "environment_33",
+ "mypackages": "mypackages_12",
+ "myuids": "myuids_42",
+ "secrets-public": "secrets-public_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "./private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/system",
+ "type": "path"
+ }
+ },
+ "s-rsync_backup": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TxLsFx4DTTScMHkvR0pJgzYea6ILiu1Dl6LA67LtYGo=",
+ "path": "./rsync_backup",
+ "type": "path"
+ },
+ "original": {
+ "path": "./rsync_backup",
+ "type": "path"
+ }
+ },
+ "s-secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "./secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "./secrets",
+ "type": "path"
+ }
+ },
+ "s-surfer": {
+ "inputs": {
+ "flake-utils": "flake-utils_62",
+ "mypackages": "mypackages_13",
+ "nixpkgs": "nixpkgs_104",
+ "surfer": "surfer_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-67TqavMsANZI6X15AFUQZ2zHSmoWJc80XaXwEGhWsRg=",
+ "path": "./surfer",
+ "type": "path"
+ },
+ "original": {
+ "path": "./surfer",
+ "type": "path"
+ }
+ },
+ "s-taskwarrior-web": {
+ "inputs": {
+ "flake-utils": "flake-utils_63",
+ "nixpkgs": "nixpkgs_105",
+ "taskwarrior-web": "taskwarrior-web_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-0u83WrBwbIpuyy82UK3EUqC/dgoCoDzptRe+G4VhKXo=",
+ "path": "./taskwarrior-web",
+ "type": "path"
+ },
+ "original": {
+ "path": "./taskwarrior-web",
+ "type": "path"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_10": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_11": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_12": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_13": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_14": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_15": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_16": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_17": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "secrets_18": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_19": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "secrets_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_20": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_21": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_22": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_23": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_24": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_25": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_26": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-yvhc2jxW1AQVmtrKPoYPr5DgpXKt/ua+ATuxvE3iY6c=",
+ "path": "./private/environment-dummy",
+ "type": "path"
+ },
+ "original": {
+ "path": "./private/environment-dummy",
+ "type": "path"
+ }
+ },
+ "secrets_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "secrets_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_8": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "secrets_9": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "ssh": {
+ "inputs": {
+ "environment": "environment_10",
+ "secrets": "secrets_9"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ }
+ },
+ "stable": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_2": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_3": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_4": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_5": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_6": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "stable_7": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "surfer": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1588637864,
+ "narHash": "sha256-B1Sbu1YSHj+ONSoT5v6bVlAHJWtceUV4O5huGhc8b0U=",
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "revCount": 318,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ },
+ "original": {
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ }
+ },
+ "surfer_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1588637864,
+ "narHash": "sha256-B1Sbu1YSHj+ONSoT5v6bVlAHJWtceUV4O5huGhc8b0U=",
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "revCount": 318,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ },
+ "original": {
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ }
+ },
+ "system": {
+ "inputs": {
+ "backports": "backports",
+ "environment": "environment_7",
+ "mypackages": "mypackages",
+ "myuids": "myuids_6",
+ "secrets-public": "secrets-public"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "system_2": {
+ "inputs": {
+ "backports": "backports_2",
+ "environment": "environment_11",
+ "mypackages": "mypackages_2",
+ "myuids": "myuids_8",
+ "secrets-public": "secrets-public_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "system_3": {
+ "inputs": {
+ "backports": "backports_4",
+ "environment": "environment_22",
+ "mypackages": "mypackages_7",
+ "myuids": "myuids_24",
+ "secrets-public": "secrets-public_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "system_4": {
+ "inputs": {
+ "backports": "backports_5",
+ "environment": "environment_25",
+ "mypackages": "mypackages_8",
+ "myuids": "myuids_27",
+ "secrets-public": "secrets-public_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "taskwarrior-web": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546434241,
+ "narHash": "sha256-BLPBglkV1HCJECSIdyMEergChiV+rwNOClYJnzlZGQk=",
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ }
+ },
+ "taskwarrior-web_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546434241,
+ "narHash": "sha256-BLPBglkV1HCJECSIdyMEergChiV+rwNOClYJnzlZGQk=",
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ }
+ },
+ "treefmt-nix": {
+ "inputs": {
+ "nixpkgs": [
+ "flakes",
+ "n-backup-2",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_2": {
+ "inputs": {
+ "nixpkgs": [
+ "flakes",
+ "n-dilion",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_3": {
+ "inputs": {
+ "nixpkgs": [
+ "flakes",
+ "n-eldiron",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_4": {
+ "inputs": {
+ "nixpkgs": [
+ "flakes",
+ "n-monitoring-1",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_5": {
+ "inputs": {
+ "nixpkgs": [
+ "flakes",
+ "n-quatresaisons",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_6": {
+ "inputs": {
+ "nixpkgs": [
+ "flakes",
+ "n-zoldene",
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "treefmt-nix_7": {
+ "inputs": {
+ "nixpkgs": [
+ "flakes",
+ "s-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_10": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_11": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_12": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_13": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_14": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_15": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_3": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_6": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_7": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_8": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_9": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..e3ed4c9
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,47 @@
+{
+ description = "immae-eu infrastructure";
+ inputs = {
+ flake-parts.url = "github:hercules-ci/flake-parts";
+ devshell.url = "github:numtide/devshell";
+ # nixpkgs for local tools
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+
+ flakes.url = "path:./flakes";
+ };
+ outputs = inputs@{ self, flake-parts, flakes, ... }:
+ let
+ inherit (flakes.subflakes) public private;
+ inherit (public) mypackages;
+ in
+ flake-parts.lib.mkFlake { inherit inputs; } ({ withSystem, ... }: {
+ imports = [
+ inputs.devshell.flakeModule
+ (mypackages.mylibs.flakePartsAddPerSystem { name = "lib"; type = "unspecified"; })
+ ];
+ systems = [ "x86_64-linux" ];
+ perSystem = { config, inputs', pkgs, system, ... }:
+ {
+ packages = mypackages.packages."${system}";
+ lib = mypackages.lib."${system}";
+ devshells.default = {
+ packages = [
+ pkgs.colmena
+ pkgs.nixUnstable pkgs.python3 pkgs.sops
+ pkgs.curl pkgs.shellcheck pkgs.jq
+ pkgs.gnumake pkgs.yq
+ ];
+ env = [
+ { name = "NIX_BUILD_TOP"; value = ""; }
+ { name = "PATH"; prefix = "scripts"; }
+ { name = "NIX_PATH"; value = "nixpkgs=${pkgs.path}"; }
+ ];
+ };
+ };
+ flake = {
+ # FIXME: next line Can be removed in nix 2.16.*
+ devShell.x86_64-linux = self.devShells.x86_64-linux.default;
+ inherit (mypackages) mylibs sources overlays;
+ inherit (flakes) subflakes;
+ };
+ });
+}
diff --git a/flakes/backports/flake.lock b/flakes/backports/flake.lock
index 5f9289e..8981e53 100644
--- a/flakes/backports/flake.lock
+++ b/flakes/backports/flake.lock
@@ -2,11 +2,11 @@
"nodes": {
"flake-utils": {
"locked": {
- "lastModified": 1629481132,
- "narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "997f7efcb746a9c140ce1f13c72263189225f482",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
@@ -17,15 +17,16 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1634032472,
- "narHash": "sha256-IoSg358w6nPpTYLWhvN3UgnU6r322dDPOLFXHyqyIkM=",
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "3abf4b55b7c991909fde3115827d398dd7c5a299",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
"type": "github"
},
"original": {
"owner": "NixOS",
+ "ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
diff --git a/flakes/backports/flake.nix b/flakes/backports/flake.nix
index 8be885f..796664a 100644
--- a/flakes/backports/flake.nix
+++ b/flakes/backports/flake.nix
@@ -1,62 +1,19 @@
{
description = "Backported packages";
- inputs.nixpkgs.url = "github:NixOS/nixpkgs";
+ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem (system:
let
- pkgs = import nixpkgs { inherit system; overlays = []; };
+ pkgs = import nixpkgs { inherit system; overlays = []; config = {}; };
in rec {
packages = {
- apprise = pkgs.apprise;
- bitlbee-mastodon = pkgs.bitlbee-mastodon;
- cointop = pkgs.cointop;
- cryptpad = pkgs.cryptpad;
- dovecot_fts-xapian = pkgs.dovecot_fts_xapian;
- duply = pkgs.duply;
- fiche = pkgs.fiche;
- influxdb2 = pkgs.influxdb2;
- ldapvi = pkgs.ldapvi;
- lego = pkgs.lego;
- mpd = pkgs.mpd;
- mpd-small = pkgs.mpd-small;
- opensmtpd = pkgs.opensmtpd;
- pass = pkgs.pass;
- pg_activity = pkgs.pg_activity;
- signald = pkgs.signald;
- ssh-to-age = pkgs.ssh-to-age;
- stgit = pkgs.stgit;
- sops = pkgs.sops;
- sudo = pkgs.sudo;
- telegram-cli = pkgs.telegram-cli;
- woob = pkgs.python3Packages.woob;
- zrepl = pkgs.zrepl;
+ ntfy-sh = pkgs.ntfy-sh;
};
legacyPackages = packages;
apps = {
- apprise = flake-utils.lib.mkApp { drv = packages.apprise; name = "apprise"; };
- cointop = flake-utils.lib.mkApp { drv = packages.cointop; name = "cointop"; };
- cryptpad = flake-utils.lib.mkApp { drv = packages.cryptpad; name = "cryptpad"; };
- duply = flake-utils.lib.mkApp { drv = packages.duply; name = "duply"; };
- fiche = flake-utils.lib.mkApp { drv = packages.fiche; name = "fiche"; };
- influxd = flake-utils.lib.mkApp { drv = packages.influxdb2; name = "influxd"; };
- influx = flake-utils.lib.mkApp { drv = packages.influxdb2; name = "influx"; };
- ldapvi = flake-utils.lib.mkApp { drv = packages.ldapvi; name = "ldapvi"; };
- lego = flake-utils.lib.mkApp { drv = packages.lego; name = "lego"; };
- mpd = flake-utils.lib.mkApp { drv = packages.mpd; name = "mpd"; };
- mpd-small = flake-utils.lib.mkApp { drv = packages.mpd-small; name = "mpd"; };
- opensmtpd = flake-utils.lib.mkApp { drv = packages.opensmtpd; name = "opensmtpd"; };
- pass = flake-utils.lib.mkApp { drv = packages.pass; name = "pass"; };
- pg_activity = flake-utils.lib.mkApp { drv = packages.pg_activity; name = "pg_activity"; };
- signald = flake-utils.lib.mkApp { drv = packages.signald; name = "signald"; };
- ssh-to-age = flake-utils.lib.mkApp { drv = packages.ssh-to-age; name = "ssh-to-age"; };
- stgit = flake-utils.lib.mkApp { drv = packages.stgit; name = "stgit"; };
- sops = flake-utils.lib.mkApp { drv = packages.sops; name = "sops"; };
- sudo = flake-utils.lib.mkApp { drv = packages.sudo; name = "sudo"; };
- telegram-cli = flake-utils.lib.mkApp { drv = packages.telegram-cli; name = "telegram-cli"; };
- woob = flake-utils.lib.mkApp { drv = packages.woob; name = "woob"; };
- zrepl = flake-utils.lib.mkApp { drv = packages.zrepl; name = "zrepl"; };
+ ntfy-sh = flake-utils.lib.mkApp { drv = packages.ntfy-sh; name = "ntfy-sh"; };
};
}
) // rec {
@@ -66,62 +23,14 @@
in package.override (pkgs.lib.genAttrs packageDeps (n: pkgs."${n}"));
};
overlays = {
- apprise = final: prev: { apprise = self.packages."${final.system}".apprise; };
- bitlbee-mastodon = final: prev: {
- bitlbee-mastodon = lib.overrideDeps final self.packages."${final.system}".bitlbee-mastodon;
- };
- cointop = final: prev: { cointop = self.packages."${final.system}".cointop; };
- cryptpad = final: prev: { cryptpad = self.packages."${final.system}".cryptpad; };
- dovecot_fts-xapian = final: prev: {
- dovecot_fts-xapian = lib.overrideDeps final self.packages."${final.system}".dovecot_fts-xapian;
- };
- duply = final: prev: { duply = self.packages."${final.system}".duply; };
- fiche = final: prev: { fiche = self.packages."${final.system}".fiche; };
- influxdb2 = final: prev: { influxdb2 = self.packages."${final.system}".influxdb2; };
- ldapvi = final: prev: { ldapvi = self.packages."${final.system}".ldapvi; };
- lego = final: prev: { lego = self.packages."${final.system}".lego; };
- mpd = final: prev: { mpd = self.packages."${final.system}".mpd; };
- opensmtpd = final: prev: { opensmtpd = self.packages."${final.system}".opensmtpd; };
- pass = final: prev: { pass = self.packages."${final.system}".pass; };
- pg_activity = final: prev: { pg_activity = self.packages."${final.system}".pg_activity; };
- signald = final: prev: { signald = self.packages."${final.system}".signald; };
- ssh-to-age = final: prev: { ssh-to-age = self.packages."${final.system}".ssh-to-age; };
- stgit = final: prev: { stgit = self.packages."${final.system}".stgit; };
- sops = final: prev: { sops = self.packages."${final.system}".sops; };
- sudo = final: prev: { sudo = self.packages."${final.system}".sudo; };
- telegram-cli = final: prev: { telegram-cli = self.packages."${final.system}".telegram-cli; };
- woob = final: prev: { woob = self.packages."${final.system}".woob; };
- zrepl = final: prev: { zrepl = self.packages."${final.system}".zrepl; };
+ ntfy-sh = final: prev: { ntfy-sh = self.packages."${final.system}".ntfy-sh; };
};
overlay = final: prev: ({}
- // overlays.apprise final prev
- // overlays.bitlbee-mastodon final prev
- // overlays.cointop final prev
- // overlays.cryptpad final prev
- // overlays.dovecot_fts-xapian final prev
- // overlays.duply final prev
- // overlays.fiche final prev
- // overlays.influxdb2 final prev
- // overlays.ldapvi final prev
- // overlays.lego final prev
- // overlays.mpd final prev
- // overlays.opensmtpd final prev
- // overlays.pass final prev
- // overlays.pg_activity final prev
- // overlays.signald final prev
- // overlays.ssh-to-age final prev
- // overlays.stgit final prev
- // overlays.sops final prev
- // overlays.sudo final prev
- // overlays.telegram-cli final prev
- // overlays.woob final prev
- // overlays.zrepl final prev
+ // overlays.ntfy-sh final prev
);
nixosModules = {
- influxdb2 = import (nixpkgs + "/nixos/modules/services/databases/influxdb2.nix");
- mpd = import (nixpkgs + "/nixos/modules/services/audio/mpd.nix");
- zrepl = import (nixpkgs + "/nixos/modules/services/backup/zrepl.nix");
+ #coturn = import (nixpkgs + "/nixos/modules/services/networking/coturn.nix");
};
};
}
diff --git a/flakes/copanier/default.nix b/flakes/copanier/default.nix
new file mode 100644
index 0000000..0486c0a
--- /dev/null
+++ b/flakes/copanier/default.nix
@@ -0,0 +1,30 @@
+{ src, glibcLocales, poetry2nix, fetchFromGitHub, python37, fetchpatch }:
+let
+ poetryApp = poetry2nix.mkPoetryApplication rec {
+ inherit src;
+ patches = [ ./fix_reduce.patch ];
+ overrides = poetry2nix.overrides.withDefaults (self: super: {
+ weasyprint = super.weasyprint.overridePythonAttrs (old: {
+ patches = let
+ p0 = (fetchpatch {
+ url = "https://github.com/Kozea/WeasyPrint/commit/47043a1fd7e50a892b9836466f521df85d597c44.patch";
+ sha256 = "18lmz6whjqxdpv4fdmg5vcpk2acdl99kfmp14badpw1jmffw7zl2";
+ postFetch = ''
+ sed -i -e "s/font_filename/filename/" $out
+ '';
+ });
+ p1 = (builtins.elemAt old.patches 1).overrideAttrs(old: {
+ postInstall = ''
+ sed -i -e "s/so.0/so/" $out
+ '';
+ });
+ in [ p0 p1 ];
+ });
+ });
+ pyproject = ./pyproject.toml;
+ poetrylock = ./poetry.lock;
+ python = python37;
+ locales = "${glibcLocales}/lib/locale/locale-archive";
+ };
+in
+ poetryApp
diff --git a/flakes/copanier/fix_reduce.patch b/flakes/copanier/fix_reduce.patch
new file mode 100644
index 0000000..5390bcc
--- /dev/null
+++ b/flakes/copanier/fix_reduce.patch
@@ -0,0 +1,13 @@
+diff --git a/copanier/views/delivery.py b/copanier/views/delivery.py
+index 779d52c..1696919 100644
+--- a/copanier/views/delivery.py
++++ b/copanier/views/delivery.py
+@@ -401,7 +401,7 @@ async def compute_payments(request, response, id):
+ balance.append((group_id, amount))
+
+ debiters, crediters = order_balance(balance)
+- results = reduce_balance(debiters[:], crediters[:])
++ results = reduce_balance(debiters[:], crediters[:], [])
+
+ results_dict = defaultdict(partial(defaultdict, float))
+
diff --git a/flakes/copanier/flake.lock b/flakes/copanier/flake.lock
new file mode 100644
index 0000000..fe84a9d
--- /dev/null
+++ b/flakes/copanier/flake.lock
@@ -0,0 +1,59 @@
+{
+ "nodes": {
+ "copanier": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1633895178,
+ "narHash": "sha256-0xrh12eBSVpgVeniSbKQAuGBhIyVB/rB/H3Tt7EJ1vQ=",
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "rev": "d1b92cc639f4d25ad31baf4a6579a33c44a0d837",
+ "type": "github"
+ },
+ "original": {
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1633901457,
+ "narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "f358794824b4595d77fec93732485d329ed7b0e0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "copanier": "copanier",
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/copanier/flake.nix b/flakes/copanier/flake.nix
new file mode 100644
index 0000000..74e6829
--- /dev/null
+++ b/flakes/copanier/flake.nix
@@ -0,0 +1,28 @@
+{
+ description = "Copanier";
+
+ inputs.flake-utils.url = "github:numtide/flake-utils";
+ inputs.nixpkgs.url = "github:NixOS/nixpkgs";
+ inputs.copanier = {
+ url = "github:spiral-project/copanier";
+ flake = false;
+ };
+
+ outputs = { self, copanier, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem (system:
+ let
+ pkgs = import nixpkgs { inherit system; overlays = []; };
+ in rec {
+ packages.copanier = pkgs.callPackage ./. { src = copanier; };
+ defaultPackage = packages.copanier;
+ legacyPackages.copanier = packages.copanier;
+ apps.copanier = flake-utils.lib.mkApp { drv = packages.copanier; };
+ defaultApp = apps.copanier;
+ }) // rec {
+ overlays = {
+ copanier = final: prev: {
+ copanier = self.defaultPackage."${final.system}";
+ };
+ };
+ overlay = overlays.copanier;
+ };
+ }
diff --git a/flakes/copanier/poetry.lock b/flakes/copanier/poetry.lock
new file mode 100644
index 0000000..232bdf3
--- /dev/null
+++ b/flakes/copanier/poetry.lock
@@ -0,0 +1,995 @@
+[[package]]
+name = "autoroutes"
+version = "0.3.5"
+description = "Routes for speed"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.extras]
+dev = ["cython", "pytest", "twine"]
+
+[[package]]
+name = "biscuits"
+version = "0.3.0"
+description = "Fast and tasty cookies handling."
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "cachetools"
+version = "4.2.4"
+description = "Extensible memoizing collections and decorators"
+category = "main"
+optional = false
+python-versions = "~=3.5"
+
+[[package]]
+name = "cairocffi"
+version = "1.3.0"
+description = "cffi-based cairo bindings for Python"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[package.dependencies]
+cffi = ">=1.1.0"
+
+[package.extras]
+doc = ["sphinx", "sphinx-rtd-theme"]
+test = ["pytest-runner", "pytest-cov", "pytest-flake8", "pytest-isort"]
+xcb = ["xcffib (>=0.3.2)"]
+
+[[package]]
+name = "cairosvg"
+version = "2.5.2"
+description = "A Simple SVG Converter based on Cairo"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[package.dependencies]
+cairocffi = "*"
+cssselect2 = "*"
+defusedxml = "*"
+pillow = "*"
+tinycss2 = "*"
+
+[package.extras]
+doc = ["sphinx", "sphinx-rtd-theme"]
+test = ["pytest-runner", "pytest-cov", "pytest-flake8", "pytest-isort"]
+
+[[package]]
+name = "certifi"
+version = "2021.10.8"
+description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "cffi"
+version = "1.14.6"
+description = "Foreign Function Interface for Python calling C code."
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+name = "chardet"
+version = "4.0.0"
+description = "Universal encoding detector for Python 2 and 3"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[[package]]
+name = "charset-normalizer"
+version = "2.0.6"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "main"
+optional = false
+python-versions = ">=3.5.0"
+
+[package.extras]
+unicode_backport = ["unicodedata2"]
+
+[[package]]
+name = "cssselect"
+version = "1.1.0"
+description = "cssselect parses CSS3 Selectors and translates them to XPath 1.0"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[[package]]
+name = "cssselect2"
+version = "0.4.1"
+description = "cssselect2"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+tinycss2 = "*"
+webencodings = "*"
+
+[package.extras]
+doc = ["sphinx", "sphinx-rtd-theme"]
+test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"]
+
+[[package]]
+name = "cssutils"
+version = "2.3.0"
+description = "A CSS Cascading Style Sheets library for Python"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
+testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "mock", "lxml", "cssselect", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources"]
+
+[[package]]
+name = "debts"
+version = "0.5"
+description = "Help solve debts settlement."
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+jinja2 = "*"
+
+[[package]]
+name = "defusedxml"
+version = "0.7.1"
+description = "XML bomb protection for Python stdlib modules"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[[package]]
+name = "emails"
+version = "0.6"
+description = "Modern python library for emails."
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+chardet = "*"
+cssutils = "*"
+lxml = "*"
+premailer = "*"
+python-dateutil = "*"
+requests = "*"
+
+[[package]]
+name = "et-xmlfile"
+version = "1.1.0"
+description = "An implementation of lxml.xmlfile for the standard library"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "html5lib"
+version = "1.1"
+description = "HTML parser based on the WHATWG HTML specification"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[package.dependencies]
+six = ">=1.9"
+webencodings = "*"
+
+[package.extras]
+all = ["genshi", "chardet (>=2.2)", "lxml"]
+chardet = ["chardet (>=2.2)"]
+genshi = ["genshi"]
+lxml = ["lxml"]
+
+[[package]]
+name = "httptools"
+version = "0.2.0"
+description = "A collection of framework independent HTTP protocol utils."
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.extras]
+test = ["Cython (==0.29.22)"]
+
+[[package]]
+name = "idna"
+version = "3.2"
+description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[[package]]
+name = "importlib-metadata"
+version = "4.8.1"
+description = "Read metadata from Python packages"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
+zipp = ">=0.5"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
+perf = ["ipython"]
+testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
+
+[[package]]
+name = "jdcal"
+version = "1.4.1"
+description = "Julian dates from proleptic Gregorian and Julian calendars."
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "jinja2"
+version = "2.11.2"
+description = "A very fast and expressive template engine."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[package.dependencies]
+MarkupSafe = ">=0.23"
+
+[package.extras]
+i18n = ["Babel (>=0.8)"]
+
+[[package]]
+name = "lxml"
+version = "4.6.3"
+description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*"
+
+[package.extras]
+cssselect = ["cssselect (>=0.7)"]
+html5 = ["html5lib"]
+htmlsoup = ["beautifulsoup4"]
+source = ["Cython (>=0.29.7)"]
+
+[[package]]
+name = "markupsafe"
+version = "2.0.1"
+description = "Safely add untrusted strings to HTML/XML markup."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "minicli"
+version = "0.5.0"
+description = "Minimalist CLI"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.extras]
+doc = ["mkdocs (==1.1.2)"]
+test = ["pytest (==6.0.1)"]
+
+[[package]]
+name = "multifruits"
+version = "0.1.5"
+description = "Tasty multipart form data parser built with cython."
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.extras]
+dev = ["Cython (==0.29.21)"]
+
+[[package]]
+name = "openpyxl"
+version = "3.0.5"
+description = "A Python library to read/write Excel 2010 xlsx/xlsm files"
+category = "main"
+optional = false
+python-versions = ">=3.6,"
+
+[package.dependencies]
+et-xmlfile = "*"
+jdcal = "*"
+
+[[package]]
+name = "pillow"
+version = "8.3.2"
+description = "Python Imaging Library (Fork)"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "premailer"
+version = "3.10.0"
+description = "Turns CSS blocks into style attributes"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+cachetools = "*"
+cssselect = "*"
+cssutils = "*"
+lxml = "*"
+requests = "*"
+
+[package.extras]
+dev = ["tox", "twine", "therapist", "black", "flake8", "wheel"]
+test = ["nose", "mock"]
+
+[[package]]
+name = "pycparser"
+version = "2.20"
+description = "C parser in Python"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[[package]]
+name = "pyjwt"
+version = "1.7.1"
+description = "JSON Web Token implementation in Python"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.extras]
+crypto = ["cryptography (>=1.4)"]
+flake8 = ["flake8", "flake8-import-order", "pep8-naming"]
+test = ["pytest (>=4.0.1,<5.0.0)", "pytest-cov (>=2.6.0,<3.0.0)", "pytest-runner (>=4.2,<5.0.0)"]
+
+[[package]]
+name = "pyphen"
+version = "0.11.0"
+description = "Pure Python module to hyphenate text"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"]
+
+[[package]]
+name = "python-dateutil"
+version = "2.8.2"
+description = "Extensions to the standard Python datetime module"
+category = "main"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+
+[package.dependencies]
+six = ">=1.5"
+
+[[package]]
+name = "python-slugify"
+version = "4.0.1"
+description = "A Python Slugify application that handles Unicode"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[package.dependencies]
+text-unidecode = ">=1.3"
+
+[package.extras]
+unidecode = ["Unidecode (>=1.1.1)"]
+
+[[package]]
+name = "pyyaml"
+version = "5.3.1"
+description = "YAML parser and emitter for Python"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[[package]]
+name = "requests"
+version = "2.26.0"
+description = "Python HTTP for Humans."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""}
+idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""}
+urllib3 = ">=1.21.1,<1.27"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
+use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"]
+
+[[package]]
+name = "roll"
+version = "0.13.0"
+description = "Roll is a pico framework with performances and aesthetic in mind."
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+autoroutes = "0.3.5"
+biscuits = "0.3.0"
+httptools = "0.2.0"
+multifruits = "0.1.5"
+websockets = "8.1"
+
+[package.extras]
+docs = ["mkdocs"]
+test = ["pytest"]
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+
+[[package]]
+name = "text-unidecode"
+version = "1.3"
+description = "The most basic Text::Unidecode port"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "tinycss2"
+version = "1.1.0"
+description = "tinycss2"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+webencodings = ">=0.4"
+
+[package.extras]
+doc = ["sphinx", "sphinx-rtd-theme"]
+test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"]
+
+[[package]]
+name = "typing-extensions"
+version = "3.10.0.2"
+description = "Backported and Experimental Type Hints for Python 3.5+"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "ujson"
+version = "3.2.0"
+description = "Ultra fast JSON encoder and decoder for Python"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[[package]]
+name = "urllib3"
+version = "1.26.7"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
+
+[package.extras]
+brotli = ["brotlipy (>=0.6.0)"]
+secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
+socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
+
+[[package]]
+name = "weasyprint"
+version = "51"
+description = "The Awesome Document Factory"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[package.dependencies]
+cairocffi = ">=0.9.0"
+CairoSVG = ">=2.4.0"
+cffi = ">=0.6"
+cssselect2 = ">=0.1"
+html5lib = ">=0.999999999"
+Pyphen = ">=0.9.1"
+tinycss2 = ">=1.0.0"
+
+[package.extras]
+doc = ["sphinx", "sphinx-rtd-theme"]
+test = ["pytest-runner", "pytest-cov", "pytest-flake8", "pytest-isort"]
+
+[[package]]
+name = "webencodings"
+version = "0.5.1"
+description = "Character encoding aliases for legacy web content"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "websockets"
+version = "8.1"
+description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)"
+category = "main"
+optional = false
+python-versions = ">=3.6.1"
+
+[[package]]
+name = "zipp"
+version = "3.6.0"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
+testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
+
+[metadata]
+lock-version = "1.1"
+python-versions = "^3.7"
+content-hash = "e82001513bafdfab9338f3fe9e786a7cc23c55f7e77a98e6b1d3924ab8887f5f"
+
+[metadata.files]
+autoroutes = [
+ {file = "autoroutes-0.3.5.tar.gz", hash = "sha256:087fcc5bd7e6f457931b9e8420d575f6aa7d35803d667013463c58d2bcf6b814"},
+]
+biscuits = [
+ {file = "biscuits-0.3.0.tar.gz", hash = "sha256:08b899164133c81b99b7307d629a45e2fb6a3bcc3ea7c08b1ff24b464b411307"},
+]
+cachetools = [
+ {file = "cachetools-4.2.4-py3-none-any.whl", hash = "sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1"},
+ {file = "cachetools-4.2.4.tar.gz", hash = "sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693"},
+]
+cairocffi = [
+ {file = "cairocffi-1.3.0.tar.gz", hash = "sha256:108a3a7cb09e203bdd8501d9baad91d786d204561bd71e9364e8b34897c47b91"},
+]
+cairosvg = [
+ {file = "CairoSVG-2.5.2-py3-none-any.whl", hash = "sha256:98c276b7e4f0caf01e5c7176765c104ffa1aa1461d63b2053b04ab663cf7052b"},
+ {file = "CairoSVG-2.5.2.tar.gz", hash = "sha256:b0b9929cf5dba005178d746a8036fcf0025550f498ca54db61873322384783bc"},
+]
+certifi = [
+ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"},
+ {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"},
+]
+cffi = [
+ {file = "cffi-1.14.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:22b9c3c320171c108e903d61a3723b51e37aaa8c81255b5e7ce102775bd01e2c"},
+ {file = "cffi-1.14.6-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:f0c5d1acbfca6ebdd6b1e3eded8d261affb6ddcf2186205518f1428b8569bb99"},
+ {file = "cffi-1.14.6-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:99f27fefe34c37ba9875f224a8f36e31d744d8083e00f520f133cab79ad5e819"},
+ {file = "cffi-1.14.6-cp27-cp27m-win32.whl", hash = "sha256:55af55e32ae468e9946f741a5d51f9896da6b9bf0bbdd326843fec05c730eb20"},
+ {file = "cffi-1.14.6-cp27-cp27m-win_amd64.whl", hash = "sha256:7bcac9a2b4fdbed2c16fa5681356d7121ecabf041f18d97ed5b8e0dd38a80224"},
+ {file = "cffi-1.14.6-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ed38b924ce794e505647f7c331b22a693bee1538fdf46b0222c4717b42f744e7"},
+ {file = "cffi-1.14.6-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e22dcb48709fc51a7b58a927391b23ab37eb3737a98ac4338e2448bef8559b33"},
+ {file = "cffi-1.14.6-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:aedb15f0a5a5949ecb129a82b72b19df97bbbca024081ed2ef88bd5c0a610534"},
+ {file = "cffi-1.14.6-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:48916e459c54c4a70e52745639f1db524542140433599e13911b2f329834276a"},
+ {file = "cffi-1.14.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f627688813d0a4140153ff532537fbe4afea5a3dffce1f9deb7f91f848a832b5"},
+ {file = "cffi-1.14.6-cp35-cp35m-win32.whl", hash = "sha256:f0010c6f9d1a4011e429109fda55a225921e3206e7f62a0c22a35344bfd13cca"},
+ {file = "cffi-1.14.6-cp35-cp35m-win_amd64.whl", hash = "sha256:57e555a9feb4a8460415f1aac331a2dc833b1115284f7ded7278b54afc5bd218"},
+ {file = "cffi-1.14.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e8c6a99be100371dbb046880e7a282152aa5d6127ae01783e37662ef73850d8f"},
+ {file = "cffi-1.14.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:19ca0dbdeda3b2615421d54bef8985f72af6e0c47082a8d26122adac81a95872"},
+ {file = "cffi-1.14.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d950695ae4381ecd856bcaf2b1e866720e4ab9a1498cba61c602e56630ca7195"},
+ {file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9dc245e3ac69c92ee4c167fbdd7428ec1956d4e754223124991ef29eb57a09d"},
+ {file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8661b2ce9694ca01c529bfa204dbb144b275a31685a075ce123f12331be790b"},
+ {file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b315d709717a99f4b27b59b021e6207c64620790ca3e0bde636a6c7f14618abb"},
+ {file = "cffi-1.14.6-cp36-cp36m-win32.whl", hash = "sha256:80b06212075346b5546b0417b9f2bf467fea3bfe7352f781ffc05a8ab24ba14a"},
+ {file = "cffi-1.14.6-cp36-cp36m-win_amd64.whl", hash = "sha256:a9da7010cec5a12193d1af9872a00888f396aba3dc79186604a09ea3ee7c029e"},
+ {file = "cffi-1.14.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4373612d59c404baeb7cbd788a18b2b2a8331abcc84c3ba40051fcd18b17a4d5"},
+ {file = "cffi-1.14.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f10afb1004f102c7868ebfe91c28f4a712227fe4cb24974350ace1f90e1febbf"},
+ {file = "cffi-1.14.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fd4305f86f53dfd8cd3522269ed7fc34856a8ee3709a5e28b2836b2db9d4cd69"},
+ {file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d6169cb3c6c2ad50db5b868db6491a790300ade1ed5d1da29289d73bbe40b56"},
+ {file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d4b68e216fc65e9fe4f524c177b54964af043dde734807586cf5435af84045c"},
+ {file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33791e8a2dc2953f28b8d8d300dde42dd929ac28f974c4b4c6272cb2955cb762"},
+ {file = "cffi-1.14.6-cp37-cp37m-win32.whl", hash = "sha256:0c0591bee64e438883b0c92a7bed78f6290d40bf02e54c5bf0978eaf36061771"},
+ {file = "cffi-1.14.6-cp37-cp37m-win_amd64.whl", hash = "sha256:8eb687582ed7cd8c4bdbff3df6c0da443eb89c3c72e6e5dcdd9c81729712791a"},
+ {file = "cffi-1.14.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba6f2b3f452e150945d58f4badd92310449876c4c954836cfb1803bdd7b422f0"},
+ {file = "cffi-1.14.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:64fda793737bc4037521d4899be780534b9aea552eb673b9833b01f945904c2e"},
+ {file = "cffi-1.14.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9f3e33c28cd39d1b655ed1ba7247133b6f7fc16fa16887b120c0c670e35ce346"},
+ {file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26bb2549b72708c833f5abe62b756176022a7b9a7f689b571e74c8478ead51dc"},
+ {file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb687a11f0a7a1839719edd80f41e459cc5366857ecbed383ff376c4e3cc6afd"},
+ {file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2ad4d668a5c0645d281dcd17aff2be3212bc109b33814bbb15c4939f44181cc"},
+ {file = "cffi-1.14.6-cp38-cp38-win32.whl", hash = "sha256:487d63e1454627c8e47dd230025780e91869cfba4c753a74fda196a1f6ad6548"},
+ {file = "cffi-1.14.6-cp38-cp38-win_amd64.whl", hash = "sha256:c33d18eb6e6bc36f09d793c0dc58b0211fccc6ae5149b808da4a62660678b156"},
+ {file = "cffi-1.14.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:06c54a68935738d206570b20da5ef2b6b6d92b38ef3ec45c5422c0ebaf338d4d"},
+ {file = "cffi-1.14.6-cp39-cp39-manylinux1_i686.whl", hash = "sha256:f174135f5609428cc6e1b9090f9268f5c8935fddb1b25ccb8255a2d50de6789e"},
+ {file = "cffi-1.14.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f3ebe6e73c319340830a9b2825d32eb6d8475c1dac020b4f0aa774ee3b898d1c"},
+ {file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c8d896becff2fa653dc4438b54a5a25a971d1f4110b32bd3068db3722c80202"},
+ {file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4922cd707b25e623b902c86188aca466d3620892db76c0bdd7b99a3d5e61d35f"},
+ {file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9e005e9bd57bc987764c32a1bee4364c44fdc11a3cc20a40b93b444984f2b87"},
+ {file = "cffi-1.14.6-cp39-cp39-win32.whl", hash = "sha256:eb9e2a346c5238a30a746893f23a9535e700f8192a68c07c0258e7ece6ff3728"},
+ {file = "cffi-1.14.6-cp39-cp39-win_amd64.whl", hash = "sha256:818014c754cd3dba7229c0f5884396264d51ffb87ec86e927ef0be140bfdb0d2"},
+ {file = "cffi-1.14.6.tar.gz", hash = "sha256:c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd"},
+]
+chardet = [
+ {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"},
+ {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"},
+]
+charset-normalizer = [
+ {file = "charset-normalizer-2.0.6.tar.gz", hash = "sha256:5ec46d183433dcbd0ab716f2d7f29d8dee50505b3fdb40c6b985c7c4f5a3591f"},
+ {file = "charset_normalizer-2.0.6-py3-none-any.whl", hash = "sha256:5d209c0a931f215cee683b6445e2d77677e7e75e159f78def0db09d68fafcaa6"},
+]
+cssselect = [
+ {file = "cssselect-1.1.0-py2.py3-none-any.whl", hash = "sha256:f612ee47b749c877ebae5bb77035d8f4202c6ad0f0fc1271b3c18ad6c4468ecf"},
+ {file = "cssselect-1.1.0.tar.gz", hash = "sha256:f95f8dedd925fd8f54edb3d2dfb44c190d9d18512377d3c1e2388d16126879bc"},
+]
+cssselect2 = [
+ {file = "cssselect2-0.4.1-py3-none-any.whl", hash = "sha256:2f4a9f20965367bae459e3bb42561f7927e0cfe5b7ea1692757cf67ef5d7dace"},
+ {file = "cssselect2-0.4.1.tar.gz", hash = "sha256:93fbb9af860e95dd40bf18c3b2b6ed99189a07c0f29ba76f9c5be71344664ec8"},
+]
+cssutils = [
+ {file = "cssutils-2.3.0-py3-none-any.whl", hash = "sha256:0cf1f6086b020dee18048ff3999339499f725934017ef9ae2cd5bb77f9ab5f46"},
+ {file = "cssutils-2.3.0.tar.gz", hash = "sha256:b2d3b16047caae82e5c590036935bafa1b621cf45c2f38885af4be4838f0fd00"},
+]
+debts = [
+ {file = "debts-0.5.tar.gz", hash = "sha256:f239fa356500b0cc7d2334a6ad45dcaf542796f759ca44052c59566afca8e5f8"},
+]
+defusedxml = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
+emails = [
+ {file = "emails-0.6-py2.py3-none-any.whl", hash = "sha256:72c1e3198075709cc35f67e1b49e2da1a2bc087e9b444073db61a379adfb7f3c"},
+ {file = "emails-0.6.tar.gz", hash = "sha256:a4c2d67ea8b8831967a750d8edc6e77040d7693143fe280e6d2a367d9c36ff88"},
+]
+et-xmlfile = [
+ {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"},
+ {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"},
+]
+html5lib = [
+ {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"},
+ {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"},
+]
+httptools = [
+ {file = "httptools-0.2.0-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:79dbc21f3612a78b28384e989b21872e2e3cf3968532601544696e4ed0007ce5"},
+ {file = "httptools-0.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:78d03dd39b09c99ec917d50189e6743adbfd18c15d5944392d2eabda688bf149"},
+ {file = "httptools-0.2.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a23166e5ae2775709cf4f7ad4c2048755ebfb272767d244e1a96d55ac775cca7"},
+ {file = "httptools-0.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:3ab1f390d8867f74b3b5ee2a7ecc9b8d7f53750bd45714bf1cb72a953d7dfa77"},
+ {file = "httptools-0.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a7594f9a010cdf1e16a58b3bf26c9da39bbf663e3b8d46d39176999d71816658"},
+ {file = "httptools-0.2.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:01b392a166adcc8bc2f526a939a8aabf89fe079243e1543fd0e7dc1b58d737cb"},
+ {file = "httptools-0.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:80ffa04fe8c8dfacf6e4cef8277347d35b0442c581f5814f3b0cf41b65c43c6e"},
+ {file = "httptools-0.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d5682eeb10cca0606c4a8286a3391d4c3c5a36f0c448e71b8bd05be4e1694bfb"},
+ {file = "httptools-0.2.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a289c27ccae399a70eacf32df9a44059ca2ba4ac444604b00a19a6c1f0809943"},
+ {file = "httptools-0.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:813871f961edea6cb2fe312f2d9b27d12a51ba92545380126f80d0de1917ea15"},
+ {file = "httptools-0.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:cc9be041e428c10f8b6ab358c6b393648f9457094e1dcc11b4906026d43cd380"},
+ {file = "httptools-0.2.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b08d00d889a118f68f37f3c43e359aab24ee29eb2e3fe96d64c6a2ba8b9d6557"},
+ {file = "httptools-0.2.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fd3b8905e21431ad306eeaf56644a68fdd621bf8f3097eff54d0f6bdf7262065"},
+ {file = "httptools-0.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:200fc1cdf733a9ff554c0bb97a4047785cfaad9875307d6087001db3eb2b417f"},
+ {file = "httptools-0.2.0.tar.gz", hash = "sha256:94505026be56652d7a530ab03d89474dc6021019d6b8682281977163b3471ea0"},
+]
+idna = [
+ {file = "idna-3.2-py3-none-any.whl", hash = "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a"},
+ {file = "idna-3.2.tar.gz", hash = "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3"},
+]
+importlib-metadata = [
+ {file = "importlib_metadata-4.8.1-py3-none-any.whl", hash = "sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15"},
+ {file = "importlib_metadata-4.8.1.tar.gz", hash = "sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"},
+]
+jdcal = [
+ {file = "jdcal-1.4.1-py2.py3-none-any.whl", hash = "sha256:1abf1305fce18b4e8aa248cf8fe0c56ce2032392bc64bbd61b5dff2a19ec8bba"},
+ {file = "jdcal-1.4.1.tar.gz", hash = "sha256:472872e096eb8df219c23f2689fc336668bdb43d194094b5cc1707e1640acfc8"},
+]
+jinja2 = [
+ {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"},
+ {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"},
+]
+lxml = [
+ {file = "lxml-4.6.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:df7c53783a46febb0e70f6b05df2ba104610f2fb0d27023409734a3ecbb78fb2"},
+ {file = "lxml-4.6.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:1b7584d421d254ab86d4f0b13ec662a9014397678a7c4265a02a6d7c2b18a75f"},
+ {file = "lxml-4.6.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:079f3ae844f38982d156efce585bc540c16a926d4436712cf4baee0cce487a3d"},
+ {file = "lxml-4.6.3-cp27-cp27m-win32.whl", hash = "sha256:bc4313cbeb0e7a416a488d72f9680fffffc645f8a838bd2193809881c67dd106"},
+ {file = "lxml-4.6.3-cp27-cp27m-win_amd64.whl", hash = "sha256:8157dadbb09a34a6bd95a50690595e1fa0af1a99445e2744110e3dca7831c4ee"},
+ {file = "lxml-4.6.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7728e05c35412ba36d3e9795ae8995e3c86958179c9770e65558ec3fdfd3724f"},
+ {file = "lxml-4.6.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:4bff24dfeea62f2e56f5bab929b4428ae6caba2d1eea0c2d6eb618e30a71e6d4"},
+ {file = "lxml-4.6.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:74f7d8d439b18fa4c385f3f5dfd11144bb87c1da034a466c5b5577d23a1d9b51"},
+ {file = "lxml-4.6.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f90ba11136bfdd25cae3951af8da2e95121c9b9b93727b1b896e3fa105b2f586"},
+ {file = "lxml-4.6.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:4c61b3a0db43a1607d6264166b230438f85bfed02e8cff20c22e564d0faff354"},
+ {file = "lxml-4.6.3-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:5c8c163396cc0df3fd151b927e74f6e4acd67160d6c33304e805b84293351d16"},
+ {file = "lxml-4.6.3-cp35-cp35m-win32.whl", hash = "sha256:f2380a6376dfa090227b663f9678150ef27543483055cc327555fb592c5967e2"},
+ {file = "lxml-4.6.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c4f05c5a7c49d2fb70223d0d5bcfbe474cf928310ac9fa6a7c6dddc831d0b1d4"},
+ {file = "lxml-4.6.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d2e35d7bf1c1ac8c538f88d26b396e73dd81440d59c1ef8522e1ea77b345ede4"},
+ {file = "lxml-4.6.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:289e9ca1a9287f08daaf796d96e06cb2bc2958891d7911ac7cae1c5f9e1e0ee3"},
+ {file = "lxml-4.6.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:bccbfc27563652de7dc9bdc595cb25e90b59c5f8e23e806ed0fd623755b6565d"},
+ {file = "lxml-4.6.3-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:d916d31fd85b2f78c76400d625076d9124de3e4bda8b016d25a050cc7d603f24"},
+ {file = "lxml-4.6.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:820628b7b3135403540202e60551e741f9b6d3304371712521be939470b454ec"},
+ {file = "lxml-4.6.3-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:c47ff7e0a36d4efac9fd692cfa33fbd0636674c102e9e8d9b26e1b93a94e7617"},
+ {file = "lxml-4.6.3-cp36-cp36m-win32.whl", hash = "sha256:5a0a14e264069c03e46f926be0d8919f4105c1623d620e7ec0e612a2e9bf1c04"},
+ {file = "lxml-4.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:92e821e43ad382332eade6812e298dc9701c75fe289f2a2d39c7960b43d1e92a"},
+ {file = "lxml-4.6.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efd7a09678fd8b53117f6bae4fa3825e0a22b03ef0a932e070c0bdbb3a35e654"},
+ {file = "lxml-4.6.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:efac139c3f0bf4f0939f9375af4b02c5ad83a622de52d6dfa8e438e8e01d0eb0"},
+ {file = "lxml-4.6.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0fbcf5565ac01dff87cbfc0ff323515c823081c5777a9fc7703ff58388c258c3"},
+ {file = "lxml-4.6.3-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:36108c73739985979bf302006527cf8a20515ce444ba916281d1c43938b8bb96"},
+ {file = "lxml-4.6.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:122fba10466c7bd4178b07dba427aa516286b846b2cbd6f6169141917283aae2"},
+ {file = "lxml-4.6.3-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:cdaf11d2bd275bf391b5308f86731e5194a21af45fbaaaf1d9e8147b9160ea92"},
+ {file = "lxml-4.6.3-cp37-cp37m-win32.whl", hash = "sha256:3439c71103ef0e904ea0a1901611863e51f50b5cd5e8654a151740fde5e1cade"},
+ {file = "lxml-4.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:4289728b5e2000a4ad4ab8da6e1db2e093c63c08bdc0414799ee776a3f78da4b"},
+ {file = "lxml-4.6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b007cbb845b28db4fb8b6a5cdcbf65bacb16a8bd328b53cbc0698688a68e1caa"},
+ {file = "lxml-4.6.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:76fa7b1362d19f8fbd3e75fe2fb7c79359b0af8747e6f7141c338f0bee2f871a"},
+ {file = "lxml-4.6.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:26e761ab5b07adf5f555ee82fb4bfc35bf93750499c6c7614bd64d12aaa67927"},
+ {file = "lxml-4.6.3-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:e1cbd3f19a61e27e011e02f9600837b921ac661f0c40560eefb366e4e4fb275e"},
+ {file = "lxml-4.6.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:66e575c62792c3f9ca47cb8b6fab9e35bab91360c783d1606f758761810c9791"},
+ {file = "lxml-4.6.3-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:1b38116b6e628118dea5b2186ee6820ab138dbb1e24a13e478490c7db2f326ae"},
+ {file = "lxml-4.6.3-cp38-cp38-win32.whl", hash = "sha256:89b8b22a5ff72d89d48d0e62abb14340d9e99fd637d046c27b8b257a01ffbe28"},
+ {file = "lxml-4.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:2a9d50e69aac3ebee695424f7dbd7b8c6d6eb7de2a2eb6b0f6c7db6aa41e02b7"},
+ {file = "lxml-4.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ce256aaa50f6cc9a649c51be3cd4ff142d67295bfc4f490c9134d0f9f6d58ef0"},
+ {file = "lxml-4.6.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:7610b8c31688f0b1be0ef882889817939490a36d0ee880ea562a4e1399c447a1"},
+ {file = "lxml-4.6.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f8380c03e45cf09f8557bdaa41e1fa7c81f3ae22828e1db470ab2a6c96d8bc23"},
+ {file = "lxml-4.6.3-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:3082c518be8e97324390614dacd041bb1358c882d77108ca1957ba47738d9d59"},
+ {file = "lxml-4.6.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:884ab9b29feaca361f7f88d811b1eea9bfca36cf3da27768d28ad45c3ee6f969"},
+ {file = "lxml-4.6.3-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:6f12e1427285008fd32a6025e38e977d44d6382cf28e7201ed10d6c1698d2a9a"},
+ {file = "lxml-4.6.3-cp39-cp39-win32.whl", hash = "sha256:33bb934a044cf32157c12bfcfbb6649807da20aa92c062ef51903415c704704f"},
+ {file = "lxml-4.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:542d454665a3e277f76954418124d67516c5f88e51a900365ed54a9806122b83"},
+ {file = "lxml-4.6.3.tar.gz", hash = "sha256:39b78571b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468"},
+]
+markupsafe = [
+ {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
+ {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
+]
+minicli = [
+ {file = "minicli-0.5.0-py3-none-any.whl", hash = "sha256:c6118c0c6c5678cfc2ad7317dca9bfa8c4da2363337a0adbe526aeeb3007582e"},
+ {file = "minicli-0.5.0.tar.gz", hash = "sha256:baea96017039c0eba448cd07d746eda623be3226367b3a532d3843154bb347ad"},
+]
+multifruits = [
+ {file = "multifruits-0.1.5.tar.gz", hash = "sha256:c5eff8b375121b96a96a0c4bd05cd817ec7e204feadc6c6a211ca16029f78a7f"},
+]
+openpyxl = [
+ {file = "openpyxl-3.0.5-py2.py3-none-any.whl", hash = "sha256:f7d666b569f729257082cf7ddc56262431878f602dcc2bc3980775c59439cdab"},
+ {file = "openpyxl-3.0.5.tar.gz", hash = "sha256:18e11f9a650128a12580a58e3daba14e00a11d9e907c554a17ea016bf1a2c71b"},
+]
+pillow = [
+ {file = "Pillow-8.3.2-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:c691b26283c3a31594683217d746f1dad59a7ae1d4cfc24626d7a064a11197d4"},
+ {file = "Pillow-8.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f514c2717012859ccb349c97862568fdc0479aad85b0270d6b5a6509dbc142e2"},
+ {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be25cb93442c6d2f8702c599b51184bd3ccd83adebd08886b682173e09ef0c3f"},
+ {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d675a876b295afa114ca8bf42d7f86b5fb1298e1b6bb9a24405a3f6c8338811c"},
+ {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59697568a0455764a094585b2551fd76bfd6b959c9f92d4bdec9d0e14616303a"},
+ {file = "Pillow-8.3.2-cp310-cp310-win32.whl", hash = "sha256:2d5e9dc0bf1b5d9048a94c48d0813b6c96fccfa4ccf276d9c36308840f40c228"},
+ {file = "Pillow-8.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:11c27e74bab423eb3c9232d97553111cc0be81b74b47165f07ebfdd29d825875"},
+ {file = "Pillow-8.3.2-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:11eb7f98165d56042545c9e6db3ce394ed8b45089a67124298f0473b29cb60b2"},
+ {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f23b2d3079522fdf3c09de6517f625f7a964f916c956527bed805ac043799b8"},
+ {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19ec4cfe4b961edc249b0e04b5618666c23a83bc35842dea2bfd5dfa0157f81b"},
+ {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5a31c07cea5edbaeb4bdba6f2b87db7d3dc0f446f379d907e51cc70ea375629"},
+ {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15ccb81a6ffc57ea0137f9f3ac2737ffa1d11f786244d719639df17476d399a7"},
+ {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8f284dc1695caf71a74f24993b7c7473d77bc760be45f776a2c2f4e04c170550"},
+ {file = "Pillow-8.3.2-cp36-cp36m-win32.whl", hash = "sha256:4abc247b31a98f29e5224f2d31ef15f86a71f79c7f4d2ac345a5d551d6393073"},
+ {file = "Pillow-8.3.2-cp36-cp36m-win_amd64.whl", hash = "sha256:a048dad5ed6ad1fad338c02c609b862dfaa921fcd065d747194a6805f91f2196"},
+ {file = "Pillow-8.3.2-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:06d1adaa284696785375fa80a6a8eb309be722cf4ef8949518beb34487a3df71"},
+ {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd24054aaf21e70a51e2a2a5ed1183560d3a69e6f9594a4bfe360a46f94eba83"},
+ {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a330bf7014ee034046db43ccbb05c766aa9e70b8d6c5260bfc38d73103b0ba"},
+ {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13654b521fb98abdecec105ea3fb5ba863d1548c9b58831dd5105bb3873569f1"},
+ {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a1bd983c565f92779be456ece2479840ec39d386007cd4ae83382646293d681b"},
+ {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4326ea1e2722f3dc00ed77c36d3b5354b8fb7399fb59230249ea6d59cbed90da"},
+ {file = "Pillow-8.3.2-cp37-cp37m-win32.whl", hash = "sha256:085a90a99404b859a4b6c3daa42afde17cb3ad3115e44a75f0d7b4a32f06a6c9"},
+ {file = "Pillow-8.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:18a07a683805d32826c09acfce44a90bf474e6a66ce482b1c7fcd3757d588df3"},
+ {file = "Pillow-8.3.2-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4e59e99fd680e2b8b11bbd463f3c9450ab799305d5f2bafb74fefba6ac058616"},
+ {file = "Pillow-8.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4d89a2e9219a526401015153c0e9dd48319ea6ab9fe3b066a20aa9aee23d9fd3"},
+ {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fd98c8294f57636084f4b076b75f86c57b2a63a8410c0cd172bc93695ee979"},
+ {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b11c9d310a3522b0fd3c35667914271f570576a0e387701f370eb39d45f08a4"},
+ {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0412516dcc9de9b0a1e0ae25a280015809de8270f134cc2c1e32c4eeb397cf30"},
+ {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bcb04ff12e79b28be6c9988f275e7ab69f01cc2ba319fb3114f87817bb7c74b6"},
+ {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0b9911ec70731711c3b6ebcde26caea620cbdd9dcb73c67b0730c8817f24711b"},
+ {file = "Pillow-8.3.2-cp38-cp38-win32.whl", hash = "sha256:ce2e5e04bb86da6187f96d7bab3f93a7877830981b37f0287dd6479e27a10341"},
+ {file = "Pillow-8.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:35d27687f027ad25a8d0ef45dd5208ef044c588003cdcedf05afb00dbc5c2deb"},
+ {file = "Pillow-8.3.2-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:04835e68ef12904bc3e1fd002b33eea0779320d4346082bd5b24bec12ad9c3e9"},
+ {file = "Pillow-8.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:10e00f7336780ca7d3653cf3ac26f068fa11b5a96894ea29a64d3dc4b810d630"},
+ {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cde7a4d3687f21cffdf5bb171172070bb95e02af448c4c8b2f223d783214056"},
+ {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c3ff00110835bdda2b1e2b07f4a2548a39744bb7de5946dc8e95517c4fb2ca6"},
+ {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35d409030bf3bd05fa66fb5fdedc39c521b397f61ad04309c90444e893d05f7d"},
+ {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bff50ba9891be0a004ef48828e012babaaf7da204d81ab9be37480b9020a82b"},
+ {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7dbfbc0020aa1d9bc1b0b8bcf255a7d73f4ad0336f8fd2533fcc54a4ccfb9441"},
+ {file = "Pillow-8.3.2-cp39-cp39-win32.whl", hash = "sha256:963ebdc5365d748185fdb06daf2ac758116deecb2277ec5ae98139f93844bc09"},
+ {file = "Pillow-8.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:cc9d0dec711c914ed500f1d0d3822868760954dce98dfb0b7382a854aee55d19"},
+ {file = "Pillow-8.3.2-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2c661542c6f71dfd9dc82d9d29a8386287e82813b0375b3a02983feac69ef864"},
+ {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:548794f99ff52a73a156771a0402f5e1c35285bd981046a502d7e4793e8facaa"},
+ {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b68f565a4175e12e68ca900af8910e8fe48aaa48fd3ca853494f384e11c8bcd"},
+ {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:838eb85de6d9307c19c655c726f8d13b8b646f144ca6b3771fa62b711ebf7624"},
+ {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:feb5db446e96bfecfec078b943cc07744cc759893cef045aa8b8b6d6aaa8274e"},
+ {file = "Pillow-8.3.2-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:fc0db32f7223b094964e71729c0361f93db43664dd1ec86d3df217853cedda87"},
+ {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fd4fd83aa912d7b89b4b4a1580d30e2a4242f3936882a3f433586e5ab97ed0d5"},
+ {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0c8ebbfd439c37624db98f3877d9ed12c137cadd99dde2d2eae0dab0bbfc355"},
+ {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cb3dd7f23b044b0737317f892d399f9e2f0b3a02b22b2c692851fb8120d82c6"},
+ {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66566f8a22561fc1a88dc87606c69b84fa9ce724f99522cf922c801ec68f5c1"},
+ {file = "Pillow-8.3.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ce651ca46d0202c302a535d3047c55a0131a720cf554a578fc1b8a2aff0e7d96"},
+ {file = "Pillow-8.3.2.tar.gz", hash = "sha256:dde3f3ed8d00c72631bc19cbfff8ad3b6215062a5eed402381ad365f82f0c18c"},
+]
+premailer = [
+ {file = "premailer-3.10.0-py2.py3-none-any.whl", hash = "sha256:021b8196364d7df96d04f9ade51b794d0b77bcc19e998321c515633a2273be1a"},
+ {file = "premailer-3.10.0.tar.gz", hash = "sha256:d1875a8411f5dc92b53ef9f193db6c0f879dc378d618e0ad292723e388bfe4c2"},
+]
+pycparser = [
+ {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"},
+ {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"},
+]
+pyjwt = [
+ {file = "PyJWT-1.7.1-py2.py3-none-any.whl", hash = "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e"},
+ {file = "PyJWT-1.7.1.tar.gz", hash = "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"},
+]
+pyphen = [
+ {file = "pyphen-0.11.0-py3-none-any.whl", hash = "sha256:e3c1b1d05deaa31acdd78e2e24005402358feb7a4b407c4af7e5cc2e41c4d608"},
+ {file = "pyphen-0.11.0.tar.gz", hash = "sha256:e2c3ed82c3a04317df5102addafe89652b0876bc6c6265f5dd4c3efaf02315e8"},
+]
+python-dateutil = [
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+]
+python-slugify = [
+ {file = "python-slugify-4.0.1.tar.gz", hash = "sha256:69a517766e00c1268e5bbfc0d010a0a8508de0b18d30ad5a1ff357f8ae724270"},
+]
+pyyaml = [
+ {file = "PyYAML-5.3.1-cp27-cp27m-win32.whl", hash = "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f"},
+ {file = "PyYAML-5.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76"},
+ {file = "PyYAML-5.3.1-cp35-cp35m-win32.whl", hash = "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2"},
+ {file = "PyYAML-5.3.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c"},
+ {file = "PyYAML-5.3.1-cp36-cp36m-win32.whl", hash = "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2"},
+ {file = "PyYAML-5.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648"},
+ {file = "PyYAML-5.3.1-cp37-cp37m-win32.whl", hash = "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"},
+ {file = "PyYAML-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf"},
+ {file = "PyYAML-5.3.1-cp38-cp38-win32.whl", hash = "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97"},
+ {file = "PyYAML-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee"},
+ {file = "PyYAML-5.3.1-cp39-cp39-win32.whl", hash = "sha256:ad9c67312c84def58f3c04504727ca879cb0013b2517c85a9a253f0cb6380c0a"},
+ {file = "PyYAML-5.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:6034f55dab5fea9e53f436aa68fa3ace2634918e8b5994d82f3621c04ff5ed2e"},
+ {file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"},
+]
+requests = [
+ {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"},
+ {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"},
+]
+roll = [
+ {file = "roll-0.13.0-py3-none-any.whl", hash = "sha256:a9a833c791167406599f4a234c7b244e074e9e1c796f94adf99bde2894730684"},
+ {file = "roll-0.13.0.tar.gz", hash = "sha256:5847d408bc74ec495d55fe7b482b4d780f88fc6ab56c0bef49336d3fa078e050"},
+]
+six = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+text-unidecode = [
+ {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"},
+ {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"},
+]
+tinycss2 = [
+ {file = "tinycss2-1.1.0-py3-none-any.whl", hash = "sha256:0353b5234bcaee7b1ac7ca3dea7e02cd338a9f8dcbb8f2dcd32a5795ec1e5f9a"},
+ {file = "tinycss2-1.1.0.tar.gz", hash = "sha256:fbdcac3044d60eb85fdb2aa840ece43cf7dbe798e373e6ee0be545d4d134e18a"},
+]
+typing-extensions = [
+ {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"},
+ {file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"},
+ {file = "typing_extensions-3.10.0.2.tar.gz", hash = "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e"},
+]
+ujson = [
+ {file = "ujson-3.2.0-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:437e051a3e292ddbd5b4682f9b6c3e2ea4cd059d0d75bc9f8314349d63cbb015"},
+ {file = "ujson-3.2.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a27ea44406100a97fb0fcc0b18dcdaf324824e722a00856a2992fafc65779351"},
+ {file = "ujson-3.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6f7c24dabb0ff0ff43744d18211af6035ef37197f530c13edf704e627da7251d"},
+ {file = "ujson-3.2.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:5ae6f599ef7c01ef626697f9e15e9d4e2a186ab4c0593ddb529b86866b562efb"},
+ {file = "ujson-3.2.0-cp35-cp35m-win_amd64.whl", hash = "sha256:59048958793e0b0489449a414e2fbe54644457be1dd882b99a4fe16158632af1"},
+ {file = "ujson-3.2.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a476525862a394018a7a3438c86596815b84518b2744184444fc6f8b0e3e4aee"},
+ {file = "ujson-3.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:2050c7f1ce72055f1b6fba29e4694ccf4509917d3be3ed6f3543ef3ff00eec4a"},
+ {file = "ujson-3.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fda324ca055e671eae46e8fc32b46fab20eb251d3e6e22beb67f71f1d240b0b4"},
+ {file = "ujson-3.2.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:0bdc62a1543d697e9c649ac0ac41e0d076a7b886d6b45f9f21971e25b90a2b27"},
+ {file = "ujson-3.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d0ad63fc88d4e4cb7630f59aacd742256804a4cee447e9589e55957107a469b7"},
+ {file = "ujson-3.2.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:66d47eabb4f0e12b5784b1a49c59bc6f32e91e18e02f2a43c5e91e2f6ad9cc60"},
+ {file = "ujson-3.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:253edfe274538bb1060ab8877d51fc75e416047d5fab5340454a48b971f30612"},
+ {file = "ujson-3.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6ee651c0210a67e3a72367de53ccac83b623913214e7c75015caadfad2b7e0dc"},
+ {file = "ujson-3.2.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:0784f35f2ace41ed55c435ee11f9d9877cf3e6ff03c8850f87504cb93e9a9469"},
+ {file = "ujson-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:812748c8de041f1ef5e9b37f33121c0c7390055fa5f12215b3d06a63b1c055a2"},
+ {file = "ujson-3.2.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:17460d88dd4b9630e449e5d29b97301e6dbbbedbf46a6f95f3b2cb7e1333e6ea"},
+ {file = "ujson-3.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:2d50cb3d87d4aabe6dbeb6ef79025bf9fdf350c4355c24819dc5c5cc38bad3dc"},
+ {file = "ujson-3.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7060105de892cada2f01bd072d33b2421b4eefd32536207c1c9f2ade18656139"},
+ {file = "ujson-3.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7b6496b3e2bc396628f114fd96ec41655b10c84adececc0ef8cf1c2329dae36c"},
+ {file = "ujson-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:782bdf016da793a3bf138e50ed973428e59006b8d73a9e1911bc6207c6b79fff"},
+ {file = "ujson-3.2.0.tar.gz", hash = "sha256:abb1996ba1c1d2faf5b1e38efa97da7f64e5373a31f705b96fe0587f5f778db4"},
+]
+urllib3 = [
+ {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"},
+ {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"},
+]
+weasyprint = [
+ {file = "WeasyPrint-51-py3-none-any.whl", hash = "sha256:469974f6e74b1eef71dc56a9b80cc17621f319234d2a4ab656ddd0fd9e66c27f"},
+ {file = "WeasyPrint-51.tar.gz", hash = "sha256:b3e971973a4f03c1430e6b838b75b5b57630415fcae8666d2be1347630ff6d6a"},
+]
+webencodings = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+websockets = [
+ {file = "websockets-8.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c"},
+ {file = "websockets-8.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170"},
+ {file = "websockets-8.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4f9f7d28ce1d8f1295717c2c25b732c2bc0645db3215cf757551c392177d7cb8"},
+ {file = "websockets-8.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:295359a2cc78736737dd88c343cd0747546b2174b5e1adc223824bcaf3e164cb"},
+ {file = "websockets-8.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:1d3f1bf059d04a4e0eb4985a887d49195e15ebabc42364f4eb564b1d065793f5"},
+ {file = "websockets-8.1-cp36-cp36m-win32.whl", hash = "sha256:2db62a9142e88535038a6bcfea70ef9447696ea77891aebb730a333a51ed559a"},
+ {file = "websockets-8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:0e4fb4de42701340bd2353bb2eee45314651caa6ccee80dbd5f5d5978888fed5"},
+ {file = "websockets-8.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:9b248ba3dd8a03b1a10b19efe7d4f7fa41d158fdaa95e2cf65af5a7b95a4f989"},
+ {file = "websockets-8.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ce85b06a10fc65e6143518b96d3dca27b081a740bae261c2fb20375801a9d56d"},
+ {file = "websockets-8.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:965889d9f0e2a75edd81a07592d0ced54daa5b0785f57dc429c378edbcffe779"},
+ {file = "websockets-8.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:751a556205d8245ff94aeef23546a1113b1dd4f6e4d102ded66c39b99c2ce6c8"},
+ {file = "websockets-8.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:3ef56fcc7b1ff90de46ccd5a687bbd13a3180132268c4254fc0fa44ecf4fc422"},
+ {file = "websockets-8.1-cp37-cp37m-win32.whl", hash = "sha256:7ff46d441db78241f4c6c27b3868c9ae71473fe03341340d2dfdbe8d79310acc"},
+ {file = "websockets-8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:20891f0dddade307ffddf593c733a3fdb6b83e6f9eef85908113e628fa5a8308"},
+ {file = "websockets-8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c1ec8db4fac31850286b7cd3b9c0e1b944204668b8eb721674916d4e28744092"},
+ {file = "websockets-8.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:5c01fd846263a75bc8a2b9542606927cfad57e7282965d96b93c387622487485"},
+ {file = "websockets-8.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9bef37ee224e104a413f0780e29adb3e514a5b698aabe0d969a6ba426b8435d1"},
+ {file = "websockets-8.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d705f8aeecdf3262379644e4b55107a3b55860eb812b673b28d0fbc347a60c55"},
+ {file = "websockets-8.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:c8a116feafdb1f84607cb3b14aa1418424ae71fee131642fc568d21423b51824"},
+ {file = "websockets-8.1-cp38-cp38-win32.whl", hash = "sha256:e898a0863421650f0bebac8ba40840fc02258ef4714cb7e1fd76b6a6354bda36"},
+ {file = "websockets-8.1-cp38-cp38-win_amd64.whl", hash = "sha256:f8a7bff6e8664afc4e6c28b983845c5bc14965030e3fb98789734d416af77c4b"},
+ {file = "websockets-8.1.tar.gz", hash = "sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f"},
+]
+zipp = [
+ {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"},
+ {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"},
+]
diff --git a/flakes/copanier/pyproject.toml b/flakes/copanier/pyproject.toml
new file mode 100644
index 0000000..ba487ae
--- /dev/null
+++ b/flakes/copanier/pyproject.toml
@@ -0,0 +1,40 @@
+[tool.poetry]
+name = "copanier"
+version = "0.0.4"
+description = ""
+authors = ["Your Name "]
+
+[tool.poetry.dependencies]
+python = "^3.7"
+Jinja2 = "2.11.2"
+openpyxl = "3.0.5"
+PyJWT = "1.7.1"
+PyYAML = "5.3.1"
+roll = "0.13.0"
+ujson = "3.2.0"
+minicli = "0.5.0"
+python-slugify = "4.0.1"
+debts = "0.5"
+emails = "0.6"
+Weasyprint = "51"
+
+#[tool.poetry.dev-dependencies]
+#hupper = "1.10.2"
+#minicli = "0.5.0"
+#usine = "0.2.3"
+#
+#[tool.poetry.group.test.dependencies]
+#pyquery = "1.4.1"
+#pytest = "6.0.2"
+#pytest-asyncio = "0.14.0"
+#
+#[tool.poetry.group.prod.dependencies]
+#gunicorn = "20.0.4"
+#uvloop = "0.14.0"
+
+[tool.poetry.scripts]
+copanier = 'copanier:main'
+
+[build-system]
+requires = ["poetry-core>=1.0.0"]
+build-backend = "poetry.core.masonry.api"
diff --git a/flakes/diaspora/default.nix b/flakes/diaspora/default.nix
new file mode 100644
index 0000000..f4038ad
--- /dev/null
+++ b/flakes/diaspora/default.nix
@@ -0,0 +1,74 @@
+{ ldap ? false, varDir ? "/var/lib/diaspora", podmin_email ? null, config_dir ? "/etc/diaspora",
+ src, stdenv, bundlerEnv, writeText,
+ cacert, defaultGemConfig, perl, ruby_2_4, nodejs, which, git }:
+let
+ diaspora_src = stdenv.mkDerivation {
+ inherit (src) version;
+ pname = "diaspora";
+ inherit src;
+ buildPhase = ''
+ ${if ldap then "patch -p1 < ${./ldap.patch}" else ""}
+ # FIXME: bundlerEnv below doesn't take postgresql group for some
+ # reason
+ echo 'gem "pg", "1.1.3"' >> Gemfile
+ '';
+ installPhase = ''
+ cp -a . $out
+ '';
+ };
+ gems = bundlerEnv {
+ name = "diaspora-env";
+ gemfile = "${diaspora_src}/Gemfile";
+ lockfile = "${diaspora_src}/Gemfile.lock";
+ gemset = if ldap then ./gemset_ldap.nix else ./gemset.nix;
+ groups = [ "postgresql" "default" "production" ];
+ gemConfig = defaultGemConfig // {
+ kostya-sigar = attrs: {
+ buildInputs = [ perl ];
+ };
+ };
+ };
+ build_config = writeText "diaspora.yml" ''
+ configuration:
+ environment:
+ certificate_authorities: '${cacert}/etc/ssl/certs/ca-bundle.crt'
+ ${if podmin_email != null then ''
+ # dummy comment for indentation
+ admins:
+ podmin_email: '${podmin_email}'
+ '' else ""}
+ production:
+ environment:
+ '';
+ dummy_token = writeText "secret_token.rb" ''
+ Diaspora::Application.config.secret_key_base = 'dummy'
+ '';
+ diaspora = stdenv.mkDerivation {
+ name = "diaspora";
+ version = src.version;
+ inherit diaspora_src;
+ builder = writeText "build_diaspora" ''
+ source $stdenv/setup
+ cp -a $diaspora_src $out
+ cd $out
+ chmod -R u+rwX .
+ tar -czf public/source.tar.gz ./{app,db,lib,script,Gemfile,Gemfile.lock,Rakefile,config.ru}
+ ln -s database.yml.example config/database.yml
+ ln -s ${build_config} config/diaspora.yml
+ ln -s ${dummy_token} config/initializers/secret_token.rb
+ ln -sf ${varDir}/schedule.yml config/schedule.yml
+ ln -sf ${varDir}/oidc_key.pem config/oidc_key.pem
+ ln -sf ${varDir}/uploads public/uploads
+ RAILS_ENV=production ${gems}/bin/rake assets:precompile
+ ln -sf ${config_dir}/database.yml config/database.yml
+ ln -sf ${config_dir}/diaspora.yml config/diaspora.yml
+ ln -sf ${config_dir}/secret_token.rb config/initializers/secret_token.rb
+ rm -rf tmp log
+ ln -sf ${varDir}/tmp tmp
+ ln -sf ${varDir}/log log
+ '';
+ propagatedBuildInputs = [ gems nodejs which git ];
+ passthru = { inherit gems varDir; };
+ };
+in
+ diaspora
diff --git a/flakes/diaspora/flake.lock b/flakes/diaspora/flake.lock
new file mode 100644
index 0000000..3af470f
--- /dev/null
+++ b/flakes/diaspora/flake.lock
@@ -0,0 +1,75 @@
+{
+ "nodes": {
+ "diaspora": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1551139311,
+ "narHash": "sha256-Fyv7Af68YccJL2OGz6l9d71UmnLB+LstlWbOlgFZtgo=",
+ "owner": "diaspora",
+ "repo": "diaspora",
+ "rev": "663da1ef2573863eb870e0edbd50050f261f3d30",
+ "type": "github"
+ },
+ "original": {
+ "owner": "diaspora",
+ "ref": "v0.7.10.0",
+ "repo": "diaspora",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "nixpkgs": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "diaspora": "diaspora",
+ "flake-utils": "flake-utils",
+ "myuids": "myuids",
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/diaspora/flake.nix b/flakes/diaspora/flake.nix
new file mode 100644
index 0000000..21b05d6
--- /dev/null
+++ b/flakes/diaspora/flake.nix
@@ -0,0 +1,214 @@
+{
+ description = "A privacy-aware, distributed, open source social network.";
+ inputs.myuids = {
+ url = "path:../myuids";
+ };
+ inputs.flake-utils.url = "github:numtide/flake-utils";
+ inputs.nixpkgs = {
+ url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
+ flake = false;
+ };
+ inputs.diaspora = {
+ url = "github:diaspora/diaspora/v0.7.10.0";
+ flake = false;
+ };
+
+ outputs = { self, myuids, nixpkgs, diaspora, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
+ let
+ pkgs = import nixpkgs { inherit system; overlays = []; };
+ version = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.diaspora.original.ref;
+ inherit (pkgs) callPackage;
+ in rec {
+ packages.diaspora = callPackage ./. { src = diaspora // { inherit version; }; };
+ defaultPackage = packages.diaspora;
+ legacyPackages.diaspora = packages.diaspora;
+ checks = {
+ build = defaultPackage;
+ };
+ }
+ ) // rec {
+ overlays = {
+ diaspora = final: prev: {
+ diaspora = self.defaultPackage."${final.system}";
+ };
+ };
+ overlay = overlays.diaspora;
+ nixosModule = { lib, pkgs, config, ... }:
+ let
+ name = "diaspora";
+ cfg = config.services.diaspora;
+
+ uid = config.ids.uids.diaspora;
+ gid = config.ids.gids.diaspora;
+ in
+ {
+ options.services.diaspora = {
+ enable = lib.mkEnableOption "Enable Diaspora’s service";
+ user = lib.mkOption {
+ type = lib.types.str;
+ default = name;
+ description = "User account under which Diaspora runs";
+ };
+ group = lib.mkOption {
+ type = lib.types.str;
+ default = name;
+ description = "Group under which Diaspora runs";
+ };
+ adminEmail = lib.mkOption {
+ type = lib.types.str;
+ example = "admin@example.com";
+ description = "Admin e-mail for Diaspora";
+ };
+ dataDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/var/lib/${name}";
+ description = ''
+ The directory where Diaspora stores its data.
+ '';
+ };
+ socketsDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/run/${name}";
+ description = ''
+ The directory where Diaspora puts runtime files and sockets.
+ '';
+ };
+ configDir = lib.mkOption {
+ type = lib.types.path;
+ description = ''
+ The configuration path for Diaspora.
+ '';
+ };
+ package = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.diaspora;
+ description = ''
+ Diaspora package to use.
+ '';
+ };
+ withLdap = lib.mkEnableOption "Add ldap patch";
+ # Output variables
+ systemdStateDirectory = lib.mkOption {
+ type = lib.types.str;
+ # Use ReadWritePaths= instead if varDir is outside of /var/lib
+ default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
+ lib.strings.removePrefix "/var/lib/" cfg.dataDir;
+ description = ''
+ Adjusted Diaspora data directory for systemd
+ '';
+ readOnly = true;
+ };
+ systemdRuntimeDirectory = lib.mkOption {
+ type = lib.types.str;
+ # Use ReadWritePaths= instead if socketsDir is outside of /run
+ default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir;
+ lib.strings.removePrefix "/run/" cfg.socketsDir;
+ description = ''
+ Adjusted Diaspora sockets directory for systemd
+ '';
+ readOnly = true;
+ };
+ workdir = lib.mkOption {
+ type = lib.types.package;
+ default = cfg.package.override {
+ varDir = cfg.dataDir;
+ podmin_email = cfg.adminEmail;
+ config_dir = cfg.configDir;
+ ldap = cfg.withLdap;
+ };
+ description = ''
+ Adjusted diaspora package with overriden values
+ '';
+ readOnly = true;
+ };
+ sockets = lib.mkOption {
+ type = lib.types.attrsOf lib.types.path;
+ default = {
+ rails = "${cfg.socketsDir}/diaspora.sock";
+ eye = "${cfg.socketsDir}/eye.sock";
+ };
+ readOnly = true;
+ description = ''
+ Diaspora sockets
+ '';
+ };
+ pids = lib.mkOption {
+ type = lib.types.attrsOf lib.types.path;
+ default = {
+ eye = "${cfg.socketsDir}/eye.pid";
+ };
+ readOnly = true;
+ description = ''
+ Diaspora pids
+ '';
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ nixpkgs.overlays = [ self.overlay ];
+ users.users = lib.optionalAttrs (cfg.user == name) {
+ "${name}" = {
+ uid = myuids.lib.uids.diaspora;
+ group = cfg.group;
+ description = "Diaspora user";
+ home = cfg.dataDir;
+ packages = [ cfg.workdir.gems pkgs.nodejs cfg.workdir.gems.ruby ];
+ useDefaultShell = true;
+ };
+ };
+ users.groups = lib.optionalAttrs (cfg.group == name) {
+ "${name}" = {
+ gid = myuids.lib.gids.diaspora;
+ };
+ };
+
+ systemd.services.diaspora = {
+ description = "Diaspora";
+ wantedBy = [ "multi-user.target" ];
+ after = [
+ "network.target" "redis.service" "postgresql.service"
+ ];
+ wants = [
+ "redis.service" "postgresql.service"
+ ];
+
+ environment.RAILS_ENV = "production";
+ environment.BUNDLE_PATH = "${cfg.workdir.gems}/${cfg.workdir.gems.ruby.gemPath}";
+ environment.BUNDLE_GEMFILE = "${cfg.workdir.gems.confFiles}/Gemfile";
+ environment.EYE_SOCK = cfg.sockets.eye;
+ environment.EYE_PID = cfg.pids.eye;
+
+ path = [ cfg.workdir.gems pkgs.nodejs cfg.workdir.gems.ruby pkgs.curl pkgs.which pkgs.gawk ];
+
+ preStart = ''
+ install -m 0755 -d ${cfg.dataDir}/uploads ${cfg.dataDir}/tmp ${cfg.dataDir}/log
+ install -m 0700 -d ${cfg.dataDir}/tmp/pids
+ if [ ! -f ${cfg.dataDir}/schedule.yml ]; then
+ echo "{}" > ${cfg.dataDir}/schedule.yml
+ fi
+ ./bin/bundle exec rails db:migrate
+ '';
+
+ script = ''
+ exec ${cfg.workdir}/script/server
+ '';
+
+ serviceConfig = {
+ User = cfg.user;
+ PrivateTmp = true;
+ Restart = "always";
+ Type = "simple";
+ WorkingDirectory = cfg.workdir;
+ StateDirectory = cfg.systemdStateDirectory;
+ RuntimeDirectory = cfg.systemdRuntimeDirectory;
+ StandardInput = "null";
+ KillMode = "control-group";
+ };
+
+ unitConfig.RequiresMountsFor = cfg.dataDir;
+ };
+ };
+ };
+ };
+}
+
diff --git a/flakes/diaspora/gemset.nix b/flakes/diaspora/gemset.nix
new file mode 100644
index 0000000..e47f5b7
--- /dev/null
+++ b/flakes/diaspora/gemset.nix
@@ -0,0 +1,3047 @@
+{
+ actioncable = {
+ dependencies = ["actionpack" "nio4r" "websocket-driver"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "07r6hnh05db84yr9419mbhyzp20hr8yy9m50jxc2w91ghm2qnrrf";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ actionmailer = {
+ dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1s9xcqfx97q4yva2zc4qzb567mwzhry6v3x3zc318aqhcrz31g7c";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ actionpack = {
+ dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0vz2ms80nqw21c304g3w2vkbs80gadzhi3mcwwym7smxccr37kcd";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ actionview = {
+ dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1kfxlz9v7b47pdyy1whb4zzhvaj8h4sp1ajhbih2ax1hkldyg081";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ active_model_serializers = {
+ dependencies = ["activemodel" "concurrent-ruby"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19zr5pp84q4ya7mfrcanakjv86lv4wfmbcbbd2xnd4bkyprw5w7z";
+ type = "gem";
+ };
+ version = "0.9.7";
+ };
+ activejob = {
+ dependencies = ["activesupport" "globalid"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02lssq8ps98mfg20dyhcpd16f9c0v4zzy7gfbb6ksbs06wrrd4d2";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ activemodel = {
+ dependencies = ["activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10f8cpv4sl1w3m1qj8hl6sd2f1n7x91h45qaf57qr894ll22jgby";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ activerecord = {
+ dependencies = ["activemodel" "activesupport" "arel"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1iqkvxzx5bfp8rmlccww0cj1xr6iaxmn3hhbj1dv5j9c8mnm980x";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ activerecord-import = {
+ dependencies = ["activerecord"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1bxpbrcwc9k6khizwdikvfbhw9pcvs4sp3h4grpcww5k7bgpliz6";
+ type = "gem";
+ };
+ version = "0.27.0";
+ };
+ activesupport = {
+ dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08dm0mgmj31ggk7ib66wfagj4bgbr2jfl500bqb22x0szslz5lll";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ acts-as-taggable-on = {
+ dependencies = ["activerecord"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0hl52pjgfzy3acdwnbxfqy08m808vlv9dmsyp03d5x7x0y499kvl";
+ type = "gem";
+ };
+ version = "6.0.0";
+ };
+ acts_as_api = {
+ dependencies = ["activemodel" "activesupport" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06miad13nnfr2gslc203ahsbvj499s9lngxxvfizwp964vglygsc";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ addressable = {
+ dependencies = ["public_suffix"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
+ type = "gem";
+ };
+ version = "2.5.2";
+ };
+ aes_key_wrap = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0li86k0g812jkzrppb2fvqngvzp09nygywjpn81nx90s01wxqw07";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ arel = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl";
+ type = "gem";
+ };
+ version = "8.0.0";
+ };
+ asset_sync = {
+ dependencies = ["activemodel" "fog-core" "mime-types" "unf"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0mfz51g8rzk5h5fpdhfkycnm7y4dpfhx46wm7fygna7nd4w9ixdx";
+ type = "gem";
+ };
+ version = "2.5.0";
+ };
+ ast = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
+ type = "gem";
+ };
+ version = "2.4.0";
+ };
+ attr_required = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ autoprefixer-rails = {
+ dependencies = ["execjs"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08irrl1mz6skagr1lygq79l34lc0dghgva0v9q7nng76dpiglgj3";
+ type = "gem";
+ };
+ version = "8.6.5";
+ };
+ backports = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g";
+ type = "gem";
+ };
+ version = "3.11.4";
+ };
+ bcrypt = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
+ type = "gem";
+ };
+ version = "3.1.12";
+ };
+ bindata = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kz42nvxnk1j9cj0i8lcnhprcgdqsqska92g6l19ziadydfk2gqy";
+ type = "gem";
+ };
+ version = "2.4.4";
+ };
+ bootstrap-sass = {
+ dependencies = ["autoprefixer-rails" "sass"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1bc9bf6caddqn1rv15b5x56yczmbjzaxzl9lk5zbwrg1bfph4bx9";
+ type = "gem";
+ };
+ version = "3.3.7";
+ };
+ bootstrap-switch-rails = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zkwc1hfmihnm0n9lkva5zk0cmqpfcpnrwnmaniyvgx7rac2r14l";
+ type = "gem";
+ };
+ version = "3.3.3";
+ };
+ buftok = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1rzsy1vy50v55x9z0nivf23y0r9jkmq6i130xa75pq9i8qrn1mxs";
+ type = "gem";
+ };
+ version = "0.2.0";
+ };
+ builder = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
+ type = "gem";
+ };
+ version = "3.2.3";
+ };
+ byebug = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10znc1hjv8n686hhpl08f3m2g6h08a4b83nxblqwy2kqamkxcqf8";
+ type = "gem";
+ };
+ version = "10.0.2";
+ };
+ capybara = {
+ dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10zj8syak12xd1kqywr35bkr2hkdjq18kij54x1ys8c26h6j4d0m";
+ type = "gem";
+ };
+ version = "3.11.1";
+ };
+ carrierwave = {
+ dependencies = ["activemodel" "activesupport" "mime-types"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1k9kla5ncygm97vn33lsrs7ch5zy4qqhhvc8m3khm986yaqh75qs";
+ type = "gem";
+ };
+ version = "1.2.3";
+ };
+ celluloid = {
+ dependencies = ["celluloid-essentials" "celluloid-extras" "celluloid-fsm" "celluloid-pool" "celluloid-supervision" "timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10i29q7kkdlrhf5rg43xygdfm795a02vp28k2ca3nklmqna57qmg";
+ type = "gem";
+ };
+ version = "0.17.3";
+ };
+ celluloid-essentials = {
+ dependencies = ["timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1l4p3p73wjdj07ww124q0db5k1cyzggbndzmcb12xbsf2dnj121k";
+ type = "gem";
+ };
+ version = "0.20.5";
+ };
+ celluloid-extras = {
+ dependencies = ["timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "078agvnsfp78jv343kn5g1cz50147dk0q46blwh5r8lk6whag7ng";
+ type = "gem";
+ };
+ version = "0.20.5";
+ };
+ celluloid-fsm = {
+ dependencies = ["timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pmpi6h4abpkczp46rd6llk1mldpx19i9hll8mkxp3kxin9slivc";
+ type = "gem";
+ };
+ version = "0.20.5";
+ };
+ celluloid-io = {
+ dependencies = ["celluloid" "nio4r" "timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1frcpja7h9vcxsw7w7ff550x54rfx514fpv2n6kawbk1j4zrm314";
+ type = "gem";
+ };
+ version = "0.17.3";
+ };
+ celluloid-pool = {
+ dependencies = ["timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1bfr54ijl95bnhqlabhf5p4ff9n0y2sslc91f49jjn33n2zm755c";
+ type = "gem";
+ };
+ version = "0.20.5";
+ };
+ celluloid-supervision = {
+ dependencies = ["timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1b41gg1rsmms0m5mshy6h66y5rydl3nv6x9wf050ixfa1s2c8vzw";
+ type = "gem";
+ };
+ version = "0.20.6";
+ };
+ chunky_png = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
+ type = "gem";
+ };
+ version = "1.3.10";
+ };
+ cliver = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
+ type = "gem";
+ };
+ version = "0.3.2";
+ };
+ coderay = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
+ type = "gem";
+ };
+ version = "1.1.2";
+ };
+ compass = {
+ dependencies = ["chunky_png" "compass-core" "compass-import-once" "rb-fsevent" "rb-inotify" "sass"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lfi83w8z75czr0pf0rmj9hda22082h3cmvczl8r1ma9agf88y2c";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
+ compass-core = {
+ dependencies = ["multi_json" "sass"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yaspqwdmzwdcqviclbs3blq7an16pysrfzylz8q1gxmmd6bpj3a";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
+ compass-import-once = {
+ dependencies = ["sass"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq";
+ type = "gem";
+ };
+ version = "1.0.5";
+ };
+ compass-rails = {
+ dependencies = ["compass" "sass-rails" "sprockets"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02ydlbl1qb80myjv5xrpwzhmmj6qd80jf5izvpqhq2bikv84j9wr";
+ type = "gem";
+ };
+ version = "3.1.0";
+ };
+ concurrent-ruby = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18q9skp5pfq4jwbxzmw8q2rn4cpw6mf4561i2hsjcl1nxdag2jvb";
+ type = "gem";
+ };
+ version = "1.1.3";
+ };
+ configurate = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1m6cppb4jf7liwc3f5dvgn2v2nhp2jq8ixb9papaqz24f4s8dnd1";
+ type = "gem";
+ };
+ version = "0.3.1";
+ };
+ connection_pool = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
+ type = "gem";
+ };
+ version = "2.2.2";
+ };
+ coveralls = {
+ dependencies = ["json" "simplecov" "term-ansicolor" "thor" "tins"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "022kc16np6w4mv17hq3m9hhw9l8hjl78ld3fzqqx6337vwvwvwcg";
+ type = "gem";
+ };
+ version = "0.8.22";
+ };
+ crack = {
+ dependencies = ["safe_yaml"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
+ type = "gem";
+ };
+ version = "0.4.3";
+ };
+ crass = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ cucumber = {
+ dependencies = ["builder" "cucumber-core" "cucumber-expressions" "cucumber-wire" "diff-lcs" "gherkin" "multi_json" "multi_test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1s2brssrpal8hyhcgg974x3xyhpmvpwps5ypd9p8w2lg01l1pp3j";
+ type = "gem";
+ };
+ version = "3.1.2";
+ };
+ cucumber-api-steps = {
+ dependencies = ["cucumber" "jsonpath"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0fij6bgzshda68jp7kac0hs5n6xsmv49g8ynqhy6s3znc9d4qjbw";
+ type = "gem";
+ };
+ version = "0.14.0";
+ };
+ cucumber-core = {
+ dependencies = ["backports" "cucumber-tag_expressions" "gherkin"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c";
+ type = "gem";
+ };
+ version = "3.2.1";
+ };
+ cucumber-expressions = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw";
+ type = "gem";
+ };
+ version = "6.0.1";
+ };
+ cucumber-rails = {
+ dependencies = ["capybara" "cucumber" "mime-types" "nokogiri" "railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0pmlza6r2601k1i7v3z8gj4apdcq6qa830bzwkj1pnfjzn4z12n7";
+ type = "gem";
+ };
+ version = "1.6.0";
+ };
+ cucumber-tag_expressions = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc";
+ type = "gem";
+ };
+ version = "1.1.1";
+ };
+ cucumber-wire = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f";
+ type = "gem";
+ };
+ version = "0.0.1";
+ };
+ database_cleaner = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "05i0nf2aj70m61y3fspypdkc6d1qgibf5kav05a71b5gjz0k7y5x";
+ type = "gem";
+ };
+ version = "1.7.0";
+ };
+ devise = {
+ dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1vs8nibl568ghm6a7hbw6xgcv8zbm4gykprcxpnzi7bz5d4gvcjx";
+ type = "gem";
+ };
+ version = "4.5.0";
+ };
+ devise_lastseenable = {
+ dependencies = ["devise" "rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1h83h73qjh8fc7lmr089shky8lc3wm4xn653rjdbb0cddflvrx8y";
+ type = "gem";
+ };
+ version = "0.0.6";
+ };
+ diaspora-prosody-config = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1976ijqjf5jcq1jwr6vi0srjadhbqfa9y3nxyipzcv91pzskl2lp";
+ type = "gem";
+ };
+ version = "0.0.7";
+ };
+ diaspora_federation = {
+ dependencies = ["faraday" "faraday_middleware" "nokogiri" "typhoeus" "valid"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xxy6ahlhgyr00qkfmmq0h3nqm6gjkr9i6hsqr0nkb3l6qg0m0yc";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ diaspora_federation-json_schema = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0hfv4cq5wfdg86xmbp5y0h50b11326ymzks1yr9dvr4wa7di00hr";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ diaspora_federation-rails = {
+ dependencies = ["actionpack" "diaspora_federation"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1wrni7d9084v3pqd3sq8j532wx5ym6kmd959bw29bzwxc3zidd9h";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ diaspora_federation-test = {
+ dependencies = ["diaspora_federation" "fabrication" "uuid"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1b09y78pyl9kix8slbybnks2cbq0ac9wml31j2s6qwjixranjsm4";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ diff-lcs = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
+ type = "gem";
+ };
+ version = "1.3";
+ };
+ docile = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
+ type = "gem";
+ };
+ version = "1.3.1";
+ };
+ domain_name = {
+ dependencies = ["unf"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
+ type = "gem";
+ };
+ version = "0.5.20180417";
+ };
+ entypo-rails = {
+ dependencies = ["railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "124x0jszg6n0k2lcacd627ndlp1fv7cbgnv4scwy5s3czp0qwip6";
+ type = "gem";
+ };
+ version = "3.0.0";
+ };
+ equalizer = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
+ type = "gem";
+ };
+ version = "0.0.11";
+ };
+ erubi = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bws86na9k565raiz0kk61yy5pxxp0fmwyzpibdwjkq0xzx8q6q1";
+ type = "gem";
+ };
+ version = "1.7.1";
+ };
+ eslintrb = {
+ dependencies = ["execjs" "multi_json" "rake"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kx9sbs7pnl436zyczylnqqb1858hffy66fwdqfmcn18q8xdqwkx";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ et-orbi = {
+ dependencies = ["tzinfo"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
+ type = "gem";
+ };
+ version = "1.1.6";
+ };
+ ethon = {
+ dependencies = ["ffi"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0y70szwm2p0b9qfvpqrzjrgm3jz0ig65vlbfr6ppc3z0m1h7kv48";
+ type = "gem";
+ };
+ version = "0.11.0";
+ };
+ excon = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
+ type = "gem";
+ };
+ version = "0.62.0";
+ };
+ execjs = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
+ type = "gem";
+ };
+ version = "2.7.0";
+ };
+ eye = {
+ dependencies = ["celluloid" "celluloid-io" "kostya-sigar" "state_machines" "thor"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0gqrrrisy492m6sczq775dyg9sxkl926r8lkr6z33kfb4cnimfzk";
+ type = "gem";
+ };
+ version = "0.10.0";
+ };
+ fabrication = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0an28kjand4mjbkmnwd9fmgq3y5vf717zpmiijavar3sxqj52zri";
+ type = "gem";
+ };
+ version = "2.20.1";
+ };
+ factory_girl = {
+ dependencies = ["activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0cc60v28r7w1gp34p4amzdnq7cyip6qhffvxywsj3ypilyf8jqla";
+ type = "gem";
+ };
+ version = "4.8.0";
+ };
+ factory_girl_rails = {
+ dependencies = ["factory_girl" "railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0hw8qqp30vm4yf4a36r1r65wk78ihxmas7jg5fyl6fcf705z9fvv";
+ type = "gem";
+ };
+ version = "4.8.0";
+ };
+ faraday = {
+ dependencies = ["multipart-post"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "16hwxc8v0z6gkanckjhx0ffgqmzpc4ywz4dfhxpjlz2mbz8d5m52";
+ type = "gem";
+ };
+ version = "0.15.3";
+ };
+ faraday-cookie_jar = {
+ dependencies = ["faraday" "http-cookie"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1di4gx6446a6zdkrpj679m5k515i53wvb4yxcsqvy8d8zacxiiv6";
+ type = "gem";
+ };
+ version = "0.0.6";
+ };
+ faraday_middleware = {
+ dependencies = ["faraday"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1p7icfl28nvl8qqdsngryz1snqic9l8x6bk0dxd7ygn230y0k41d";
+ type = "gem";
+ };
+ version = "0.12.2";
+ };
+ ffi = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
+ type = "gem";
+ };
+ version = "1.9.25";
+ };
+ fixture_builder = {
+ dependencies = ["activerecord" "activesupport" "hashdiff"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1qlq0nyfhjvz09hm0jankl9bgs9672k31b3lmsfq8p135x3xs627";
+ type = "gem";
+ };
+ version = "0.5.2.rc3";
+ };
+ fog-aws = {
+ dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zprxg0spvkkri1jf40zg3rfr5h2gq6009d7l36lifpvhjn658cs";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ fog-core = {
+ dependencies = ["builder" "excon" "formatador" "mime-types"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fsama04wlxhv537bm4b7rr4zzn0mvisy87m3qzv6f0mhlrq3zp8";
+ type = "gem";
+ };
+ version = "2.1.2";
+ };
+ fog-json = {
+ dependencies = ["fog-core" "multi_json"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ fog-xml = {
+ dependencies = ["fog-core" "nokogiri"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
+ type = "gem";
+ };
+ version = "0.1.3";
+ };
+ formatador = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ fugit = {
+ dependencies = ["et-orbi" "raabro"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
+ type = "gem";
+ };
+ version = "1.1.6";
+ };
+ fuubar = {
+ dependencies = ["rspec-core" "ruby-progressbar"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1sqkr1nh49rlm86l3qyrgsdqavgqii4pnrjn7855z6dfavh3spxr";
+ type = "gem";
+ };
+ version = "2.3.2";
+ };
+ get_process_mem = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1bvfjdign16r0zwm2rlfrq0sk1licvmlgbnlpnyckniv5r7i080g";
+ type = "gem";
+ };
+ version = "0.2.3";
+ };
+ gherkin = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s";
+ type = "gem";
+ };
+ version = "5.1.0";
+ };
+ gitlab = {
+ dependencies = ["httparty" "terminal-table"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1nncjmk71ivjxmgkpv100yybry5c7ld6xjgi1b5zsfv4g3mz0v34";
+ type = "gem";
+ };
+ version = "4.7.0";
+ };
+ globalid = {
+ dependencies = ["activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02smrgdi11kziqi9zhnsy9i6yr2fnxrqlv3lllsvdjki3cd4is38";
+ type = "gem";
+ };
+ version = "0.4.1";
+ };
+ gon = {
+ dependencies = ["actionpack" "multi_json" "request_store"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "07sm7fd94pfscrbs4lyprs0das8s1yn32cw521ch738jaqb388xl";
+ type = "gem";
+ };
+ version = "6.2.1";
+ };
+ guard = {
+ dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
+ type = "gem";
+ };
+ version = "2.15.0";
+ };
+ guard-compat = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
+ type = "gem";
+ };
+ version = "1.2.1";
+ };
+ guard-rspec = {
+ dependencies = ["guard" "guard-compat" "rspec"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
+ type = "gem";
+ };
+ version = "4.7.3";
+ };
+ guard-rubocop = {
+ dependencies = ["guard" "rubocop"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1p97zkzasghl1md13rh57n3s2rr2kqly8w4vfn6vaj89igjpagdp";
+ type = "gem";
+ };
+ version = "1.3.0";
+ };
+ haml = {
+ dependencies = ["temple" "tilt"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac";
+ type = "gem";
+ };
+ version = "5.0.4";
+ };
+ haml_lint = {
+ dependencies = ["haml" "rainbow" "rake" "rubocop" "sysexits"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "125aj0j84nx5gqm42hfx5d8486higlra423ahgfpsdjwbp399rwv";
+ type = "gem";
+ };
+ version = "0.28.0";
+ };
+ hamlit = {
+ dependencies = ["temple" "thor" "tilt"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "14fsc208qsf46cflk23vs2fdw435dk65fwv55zhziciwn96ld8sf";
+ type = "gem";
+ };
+ version = "2.9.1";
+ };
+ handlebars_assets = {
+ dependencies = ["execjs" "sprockets" "tilt"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18pyksz4jb0n28acqxv14ahy8mkc9ldqbbn73gcj28m0l9wjzsca";
+ type = "gem";
+ };
+ version = "0.23.2";
+ };
+ hashdiff = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
+ type = "gem";
+ };
+ version = "0.3.7";
+ };
+ hashie = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1hh5lybf8hm7d7xs4xm8hxvm8xqrs2flc8fnwkrclaj746izw6xb";
+ type = "gem";
+ };
+ version = "3.5.7";
+ };
+ http = {
+ dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ http-cookie = {
+ dependencies = ["domain_name"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
+ http-form_data = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
+ type = "gem";
+ };
+ version = "2.1.1";
+ };
+ http_accept_language = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
+ type = "gem";
+ };
+ version = "2.1.1";
+ };
+ "http_parser.rb" = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
+ type = "gem";
+ };
+ version = "0.6.0";
+ };
+ httparty = {
+ dependencies = ["mime-types" "multi_xml"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xmm7pxmz3pblkdr76dg7qm5s60kpp3yvh46c2i0bn1dm0zgl730";
+ type = "gem";
+ };
+ version = "0.16.3";
+ };
+ httpclient = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
+ type = "gem";
+ };
+ version = "2.8.3";
+ };
+ i18n = {
+ dependencies = ["concurrent-ruby"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1gcp1m1p6dpasycfz2sj82ci9ggz7lsskz9c9q6gvfwxrl8y9dx7";
+ type = "gem";
+ };
+ version = "1.1.1";
+ };
+ i18n-inflector = {
+ dependencies = ["i18n"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "081jr7z947aqjfmpbfs10w9jxi205jwgk4mgd8jds1b4m4i8mc7g";
+ type = "gem";
+ };
+ version = "2.6.7";
+ };
+ i18n-inflector-rails = {
+ dependencies = ["actionpack" "i18n-inflector" "railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0c04jm657akp5n14syhcwnn3hnsvx7harvg97768bvf3f9a37hyk";
+ type = "gem";
+ };
+ version = "1.0.7";
+ };
+ ipaddress = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
+ type = "gem";
+ };
+ version = "0.8.3";
+ };
+ jaro_winkler = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0rr797nqz081bfk30m2apj5h24bg5d1jr1c8p3xwx4hbwsrbclah";
+ type = "gem";
+ };
+ version = "1.5.1";
+ };
+ jasmine = {
+ dependencies = ["jasmine-core" "phantomjs" "rack" "rake"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xfwf163wi5a9i0vlm564cqi6k30h15wnrwd15ph95jfa5516kv1";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ jasmine-core = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1b12bjfrxvb8mwjwlfyngykd80lz956glcpfz7rhhw7n75b2rdlv";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ jasmine-jquery-rails = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0cq5zd4ng5dlza45whd6sa7bzd60rlddk9760271mybdqyd96jlv";
+ type = "gem";
+ };
+ version = "2.0.3";
+ };
+ jquery-rails = {
+ dependencies = ["rails-dom-testing" "railties" "thor"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "17201sb8ddwy4yprizmqabq1kfx3m9c53p0yqngn63m07jjcpnh8";
+ type = "gem";
+ };
+ version = "4.3.3";
+ };
+ js-routes = {
+ dependencies = ["railties" "sprockets-rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "14yx3jrd4sgcwgj8yrrqdwl691mci1hcjqyyvp0v15jbzis1bclm";
+ type = "gem";
+ };
+ version = "1.4.4";
+ };
+ js_image_paths = {
+ dependencies = ["rails" "sprockets"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1d4kq8895i61a338ddk5f2k16l5lvmnkby9cdjwnmm2jddw4q7nf";
+ type = "gem";
+ };
+ version = "0.1.1";
+ };
+ json = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ json-jwt = {
+ dependencies = ["activesupport" "aes_key_wrap" "bindata"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "065k7vffdki73f4nz89lxi6wxmcw5dlf593831pgvlbralll6x3r";
+ type = "gem";
+ };
+ version = "1.9.4";
+ };
+ json-schema = {
+ dependencies = ["addressable"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5";
+ type = "gem";
+ };
+ version = "2.8.1";
+ };
+ json-schema-rspec = {
+ dependencies = ["json-schema" "rspec"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ip30yjzyigqqp9jwkrw9x9vrfpnmwi160zmk2vkrwlv9pby0wr9";
+ type = "gem";
+ };
+ version = "0.0.4";
+ };
+ jsonpath = {
+ dependencies = ["multi_json" "to_regexp"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06i41lwpj0dwvbxcpqrad5pjn2gmcv0srv0zw0ap7irwc21ifd7d";
+ type = "gem";
+ };
+ version = "0.9.6";
+ };
+ jwt = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ kgio = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1528pyj1szzzp3pgj05fzjd36qjrxm9yj2x5radc9p1z7vl67y50";
+ type = "gem";
+ };
+ version = "2.11.2";
+ };
+ kostya-sigar = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0z0pcykhjyrb7kq76jfcyxc1qq23gj5zmgy3miy87v85ydrxiqwb";
+ type = "gem";
+ };
+ version = "2.0.4";
+ };
+ leaflet-rails = {
+ dependencies = ["rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0dy7vhsjj1fhbbqm2s7pw57vgysd31qqi4y0hm91325hmvq75grb";
+ type = "gem";
+ };
+ version = "1.3.1";
+ };
+ listen = {
+ dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
+ type = "gem";
+ };
+ version = "3.1.5";
+ };
+ little-plugger = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
+ type = "gem";
+ };
+ version = "1.1.4";
+ };
+ logging = {
+ dependencies = ["little-plugger" "multi_json"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06j6iaj89h9jhkx1x3hlswqrfnqds8br05xb1qra69dpvbdmjcwn";
+ type = "gem";
+ };
+ version = "2.2.2";
+ };
+ logging-rails = {
+ dependencies = ["logging"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "022cnj9v177282kadd9ygzjpvlvbq9k5z0xhdbbmgypi05z4i239";
+ type = "gem";
+ };
+ version = "0.6.0";
+ };
+ loofah = {
+ dependencies = ["crass" "nokogiri"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
+ type = "gem";
+ };
+ version = "2.2.3";
+ };
+ lumberjack = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
+ type = "gem";
+ };
+ version = "1.0.13";
+ };
+ macaddr = {
+ dependencies = ["systemu"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1clii8mvhmh5lmnm95ljnjygyiyhdpja85c5vy487rhxn52scn0b";
+ type = "gem";
+ };
+ version = "1.7.1";
+ };
+ mail = {
+ dependencies = ["mini_mime"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
+ type = "gem";
+ };
+ version = "2.7.1";
+ };
+ markdown-it-html5-embed = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10n2z6j0whc6makxvcf2jhpwb8xrj4s6vyywijsaaxs0cn490a5c";
+ type = "gem";
+ };
+ version = "1.0.0";
+ };
+ markerb = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08sm3kafc3086l0a9is2cysk7j2k71mxy6ba295pwwzyvy734y76";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ memoizable = {
+ dependencies = ["thread_safe"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c";
+ type = "gem";
+ };
+ version = "0.4.2";
+ };
+ method_source = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
+ type = "gem";
+ };
+ version = "0.9.2";
+ };
+ mime-types = {
+ dependencies = ["mime-types-data"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
+ type = "gem";
+ };
+ version = "3.2.2";
+ };
+ mime-types-data = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
+ type = "gem";
+ };
+ version = "3.2018.0812";
+ };
+ mini_magick = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0sisx59mr5kydmxmx5vr8spmrxhrjkfqv35zhsqdlyzmp1z5px9p";
+ type = "gem";
+ };
+ version = "4.9.2";
+ };
+ mini_mime = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ mini_portile2 = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
+ type = "gem";
+ };
+ version = "2.3.0";
+ };
+ minitest = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
+ type = "gem";
+ };
+ version = "5.11.3";
+ };
+ mobile-fu = {
+ dependencies = ["rack-mobile-detect" "rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lxfcsd7dwwcpa1j2jbl382anmv6kksf5q1wqj14gc6jxxjq9s4i";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ multi_json = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
+ type = "gem";
+ };
+ version = "1.13.1";
+ };
+ multi_test = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd";
+ type = "gem";
+ };
+ version = "0.1.2";
+ };
+ multi_xml = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
+ type = "gem";
+ };
+ version = "0.6.0";
+ };
+ multipart-post = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
+ type = "gem";
+ };
+ version = "2.0.0";
+ };
+ mysql2 = {
+ groups = ["mysql"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1a2kdjgzwh1p2rkcmxaawy6ibi32b04wbdd5d4wr8i342pq76di4";
+ type = "gem";
+ };
+ version = "0.5.2";
+ };
+ naught = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1wwjx35zgbc0nplp8a866iafk4zsrbhwwz4pav5gydr2wm26nksg";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ nenv = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
+ type = "gem";
+ };
+ version = "0.3.0";
+ };
+ nio4r = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
+ type = "gem";
+ };
+ version = "2.3.1";
+ };
+ nokogiri = {
+ dependencies = ["mini_portile2"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
+ type = "gem";
+ };
+ version = "1.8.5";
+ };
+ notiffany = {
+ dependencies = ["nenv" "shellany"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
+ type = "gem";
+ };
+ version = "0.1.1";
+ };
+ oauth = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
+ type = "gem";
+ };
+ version = "0.5.4";
+ };
+ oauth2 = {
+ dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0av6nlb5y2sm6m8fx669ywrqa9858yqaqfqzny75nqp3anag89qh";
+ type = "gem";
+ };
+ version = "1.4.1";
+ };
+ octokit = {
+ dependencies = ["sawyer"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6";
+ type = "gem";
+ };
+ version = "4.13.0";
+ };
+ omniauth = {
+ dependencies = ["hashie" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1msqr4qq7mfdvl3rg89529isrv595hvjpj2gi0say4b8nwqfggmg";
+ type = "gem";
+ };
+ version = "1.8.1";
+ };
+ omniauth-oauth = {
+ dependencies = ["oauth" "omniauth"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ omniauth-oauth2 = {
+ dependencies = ["oauth2" "omniauth"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kscjf1y0lnggsl4z3w5bwllqshqjlsl5kmcya5haydajdnzvdjr";
+ type = "gem";
+ };
+ version = "1.5.0";
+ };
+ omniauth-tumblr = {
+ dependencies = ["multi_json" "omniauth-oauth"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10ncmfym4l6k6aqp402g7mqxahbggcj5xkpsjxgngs746s82y97w";
+ type = "gem";
+ };
+ version = "1.2";
+ };
+ omniauth-twitter = {
+ dependencies = ["omniauth-oauth" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0r5j65hkpgzhvvbs90id3nfsjgsad6ymzggbm7zlaxvnrmvnrk65";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ omniauth-wordpress = {
+ dependencies = ["omniauth-oauth2"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "008zx4zwrbzyvlgv6hy68k1d05zskiwvcgwvxxbxhbl0mvlmh303";
+ type = "gem";
+ };
+ version = "0.2.2";
+ };
+ open_graph_reader = {
+ dependencies = ["faraday" "nokogiri"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0af4yldyb0d8zglw73s13pyn0g90gs4m5zf7bwy8r4kym9zbvc21";
+ type = "gem";
+ };
+ version = "0.6.2";
+ };
+ openid_connect = {
+ dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1r13bv18nyvw0g1nw3fzffvv2si99zj24w0k5zgawf4q6nn5f7vd";
+ type = "gem";
+ };
+ version = "1.1.6";
+ };
+ orm_adapter = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+ parallel = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67";
+ type = "gem";
+ };
+ version = "1.12.1";
+ };
+ parser = {
+ dependencies = ["ast"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zjk0w1kjj3xk8ymy1430aa4gg0k8ckphfj88br6il4pm83f0n1f";
+ type = "gem";
+ };
+ version = "2.5.3.0";
+ };
+ pg = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb";
+ type = "gem";
+ };
+ version = "1.1.3";
+ };
+ phantomjs = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0y8pbbyq9dirxb7igkb2s5limz2895qmr41c09fjhx6k6fxcz4mk";
+ type = "gem";
+ };
+ version = "2.1.1.0";
+ };
+ poltergeist = {
+ dependencies = ["capybara" "cliver" "websocket-driver"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0il80p97psmhs6scl0grq031gv7kws4ylvvd6zyr8xv91qadga95";
+ type = "gem";
+ };
+ version = "1.18.1";
+ };
+ powerpack = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv";
+ type = "gem";
+ };
+ version = "0.1.2";
+ };
+ pronto = {
+ dependencies = ["gitlab" "httparty" "octokit" "rainbow" "rugged" "thor"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "13xbg1pm3kz5zbzxad5qgqnkzkp3ddajj7wxx16aqbfr7rqggvhz";
+ type = "gem";
+ };
+ version = "0.9.5";
+ };
+ pronto-eslint = {
+ dependencies = ["eslintrb" "pronto"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1cxyx6mlcdgv4ykliaizkx9cps68xf7qvy8lzxmv7pcqzkxaq7xc";
+ type = "gem";
+ };
+ version = "0.9.1";
+ };
+ pronto-haml = {
+ dependencies = ["haml_lint" "pronto"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "116iln1whwiqy55f86q33lnnic0awnqm415xvxwnhwlagcbwmnkg";
+ type = "gem";
+ };
+ version = "0.9.0";
+ };
+ pronto-rubocop = {
+ dependencies = ["pronto" "rubocop"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bcm34qlpp02wf69why5lpi5p53h5r4fq36f4b1fwi621fwzlgsy";
+ type = "gem";
+ };
+ version = "0.9.1";
+ };
+ pronto-scss = {
+ dependencies = ["pronto" "scss_lint"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kgaqd6l2w3brdsp5231fpfr6fwajciz2hdr925l1zhh6ni1y2za";
+ type = "gem";
+ };
+ version = "0.9.1";
+ };
+ pry = {
+ dependencies = ["coderay" "method_source"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
+ type = "gem";
+ };
+ version = "0.12.2";
+ };
+ pry-byebug = {
+ dependencies = ["byebug" "pry"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0y2758593i2ij0nhmv0j1pbdfx2cgi52ns6wkij0frgnk2lf650g";
+ type = "gem";
+ };
+ version = "3.6.0";
+ };
+ public_suffix = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
+ type = "gem";
+ };
+ version = "3.0.3";
+ };
+ raabro = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
+ type = "gem";
+ };
+ version = "1.1.6";
+ };
+ rack = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
+ type = "gem";
+ };
+ version = "2.0.6";
+ };
+ rack-cors = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1j27vy1bmhbqcyzhxg8d07qassmax769xjalfwcwz6qfiq8cf013";
+ type = "gem";
+ };
+ version = "1.0.2";
+ };
+ rack-google-analytics = {
+ dependencies = ["actionpack" "activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "09pv0z5dhjjrlhi9qj5qy48hi66f7iix337qrapg7mvwwz6czcvj";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ rack-mobile-detect = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bagli6ldhkpd1yym775sxy7w5n4jds6gbcjm3gmcl37vggvm8a5";
+ type = "gem";
+ };
+ version = "0.4.0";
+ };
+ rack-oauth2 = {
+ dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kmxj9hbjhhcs3yyb433s82hkpmzb536m0mwfadjiaisganx1cii";
+ type = "gem";
+ };
+ version = "1.9.3";
+ };
+ rack-piwik = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0raxrckapqh693lpid0cnx1j1v2i3mz5cyssg7grgrilgrn9318z";
+ type = "gem";
+ };
+ version = "0.3.0";
+ };
+ rack-protection = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ylx74ravz7nvnyygq0nk3v86qdzrmqxpwpayhppyy50l72rcajq";
+ type = "gem";
+ };
+ version = "2.0.4";
+ };
+ rack-rewrite = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0milw71dv96wnc6i48vbzypws51dgf415kkp8c4air0mkdhpj838";
+ type = "gem";
+ };
+ version = "1.5.1";
+ };
+ rack-ssl = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0c21xqkjyl10fngq6dy8082vmn2png8cwkiyzv83ymixq5cx7ygp";
+ type = "gem";
+ };
+ version = "1.4.1";
+ };
+ rack-test = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ rails = {
+ dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lb07cbwgm371zyn9i6fyj9q8rmv89lacmyzrfvzxqqx2n3ilc5q";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ rails-assets-autosize = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0hr72mfprb9678lf7dj9lh801lm7p98nzkrnrz764sy9lmbpzcib";
+ type = "gem";
+ };
+ version = "4.0.2";
+ };
+ rails-assets-backbone = {
+ dependencies = ["rails-assets-underscore"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0zjgwhgfmg1jyyds7zfjp6g4bz8vw56qvhlrpj943wcqpdxm93id";
+ type = "gem";
+ };
+ version = "1.3.3";
+ };
+ rails-assets-blueimp-gallery = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "18b7xvvkdnd39xlbkyw46i86w3wzj349s8iv5wdiypa5qdcql8mq";
+ type = "gem";
+ };
+ version = "2.33.0";
+ };
+ rails-assets-bootstrap = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0x4i11132qcmghmqb061iq47yksrr7i0la5hzzdm38dxybh87x5v";
+ type = "gem";
+ };
+ version = "3.3.7";
+ };
+ rails-assets-bootstrap-markdown = {
+ dependencies = ["rails-assets-bootstrap"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1nxirs9wx5jxrjmxjwvsqlf2rsypjn3ajg7fs28c4ib7wwpabwj3";
+ type = "gem";
+ };
+ version = "2.10.0";
+ };
+ rails-assets-corejs-typeahead = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1p5i6afd156rakrin99c2ryaz3zykx21ir6y10l34jnw03rikcfg";
+ type = "gem";
+ };
+ version = "1.2.1";
+ };
+ rails-assets-diaspora_jsxc = {
+ dependencies = ["rails-assets-emojione" "rails-assets-favico.js" "rails-assets-jquery-colorbox" "rails-assets-jquery-fullscreen-plugin" "rails-assets-jquery.slimscroll" "rails-assets-jquery.ui"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "07vqdj0l8fsj4fd2sschba2jgfbimyfad56009ldzlcvb6ml5nhi";
+ type = "gem";
+ };
+ version = "0.1.5.develop.7";
+ };
+ rails-assets-emojione = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1j29vbsf6v9ikiqlmnfgzxys4xsa1glvmfky8id5xfyymnjx2c52";
+ type = "gem";
+ };
+ version = "2.0.1";
+ };
+ "rails-assets-favico.js" = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "19yndhljmqlvarf49h5v71zq0p0ngvspjr2v0m6lac0q9ni7r5bv";
+ type = "gem";
+ };
+ version = "0.3.10";
+ };
+ rails-assets-fine-uploader = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1vxj78x2vvlchpapxpaawysc9wn8alzdd3gxhwfwy11xv8ka9mdv";
+ type = "gem";
+ };
+ version = "5.13.0";
+ };
+ rails-assets-highlightjs = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0spmb0gkfs13fmljjv1n53r53q69fhb6r573ndbxnhgb3izqgnqp";
+ type = "gem";
+ };
+ version = "9.12.0";
+ };
+ rails-assets-jasmine = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1n6yixrl9cgq5kckay75b44p878s1kqi69mhgyw99w8dsq8i2vy5";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ rails-assets-jasmine-ajax = {
+ dependencies = ["rails-assets-jasmine"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0l8z0p75x1yzk1l1ryfvdlvq8yq4w2xngp4icz478axd5jcqx6kg";
+ type = "gem";
+ };
+ version = "3.4.0";
+ };
+ rails-assets-jquery = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1wcaappk12w300733lrqb571cir9nw35d9q6d2i52wwdvhv2fx2y";
+ type = "gem";
+ };
+ version = "3.3.1";
+ };
+ rails-assets-jquery-colorbox = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "19ws3r1zfviwnfr9s0jh6iqss50iwqkf4a78zhrk0p3bb4lvmmsp";
+ type = "gem";
+ };
+ version = "1.6.4";
+ };
+ rails-assets-jquery-fullscreen-plugin = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0ldvq4s15lap9p6w7d1yw6dajn2gh6p75dbkp79p0d8ylzapsd58";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+ rails-assets-jquery-placeholder = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0h17gjazc27pj4cm2ig232ww4d4ppq9bcginwzjss95pl63richi";
+ type = "gem";
+ };
+ version = "2.3.1";
+ };
+ rails-assets-jquery-textchange = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0rsw3cn9a5njv80zy53339kmrmv60b8fqcrr7bacapbagb2rd4dj";
+ type = "gem";
+ };
+ version = "0.2.3";
+ };
+ "rails-assets-jquery.are-you-sure" = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0nj04aqh9jpcg57xbjxpm2vn7mkd5clnpma907515a1nxy40bym0";
+ type = "gem";
+ };
+ version = "1.9.0";
+ };
+ "rails-assets-jquery.slimscroll" = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1rymmd2rxy1vjjj70v88abmdlfs55276rs3rksj300dgirnnj998";
+ type = "gem";
+ };
+ version = "1.3.8";
+ };
+ "rails-assets-jquery.ui" = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0xc9kfb29hi441irj49b7aawxkddk1dxzy938rpqv9ylpsj7knaa";
+ type = "gem";
+ };
+ version = "1.11.4";
+ };
+ rails-assets-markdown-it = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0fxx7ldszsdqr5ry21bnxmv33byz7abpk9lcp100q5cqsjx091r9";
+ type = "gem";
+ };
+ version = "8.4.2";
+ };
+ rails-assets-markdown-it--markdown-it-for-inline = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0fznv2x7ndadr3wb4dzhh86bpcpwz8f4d8rfhz4sfbqlai40j3jl";
+ type = "gem";
+ };
+ version = "0.1.1";
+ };
+ rails-assets-markdown-it-diaspora-mention = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0asggm7wgmdll8x94291p2w6icmp2izi914dlh3b7vb7dpjq3jig";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ rails-assets-markdown-it-hashtag = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0dr8fwaxgkfqm7z4rl4jdym0i1ycqw1sgkxshkd9k0849ry12cdk";
+ type = "gem";
+ };
+ version = "0.4.0";
+ };
+ rails-assets-markdown-it-sanitizer = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0fkpffh83fc257zkzaia93j4hw2baz90lg10s5yxsxww06q5dn36";
+ type = "gem";
+ };
+ version = "0.4.3";
+ };
+ rails-assets-markdown-it-sub = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "08hjij5fqvhvg7s27n4g8qqsks974g3kc5k7xl2qmh41k7f4hcrk";
+ type = "gem";
+ };
+ version = "1.0.0";
+ };
+ rails-assets-markdown-it-sup = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "17nnnvky7zy0yiwwl6dm8ibbkyvvf63xfp3snch4dzmras05lmig";
+ type = "gem";
+ };
+ version = "1.0.0";
+ };
+ rails-assets-underscore = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1ccnzj7aqrvngcs915y290pijryqmjygimdwlrykpyj8vwzifdnc";
+ type = "gem";
+ };
+ version = "1.9.1";
+ };
+ rails-assets-utatti-perfect-scrollbar = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0m8syfv8p5bnwm8nrba6mpjnhrd29ffwzi6awhiw537jqw42b12v";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ rails-controller-testing = {
+ dependencies = ["actionpack" "actionview" "activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "16kdkk73mhhs73iz3i1i0ryjm84dadiyh817b3nh8acdi490jyhy";
+ type = "gem";
+ };
+ version = "1.0.2";
+ };
+ rails-dom-testing = {
+ dependencies = ["activesupport" "nokogiri"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
+ type = "gem";
+ };
+ version = "2.0.3";
+ };
+ rails-html-sanitizer = {
+ dependencies = ["loofah"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ rails-i18n = {
+ dependencies = ["i18n" "railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "05lkhc737a9dw0hd5ljmja0yp4cw39r3200s1r0n4bs7z1g3ka7l";
+ type = "gem";
+ };
+ version = "5.1.2";
+ };
+ rails-timeago = {
+ dependencies = ["actionpack" "activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01x1vs9hni9wn8dc4fmyqzkrn651chzsi2mhmk0pxdrfx9md0lxv";
+ type = "gem";
+ };
+ version = "2.16.0";
+ };
+ railties = {
+ dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ycy2gdaj0px1vfaghskvl6qkczwaigrli2zxn54w7zn1z29faj8";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ rainbow = {
+ dependencies = ["rake"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08w2ghc5nv0kcq5b257h7dwjzjz1pqcavajfdx2xjyxqsvh2y34w";
+ type = "gem";
+ };
+ version = "2.2.2";
+ };
+ raindrops = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1qpbd9jif40c53fz2r0l8khfl016y8s8bkx37ibcaafclbl3xygp";
+ type = "gem";
+ };
+ version = "0.19.0";
+ };
+ rake = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg";
+ type = "gem";
+ };
+ version = "12.3.1";
+ };
+ rb-fsevent = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
+ type = "gem";
+ };
+ version = "0.10.3";
+ };
+ rb-inotify = {
+ dependencies = ["ffi"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
+ type = "gem";
+ };
+ version = "0.9.10";
+ };
+ redcarpet = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7";
+ type = "gem";
+ };
+ version = "3.4.0";
+ };
+ redis = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0i415x8gi0c5vsiy6ikvx5js6fhc4x80a5lqv8iidy2iymd20irv";
+ type = "gem";
+ };
+ version = "3.3.5";
+ };
+ regexp_parser = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18g5jyg3blsdrz3mc8d87bms6qqn6gcdh1nvdhvgbjdpk9pw21dq";
+ type = "gem";
+ };
+ version = "1.3.0";
+ };
+ request_store = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
+ type = "gem";
+ };
+ version = "1.4.1";
+ };
+ responders = {
+ dependencies = ["actionpack" "railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1rhdyyvvm26f2l3fgwdp6xasfl2y0whwgy766bhdwz697mf78zfn";
+ type = "gem";
+ };
+ version = "2.4.0";
+ };
+ rspec = {
+ dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
+ type = "gem";
+ };
+ version = "3.8.0";
+ };
+ rspec-core = {
+ dependencies = ["rspec-support"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
+ type = "gem";
+ };
+ version = "3.8.0";
+ };
+ rspec-expectations = {
+ dependencies = ["diff-lcs" "rspec-support"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
+ type = "gem";
+ };
+ version = "3.8.2";
+ };
+ rspec-json_expectations = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0l3dhvkb95zwyg72wz33azxigc9cisqgg3z16ksns1sx0b93nnbn";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ rspec-mocks = {
+ dependencies = ["diff-lcs" "rspec-support"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
+ type = "gem";
+ };
+ version = "3.8.0";
+ };
+ rspec-rails = {
+ dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0sqj5da2kc937j5jb18jcf0hrmmzwgj7pk62j0q3qndhc2kvx88p";
+ type = "gem";
+ };
+ version = "3.8.1";
+ };
+ rspec-support = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
+ type = "gem";
+ };
+ version = "3.8.0";
+ };
+ rubocop = {
+ dependencies = ["jaro_winkler" "parallel" "parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ivk049z3mp12nc6v1wn35bsq1g7nz1i2r4xwzqf0v25hm2v7n1i";
+ type = "gem";
+ };
+ version = "0.60.0";
+ };
+ ruby-oembed = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1kw4aplb3m13z3kchhb79wf87qb3prn1m99s6vl5cyp0xqwyymv0";
+ type = "gem";
+ };
+ version = "0.12.0";
+ };
+ ruby-progressbar = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk";
+ type = "gem";
+ };
+ version = "1.10.0";
+ };
+ ruby_dep = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
+ type = "gem";
+ };
+ version = "1.5.0";
+ };
+ rubyzip = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1n1lb2sdwh9h27y244hxzg1lrxxg2m53pk1vq7p33bna003qkyrj";
+ type = "gem";
+ };
+ version = "1.2.2";
+ };
+ rugged = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1jv4nw9hvlxp8hhhlllrfcznki82i50fp1sj65zsjllfl2bvz8x6";
+ type = "gem";
+ };
+ version = "0.27.5";
+ };
+ safe_yaml = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ sass = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kfpcwh8dgw4lc81qglkvjl73689jy3g7196zkxm4fpskg1p5lkw";
+ type = "gem";
+ };
+ version = "3.4.25";
+ };
+ sass-rails = {
+ dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s";
+ type = "gem";
+ };
+ version = "5.0.7";
+ };
+ sawyer = {
+ dependencies = ["addressable" "faraday"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0sv1463r7bqzvx4drqdmd36m7rrv6sf1v3c6vswpnq3k6vdw2dvd";
+ type = "gem";
+ };
+ version = "0.8.1";
+ };
+ scss_lint = {
+ dependencies = ["rake" "sass"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "11rl8kj32p34mqlkhxvlwfrwl8gdl0iha8q9xsrr3sjxjagzv8yp";
+ type = "gem";
+ };
+ version = "0.55.0";
+ };
+ secure_headers = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "17cxci8jyvlgssix0cy7kbm5m2h7s8ym9caj8nilrbd21jis9pc5";
+ type = "gem";
+ };
+ version = "6.0.0";
+ };
+ shellany = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
+ type = "gem";
+ };
+ version = "0.0.1";
+ };
+ shoulda-matchers = {
+ dependencies = ["activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a";
+ type = "gem";
+ };
+ version = "3.1.2";
+ };
+ sidekiq = {
+ dependencies = ["connection_pool" "rack-protection" "redis"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zyf9y3rvzizbwh68i2g1lzd40lalrdc4iyjmaa74gnfwsf92i26";
+ type = "gem";
+ };
+ version = "5.2.3";
+ };
+ sidekiq-cron = {
+ dependencies = ["fugit" "sidekiq"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1aliswahmpxn1ib2brn4126gk97ac3zdnwr71mn8vzbr3vdd7fl0";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ simple_captcha2 = {
+ dependencies = ["rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0vdjydym8sjpa8c1q0n2hanj3n9vzi4ycdw2p6bbm6qqmm1f3fq3";
+ type = "gem";
+ };
+ version = "0.4.3";
+ };
+ simple_oauth = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0dw9ii6m7wckml100xhjc6vxpjcry174lbi9jz5v7ibjr3i94y8l";
+ type = "gem";
+ };
+ version = "0.3.1";
+ };
+ simplecov = {
+ dependencies = ["docile" "json" "simplecov-html"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
+ type = "gem";
+ };
+ version = "0.16.1";
+ };
+ simplecov-html = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
+ type = "gem";
+ };
+ version = "0.10.2";
+ };
+ sinon-rails = {
+ dependencies = ["railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1b7996hb8vfky29b0zcql90x8i6vhdg2zy9nfzmhh820gjv3kggb";
+ type = "gem";
+ };
+ version = "1.15.0";
+ };
+ spring = {
+ dependencies = ["activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "168yz9c1fv21wc5i8q7n43b9nk33ivg3ws1fn6x0afgryz3ssx75";
+ type = "gem";
+ };
+ version = "2.0.2";
+ };
+ spring-commands-cucumber = {
+ dependencies = ["spring"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0mw81gvms2svn4k4pc6ly7smkmf0j9r2xbf0d38vygbyhiwd1c9a";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ spring-commands-rspec = {
+ dependencies = ["spring"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ sprockets = {
+ dependencies = ["concurrent-ruby" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
+ type = "gem";
+ };
+ version = "3.7.2";
+ };
+ sprockets-rails = {
+ dependencies = ["actionpack" "activesupport" "sprockets"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
+ type = "gem";
+ };
+ version = "3.2.1";
+ };
+ state_machines = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+ string-direction = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0iyddwmkj425c6xbn5pmlr2yzwcq4snzlan7rky5b1yp2pvf70jj";
+ type = "gem";
+ };
+ version = "1.2.1";
+ };
+ swd = {
+ dependencies = ["activesupport" "attr_required" "httpclient"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1s2vjb6f13za7p1iycl2p73d3p202xa6xny9fjrp8ynwsqix7lyd";
+ type = "gem";
+ };
+ version = "1.1.2";
+ };
+ sysexits = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0qjng6pllznmprzx8vb0zg0c86hdrkyjs615q41s9fjpmv2430jr";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ systemu = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1";
+ type = "gem";
+ };
+ version = "2.6.5";
+ };
+ temple = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00nxf610nzi4n1i2lkby43nrnarvl89fcl6lg19406msr0k3ycmq";
+ type = "gem";
+ };
+ version = "0.8.0";
+ };
+ term-ansicolor = {
+ dependencies = ["tins"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "079hbagd9mk0839rkajsdrbzkn992gj8ah2n45qd64v25ml27i6d";
+ type = "gem";
+ };
+ version = "1.7.0";
+ };
+ terminal-table = {
+ dependencies = ["unicode-display_width"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
+ type = "gem";
+ };
+ version = "1.8.0";
+ };
+ thor = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns";
+ type = "gem";
+ };
+ version = "0.19.4";
+ };
+ thread_safe = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+ type = "gem";
+ };
+ version = "0.3.6";
+ };
+ tilt = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
+ type = "gem";
+ };
+ version = "2.0.8";
+ };
+ timecop = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp";
+ type = "gem";
+ };
+ version = "0.9.1";
+ };
+ timers = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "04zbs9wyzajn7g9xfgg2zqz5kzf0qa7jgh4hgry4pfcxfmlnwdwx";
+ type = "gem";
+ };
+ version = "4.2.0";
+ };
+ tins = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pqj45n216zrz7yckdbdknlmhh187iqzx8fp76y2h0jrgqjfkxmj";
+ type = "gem";
+ };
+ version = "1.20.2";
+ };
+ to_regexp = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1rgabfhnql6l4fx09mmj5d0vza924iczqf2blmn82l782b6qqi9v";
+ type = "gem";
+ };
+ version = "0.2.1";
+ };
+ turbo_dev_assets = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08yp7gpishjfj8b7d61hxs677288ycv6yg78a7hfzn631gxczipx";
+ type = "gem";
+ };
+ version = "0.0.2";
+ };
+ twitter = {
+ dependencies = ["addressable" "buftok" "equalizer" "http" "http-form_data" "http_parser.rb" "memoizable" "multipart-post" "naught" "simple_oauth"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0fjyz3viabz3xs5d9aad18zgdbhfwm51jsnzigc8kxk77p1x58n5";
+ type = "gem";
+ };
+ version = "6.2.0";
+ };
+ twitter-text = {
+ dependencies = ["unf"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
+ type = "gem";
+ };
+ version = "1.14.7";
+ };
+ typhoeus = {
+ dependencies = ["ethon"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0cni8b1idcp0dk8kybmxydadhfpaj3lbs99w5kjibv8bsmip2zi5";
+ type = "gem";
+ };
+ version = "1.3.1";
+ };
+ tzinfo = {
+ dependencies = ["thread_safe"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
+ type = "gem";
+ };
+ version = "1.2.5";
+ };
+ uglifier = {
+ dependencies = ["execjs"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1g203kly5wp4qlkc7371skyvyin6iinc8i0p5wrpiqgblqxxgcf1";
+ type = "gem";
+ };
+ version = "4.1.19";
+ };
+ unf = {
+ dependencies = ["unf_ext"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+ type = "gem";
+ };
+ version = "0.1.4";
+ };
+ unf_ext = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
+ type = "gem";
+ };
+ version = "0.0.7.5";
+ };
+ unicode-display_width = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0040bsdpcmvp8w31lqi2s9s4p4h031zv52401qidmh25cgyh4a57";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ unicorn = {
+ dependencies = ["kgio" "raindrops"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1qfhvzs4i6ja1s43j8p1kfbzm10n7a02ngki30a38y5m46a2qrak";
+ type = "gem";
+ };
+ version = "5.4.1";
+ };
+ unicorn-worker-killer = {
+ dependencies = ["get_process_mem" "unicorn"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva";
+ type = "gem";
+ };
+ version = "0.4.4";
+ };
+ uuid = {
+ dependencies = ["macaddr"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1mr405vg4ccnndkyf7pb49gp1fha8i6gj7iwq43nxkak41cwzh5f";
+ type = "gem";
+ };
+ version = "2.3.9";
+ };
+ valid = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0vxrgik9gxyh5j2w16nz5azjk0cbzmvv883hq9pvxm9anfbbj8d3";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ validate_email = {
+ dependencies = ["activemodel" "mail"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx";
+ type = "gem";
+ };
+ version = "0.1.6";
+ };
+ validate_url = {
+ dependencies = ["activemodel" "addressable"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1df4gch8dizimpbl185vfgw95yb8ffr6zwj6whzbxfil95c3f2qh";
+ type = "gem";
+ };
+ version = "1.0.2";
+ };
+ versionist = {
+ dependencies = ["activesupport" "railties" "yard"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1p8wizg6jml7gz1qiqk7d77hy0w5650g812jhgd0zzkwwdmzm38m";
+ type = "gem";
+ };
+ version = "1.7.0";
+ };
+ warden = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
+ type = "gem";
+ };
+ version = "1.2.8";
+ };
+ webfinger = {
+ dependencies = ["activesupport" "httpclient"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ webmock = {
+ dependencies = ["addressable" "crack" "hashdiff"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib";
+ type = "gem";
+ };
+ version = "3.4.2";
+ };
+ websocket-driver = {
+ dependencies = ["websocket-extensions"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1943442yllhldh9dbp374x2q39cxa49xrm28nb78b7mfbv3y195l";
+ type = "gem";
+ };
+ version = "0.6.5";
+ };
+ websocket-extensions = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
+ type = "gem";
+ };
+ version = "0.1.3";
+ };
+ will_paginate = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ihf15yaj8883ddhkxq7q60zrg3zfsvqaf5853gybhcg18zq8bn9";
+ type = "gem";
+ };
+ version = "3.1.6";
+ };
+ xpath = {
+ dependencies = ["nokogiri"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
+ type = "gem";
+ };
+ version = "3.2.0";
+ };
+ yard = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67";
+ type = "gem";
+ };
+ version = "0.9.16";
+ };
+}
diff --git a/flakes/diaspora/gemset_ldap.nix b/flakes/diaspora/gemset_ldap.nix
new file mode 100644
index 0000000..d7892f8
--- /dev/null
+++ b/flakes/diaspora/gemset_ldap.nix
@@ -0,0 +1,3056 @@
+{
+ actioncable = {
+ dependencies = ["actionpack" "nio4r" "websocket-driver"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "07r6hnh05db84yr9419mbhyzp20hr8yy9m50jxc2w91ghm2qnrrf";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ actionmailer = {
+ dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1s9xcqfx97q4yva2zc4qzb567mwzhry6v3x3zc318aqhcrz31g7c";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ actionpack = {
+ dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0vz2ms80nqw21c304g3w2vkbs80gadzhi3mcwwym7smxccr37kcd";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ actionview = {
+ dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1kfxlz9v7b47pdyy1whb4zzhvaj8h4sp1ajhbih2ax1hkldyg081";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ active_model_serializers = {
+ dependencies = ["activemodel" "concurrent-ruby"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19zr5pp84q4ya7mfrcanakjv86lv4wfmbcbbd2xnd4bkyprw5w7z";
+ type = "gem";
+ };
+ version = "0.9.7";
+ };
+ activejob = {
+ dependencies = ["activesupport" "globalid"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02lssq8ps98mfg20dyhcpd16f9c0v4zzy7gfbb6ksbs06wrrd4d2";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ activemodel = {
+ dependencies = ["activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10f8cpv4sl1w3m1qj8hl6sd2f1n7x91h45qaf57qr894ll22jgby";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ activerecord = {
+ dependencies = ["activemodel" "activesupport" "arel"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1iqkvxzx5bfp8rmlccww0cj1xr6iaxmn3hhbj1dv5j9c8mnm980x";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ activerecord-import = {
+ dependencies = ["activerecord"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1bxpbrcwc9k6khizwdikvfbhw9pcvs4sp3h4grpcww5k7bgpliz6";
+ type = "gem";
+ };
+ version = "0.27.0";
+ };
+ activesupport = {
+ dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08dm0mgmj31ggk7ib66wfagj4bgbr2jfl500bqb22x0szslz5lll";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ acts-as-taggable-on = {
+ dependencies = ["activerecord"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0hl52pjgfzy3acdwnbxfqy08m808vlv9dmsyp03d5x7x0y499kvl";
+ type = "gem";
+ };
+ version = "6.0.0";
+ };
+ acts_as_api = {
+ dependencies = ["activemodel" "activesupport" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06miad13nnfr2gslc203ahsbvj499s9lngxxvfizwp964vglygsc";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ addressable = {
+ dependencies = ["public_suffix"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
+ type = "gem";
+ };
+ version = "2.5.2";
+ };
+ aes_key_wrap = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0li86k0g812jkzrppb2fvqngvzp09nygywjpn81nx90s01wxqw07";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ arel = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl";
+ type = "gem";
+ };
+ version = "8.0.0";
+ };
+ asset_sync = {
+ dependencies = ["activemodel" "fog-core" "mime-types" "unf"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0mfz51g8rzk5h5fpdhfkycnm7y4dpfhx46wm7fygna7nd4w9ixdx";
+ type = "gem";
+ };
+ version = "2.5.0";
+ };
+ ast = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
+ type = "gem";
+ };
+ version = "2.4.0";
+ };
+ attr_required = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ autoprefixer-rails = {
+ dependencies = ["execjs"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08irrl1mz6skagr1lygq79l34lc0dghgva0v9q7nng76dpiglgj3";
+ type = "gem";
+ };
+ version = "8.6.5";
+ };
+ backports = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g";
+ type = "gem";
+ };
+ version = "3.11.4";
+ };
+ bcrypt = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
+ type = "gem";
+ };
+ version = "3.1.12";
+ };
+ bindata = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kz42nvxnk1j9cj0i8lcnhprcgdqsqska92g6l19ziadydfk2gqy";
+ type = "gem";
+ };
+ version = "2.4.4";
+ };
+ bootstrap-sass = {
+ dependencies = ["autoprefixer-rails" "sass"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1bc9bf6caddqn1rv15b5x56yczmbjzaxzl9lk5zbwrg1bfph4bx9";
+ type = "gem";
+ };
+ version = "3.3.7";
+ };
+ bootstrap-switch-rails = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zkwc1hfmihnm0n9lkva5zk0cmqpfcpnrwnmaniyvgx7rac2r14l";
+ type = "gem";
+ };
+ version = "3.3.3";
+ };
+ buftok = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1rzsy1vy50v55x9z0nivf23y0r9jkmq6i130xa75pq9i8qrn1mxs";
+ type = "gem";
+ };
+ version = "0.2.0";
+ };
+ builder = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
+ type = "gem";
+ };
+ version = "3.2.3";
+ };
+ byebug = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10znc1hjv8n686hhpl08f3m2g6h08a4b83nxblqwy2kqamkxcqf8";
+ type = "gem";
+ };
+ version = "10.0.2";
+ };
+ capybara = {
+ dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10zj8syak12xd1kqywr35bkr2hkdjq18kij54x1ys8c26h6j4d0m";
+ type = "gem";
+ };
+ version = "3.11.1";
+ };
+ carrierwave = {
+ dependencies = ["activemodel" "activesupport" "mime-types"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1k9kla5ncygm97vn33lsrs7ch5zy4qqhhvc8m3khm986yaqh75qs";
+ type = "gem";
+ };
+ version = "1.2.3";
+ };
+ celluloid = {
+ dependencies = ["celluloid-essentials" "celluloid-extras" "celluloid-fsm" "celluloid-pool" "celluloid-supervision" "timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10i29q7kkdlrhf5rg43xygdfm795a02vp28k2ca3nklmqna57qmg";
+ type = "gem";
+ };
+ version = "0.17.3";
+ };
+ celluloid-essentials = {
+ dependencies = ["timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1l4p3p73wjdj07ww124q0db5k1cyzggbndzmcb12xbsf2dnj121k";
+ type = "gem";
+ };
+ version = "0.20.5";
+ };
+ celluloid-extras = {
+ dependencies = ["timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "078agvnsfp78jv343kn5g1cz50147dk0q46blwh5r8lk6whag7ng";
+ type = "gem";
+ };
+ version = "0.20.5";
+ };
+ celluloid-fsm = {
+ dependencies = ["timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pmpi6h4abpkczp46rd6llk1mldpx19i9hll8mkxp3kxin9slivc";
+ type = "gem";
+ };
+ version = "0.20.5";
+ };
+ celluloid-io = {
+ dependencies = ["celluloid" "nio4r" "timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1frcpja7h9vcxsw7w7ff550x54rfx514fpv2n6kawbk1j4zrm314";
+ type = "gem";
+ };
+ version = "0.17.3";
+ };
+ celluloid-pool = {
+ dependencies = ["timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1bfr54ijl95bnhqlabhf5p4ff9n0y2sslc91f49jjn33n2zm755c";
+ type = "gem";
+ };
+ version = "0.20.5";
+ };
+ celluloid-supervision = {
+ dependencies = ["timers"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1b41gg1rsmms0m5mshy6h66y5rydl3nv6x9wf050ixfa1s2c8vzw";
+ type = "gem";
+ };
+ version = "0.20.6";
+ };
+ chunky_png = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
+ type = "gem";
+ };
+ version = "1.3.10";
+ };
+ cliver = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
+ type = "gem";
+ };
+ version = "0.3.2";
+ };
+ coderay = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
+ type = "gem";
+ };
+ version = "1.1.2";
+ };
+ compass = {
+ dependencies = ["chunky_png" "compass-core" "compass-import-once" "rb-fsevent" "rb-inotify" "sass"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lfi83w8z75czr0pf0rmj9hda22082h3cmvczl8r1ma9agf88y2c";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
+ compass-core = {
+ dependencies = ["multi_json" "sass"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yaspqwdmzwdcqviclbs3blq7an16pysrfzylz8q1gxmmd6bpj3a";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
+ compass-import-once = {
+ dependencies = ["sass"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq";
+ type = "gem";
+ };
+ version = "1.0.5";
+ };
+ compass-rails = {
+ dependencies = ["compass" "sass-rails" "sprockets"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02ydlbl1qb80myjv5xrpwzhmmj6qd80jf5izvpqhq2bikv84j9wr";
+ type = "gem";
+ };
+ version = "3.1.0";
+ };
+ concurrent-ruby = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18q9skp5pfq4jwbxzmw8q2rn4cpw6mf4561i2hsjcl1nxdag2jvb";
+ type = "gem";
+ };
+ version = "1.1.3";
+ };
+ configurate = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1m6cppb4jf7liwc3f5dvgn2v2nhp2jq8ixb9papaqz24f4s8dnd1";
+ type = "gem";
+ };
+ version = "0.3.1";
+ };
+ connection_pool = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
+ type = "gem";
+ };
+ version = "2.2.2";
+ };
+ coveralls = {
+ dependencies = ["json" "simplecov" "term-ansicolor" "thor" "tins"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "022kc16np6w4mv17hq3m9hhw9l8hjl78ld3fzqqx6337vwvwvwcg";
+ type = "gem";
+ };
+ version = "0.8.22";
+ };
+ crack = {
+ dependencies = ["safe_yaml"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
+ type = "gem";
+ };
+ version = "0.4.3";
+ };
+ crass = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ cucumber = {
+ dependencies = ["builder" "cucumber-core" "cucumber-expressions" "cucumber-wire" "diff-lcs" "gherkin" "multi_json" "multi_test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1s2brssrpal8hyhcgg974x3xyhpmvpwps5ypd9p8w2lg01l1pp3j";
+ type = "gem";
+ };
+ version = "3.1.2";
+ };
+ cucumber-api-steps = {
+ dependencies = ["cucumber" "jsonpath"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0fij6bgzshda68jp7kac0hs5n6xsmv49g8ynqhy6s3znc9d4qjbw";
+ type = "gem";
+ };
+ version = "0.14.0";
+ };
+ cucumber-core = {
+ dependencies = ["backports" "cucumber-tag_expressions" "gherkin"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c";
+ type = "gem";
+ };
+ version = "3.2.1";
+ };
+ cucumber-expressions = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw";
+ type = "gem";
+ };
+ version = "6.0.1";
+ };
+ cucumber-rails = {
+ dependencies = ["capybara" "cucumber" "mime-types" "nokogiri" "railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0pmlza6r2601k1i7v3z8gj4apdcq6qa830bzwkj1pnfjzn4z12n7";
+ type = "gem";
+ };
+ version = "1.6.0";
+ };
+ cucumber-tag_expressions = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc";
+ type = "gem";
+ };
+ version = "1.1.1";
+ };
+ cucumber-wire = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f";
+ type = "gem";
+ };
+ version = "0.0.1";
+ };
+ database_cleaner = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "05i0nf2aj70m61y3fspypdkc6d1qgibf5kav05a71b5gjz0k7y5x";
+ type = "gem";
+ };
+ version = "1.7.0";
+ };
+ devise = {
+ dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1vs8nibl568ghm6a7hbw6xgcv8zbm4gykprcxpnzi7bz5d4gvcjx";
+ type = "gem";
+ };
+ version = "4.5.0";
+ };
+ devise_lastseenable = {
+ dependencies = ["devise" "rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1h83h73qjh8fc7lmr089shky8lc3wm4xn653rjdbb0cddflvrx8y";
+ type = "gem";
+ };
+ version = "0.0.6";
+ };
+ diaspora-prosody-config = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1976ijqjf5jcq1jwr6vi0srjadhbqfa9y3nxyipzcv91pzskl2lp";
+ type = "gem";
+ };
+ version = "0.0.7";
+ };
+ diaspora_federation = {
+ dependencies = ["faraday" "faraday_middleware" "nokogiri" "typhoeus" "valid"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xxy6ahlhgyr00qkfmmq0h3nqm6gjkr9i6hsqr0nkb3l6qg0m0yc";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ diaspora_federation-json_schema = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0hfv4cq5wfdg86xmbp5y0h50b11326ymzks1yr9dvr4wa7di00hr";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ diaspora_federation-rails = {
+ dependencies = ["actionpack" "diaspora_federation"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1wrni7d9084v3pqd3sq8j532wx5ym6kmd959bw29bzwxc3zidd9h";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ diaspora_federation-test = {
+ dependencies = ["diaspora_federation" "fabrication" "uuid"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1b09y78pyl9kix8slbybnks2cbq0ac9wml31j2s6qwjixranjsm4";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ diff-lcs = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
+ type = "gem";
+ };
+ version = "1.3";
+ };
+ docile = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
+ type = "gem";
+ };
+ version = "1.3.1";
+ };
+ domain_name = {
+ dependencies = ["unf"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
+ type = "gem";
+ };
+ version = "0.5.20180417";
+ };
+ entypo-rails = {
+ dependencies = ["railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "124x0jszg6n0k2lcacd627ndlp1fv7cbgnv4scwy5s3czp0qwip6";
+ type = "gem";
+ };
+ version = "3.0.0";
+ };
+ equalizer = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
+ type = "gem";
+ };
+ version = "0.0.11";
+ };
+ erubi = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bws86na9k565raiz0kk61yy5pxxp0fmwyzpibdwjkq0xzx8q6q1";
+ type = "gem";
+ };
+ version = "1.7.1";
+ };
+ eslintrb = {
+ dependencies = ["execjs" "multi_json" "rake"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kx9sbs7pnl436zyczylnqqb1858hffy66fwdqfmcn18q8xdqwkx";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ et-orbi = {
+ dependencies = ["tzinfo"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
+ type = "gem";
+ };
+ version = "1.1.6";
+ };
+ ethon = {
+ dependencies = ["ffi"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0y70szwm2p0b9qfvpqrzjrgm3jz0ig65vlbfr6ppc3z0m1h7kv48";
+ type = "gem";
+ };
+ version = "0.11.0";
+ };
+ excon = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
+ type = "gem";
+ };
+ version = "0.62.0";
+ };
+ execjs = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
+ type = "gem";
+ };
+ version = "2.7.0";
+ };
+ eye = {
+ dependencies = ["celluloid" "celluloid-io" "kostya-sigar" "state_machines" "thor"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0gqrrrisy492m6sczq775dyg9sxkl926r8lkr6z33kfb4cnimfzk";
+ type = "gem";
+ };
+ version = "0.10.0";
+ };
+ fabrication = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0an28kjand4mjbkmnwd9fmgq3y5vf717zpmiijavar3sxqj52zri";
+ type = "gem";
+ };
+ version = "2.20.1";
+ };
+ factory_girl = {
+ dependencies = ["activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0cc60v28r7w1gp34p4amzdnq7cyip6qhffvxywsj3ypilyf8jqla";
+ type = "gem";
+ };
+ version = "4.8.0";
+ };
+ factory_girl_rails = {
+ dependencies = ["factory_girl" "railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0hw8qqp30vm4yf4a36r1r65wk78ihxmas7jg5fyl6fcf705z9fvv";
+ type = "gem";
+ };
+ version = "4.8.0";
+ };
+ faraday = {
+ dependencies = ["multipart-post"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "16hwxc8v0z6gkanckjhx0ffgqmzpc4ywz4dfhxpjlz2mbz8d5m52";
+ type = "gem";
+ };
+ version = "0.15.3";
+ };
+ faraday-cookie_jar = {
+ dependencies = ["faraday" "http-cookie"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1di4gx6446a6zdkrpj679m5k515i53wvb4yxcsqvy8d8zacxiiv6";
+ type = "gem";
+ };
+ version = "0.0.6";
+ };
+ faraday_middleware = {
+ dependencies = ["faraday"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1p7icfl28nvl8qqdsngryz1snqic9l8x6bk0dxd7ygn230y0k41d";
+ type = "gem";
+ };
+ version = "0.12.2";
+ };
+ ffi = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
+ type = "gem";
+ };
+ version = "1.9.25";
+ };
+ fixture_builder = {
+ dependencies = ["activerecord" "activesupport" "hashdiff"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1qlq0nyfhjvz09hm0jankl9bgs9672k31b3lmsfq8p135x3xs627";
+ type = "gem";
+ };
+ version = "0.5.2.rc3";
+ };
+ fog-aws = {
+ dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zprxg0spvkkri1jf40zg3rfr5h2gq6009d7l36lifpvhjn658cs";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ fog-core = {
+ dependencies = ["builder" "excon" "formatador" "mime-types"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fsama04wlxhv537bm4b7rr4zzn0mvisy87m3qzv6f0mhlrq3zp8";
+ type = "gem";
+ };
+ version = "2.1.2";
+ };
+ fog-json = {
+ dependencies = ["fog-core" "multi_json"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ fog-xml = {
+ dependencies = ["fog-core" "nokogiri"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
+ type = "gem";
+ };
+ version = "0.1.3";
+ };
+ formatador = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ fugit = {
+ dependencies = ["et-orbi" "raabro"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
+ type = "gem";
+ };
+ version = "1.1.6";
+ };
+ fuubar = {
+ dependencies = ["rspec-core" "ruby-progressbar"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1sqkr1nh49rlm86l3qyrgsdqavgqii4pnrjn7855z6dfavh3spxr";
+ type = "gem";
+ };
+ version = "2.3.2";
+ };
+ get_process_mem = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1bvfjdign16r0zwm2rlfrq0sk1licvmlgbnlpnyckniv5r7i080g";
+ type = "gem";
+ };
+ version = "0.2.3";
+ };
+ gherkin = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s";
+ type = "gem";
+ };
+ version = "5.1.0";
+ };
+ gitlab = {
+ dependencies = ["httparty" "terminal-table"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1nncjmk71ivjxmgkpv100yybry5c7ld6xjgi1b5zsfv4g3mz0v34";
+ type = "gem";
+ };
+ version = "4.7.0";
+ };
+ globalid = {
+ dependencies = ["activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02smrgdi11kziqi9zhnsy9i6yr2fnxrqlv3lllsvdjki3cd4is38";
+ type = "gem";
+ };
+ version = "0.4.1";
+ };
+ gon = {
+ dependencies = ["actionpack" "multi_json" "request_store"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "07sm7fd94pfscrbs4lyprs0das8s1yn32cw521ch738jaqb388xl";
+ type = "gem";
+ };
+ version = "6.2.1";
+ };
+ guard = {
+ dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
+ type = "gem";
+ };
+ version = "2.15.0";
+ };
+ guard-compat = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
+ type = "gem";
+ };
+ version = "1.2.1";
+ };
+ guard-rspec = {
+ dependencies = ["guard" "guard-compat" "rspec"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
+ type = "gem";
+ };
+ version = "4.7.3";
+ };
+ guard-rubocop = {
+ dependencies = ["guard" "rubocop"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1p97zkzasghl1md13rh57n3s2rr2kqly8w4vfn6vaj89igjpagdp";
+ type = "gem";
+ };
+ version = "1.3.0";
+ };
+ haml = {
+ dependencies = ["temple" "tilt"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac";
+ type = "gem";
+ };
+ version = "5.0.4";
+ };
+ haml_lint = {
+ dependencies = ["haml" "rainbow" "rake" "rubocop" "sysexits"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "125aj0j84nx5gqm42hfx5d8486higlra423ahgfpsdjwbp399rwv";
+ type = "gem";
+ };
+ version = "0.28.0";
+ };
+ hamlit = {
+ dependencies = ["temple" "thor" "tilt"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "14fsc208qsf46cflk23vs2fdw435dk65fwv55zhziciwn96ld8sf";
+ type = "gem";
+ };
+ version = "2.9.1";
+ };
+ handlebars_assets = {
+ dependencies = ["execjs" "sprockets" "tilt"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18pyksz4jb0n28acqxv14ahy8mkc9ldqbbn73gcj28m0l9wjzsca";
+ type = "gem";
+ };
+ version = "0.23.2";
+ };
+ hashdiff = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
+ type = "gem";
+ };
+ version = "0.3.7";
+ };
+ hashie = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1hh5lybf8hm7d7xs4xm8hxvm8xqrs2flc8fnwkrclaj746izw6xb";
+ type = "gem";
+ };
+ version = "3.5.7";
+ };
+ http = {
+ dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ http-cookie = {
+ dependencies = ["domain_name"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
+ http-form_data = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
+ type = "gem";
+ };
+ version = "2.1.1";
+ };
+ http_accept_language = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
+ type = "gem";
+ };
+ version = "2.1.1";
+ };
+ "http_parser.rb" = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
+ type = "gem";
+ };
+ version = "0.6.0";
+ };
+ httparty = {
+ dependencies = ["mime-types" "multi_xml"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xmm7pxmz3pblkdr76dg7qm5s60kpp3yvh46c2i0bn1dm0zgl730";
+ type = "gem";
+ };
+ version = "0.16.3";
+ };
+ httpclient = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
+ type = "gem";
+ };
+ version = "2.8.3";
+ };
+ i18n = {
+ dependencies = ["concurrent-ruby"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1gcp1m1p6dpasycfz2sj82ci9ggz7lsskz9c9q6gvfwxrl8y9dx7";
+ type = "gem";
+ };
+ version = "1.1.1";
+ };
+ i18n-inflector = {
+ dependencies = ["i18n"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "081jr7z947aqjfmpbfs10w9jxi205jwgk4mgd8jds1b4m4i8mc7g";
+ type = "gem";
+ };
+ version = "2.6.7";
+ };
+ i18n-inflector-rails = {
+ dependencies = ["actionpack" "i18n-inflector" "railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0c04jm657akp5n14syhcwnn3hnsvx7harvg97768bvf3f9a37hyk";
+ type = "gem";
+ };
+ version = "1.0.7";
+ };
+ ipaddress = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
+ type = "gem";
+ };
+ version = "0.8.3";
+ };
+ jaro_winkler = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0rr797nqz081bfk30m2apj5h24bg5d1jr1c8p3xwx4hbwsrbclah";
+ type = "gem";
+ };
+ version = "1.5.1";
+ };
+ jasmine = {
+ dependencies = ["jasmine-core" "phantomjs" "rack" "rake"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xfwf163wi5a9i0vlm564cqi6k30h15wnrwd15ph95jfa5516kv1";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ jasmine-core = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1b12bjfrxvb8mwjwlfyngykd80lz956glcpfz7rhhw7n75b2rdlv";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ jasmine-jquery-rails = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0cq5zd4ng5dlza45whd6sa7bzd60rlddk9760271mybdqyd96jlv";
+ type = "gem";
+ };
+ version = "2.0.3";
+ };
+ jquery-rails = {
+ dependencies = ["rails-dom-testing" "railties" "thor"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "17201sb8ddwy4yprizmqabq1kfx3m9c53p0yqngn63m07jjcpnh8";
+ type = "gem";
+ };
+ version = "4.3.3";
+ };
+ js-routes = {
+ dependencies = ["railties" "sprockets-rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "14yx3jrd4sgcwgj8yrrqdwl691mci1hcjqyyvp0v15jbzis1bclm";
+ type = "gem";
+ };
+ version = "1.4.4";
+ };
+ js_image_paths = {
+ dependencies = ["rails" "sprockets"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1d4kq8895i61a338ddk5f2k16l5lvmnkby9cdjwnmm2jddw4q7nf";
+ type = "gem";
+ };
+ version = "0.1.1";
+ };
+ json = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ json-jwt = {
+ dependencies = ["activesupport" "aes_key_wrap" "bindata"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "065k7vffdki73f4nz89lxi6wxmcw5dlf593831pgvlbralll6x3r";
+ type = "gem";
+ };
+ version = "1.9.4";
+ };
+ json-schema = {
+ dependencies = ["addressable"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5";
+ type = "gem";
+ };
+ version = "2.8.1";
+ };
+ json-schema-rspec = {
+ dependencies = ["json-schema" "rspec"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ip30yjzyigqqp9jwkrw9x9vrfpnmwi160zmk2vkrwlv9pby0wr9";
+ type = "gem";
+ };
+ version = "0.0.4";
+ };
+ jsonpath = {
+ dependencies = ["multi_json" "to_regexp"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06i41lwpj0dwvbxcpqrad5pjn2gmcv0srv0zw0ap7irwc21ifd7d";
+ type = "gem";
+ };
+ version = "0.9.6";
+ };
+ jwt = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ kgio = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1528pyj1szzzp3pgj05fzjd36qjrxm9yj2x5radc9p1z7vl67y50";
+ type = "gem";
+ };
+ version = "2.11.2";
+ };
+ kostya-sigar = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0z0pcykhjyrb7kq76jfcyxc1qq23gj5zmgy3miy87v85ydrxiqwb";
+ type = "gem";
+ };
+ version = "2.0.4";
+ };
+ leaflet-rails = {
+ dependencies = ["rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0dy7vhsjj1fhbbqm2s7pw57vgysd31qqi4y0hm91325hmvq75grb";
+ type = "gem";
+ };
+ version = "1.3.1";
+ };
+ listen = {
+ dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
+ type = "gem";
+ };
+ version = "3.1.5";
+ };
+ little-plugger = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
+ type = "gem";
+ };
+ version = "1.1.4";
+ };
+ logging = {
+ dependencies = ["little-plugger" "multi_json"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06j6iaj89h9jhkx1x3hlswqrfnqds8br05xb1qra69dpvbdmjcwn";
+ type = "gem";
+ };
+ version = "2.2.2";
+ };
+ logging-rails = {
+ dependencies = ["logging"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "022cnj9v177282kadd9ygzjpvlvbq9k5z0xhdbbmgypi05z4i239";
+ type = "gem";
+ };
+ version = "0.6.0";
+ };
+ loofah = {
+ dependencies = ["crass" "nokogiri"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
+ type = "gem";
+ };
+ version = "2.2.3";
+ };
+ lumberjack = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
+ type = "gem";
+ };
+ version = "1.0.13";
+ };
+ macaddr = {
+ dependencies = ["systemu"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1clii8mvhmh5lmnm95ljnjygyiyhdpja85c5vy487rhxn52scn0b";
+ type = "gem";
+ };
+ version = "1.7.1";
+ };
+ mail = {
+ dependencies = ["mini_mime"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
+ type = "gem";
+ };
+ version = "2.7.1";
+ };
+ markdown-it-html5-embed = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10n2z6j0whc6makxvcf2jhpwb8xrj4s6vyywijsaaxs0cn490a5c";
+ type = "gem";
+ };
+ version = "1.0.0";
+ };
+ markerb = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08sm3kafc3086l0a9is2cysk7j2k71mxy6ba295pwwzyvy734y76";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ memoizable = {
+ dependencies = ["thread_safe"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c";
+ type = "gem";
+ };
+ version = "0.4.2";
+ };
+ method_source = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
+ type = "gem";
+ };
+ version = "0.9.2";
+ };
+ mime-types = {
+ dependencies = ["mime-types-data"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
+ type = "gem";
+ };
+ version = "3.2.2";
+ };
+ mime-types-data = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
+ type = "gem";
+ };
+ version = "3.2018.0812";
+ };
+ mini_magick = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0sisx59mr5kydmxmx5vr8spmrxhrjkfqv35zhsqdlyzmp1z5px9p";
+ type = "gem";
+ };
+ version = "4.9.2";
+ };
+ mini_mime = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ mini_portile2 = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
+ type = "gem";
+ };
+ version = "2.3.0";
+ };
+ minitest = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
+ type = "gem";
+ };
+ version = "5.11.3";
+ };
+ mobile-fu = {
+ dependencies = ["rack-mobile-detect" "rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lxfcsd7dwwcpa1j2jbl382anmv6kksf5q1wqj14gc6jxxjq9s4i";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ multi_json = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
+ type = "gem";
+ };
+ version = "1.13.1";
+ };
+ multi_test = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd";
+ type = "gem";
+ };
+ version = "0.1.2";
+ };
+ multi_xml = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
+ type = "gem";
+ };
+ version = "0.6.0";
+ };
+ multipart-post = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
+ type = "gem";
+ };
+ version = "2.0.0";
+ };
+ mysql2 = {
+ groups = ["mysql"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1a2kdjgzwh1p2rkcmxaawy6ibi32b04wbdd5d4wr8i342pq76di4";
+ type = "gem";
+ };
+ version = "0.5.2";
+ };
+ naught = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1wwjx35zgbc0nplp8a866iafk4zsrbhwwz4pav5gydr2wm26nksg";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ nenv = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
+ type = "gem";
+ };
+ version = "0.3.0";
+ };
+ net-ldap = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "016igqz81a8zcwqzp5bbhryqmb2skmyf57ij3nb5z8sxwhw22jgh";
+ type = "gem";
+ };
+ version = "0.16.1";
+ };
+ nio4r = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
+ type = "gem";
+ };
+ version = "2.3.1";
+ };
+ nokogiri = {
+ dependencies = ["mini_portile2"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
+ type = "gem";
+ };
+ version = "1.8.5";
+ };
+ notiffany = {
+ dependencies = ["nenv" "shellany"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
+ type = "gem";
+ };
+ version = "0.1.1";
+ };
+ oauth = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
+ type = "gem";
+ };
+ version = "0.5.4";
+ };
+ oauth2 = {
+ dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0av6nlb5y2sm6m8fx669ywrqa9858yqaqfqzny75nqp3anag89qh";
+ type = "gem";
+ };
+ version = "1.4.1";
+ };
+ octokit = {
+ dependencies = ["sawyer"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6";
+ type = "gem";
+ };
+ version = "4.13.0";
+ };
+ omniauth = {
+ dependencies = ["hashie" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1msqr4qq7mfdvl3rg89529isrv595hvjpj2gi0say4b8nwqfggmg";
+ type = "gem";
+ };
+ version = "1.8.1";
+ };
+ omniauth-oauth = {
+ dependencies = ["oauth" "omniauth"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ omniauth-oauth2 = {
+ dependencies = ["oauth2" "omniauth"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kscjf1y0lnggsl4z3w5bwllqshqjlsl5kmcya5haydajdnzvdjr";
+ type = "gem";
+ };
+ version = "1.5.0";
+ };
+ omniauth-tumblr = {
+ dependencies = ["multi_json" "omniauth-oauth"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10ncmfym4l6k6aqp402g7mqxahbggcj5xkpsjxgngs746s82y97w";
+ type = "gem";
+ };
+ version = "1.2";
+ };
+ omniauth-twitter = {
+ dependencies = ["omniauth-oauth" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0r5j65hkpgzhvvbs90id3nfsjgsad6ymzggbm7zlaxvnrmvnrk65";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ omniauth-wordpress = {
+ dependencies = ["omniauth-oauth2"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "008zx4zwrbzyvlgv6hy68k1d05zskiwvcgwvxxbxhbl0mvlmh303";
+ type = "gem";
+ };
+ version = "0.2.2";
+ };
+ open_graph_reader = {
+ dependencies = ["faraday" "nokogiri"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0af4yldyb0d8zglw73s13pyn0g90gs4m5zf7bwy8r4kym9zbvc21";
+ type = "gem";
+ };
+ version = "0.6.2";
+ };
+ openid_connect = {
+ dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1r13bv18nyvw0g1nw3fzffvv2si99zj24w0k5zgawf4q6nn5f7vd";
+ type = "gem";
+ };
+ version = "1.1.6";
+ };
+ orm_adapter = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+ parallel = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67";
+ type = "gem";
+ };
+ version = "1.12.1";
+ };
+ parser = {
+ dependencies = ["ast"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zjk0w1kjj3xk8ymy1430aa4gg0k8ckphfj88br6il4pm83f0n1f";
+ type = "gem";
+ };
+ version = "2.5.3.0";
+ };
+ pg = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb";
+ type = "gem";
+ };
+ version = "1.1.3";
+ };
+ phantomjs = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0y8pbbyq9dirxb7igkb2s5limz2895qmr41c09fjhx6k6fxcz4mk";
+ type = "gem";
+ };
+ version = "2.1.1.0";
+ };
+ poltergeist = {
+ dependencies = ["capybara" "cliver" "websocket-driver"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0il80p97psmhs6scl0grq031gv7kws4ylvvd6zyr8xv91qadga95";
+ type = "gem";
+ };
+ version = "1.18.1";
+ };
+ powerpack = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv";
+ type = "gem";
+ };
+ version = "0.1.2";
+ };
+ pronto = {
+ dependencies = ["gitlab" "httparty" "octokit" "rainbow" "rugged" "thor"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "13xbg1pm3kz5zbzxad5qgqnkzkp3ddajj7wxx16aqbfr7rqggvhz";
+ type = "gem";
+ };
+ version = "0.9.5";
+ };
+ pronto-eslint = {
+ dependencies = ["eslintrb" "pronto"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1cxyx6mlcdgv4ykliaizkx9cps68xf7qvy8lzxmv7pcqzkxaq7xc";
+ type = "gem";
+ };
+ version = "0.9.1";
+ };
+ pronto-haml = {
+ dependencies = ["haml_lint" "pronto"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "116iln1whwiqy55f86q33lnnic0awnqm415xvxwnhwlagcbwmnkg";
+ type = "gem";
+ };
+ version = "0.9.0";
+ };
+ pronto-rubocop = {
+ dependencies = ["pronto" "rubocop"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bcm34qlpp02wf69why5lpi5p53h5r4fq36f4b1fwi621fwzlgsy";
+ type = "gem";
+ };
+ version = "0.9.1";
+ };
+ pronto-scss = {
+ dependencies = ["pronto" "scss_lint"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kgaqd6l2w3brdsp5231fpfr6fwajciz2hdr925l1zhh6ni1y2za";
+ type = "gem";
+ };
+ version = "0.9.1";
+ };
+ pry = {
+ dependencies = ["coderay" "method_source"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
+ type = "gem";
+ };
+ version = "0.12.2";
+ };
+ pry-byebug = {
+ dependencies = ["byebug" "pry"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0y2758593i2ij0nhmv0j1pbdfx2cgi52ns6wkij0frgnk2lf650g";
+ type = "gem";
+ };
+ version = "3.6.0";
+ };
+ public_suffix = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
+ type = "gem";
+ };
+ version = "3.0.3";
+ };
+ raabro = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
+ type = "gem";
+ };
+ version = "1.1.6";
+ };
+ rack = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
+ type = "gem";
+ };
+ version = "2.0.6";
+ };
+ rack-cors = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1j27vy1bmhbqcyzhxg8d07qassmax769xjalfwcwz6qfiq8cf013";
+ type = "gem";
+ };
+ version = "1.0.2";
+ };
+ rack-google-analytics = {
+ dependencies = ["actionpack" "activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "09pv0z5dhjjrlhi9qj5qy48hi66f7iix337qrapg7mvwwz6czcvj";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ rack-mobile-detect = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bagli6ldhkpd1yym775sxy7w5n4jds6gbcjm3gmcl37vggvm8a5";
+ type = "gem";
+ };
+ version = "0.4.0";
+ };
+ rack-oauth2 = {
+ dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kmxj9hbjhhcs3yyb433s82hkpmzb536m0mwfadjiaisganx1cii";
+ type = "gem";
+ };
+ version = "1.9.3";
+ };
+ rack-piwik = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0raxrckapqh693lpid0cnx1j1v2i3mz5cyssg7grgrilgrn9318z";
+ type = "gem";
+ };
+ version = "0.3.0";
+ };
+ rack-protection = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ylx74ravz7nvnyygq0nk3v86qdzrmqxpwpayhppyy50l72rcajq";
+ type = "gem";
+ };
+ version = "2.0.4";
+ };
+ rack-rewrite = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0milw71dv96wnc6i48vbzypws51dgf415kkp8c4air0mkdhpj838";
+ type = "gem";
+ };
+ version = "1.5.1";
+ };
+ rack-ssl = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0c21xqkjyl10fngq6dy8082vmn2png8cwkiyzv83ymixq5cx7ygp";
+ type = "gem";
+ };
+ version = "1.4.1";
+ };
+ rack-test = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ rails = {
+ dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lb07cbwgm371zyn9i6fyj9q8rmv89lacmyzrfvzxqqx2n3ilc5q";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ rails-assets-autosize = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0hr72mfprb9678lf7dj9lh801lm7p98nzkrnrz764sy9lmbpzcib";
+ type = "gem";
+ };
+ version = "4.0.2";
+ };
+ rails-assets-backbone = {
+ dependencies = ["rails-assets-underscore"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0zjgwhgfmg1jyyds7zfjp6g4bz8vw56qvhlrpj943wcqpdxm93id";
+ type = "gem";
+ };
+ version = "1.3.3";
+ };
+ rails-assets-blueimp-gallery = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "18b7xvvkdnd39xlbkyw46i86w3wzj349s8iv5wdiypa5qdcql8mq";
+ type = "gem";
+ };
+ version = "2.33.0";
+ };
+ rails-assets-bootstrap = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0x4i11132qcmghmqb061iq47yksrr7i0la5hzzdm38dxybh87x5v";
+ type = "gem";
+ };
+ version = "3.3.7";
+ };
+ rails-assets-bootstrap-markdown = {
+ dependencies = ["rails-assets-bootstrap"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1nxirs9wx5jxrjmxjwvsqlf2rsypjn3ajg7fs28c4ib7wwpabwj3";
+ type = "gem";
+ };
+ version = "2.10.0";
+ };
+ rails-assets-corejs-typeahead = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1p5i6afd156rakrin99c2ryaz3zykx21ir6y10l34jnw03rikcfg";
+ type = "gem";
+ };
+ version = "1.2.1";
+ };
+ rails-assets-diaspora_jsxc = {
+ dependencies = ["rails-assets-emojione" "rails-assets-favico.js" "rails-assets-jquery-colorbox" "rails-assets-jquery-fullscreen-plugin" "rails-assets-jquery.slimscroll" "rails-assets-jquery.ui"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "07vqdj0l8fsj4fd2sschba2jgfbimyfad56009ldzlcvb6ml5nhi";
+ type = "gem";
+ };
+ version = "0.1.5.develop.7";
+ };
+ rails-assets-emojione = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1j29vbsf6v9ikiqlmnfgzxys4xsa1glvmfky8id5xfyymnjx2c52";
+ type = "gem";
+ };
+ version = "2.0.1";
+ };
+ "rails-assets-favico.js" = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "19yndhljmqlvarf49h5v71zq0p0ngvspjr2v0m6lac0q9ni7r5bv";
+ type = "gem";
+ };
+ version = "0.3.10";
+ };
+ rails-assets-fine-uploader = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1vxj78x2vvlchpapxpaawysc9wn8alzdd3gxhwfwy11xv8ka9mdv";
+ type = "gem";
+ };
+ version = "5.13.0";
+ };
+ rails-assets-highlightjs = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0spmb0gkfs13fmljjv1n53r53q69fhb6r573ndbxnhgb3izqgnqp";
+ type = "gem";
+ };
+ version = "9.12.0";
+ };
+ rails-assets-jasmine = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1n6yixrl9cgq5kckay75b44p878s1kqi69mhgyw99w8dsq8i2vy5";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ rails-assets-jasmine-ajax = {
+ dependencies = ["rails-assets-jasmine"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0l8z0p75x1yzk1l1ryfvdlvq8yq4w2xngp4icz478axd5jcqx6kg";
+ type = "gem";
+ };
+ version = "3.4.0";
+ };
+ rails-assets-jquery = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1wcaappk12w300733lrqb571cir9nw35d9q6d2i52wwdvhv2fx2y";
+ type = "gem";
+ };
+ version = "3.3.1";
+ };
+ rails-assets-jquery-colorbox = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "19ws3r1zfviwnfr9s0jh6iqss50iwqkf4a78zhrk0p3bb4lvmmsp";
+ type = "gem";
+ };
+ version = "1.6.4";
+ };
+ rails-assets-jquery-fullscreen-plugin = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0ldvq4s15lap9p6w7d1yw6dajn2gh6p75dbkp79p0d8ylzapsd58";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+ rails-assets-jquery-placeholder = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0h17gjazc27pj4cm2ig232ww4d4ppq9bcginwzjss95pl63richi";
+ type = "gem";
+ };
+ version = "2.3.1";
+ };
+ rails-assets-jquery-textchange = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0rsw3cn9a5njv80zy53339kmrmv60b8fqcrr7bacapbagb2rd4dj";
+ type = "gem";
+ };
+ version = "0.2.3";
+ };
+ "rails-assets-jquery.are-you-sure" = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0nj04aqh9jpcg57xbjxpm2vn7mkd5clnpma907515a1nxy40bym0";
+ type = "gem";
+ };
+ version = "1.9.0";
+ };
+ "rails-assets-jquery.slimscroll" = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1rymmd2rxy1vjjj70v88abmdlfs55276rs3rksj300dgirnnj998";
+ type = "gem";
+ };
+ version = "1.3.8";
+ };
+ "rails-assets-jquery.ui" = {
+ dependencies = ["rails-assets-jquery"];
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0xc9kfb29hi441irj49b7aawxkddk1dxzy938rpqv9ylpsj7knaa";
+ type = "gem";
+ };
+ version = "1.11.4";
+ };
+ rails-assets-markdown-it = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0fxx7ldszsdqr5ry21bnxmv33byz7abpk9lcp100q5cqsjx091r9";
+ type = "gem";
+ };
+ version = "8.4.2";
+ };
+ rails-assets-markdown-it--markdown-it-for-inline = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0fznv2x7ndadr3wb4dzhh86bpcpwz8f4d8rfhz4sfbqlai40j3jl";
+ type = "gem";
+ };
+ version = "0.1.1";
+ };
+ rails-assets-markdown-it-diaspora-mention = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0asggm7wgmdll8x94291p2w6icmp2izi914dlh3b7vb7dpjq3jig";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ rails-assets-markdown-it-hashtag = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0dr8fwaxgkfqm7z4rl4jdym0i1ycqw1sgkxshkd9k0849ry12cdk";
+ type = "gem";
+ };
+ version = "0.4.0";
+ };
+ rails-assets-markdown-it-sanitizer = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0fkpffh83fc257zkzaia93j4hw2baz90lg10s5yxsxww06q5dn36";
+ type = "gem";
+ };
+ version = "0.4.3";
+ };
+ rails-assets-markdown-it-sub = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "08hjij5fqvhvg7s27n4g8qqsks974g3kc5k7xl2qmh41k7f4hcrk";
+ type = "gem";
+ };
+ version = "1.0.0";
+ };
+ rails-assets-markdown-it-sup = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "17nnnvky7zy0yiwwl6dm8ibbkyvvf63xfp3snch4dzmras05lmig";
+ type = "gem";
+ };
+ version = "1.0.0";
+ };
+ rails-assets-underscore = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "1ccnzj7aqrvngcs915y290pijryqmjygimdwlrykpyj8vwzifdnc";
+ type = "gem";
+ };
+ version = "1.9.1";
+ };
+ rails-assets-utatti-perfect-scrollbar = {
+ platforms = [];
+ source = {
+ remotes = ["https://rails-assets.org"];
+ sha256 = "0m8syfv8p5bnwm8nrba6mpjnhrd29ffwzi6awhiw537jqw42b12v";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ rails-controller-testing = {
+ dependencies = ["actionpack" "actionview" "activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "16kdkk73mhhs73iz3i1i0ryjm84dadiyh817b3nh8acdi490jyhy";
+ type = "gem";
+ };
+ version = "1.0.2";
+ };
+ rails-dom-testing = {
+ dependencies = ["activesupport" "nokogiri"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
+ type = "gem";
+ };
+ version = "2.0.3";
+ };
+ rails-html-sanitizer = {
+ dependencies = ["loofah"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ rails-i18n = {
+ dependencies = ["i18n" "railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "05lkhc737a9dw0hd5ljmja0yp4cw39r3200s1r0n4bs7z1g3ka7l";
+ type = "gem";
+ };
+ version = "5.1.2";
+ };
+ rails-timeago = {
+ dependencies = ["actionpack" "activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01x1vs9hni9wn8dc4fmyqzkrn651chzsi2mhmk0pxdrfx9md0lxv";
+ type = "gem";
+ };
+ version = "2.16.0";
+ };
+ railties = {
+ dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ycy2gdaj0px1vfaghskvl6qkczwaigrli2zxn54w7zn1z29faj8";
+ type = "gem";
+ };
+ version = "5.1.6";
+ };
+ rainbow = {
+ dependencies = ["rake"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08w2ghc5nv0kcq5b257h7dwjzjz1pqcavajfdx2xjyxqsvh2y34w";
+ type = "gem";
+ };
+ version = "2.2.2";
+ };
+ raindrops = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1qpbd9jif40c53fz2r0l8khfl016y8s8bkx37ibcaafclbl3xygp";
+ type = "gem";
+ };
+ version = "0.19.0";
+ };
+ rake = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg";
+ type = "gem";
+ };
+ version = "12.3.1";
+ };
+ rb-fsevent = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
+ type = "gem";
+ };
+ version = "0.10.3";
+ };
+ rb-inotify = {
+ dependencies = ["ffi"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
+ type = "gem";
+ };
+ version = "0.9.10";
+ };
+ redcarpet = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7";
+ type = "gem";
+ };
+ version = "3.4.0";
+ };
+ redis = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0i415x8gi0c5vsiy6ikvx5js6fhc4x80a5lqv8iidy2iymd20irv";
+ type = "gem";
+ };
+ version = "3.3.5";
+ };
+ regexp_parser = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18g5jyg3blsdrz3mc8d87bms6qqn6gcdh1nvdhvgbjdpk9pw21dq";
+ type = "gem";
+ };
+ version = "1.3.0";
+ };
+ request_store = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
+ type = "gem";
+ };
+ version = "1.4.1";
+ };
+ responders = {
+ dependencies = ["actionpack" "railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1rhdyyvvm26f2l3fgwdp6xasfl2y0whwgy766bhdwz697mf78zfn";
+ type = "gem";
+ };
+ version = "2.4.0";
+ };
+ rspec = {
+ dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
+ type = "gem";
+ };
+ version = "3.8.0";
+ };
+ rspec-core = {
+ dependencies = ["rspec-support"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
+ type = "gem";
+ };
+ version = "3.8.0";
+ };
+ rspec-expectations = {
+ dependencies = ["diff-lcs" "rspec-support"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
+ type = "gem";
+ };
+ version = "3.8.2";
+ };
+ rspec-json_expectations = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0l3dhvkb95zwyg72wz33azxigc9cisqgg3z16ksns1sx0b93nnbn";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ rspec-mocks = {
+ dependencies = ["diff-lcs" "rspec-support"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
+ type = "gem";
+ };
+ version = "3.8.0";
+ };
+ rspec-rails = {
+ dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0sqj5da2kc937j5jb18jcf0hrmmzwgj7pk62j0q3qndhc2kvx88p";
+ type = "gem";
+ };
+ version = "3.8.1";
+ };
+ rspec-support = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
+ type = "gem";
+ };
+ version = "3.8.0";
+ };
+ rubocop = {
+ dependencies = ["jaro_winkler" "parallel" "parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ivk049z3mp12nc6v1wn35bsq1g7nz1i2r4xwzqf0v25hm2v7n1i";
+ type = "gem";
+ };
+ version = "0.60.0";
+ };
+ ruby-oembed = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1kw4aplb3m13z3kchhb79wf87qb3prn1m99s6vl5cyp0xqwyymv0";
+ type = "gem";
+ };
+ version = "0.12.0";
+ };
+ ruby-progressbar = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk";
+ type = "gem";
+ };
+ version = "1.10.0";
+ };
+ ruby_dep = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
+ type = "gem";
+ };
+ version = "1.5.0";
+ };
+ rubyzip = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1n1lb2sdwh9h27y244hxzg1lrxxg2m53pk1vq7p33bna003qkyrj";
+ type = "gem";
+ };
+ version = "1.2.2";
+ };
+ rugged = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1jv4nw9hvlxp8hhhlllrfcznki82i50fp1sj65zsjllfl2bvz8x6";
+ type = "gem";
+ };
+ version = "0.27.5";
+ };
+ safe_yaml = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ sass = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kfpcwh8dgw4lc81qglkvjl73689jy3g7196zkxm4fpskg1p5lkw";
+ type = "gem";
+ };
+ version = "3.4.25";
+ };
+ sass-rails = {
+ dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s";
+ type = "gem";
+ };
+ version = "5.0.7";
+ };
+ sawyer = {
+ dependencies = ["addressable" "faraday"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0sv1463r7bqzvx4drqdmd36m7rrv6sf1v3c6vswpnq3k6vdw2dvd";
+ type = "gem";
+ };
+ version = "0.8.1";
+ };
+ scss_lint = {
+ dependencies = ["rake" "sass"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "11rl8kj32p34mqlkhxvlwfrwl8gdl0iha8q9xsrr3sjxjagzv8yp";
+ type = "gem";
+ };
+ version = "0.55.0";
+ };
+ secure_headers = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "17cxci8jyvlgssix0cy7kbm5m2h7s8ym9caj8nilrbd21jis9pc5";
+ type = "gem";
+ };
+ version = "6.0.0";
+ };
+ shellany = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
+ type = "gem";
+ };
+ version = "0.0.1";
+ };
+ shoulda-matchers = {
+ dependencies = ["activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a";
+ type = "gem";
+ };
+ version = "3.1.2";
+ };
+ sidekiq = {
+ dependencies = ["connection_pool" "rack-protection" "redis"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zyf9y3rvzizbwh68i2g1lzd40lalrdc4iyjmaa74gnfwsf92i26";
+ type = "gem";
+ };
+ version = "5.2.3";
+ };
+ sidekiq-cron = {
+ dependencies = ["fugit" "sidekiq"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1aliswahmpxn1ib2brn4126gk97ac3zdnwr71mn8vzbr3vdd7fl0";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ simple_captcha2 = {
+ dependencies = ["rails"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0vdjydym8sjpa8c1q0n2hanj3n9vzi4ycdw2p6bbm6qqmm1f3fq3";
+ type = "gem";
+ };
+ version = "0.4.3";
+ };
+ simple_oauth = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0dw9ii6m7wckml100xhjc6vxpjcry174lbi9jz5v7ibjr3i94y8l";
+ type = "gem";
+ };
+ version = "0.3.1";
+ };
+ simplecov = {
+ dependencies = ["docile" "json" "simplecov-html"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
+ type = "gem";
+ };
+ version = "0.16.1";
+ };
+ simplecov-html = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
+ type = "gem";
+ };
+ version = "0.10.2";
+ };
+ sinon-rails = {
+ dependencies = ["railties"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1b7996hb8vfky29b0zcql90x8i6vhdg2zy9nfzmhh820gjv3kggb";
+ type = "gem";
+ };
+ version = "1.15.0";
+ };
+ spring = {
+ dependencies = ["activesupport"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "168yz9c1fv21wc5i8q7n43b9nk33ivg3ws1fn6x0afgryz3ssx75";
+ type = "gem";
+ };
+ version = "2.0.2";
+ };
+ spring-commands-cucumber = {
+ dependencies = ["spring"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0mw81gvms2svn4k4pc6ly7smkmf0j9r2xbf0d38vygbyhiwd1c9a";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ spring-commands-rspec = {
+ dependencies = ["spring"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ sprockets = {
+ dependencies = ["concurrent-ruby" "rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
+ type = "gem";
+ };
+ version = "3.7.2";
+ };
+ sprockets-rails = {
+ dependencies = ["actionpack" "activesupport" "sprockets"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
+ type = "gem";
+ };
+ version = "3.2.1";
+ };
+ state_machines = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+ string-direction = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0iyddwmkj425c6xbn5pmlr2yzwcq4snzlan7rky5b1yp2pvf70jj";
+ type = "gem";
+ };
+ version = "1.2.1";
+ };
+ swd = {
+ dependencies = ["activesupport" "attr_required" "httpclient"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1s2vjb6f13za7p1iycl2p73d3p202xa6xny9fjrp8ynwsqix7lyd";
+ type = "gem";
+ };
+ version = "1.1.2";
+ };
+ sysexits = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0qjng6pllznmprzx8vb0zg0c86hdrkyjs615q41s9fjpmv2430jr";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ systemu = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1";
+ type = "gem";
+ };
+ version = "2.6.5";
+ };
+ temple = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00nxf610nzi4n1i2lkby43nrnarvl89fcl6lg19406msr0k3ycmq";
+ type = "gem";
+ };
+ version = "0.8.0";
+ };
+ term-ansicolor = {
+ dependencies = ["tins"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "079hbagd9mk0839rkajsdrbzkn992gj8ah2n45qd64v25ml27i6d";
+ type = "gem";
+ };
+ version = "1.7.0";
+ };
+ terminal-table = {
+ dependencies = ["unicode-display_width"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
+ type = "gem";
+ };
+ version = "1.8.0";
+ };
+ thor = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns";
+ type = "gem";
+ };
+ version = "0.19.4";
+ };
+ thread_safe = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+ type = "gem";
+ };
+ version = "0.3.6";
+ };
+ tilt = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
+ type = "gem";
+ };
+ version = "2.0.8";
+ };
+ timecop = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp";
+ type = "gem";
+ };
+ version = "0.9.1";
+ };
+ timers = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "04zbs9wyzajn7g9xfgg2zqz5kzf0qa7jgh4hgry4pfcxfmlnwdwx";
+ type = "gem";
+ };
+ version = "4.2.0";
+ };
+ tins = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pqj45n216zrz7yckdbdknlmhh187iqzx8fp76y2h0jrgqjfkxmj";
+ type = "gem";
+ };
+ version = "1.20.2";
+ };
+ to_regexp = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1rgabfhnql6l4fx09mmj5d0vza924iczqf2blmn82l782b6qqi9v";
+ type = "gem";
+ };
+ version = "0.2.1";
+ };
+ turbo_dev_assets = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08yp7gpishjfj8b7d61hxs677288ycv6yg78a7hfzn631gxczipx";
+ type = "gem";
+ };
+ version = "0.0.2";
+ };
+ twitter = {
+ dependencies = ["addressable" "buftok" "equalizer" "http" "http-form_data" "http_parser.rb" "memoizable" "multipart-post" "naught" "simple_oauth"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0fjyz3viabz3xs5d9aad18zgdbhfwm51jsnzigc8kxk77p1x58n5";
+ type = "gem";
+ };
+ version = "6.2.0";
+ };
+ twitter-text = {
+ dependencies = ["unf"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
+ type = "gem";
+ };
+ version = "1.14.7";
+ };
+ typhoeus = {
+ dependencies = ["ethon"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0cni8b1idcp0dk8kybmxydadhfpaj3lbs99w5kjibv8bsmip2zi5";
+ type = "gem";
+ };
+ version = "1.3.1";
+ };
+ tzinfo = {
+ dependencies = ["thread_safe"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
+ type = "gem";
+ };
+ version = "1.2.5";
+ };
+ uglifier = {
+ dependencies = ["execjs"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1g203kly5wp4qlkc7371skyvyin6iinc8i0p5wrpiqgblqxxgcf1";
+ type = "gem";
+ };
+ version = "4.1.19";
+ };
+ unf = {
+ dependencies = ["unf_ext"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+ type = "gem";
+ };
+ version = "0.1.4";
+ };
+ unf_ext = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
+ type = "gem";
+ };
+ version = "0.0.7.5";
+ };
+ unicode-display_width = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0040bsdpcmvp8w31lqi2s9s4p4h031zv52401qidmh25cgyh4a57";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ unicorn = {
+ dependencies = ["kgio" "raindrops"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1qfhvzs4i6ja1s43j8p1kfbzm10n7a02ngki30a38y5m46a2qrak";
+ type = "gem";
+ };
+ version = "5.4.1";
+ };
+ unicorn-worker-killer = {
+ dependencies = ["get_process_mem" "unicorn"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva";
+ type = "gem";
+ };
+ version = "0.4.4";
+ };
+ uuid = {
+ dependencies = ["macaddr"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1mr405vg4ccnndkyf7pb49gp1fha8i6gj7iwq43nxkak41cwzh5f";
+ type = "gem";
+ };
+ version = "2.3.9";
+ };
+ valid = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0vxrgik9gxyh5j2w16nz5azjk0cbzmvv883hq9pvxm9anfbbj8d3";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ validate_email = {
+ dependencies = ["activemodel" "mail"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx";
+ type = "gem";
+ };
+ version = "0.1.6";
+ };
+ validate_url = {
+ dependencies = ["activemodel" "addressable"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1df4gch8dizimpbl185vfgw95yb8ffr6zwj6whzbxfil95c3f2qh";
+ type = "gem";
+ };
+ version = "1.0.2";
+ };
+ versionist = {
+ dependencies = ["activesupport" "railties" "yard"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1p8wizg6jml7gz1qiqk7d77hy0w5650g812jhgd0zzkwwdmzm38m";
+ type = "gem";
+ };
+ version = "1.7.0";
+ };
+ warden = {
+ dependencies = ["rack"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
+ type = "gem";
+ };
+ version = "1.2.8";
+ };
+ webfinger = {
+ dependencies = ["activesupport" "httpclient"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ webmock = {
+ dependencies = ["addressable" "crack" "hashdiff"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib";
+ type = "gem";
+ };
+ version = "3.4.2";
+ };
+ websocket-driver = {
+ dependencies = ["websocket-extensions"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1943442yllhldh9dbp374x2q39cxa49xrm28nb78b7mfbv3y195l";
+ type = "gem";
+ };
+ version = "0.6.5";
+ };
+ websocket-extensions = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
+ type = "gem";
+ };
+ version = "0.1.3";
+ };
+ will_paginate = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ihf15yaj8883ddhkxq7q60zrg3zfsvqaf5853gybhcg18zq8bn9";
+ type = "gem";
+ };
+ version = "3.1.6";
+ };
+ xpath = {
+ dependencies = ["nokogiri"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
+ type = "gem";
+ };
+ version = "3.2.0";
+ };
+ yard = {
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67";
+ type = "gem";
+ };
+ version = "0.9.16";
+ };
+}
diff --git a/flakes/diaspora/ldap.patch b/flakes/diaspora/ldap.patch
new file mode 100644
index 0000000..3d4f785
--- /dev/null
+++ b/flakes/diaspora/ldap.patch
@@ -0,0 +1,256 @@
+commit 936a14e225037aca4cdeac11c843c7985e636c88
+Author: Ismaël Bouya
+Date: Mon Jul 24 19:58:24 2017 +0200
+
+ Add LDAP to diaspora
+
+diff --git a/Gemfile b/Gemfile
+index 414b0138d..2a934e9c9 100644
+--- a/Gemfile
++++ b/Gemfile
+@@ -217,6 +217,9 @@ gem "thor", "0.19.1"
+
+ # gem "therubyracer", :platform => :ruby
+
++# LDAP
++gem 'net-ldap', '~> 0.16'
++
+ group :production do # we don"t install these on travis to speed up test runs
+ # Analytics
+
+diff --git a/Gemfile.lock b/Gemfile.lock
+index 84f8172e4..cdbf19fcd 100644
+--- a/Gemfile.lock 2019-01-13 19:55:52.538561762 +0100
++++ b/Gemfile.lock 2019-01-13 19:58:11.087099067 +0100
+@@ -398,6 +398,7 @@
+ mysql2 (0.5.2)
+ naught (1.1.0)
+ nenv (0.3.0)
++ net-ldap (0.16.1)
+ nio4r (2.3.1)
+ nokogiri (1.8.5)
+ mini_portile2 (~> 2.3.0)
+@@ -820,6 +821,7 @@
+ minitest
+ mobile-fu (= 1.4.0)
+ mysql2 (= 0.5.2)
++ net-ldap (~> 0.16)
+ nokogiri (= 1.8.5)
+ omniauth (= 1.8.1)
+ omniauth-tumblr (= 1.2)
+diff --git a/app/models/user.rb b/app/models/user.rb
+index 940a48f25..d1e2beeee 100644
+--- a/app/models/user.rb
++++ b/app/models/user.rb
+@@ -337,6 +337,12 @@ class User < ActiveRecord::Base
+ end
+
+ def send_confirm_email
++ if skip_email_confirmation?
++ self.email = unconfirmed_email
++ self.unconfirmed_email = nil
++ save
++ end
++
+ return if unconfirmed_email.blank?
+ Workers::Mail::ConfirmEmail.perform_async(id)
+ end
+@@ -554,6 +560,14 @@ class User < ActiveRecord::Base
+ end
+ end
+
++ def ldap_user?
++ AppConfig.ldap.enable? && ldap_dn.present?
++ end
++
++ def skip_email_confirmation?
++ ldap_user? && AppConfig.ldap.skip_email_confirmation?
++ end
++
+ private
+
+ def clearable_fields
+diff --git a/config/defaults.yml b/config/defaults.yml
+index c046aff07..66e9afa13 100644
+--- a/config/defaults.yml
++++ b/config/defaults.yml
+@@ -202,6 +202,20 @@ defaults:
+ scope: tags
+ include_user_tags: false
+ pod_tags:
++ ldap:
++ enable: false
++ host: localhost
++ port: 389
++ only_ldap: true
++ mail_attribute: mail
++ skip_email_confirmation: true
++ use_bind_dn: true
++ bind_dn: "cn=diaspora,dc=example,dc=com"
++ bind_pw: "password"
++ search_base: "dc=example,dc=com"
++ search_filter: "uid=%{username}"
++ bind_template: "uid=%{username},dc=example,dc=com"
++
+
+ development:
+ environment:
+diff --git a/config/diaspora.yml.example b/config/diaspora.yml.example
+index b2573625d..c357c8651 100644
+--- a/config/diaspora.yml.example
++++ b/config/diaspora.yml.example
+@@ -710,6 +710,36 @@ configuration: ## Section
+ ## If scope is 'tags', a comma separated list of tags here can be set.
+ ## For example "linux,diaspora", to receive posts related to these tags
+ #pod_tags:
++ ldap:
++ # Uncomment next line if you want to use LDAP on your instance
++ enable: true
++ host: localhost
++ port: 389
++ # Use only LDAP authentication (don't try other means)
++ only_ldap: true
++ # LDAP attribute to find the user's e-mail. Necessary to create accounts
++ # for not existing users
++ mail_attribute: mail
++ # Skip e-mail confirmation when creating an account via LDAP.
++ skip_email_confirmation: true
++ # ----- Using bind_dn and bind_pw
++ # bind_dn and bind_pw may be used if the diaspora instance
++ # should be able to connect to LDAP to find and search for users.
++
++ use_bind_dn: true
++ bind_dn: "cn=diaspora,dc=example,dc=com"
++ bind_pw: "password"
++ search_base: "dc=example,dc=com"
++ # This is the filter with which to search for the user. %{username} will
++ # be replaced by the given login.
++ search_filter: "uid=%{username}"
++ #
++ # ----- Using template
++ # This setting doesn't require a diaspora LDAP user. Use a template, and
++ # diaspora will try to login with the templated dn and password
++ #
++ # bind_template: "uid=%{username},dc=example,dc=com"
++
+
+ ## Here you can override settings defined above if you need
+ ## to have them different in different environments.
+diff --git a/config/initializers/0_ldap_authenticatable.rb b/config/initializers/0_ldap_authenticatable.rb
+new file mode 100644
+index 000000000..49846502f
+--- /dev/null
++++ b/config/initializers/0_ldap_authenticatable.rb
+@@ -0,0 +1,82 @@
++require 'net/ldap'
++require 'devise/strategies/authenticatable'
++
++module Devise
++ module Strategies
++ class LdapAuthenticatable < Authenticatable
++ def valid?
++ AppConfig.ldap.enable? && params[:user].present?
++ end
++
++ def authenticate!
++ ldap = Net::LDAP.new(
++ host: AppConfig.ldap.host,
++ port: AppConfig.ldap.port,
++ encryption: :simple_tls,
++ )
++
++ if AppConfig.ldap.use_bind_dn?
++ ldap.auth AppConfig.ldap.bind_dn, AppConfig.ldap.bind_pw
++
++ if !ldap.bind
++ return fail(:ldap_configuration_error)
++ end
++
++ search_filter = AppConfig.ldap.search_filter % { username: params[:user][:username] }
++
++ result = ldap.search(base: AppConfig.ldap.search_base, filter: search_filter, result_set: true)
++
++ if result.count != 1
++ return login_fail
++ end
++
++ user_dn = result.first.dn
++ user_email = result.first[AppConfig.ldap.mail_attribute].first
++ else
++ user_dn = AppConfig.ldap.bind_template % { username: params[:user][:username] }
++ end
++
++ ldap.auth user_dn, params[:user][:password]
++
++ if ldap.bind
++ user = User.find_by(ldap_dn: user_dn)
++
++ # We don't want to trust too much the email attribute from
++ # LDAP: if the user can edit it himself, he may login as
++ # anyone
++ if user.nil?
++ if !AppConfig.ldap.use_bind_dn?
++ result = ldap.search(base: user_dn, scope: Net::LDAP::SearchScope_BaseObject, filter: "(objectClass=*)", result_set: true)
++ user_email = result.first[AppConfig.ldap.mail_attribute].first
++ end
++
++ if user_email.present? && User.find_by(email: user_email).nil?
++ # Password is used for remember_me token
++ user = User.build(email: user_email, ldap_dn: user_dn, password: SecureRandom.hex, username: params[:user][:username])
++ user.save
++ user.seed_aspects
++ elsif User.find_by(email: user_email).present?
++ return fail(:ldap_existing_email)
++ else
++ return fail(:ldap_cannot_create_account_without_email)
++ end
++ end
++
++ success!(user)
++ else
++ return login_fail
++ end
++ end
++
++ def login_fail
++ if AppConfig.ldap.only_ldap?
++ return fail(:ldap_invalid_login)
++ else
++ return pass
++ end
++ end
++ end
++ end
++end
++
++Warden::Strategies.add(:ldap_authenticatable, Devise::Strategies::LdapAuthenticatable)
+diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
+index 3698e2373..14e88063e 100644
+--- a/config/initializers/devise.rb
++++ b/config/initializers/devise.rb
+@@ -250,10 +250,9 @@ Devise.setup do |config|
+ # If you want to use other strategies, that are not supported by Devise, or
+ # change the failure app, you can configure them inside the config.warden block.
+ #
+- # config.warden do |manager|
+- # manager.intercept_401 = false
+- # manager.default_strategies(:scope => :user).unshift :some_external_strategy
+- # end
++ config.warden do |manager|
++ manager.default_strategies(scope: :user).unshift :ldap_authenticatable
++ end
+
+ # ==> Mountable engine configurations
+ # When using Devise inside an engine, let's call it `MyEngine`, and this engine
+diff --git a/db/migrate/20170724182100_add_ldap_dn_to_users.rb b/db/migrate/20170724182100_add_ldap_dn_to_users.rb
+new file mode 100644
+index 000000000..f5cc84d11
+--- /dev/null
++++ b/db/migrate/20170724182100_add_ldap_dn_to_users.rb
+@@ -0,0 +1,6 @@
++class AddLdapDnToUsers < ActiveRecord::Migration
++ def change
++ add_column :users, :ldap_dn, :text, null: true, default: nil
++ add_index :users, ['ldap_dn'], :length => { "ldap_dn" => 191 }
++ end
++end
diff --git a/flakes/etherpad-lite/default.nix b/flakes/etherpad-lite/default.nix
new file mode 100644
index 0000000..1dd5aa4
--- /dev/null
+++ b/flakes/etherpad-lite/default.nix
@@ -0,0 +1,68 @@
+{ varDir ? "/var/lib/etherpad-lite" # if you override this change the StateDirectory in service file too!
+, nodeEnv, stdenv, callPackage, src, lib, nodejs }:
+let
+ moduleNames = [
+ "ep_aa_file_menu_toolbar" "ep_adminpads" "ep_align" "ep_bookmark"
+ "ep_clear_formatting" "ep_colors" "ep_comments_page"
+ "ep_copy_paste_select_all" "ep_cursortrace" "ep_delete_empty_pads"
+ "ep_embedmedia" "ep_font_family" "ep_font_size" "ep_headings2"
+ "ep_immae_buttons" "ep_ldapauth" "ep_line_height" "ep_markdown"
+ "ep_mypads" "ep_page_view" "ep_previewimages" "ep_ruler"
+ "ep_scrollto" "ep_set_title_on_pad" "ep_subscript_and_superscript"
+ "ep_timesliderdiff"
+ ];
+ # nix files are built using node2nix -i node-packages.json
+ allModules = lib.attrsets.genAttrs moduleNames
+ (name: (callPackage (./modules + "/${name}/node-packages.nix") { nodeEnv = callPackage nodeEnv {}; }).${name});
+ toPassthru = pkg: moduleNames: {
+ inherit varDir allModules nodejs moduleNames;
+ withModules = withModules pkg;
+ };
+ withModules = pkg: toModules:
+ let
+ modules = toModules allModules;
+ toInstallModule = n: ''
+ cp -a ${n}/lib/node_modules/${n.packageName} $out/node_modules
+ if [ ! -f $out/node_modules/${n.packageName}/.ep_initialized ]; then
+ chmod u+w $out/node_modules/${n.packageName}/
+ ln -s ${varDir}/ep_initialized/${n.packageName} $out/node_modules/${n.packageName}/.ep_initialized
+ fi
+ '';
+ modulesNames = map (n: n.packageName) modules;
+ newEtherpad = pkg.overrideAttrs(old: {
+ installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallModule modules);
+ passthru = toPassthru newEtherpad moduleNames;
+ });
+ in newEtherpad;
+ # built using node2nix -l package-lock.json
+ # and changing "./." to "src"
+ node-environment = (callPackage ./node-packages.nix {
+ nodeEnv = callPackage nodeEnv {};
+ src = stdenv.mkDerivation {
+ pname = "etherpad-lite";
+ version = src.version;
+ inherit src;
+ patches = [ ./libreoffice_patch.diff ];
+ buildPhase = ''
+ touch src/.ep_initialized
+ '';
+ installPhase = ''
+ cp -a src/ $out
+ '';
+ };
+ }).package;
+ package = stdenv.mkDerivation rec {
+ name = "etherpad-lite-${src.version}";
+ src = node-environment;
+ version = src.version;
+ installPhase = ''
+ mkdir -p $out
+ mkdir $out/node_modules
+ cp -a lib/node_modules/ep_etherpad-lite $out/src
+ chmod u+w $out/src/static/js/
+ ln -s ../src $out/node_modules/ep_etherpad-lite
+ ln -s ${varDir}/var $out/var
+ '';
+ passthru = toPassthru package [];
+ };
+in package
diff --git a/flakes/etherpad-lite/etherpad_cleanup.sql b/flakes/etherpad-lite/etherpad_cleanup.sql
new file mode 100644
index 0000000..4002715
--- /dev/null
+++ b/flakes/etherpad-lite/etherpad_cleanup.sql
@@ -0,0 +1,30 @@
+DO $$
+ DECLARE todelete record;
+ BEGIN
+ FOR todelete IN
+ select split_part(key, ':', 4) as k from store where key like 'mypads:jobqueue:deletePad:%'
+ LOOP
+ select * from store where key in (select 'readonly2pad:' || split_part(value, '"', 2) from store where key = 'pad2readonly:' || todelete.k);
+ select * from store where key = 'pad2readonly:' || todelete.k;
+ select * from store where key like 'pad:' || todelete.k || ':revs:%';
+ select * from store where key like 'pad:' || todelete.k || ':chats:%';
+ END LOOP;
+ END $$
+
+-- /nix/store/1i77431p6996lbyflpkb803zsiaj24kx-etherpad-lite-1.8.3/node_modules/ep_mypads/scripts/mypads-jobqueue-minion.js
+for toDelete in
+ select split_part(key, ':', 4) from store where key like 'mypads:jobqueue:deletePad:%'
+loop
+ select * from store where key in (select 'readonly2pad:' || split_part(value, '"', 2) from store where key = 'pad2readonly:' || toDelete);
+ select * from store where key = 'pad2readonly:' || toDelete;
+ select * from store where key like 'pad:' || toDelete || ':revs:%';
+ select * from store where key like 'pad:' || toDelete || ':chats:%';
+end loop
+--select * from store where key in (select 'pad2readonly:' || split_part(key, ':', 4) from store where key like 'mypads:jobqueue:deletePad:%');
+--
+--delete from store where key in (select 'readonly2pad:' || split_part(value, '"', 2) from store where key in (select 'pad2readonly:' || split_part(key, ':', 4) from store where key like 'mypads:jobqueue:deletePad:%'))
+--delete from store where key in (select 'pad2readonly:' || split_part(key, ':', 4) from store where key like 'mypads:jobqueue:deletePad:%');
+--delete from store where key like any(select 'pad:' || split_part(key, ':', 4) || ':revs:%' from store where key like 'mypads:jobqueue:deletePad:%');
+--delete from store where key like any(select 'pad:' || split_part(key, ':', 4) || ':chats:%' from store where key like 'mypads:jobqueue:deletePad:%');
+--delete from store where key like 'mypads:jobqueue:deletePad:%';
+
diff --git a/flakes/etherpad-lite/flake.lock b/flakes/etherpad-lite/flake.lock
new file mode 100644
index 0000000..19d9ffa
--- /dev/null
+++ b/flakes/etherpad-lite/flake.lock
@@ -0,0 +1,150 @@
+{
+ "nodes": {
+ "etherpad-lite": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1587951095,
+ "narHash": "sha256-PjAkvkC7tJzRECUqOvuWfoZTz8QqDXk6oXEN3ig24rQ=",
+ "owner": "ether",
+ "repo": "etherpad-lite",
+ "rev": "62101147a0c3495dc80daa87ab53a3366321a205",
+ "type": "github"
+ },
+ "original": {
+ "owner": "ether",
+ "ref": "1.8.3",
+ "repo": "etherpad-lite",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts",
+ "nixpkgs": "nixpkgs",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "etherpad-lite": "etherpad-lite",
+ "flake-utils": "flake-utils",
+ "mypackages": "mypackages",
+ "nixpkgs": "nixpkgs_2"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/etherpad-lite/flake.nix b/flakes/etherpad-lite/flake.nix
new file mode 100644
index 0000000..6e0d7db
--- /dev/null
+++ b/flakes/etherpad-lite/flake.nix
@@ -0,0 +1,227 @@
+{
+ description = "Your self-hosted, globally interconnected microblogging community";
+ inputs.flake-utils.url = "github:numtide/flake-utils";
+ inputs.nixpkgs = {
+ url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
+ flake = false;
+ };
+ inputs.etherpad-lite = {
+ url = "github:ether/etherpad-lite/1.8.3";
+ flake = false;
+ };
+ inputs.mypackages.url = "path:../mypackages";
+
+ outputs = { self, nixpkgs, etherpad-lite, flake-utils, mypackages }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
+ let
+ pkgs = import nixpkgs { inherit system; overlays = []; };
+ version = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.etherpad-lite.original.ref;
+ inherit (pkgs) callPackage;
+ in rec {
+ packages.etherpad-lite = callPackage ./. { inherit (mypackages.mylibs) nodeEnv; src = etherpad-lite // { inherit version; }; };
+ defaultPackage = packages.etherpad-lite;
+ legacyPackages.etherpad-lite = packages.etherpad-lite;
+ checks = {
+ build = defaultPackage;
+ };
+ }
+ ) // rec {
+ overlays = {
+ etherpad-lite = final: prev: {
+ etherpad-lite = self.defaultPackage."${final.system}";
+ };
+ };
+ overlay = overlays.etherpad-lite;
+ nixosModule = { lib, pkgs, config, ... }:
+ let
+ name = "etherpad-lite";
+ cfg = config.services.etherpad-lite;
+ in
+ {
+ options.services.etherpad-lite = {
+ enable = lib.mkEnableOption "Enable Etherpad lite’s service";
+ user = lib.mkOption {
+ type = lib.types.str;
+ default = name;
+ description = "User account under which Etherpad lite runs";
+ };
+ group = lib.mkOption {
+ type = lib.types.str;
+ default = name;
+ description = "Group under which Etherpad lite runs";
+ };
+ dataDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/var/lib/${name}";
+ description = ''
+ The directory where Etherpad lite stores its data.
+ '';
+ };
+ socketsDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/run/${name}";
+ description = ''
+ The directory where Etherpad lite stores its sockets.
+ '';
+ };
+ configFile = lib.mkOption {
+ type = lib.types.path;
+ description = ''
+ The config file path for Etherpad lite.
+ '';
+ };
+ sessionKeyFile = lib.mkOption {
+ type = lib.types.path;
+ description = ''
+ The Session key file path for Etherpad lite.
+ '';
+ };
+ apiKeyFile = lib.mkOption {
+ type = lib.types.path;
+ description = ''
+ The API key file path for Etherpad lite.
+ '';
+ };
+ package = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.etherpad-lite;
+ description = ''
+ Etherpad lite package to use.
+ '';
+ example = lib.literalExample ''
+ pkgs.webapps.etherpad-lite.withModules (p: [ p.ep_align ]);
+ '';
+ };
+ modules = lib.mkOption {
+ type = lib.types.listOf lib.types.package;
+ default = [];
+ description = ''
+ Etherpad lite modules to use.
+ DEPRECATED: use package directly
+ '';
+ };
+ # Output variables
+ workdir = lib.mkOption {
+ type = lib.types.package;
+ default = cfg.package.withModules (_: cfg.modules);
+ description = ''
+ Adjusted Etherpad lite package with plugins
+ '';
+ readOnly = true;
+ };
+ systemdStateDirectory = lib.mkOption {
+ type = lib.types.str;
+ # Use ReadWritePaths= instead if varDir is outside of /var/lib
+ default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
+ lib.strings.removePrefix "/var/lib/" cfg.dataDir;
+ description = ''
+ Adjusted Etherpad lite data directory for systemd
+ '';
+ readOnly = true;
+ };
+ systemdRuntimeDirectory = lib.mkOption {
+ type = lib.types.str;
+ # Use ReadWritePaths= instead if socketsDir is outside of /run
+ default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir;
+ lib.strings.removePrefix "/run/" cfg.socketsDir;
+ description = ''
+ Adjusted Etherpad lite sockets directory for systemd
+ '';
+ readOnly = true;
+ };
+ sockets = lib.mkOption {
+ type = lib.types.attrsOf lib.types.path;
+ default = {
+ node = "${cfg.socketsDir}/etherpad-lite.sock";
+ };
+ readOnly = true;
+ description = ''
+ Etherpad lite sockets
+ '';
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ nixpkgs.overlays = [ self.overlay ];
+ systemd.services.etherpad-lite-cleanup = {
+ description = "Etherpad-lite cleanup old mypads";
+ after = [ "network.target" "postgresql.service" ];
+ wants = [ "postgresql.service" ];
+
+ environment.NODE_ENV = "production";
+ environment.HOME = cfg.workdir;
+
+ path = [ cfg.workdir.nodejs ];
+
+ script = ''
+ exec ${cfg.workdir.nodejs}/bin/node ${cfg.workdir}/node_modules/ep_mypads/scripts/mypads-jobqueue-minion.js \
+ --settings ${cfg.configFile} \
+ --oneshot
+ '';
+
+ serviceConfig = {
+ DynamicUser = true;
+ User = cfg.user;
+ Group = cfg.group;
+ WorkingDirectory = "%T";
+ PrivateTmp = true;
+ NoNewPrivileges = true;
+ PrivateDevices = true;
+ ProtectHome = true;
+ ProtectControlGroups = true;
+ ProtectKernelModules = true;
+ Type = "oneshot";
+ };
+ };
+ systemd.services.etherpad-lite = {
+ description = "Etherpad-lite";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" "postgresql.service" ];
+ wants = [ "postgresql.service" ];
+
+ environment.NODE_ENV = "production";
+ environment.HOME = cfg.workdir;
+
+ path = [ cfg.workdir.nodejs ];
+
+ script = ''
+ exec ${cfg.workdir.nodejs}/bin/node ${cfg.workdir}/src/node/server.js \
+ --sessionkey ${cfg.sessionKeyFile} \
+ --apikey ${cfg.apiKeyFile} \
+ --settings ${cfg.configFile}
+ '';
+
+ postStart = ''
+ while [ ! -S ${cfg.sockets.node} ]; do
+ sleep 0.5
+ done
+ chmod a+w ${cfg.sockets.node}
+ '';
+ serviceConfig = {
+ DynamicUser = true;
+ User = cfg.user;
+ Group = cfg.group;
+ WorkingDirectory = cfg.workdir;
+ PrivateTmp = true;
+ NoNewPrivileges = true;
+ PrivateDevices = true;
+ ProtectHome = true;
+ ProtectControlGroups = true;
+ ProtectKernelModules = true;
+ Restart = "always";
+ Type = "simple";
+ TimeoutSec = 60;
+ RuntimeDirectory = cfg.systemdRuntimeDirectory;
+ StateDirectory= cfg.systemdStateDirectory;
+ ExecStartPre = [
+ "+${pkgs.coreutils}/bin/install -d -m 0755 -o ${cfg.user} -g ${cfg.group} ${cfg.dataDir}/var ${cfg.dataDir}/ep_initialized"
+ "+${pkgs.coreutils}/bin/chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir} ${cfg.configFile} ${cfg.sessionKeyFile} ${cfg.apiKeyFile}"
+ ];
+ };
+ };
+
+ };
+ };
+ };
+}
+
+
diff --git a/flakes/etherpad-lite/libreoffice_patch.diff b/flakes/etherpad-lite/libreoffice_patch.diff
new file mode 100644
index 0000000..86fac15
--- /dev/null
+++ b/flakes/etherpad-lite/libreoffice_patch.diff
@@ -0,0 +1,12 @@
+diff --git a/src/node/utils/LibreOffice.js b/src/node/utils/LibreOffice.js
+index 267f7a0c..10518577 100644
+--- a/src/node/utils/LibreOffice.js
++++ b/src/node/utils/LibreOffice.js
+@@ -78,6 +78,7 @@ function doConvertTask(task, callback) {
+ '--invisible',
+ '--nologo',
+ '--nolockcheck',
++ '-env:UserInstallation=file:///tmp/',
+ '--writer',
+ '--convert-to', task.type,
+ task.srcFile,
diff --git a/flakes/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.json b/flakes/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.json
new file mode 100644
index 0000000..9b0f681
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.json
@@ -0,0 +1 @@
+[ "ep_aa_file_menu_toolbar" ]
diff --git a/flakes/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.nix b/flakes/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.nix
new file mode 100644
index 0000000..8a2fb1b
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.nix
@@ -0,0 +1,26 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {};
+in
+{
+ ep_aa_file_menu_toolbar = nodeEnv.buildNodePackage {
+ name = "ep_aa_file_menu_toolbar";
+ packageName = "ep_aa_file_menu_toolbar";
+ version = "0.1.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ep_aa_file_menu_toolbar/-/ep_aa_file_menu_toolbar-0.1.6.tgz";
+ sha1 = "aaa374d9429c9b2382311fab69e0ff819b53b7b0";
+ };
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "File / Menu style toolbar";
+ homepage = https://github.com/JohnMcLear/ep_file_menu_toolbar;
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+}
\ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_adminpads/node-packages.json b/flakes/etherpad-lite/modules/ep_adminpads/node-packages.json
new file mode 100644
index 0000000..7643607
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_adminpads/node-packages.json
@@ -0,0 +1 @@
+[ "ep_adminpads" ]
diff --git a/flakes/etherpad-lite/modules/ep_adminpads/node-packages.nix b/flakes/etherpad-lite/modules/ep_adminpads/node-packages.nix
new file mode 100644
index 0000000..2f62257
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_adminpads/node-packages.nix
@@ -0,0 +1,27 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {};
+in
+{
+ ep_adminpads = nodeEnv.buildNodePackage {
+ name = "ep_adminpads";
+ packageName = "ep_adminpads";
+ version = "0.0.12";
+ src = fetchurl {
+ url = "https://github.com/spcsser/ep_adminpads/archive/master.tar.gz";
+ sha1 = "49ypihbwxmd97g813aq2rjwh7pq1y08a";
+ };
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "Gives the ability to list and administrate all pads on admin page";
+ homepage = "https://github.com/spcsser/ep_adminpads#readme";
+ license = "MIT";
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+}
diff --git a/flakes/etherpad-lite/modules/ep_align/node-packages.json b/flakes/etherpad-lite/modules/ep_align/node-packages.json
new file mode 100644
index 0000000..9405dd2
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_align/node-packages.json
@@ -0,0 +1 @@
+[ "ep_align" ]
diff --git a/flakes/etherpad-lite/modules/ep_align/node-packages.nix b/flakes/etherpad-lite/modules/ep_align/node-packages.nix
new file mode 100644
index 0000000..1a57a9c
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_align/node-packages.nix
@@ -0,0 +1,26 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {};
+in
+{
+ ep_align = nodeEnv.buildNodePackage {
+ name = "ep_align";
+ packageName = "ep_align";
+ version = "0.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ep_align/-/ep_align-0.2.0.tgz";
+ sha512 = "bMrwsieCfz3LkxuIXiNu7UKkUQ7b+ceI09XRd1cCMskDwuJow3N3hB4/gecqfF+v4lS0qmDEa7bJvSTrhHiXBQ==";
+ };
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "Add Left/Center/Right/Justify to lines of text in a pad";
+ homepage = "https://github.com/johnmclear/ep_align#readme";
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+}
\ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_bookmark/node-packages.json b/flakes/etherpad-lite/modules/ep_bookmark/node-packages.json
new file mode 100644
index 0000000..80745ca
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_bookmark/node-packages.json
@@ -0,0 +1 @@
+[ "ep_bookmark" ]
diff --git a/flakes/etherpad-lite/modules/ep_bookmark/node-packages.nix b/flakes/etherpad-lite/modules/ep_bookmark/node-packages.nix
new file mode 100644
index 0000000..3975044
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_bookmark/node-packages.nix
@@ -0,0 +1,26 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {};
+in
+{
+ ep_bookmark = nodeEnv.buildNodePackage {
+ name = "ep_bookmark";
+ packageName = "ep_bookmark";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ep_bookmark/-/ep_bookmark-1.2.0.tgz";
+ sha512 = "sHTXIKui1l+PxeBtzlwSvRg8TZ8w9PE5aaxTg5b/siwNmprXeoiL6ZUiOTGmp18yLXs1ltJ2BzSqJX57pjGVWg==";
+ };
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "Etherpad plugin for users to save a list of bookmarks of their visited pads locally in the browser's local storage";
+ homepage = "https://github.com/Gared/ep_bookmark#readme";
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+}
\ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_clear_formatting/node-packages.json b/flakes/etherpad-lite/modules/ep_clear_formatting/node-packages.json
new file mode 100644
index 0000000..07c0662
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_clear_formatting/node-packages.json
@@ -0,0 +1 @@
+[ "ep_clear_formatting" ]
diff --git a/flakes/etherpad-lite/modules/ep_clear_formatting/node-packages.nix b/flakes/etherpad-lite/modules/ep_clear_formatting/node-packages.nix
new file mode 100644
index 0000000..adb22f1
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_clear_formatting/node-packages.nix
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {};
+in
+{
+ ep_clear_formatting = nodeEnv.buildNodePackage {
+ name = "ep_clear_formatting";
+ packageName = "ep_clear_formatting";
+ version = "0.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ep_clear_formatting/-/ep_clear_formatting-0.0.2.tgz";
+ sha1 = "b16970b9c6be01246d23cb5a81777aa220d06fc4";
+ };
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "Clear formatting on a selection, this plugin requires the file menu";
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+}
\ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_colors/node-packages.json b/flakes/etherpad-lite/modules/ep_colors/node-packages.json
new file mode 100644
index 0000000..b513f5c
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_colors/node-packages.json
@@ -0,0 +1 @@
+[ "ep_colors" ]
diff --git a/flakes/etherpad-lite/modules/ep_colors/node-packages.nix b/flakes/etherpad-lite/modules/ep_colors/node-packages.nix
new file mode 100644
index 0000000..f2f8201
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_colors/node-packages.nix
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {};
+in
+{
+ ep_colors = nodeEnv.buildNodePackage {
+ name = "ep_colors";
+ packageName = "ep_colors";
+ version = "0.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ep_colors/-/ep_colors-0.0.3.tgz";
+ sha1 = "aa95e1b12e009ed6b05d0ccb188ca4829e799780";
+ };
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "add colors to the etherpad";
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+}
\ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_comments_page/node-packages.json b/flakes/etherpad-lite/modules/ep_comments_page/node-packages.json
new file mode 100644
index 0000000..ae32884
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_comments_page/node-packages.json
@@ -0,0 +1 @@
+["ep_comments_page"]
diff --git a/flakes/etherpad-lite/modules/ep_comments_page/node-packages.nix b/flakes/etherpad-lite/modules/ep_comments_page/node-packages.nix
new file mode 100644
index 0000000..8d7c85a
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_comments_page/node-packages.nix
@@ -0,0 +1,342 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {
+ "after-0.8.2" = {
+ name = "after";
+ packageName = "after";
+ version = "0.8.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/after/-/after-0.8.2.tgz";
+ sha1 = "fedb394f9f0e02aa9768e702bda23b505fae7e1f";
+ };
+ };
+ "arraybuffer.slice-0.0.7" = {
+ name = "arraybuffer.slice";
+ packageName = "arraybuffer.slice";
+ version = "0.0.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz";
+ sha512 = "wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==";
+ };
+ };
+ "async-limiter-1.0.1" = {
+ name = "async-limiter";
+ packageName = "async-limiter";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz";
+ sha512 = "csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==";
+ };
+ };
+ "backo2-1.0.2" = {
+ name = "backo2";
+ packageName = "backo2";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz";
+ sha1 = "31ab1ac8b129363463e35b3ebb69f4dfcfba7947";
+ };
+ };
+ "base64-arraybuffer-0.1.5" = {
+ name = "base64-arraybuffer";
+ packageName = "base64-arraybuffer";
+ version = "0.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz";
+ sha1 = "73926771923b5a19747ad666aa5cd4bf9c6e9ce8";
+ };
+ };
+ "better-assert-1.0.2" = {
+ name = "better-assert";
+ packageName = "better-assert";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz";
+ sha1 = "40866b9e1b9e0b55b481894311e68faffaebc522";
+ };
+ };
+ "blob-0.0.5" = {
+ name = "blob";
+ packageName = "blob";
+ version = "0.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz";
+ sha512 = "gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==";
+ };
+ };
+ "callsite-1.0.0" = {
+ name = "callsite";
+ packageName = "callsite";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz";
+ sha1 = "280398e5d664bd74038b6f0905153e6e8af1bc20";
+ };
+ };
+ "component-bind-1.0.0" = {
+ name = "component-bind";
+ packageName = "component-bind";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz";
+ sha1 = "00c608ab7dcd93897c0009651b1d3a8e1e73bbd1";
+ };
+ };
+ "component-emitter-1.2.1" = {
+ name = "component-emitter";
+ packageName = "component-emitter";
+ version = "1.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz";
+ sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
+ };
+ };
+ "component-inherit-0.0.3" = {
+ name = "component-inherit";
+ packageName = "component-inherit";
+ version = "0.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz";
+ sha1 = "645fc4adf58b72b649d5cae65135619db26ff143";
+ };
+ };
+ "debug-3.1.0" = {
+ name = "debug";
+ packageName = "debug";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz";
+ sha512 = "OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==";
+ };
+ };
+ "debug-4.1.1" = {
+ name = "debug";
+ packageName = "debug";
+ version = "4.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz";
+ sha512 = "pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==";
+ };
+ };
+ "engine.io-client-3.4.1" = {
+ name = "engine.io-client";
+ packageName = "engine.io-client";
+ version = "3.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.1.tgz";
+ sha512 = "RJNmA+A9Js+8Aoq815xpGAsgWH1VoSYM//2VgIiu9lNOaHFfLpTjH4tOzktBpjIs5lvOfiNY1dwf+NuU6D38Mw==";
+ };
+ };
+ "engine.io-parser-2.2.0" = {
+ name = "engine.io-parser";
+ packageName = "engine.io-parser";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz";
+ sha512 = "6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==";
+ };
+ };
+ "formidable-1.2.2" = {
+ name = "formidable";
+ packageName = "formidable";
+ version = "1.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz";
+ sha512 = "V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==";
+ };
+ };
+ "has-binary2-1.0.3" = {
+ name = "has-binary2";
+ packageName = "has-binary2";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz";
+ sha512 = "G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==";
+ };
+ };
+ "has-cors-1.1.0" = {
+ name = "has-cors";
+ packageName = "has-cors";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz";
+ sha1 = "5e474793f7ea9843d1bb99c23eef49ff126fff39";
+ };
+ };
+ "indexof-0.0.1" = {
+ name = "indexof";
+ packageName = "indexof";
+ version = "0.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz";
+ sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
+ };
+ };
+ "isarray-2.0.1" = {
+ name = "isarray";
+ packageName = "isarray";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz";
+ sha1 = "a37d94ed9cda2d59865c9f76fe596ee1f338741e";
+ };
+ };
+ "ms-2.0.0" = {
+ name = "ms";
+ packageName = "ms";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
+ sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+ };
+ };
+ "ms-2.1.2" = {
+ name = "ms";
+ packageName = "ms";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+ sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
+ };
+ };
+ "object-component-0.0.3" = {
+ name = "object-component";
+ packageName = "object-component";
+ version = "0.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz";
+ sha1 = "f0c69aa50efc95b866c186f400a33769cb2f1291";
+ };
+ };
+ "parseqs-0.0.5" = {
+ name = "parseqs";
+ packageName = "parseqs";
+ version = "0.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz";
+ sha1 = "d5208a3738e46766e291ba2ea173684921a8b89d";
+ };
+ };
+ "parseuri-0.0.5" = {
+ name = "parseuri";
+ packageName = "parseuri";
+ version = "0.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz";
+ sha1 = "80204a50d4dbb779bfdc6ebe2778d90e4bce320a";
+ };
+ };
+ "socket.io-client-2.3.0" = {
+ name = "socket.io-client";
+ packageName = "socket.io-client";
+ version = "2.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz";
+ sha512 = "cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==";
+ };
+ };
+ "socket.io-parser-3.3.0" = {
+ name = "socket.io-parser";
+ packageName = "socket.io-parser";
+ version = "3.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz";
+ sha512 = "hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==";
+ };
+ };
+ "to-array-0.1.4" = {
+ name = "to-array";
+ packageName = "to-array";
+ version = "0.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz";
+ sha1 = "17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890";
+ };
+ };
+ "ws-6.1.4" = {
+ name = "ws";
+ packageName = "ws";
+ version = "6.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz";
+ sha512 = "eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==";
+ };
+ };
+ "xmlhttprequest-ssl-1.5.5" = {
+ name = "xmlhttprequest-ssl";
+ packageName = "xmlhttprequest-ssl";
+ version = "1.5.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz";
+ sha1 = "c2876b06168aadc40e57d97e81191ac8f4398b3e";
+ };
+ };
+ "yeast-0.1.2" = {
+ name = "yeast";
+ packageName = "yeast";
+ version = "0.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz";
+ sha1 = "008e06d8094320c372dbc2f8ed76a0ca6c8ac419";
+ };
+ };
+ };
+in
+{
+ ep_comments_page = nodeEnv.buildNodePackage {
+ name = "ep_comments_page";
+ packageName = "ep_comments_page";
+ version = "0.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ep_comments_page/-/ep_comments_page-0.1.0.tgz";
+ sha512 = "aHUfyR3HZ677wgL1hJEeaa1yIabW3PjaFXHhWnlEXdIDXL3WmgkGQ4Y1ccHp057EmquCwNb595HADQO+QUK/lw==";
+ };
+ dependencies = [
+ sources."after-0.8.2"
+ sources."arraybuffer.slice-0.0.7"
+ sources."async-limiter-1.0.1"
+ sources."backo2-1.0.2"
+ sources."base64-arraybuffer-0.1.5"
+ sources."better-assert-1.0.2"
+ sources."blob-0.0.5"
+ sources."callsite-1.0.0"
+ sources."component-bind-1.0.0"
+ sources."component-emitter-1.2.1"
+ sources."component-inherit-0.0.3"
+ sources."debug-4.1.1"
+ sources."engine.io-client-3.4.1"
+ sources."engine.io-parser-2.2.0"
+ sources."formidable-1.2.2"
+ sources."has-binary2-1.0.3"
+ sources."has-cors-1.1.0"
+ sources."indexof-0.0.1"
+ sources."isarray-2.0.1"
+ sources."ms-2.1.2"
+ sources."object-component-0.0.3"
+ sources."parseqs-0.0.5"
+ sources."parseuri-0.0.5"
+ sources."socket.io-client-2.3.0"
+ (sources."socket.io-parser-3.3.0" // {
+ dependencies = [
+ sources."debug-3.1.0"
+ sources."ms-2.0.0"
+ ];
+ })
+ sources."to-array-0.1.4"
+ sources."ws-6.1.4"
+ sources."xmlhttprequest-ssl-1.5.5"
+ sources."yeast-0.1.2"
+ ];
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "Adds comments on sidebar and link it to the text. Support for Page View, requires ep_page_view";
+ homepage = "https://github.com/ether/ep_comments#readme";
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+}
\ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.json b/flakes/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.json
new file mode 100644
index 0000000..f6da8df
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.json
@@ -0,0 +1 @@
+[ "ep_copy_paste_select_all" ]
diff --git a/flakes/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.nix b/flakes/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.nix
new file mode 100644
index 0000000..504bee2
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.nix
@@ -0,0 +1,26 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {};
+in
+{
+ ep_copy_paste_select_all = nodeEnv.buildNodePackage {
+ name = "ep_copy_paste_select_all";
+ packageName = "ep_copy_paste_select_all";
+ version = "0.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ep_copy_paste_select_all/-/ep_copy_paste_select_all-0.0.4.tgz";
+ sha1 = "41b89ece9da8e549a7ca4b11cdfa0a27344f21c8";
+ };
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "Add support to do Copy, Paste, Select All and Find and Replace, this plugin requires the file menu";
+ homepage = https://github.com/ether/ep_copy_paste_select_all;
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+}
\ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_cursortrace/node-packages.json b/flakes/etherpad-lite/modules/ep_cursortrace/node-packages.json
new file mode 100644
index 0000000..b409581
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_cursortrace/node-packages.json
@@ -0,0 +1 @@
+[ "ep_cursortrace" ]
diff --git a/flakes/etherpad-lite/modules/ep_cursortrace/node-packages.nix b/flakes/etherpad-lite/modules/ep_cursortrace/node-packages.nix
new file mode 100644
index 0000000..d8c1480
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_cursortrace/node-packages.nix
@@ -0,0 +1,26 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {};
+in
+{
+ ep_cursortrace = nodeEnv.buildNodePackage {
+ name = "ep_cursortrace";
+ packageName = "ep_cursortrace";
+ version = "2.0.15";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ep_cursortrace/-/ep_cursortrace-2.0.15.tgz";
+ sha1 = "fa374f2d4be2708af998fbb407633c55d9031326";
+ };
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "Show cursor/caret movements of other users in real time";
+ homepage = https://github.com/redhog/ep_cursortrace;
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+}
\ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_delete_empty_pads/node-packages.json b/flakes/etherpad-lite/modules/ep_delete_empty_pads/node-packages.json
new file mode 100644
index 0000000..8688afc
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_delete_empty_pads/node-packages.json
@@ -0,0 +1 @@
+[ "ep_delete_empty_pads" ]
diff --git a/flakes/etherpad-lite/modules/ep_delete_empty_pads/node-packages.nix b/flakes/etherpad-lite/modules/ep_delete_empty_pads/node-packages.nix
new file mode 100644
index 0000000..8f3e9c0
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_delete_empty_pads/node-packages.nix
@@ -0,0 +1,26 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {};
+in
+{
+ ep_delete_empty_pads = nodeEnv.buildNodePackage {
+ name = "ep_delete_empty_pads";
+ packageName = "ep_delete_empty_pads";
+ version = "0.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ep_delete_empty_pads/-/ep_delete_empty_pads-0.0.6.tgz";
+ sha512 = "ZpVKhWYUBAz5jWXT4Ldjraa5oAmOmOiSaNUSVOdVEG7DLeoNaTrjSQx0KZl4EjF1Qp/oUQwX69ryjY0assmdrw==";
+ };
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "Delete pads which were never edited";
+ license = "Apache-2.0";
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+}
\ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_embedmedia/fix.patch b/flakes/etherpad-lite/modules/ep_embedmedia/fix.patch
new file mode 100644
index 0000000..162f1b0
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_embedmedia/fix.patch
@@ -0,0 +1,85 @@
+diff --git a/ep.json b/ep.json
+index 083d484..6803475 100644
+--- a/ep.json
++++ b/ep.json
+@@ -5,6 +5,7 @@
+ "hooks": {
+ "eejsBlock_editbarMenuLeft": "ep_embedmedia/hooks:eejsBlock_editbarMenuLeft",
+ "eejsBlock_scripts": "ep_embedmedia/hooks:eejsBlock_scripts",
++ "eejsBlock_timesliderBody": "ep_embedmedia/hooks:eejsBlock_scripts",
+ "eejsBlock_styles": "ep_embedmedia/hooks:eejsBlock_styles",
+ "eejsBlock_body": "ep_embedmedia/hooks:eejsBlock_body"
+ },
+diff --git a/static/css/main.css b/static/css/main.css
+index 72a460f..3b66d8e 100644
+--- a/static/css/main.css
++++ b/static/css/main.css
+@@ -6,10 +6,18 @@
+ z-index:999999;
+ }
+
++#embedMediaSrc {
++ max-width: 100%;
++}
++
+ .embedMediaButton {
+ padding:10px;
+ }
+
++#doEmbedMedia{
++ color:blue;
++}
++
+ #cancelEmbedMedia{
+ color:red;
+ }
+@@ -19,6 +27,6 @@
+ }
+
+ .buttonicon-embed-media:before{
+- content:"\e80b";
++ content:"\e83b";
+ top: 2px !important;
+ }
+diff --git a/static/js/main.js b/static/js/main.js
+index 8c94767..19415d5 100644
+--- a/static/js/main.js
++++ b/static/js/main.js
+@@ -10,22 +10,25 @@ $(document).ready(function () {
+ } else {
+ module.slideDown("fast");
+ }
++ module.toggleClass("popup-show");
+ });
+
+ $("#doEmbedMedia").click(function () {
+ var padeditor = require('ep_etherpad-lite/static/js/pad_editor').padeditor;
+
+ $("#embedMediaModal").slideUp("fast");
++ $("#embedMediaModal").removeClass("popup-show");
+
+ return padeditor.ace.callWithAce(function (ace) {
+- rep = ace.ace_getRep();
++ var rep = ace.ace_getRep();
+ ace.ace_replaceRange(rep.selStart, rep.selEnd, "E");
+ ace.ace_performSelectionChange([rep.selStart[0],rep.selStart[1]-1], rep.selStart, false);
+- ace.ace_performDocumentApplyAttributesToRange(rep.selStart, rep.selEnd, [["embedMedia", escape($("#embedMediaSrc")[0].value)]]);
++ ace.ace_performDocumentApplyAttributesToRange(rep.selStart, rep.selEnd, [["embedMedia", escape($("#embedMediaSrc")[0].value)]]);
+ }, "embedMedia");
+ });
+
+ $("#cancelEmbedMedia").click(function () {
+ $("#embedMediaModal").slideUp("fast");
++ $("#embedMediaModal").removeClass("popup-show");
+ });
+ });
+diff --git a/templates/modals.ejs b/templates/modals.ejs
+index 9340698..8915a3b 100644
+--- a/templates/modals.ejs
++++ b/templates/modals.ejs
+@@ -1,4 +1,4 @@
+-
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add.php.diff b/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add.php.diff
new file mode 100644
index 0000000..4509f0a
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add.php.diff
@@ -0,0 +1,20 @@
+--- a/bugnote_add.php 2018-02-10 21:29:27.000000000 +0100
++++ b/bugnote_add.php 2018-03-03 15:13:12.439919511 +0100
+@@ -44,6 +44,17 @@
+
+ $t_query = array( 'issue_id' => $f_bug_id );
+
++# begin captcha check for anon user
++if ( current_user_is_anonymous() && get_gd_version() > 0 ) {
++ $f_captcha = gpc_get_string( 'captcha', '' );
++ $f_captcha = utf8_strtolower( trim( $f_captcha ) );
++
++ $t_securimage = new Securimage();
++ if( $t_securimage->check( $f_captcha ) == false ) {
++ trigger_error( ERROR_SIGNUP_NOT_MATCHING_CAPTCHA, ERROR );
++ }
++}
++
+ if( count( $f_files ) > 0 && is_blank( $f_text ) && helper_duration_to_minutes( $f_duration ) == 0 ) {
+ $t_payload = array(
+ 'files' => helper_array_transpose( $f_files )
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff b/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff
new file mode 100644
index 0000000..a8589c7
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff
@@ -0,0 +1,52 @@
+--- a/bugnote_add_inc.php 2018-02-10 21:29:27.000000000 +0100
++++ b/bugnote_add_inc.php 2018-03-03 15:14:27.332428557 +0100
+@@ -119,6 +119,49 @@
+
+
+
++ 0 ) {
++ $t_securimage_path = 'vendor/dapphp/securimage';
++ $t_securimage_show = $t_securimage_path . '/securimage_show.php';
++ $t_securimage_play = $t_securimage_path . '/securimage_play.swf?'
++ . http_build_query( array(
++ 'audio_file' => $t_securimage_path . '/securimage_play.php',
++ 'bgColor1=' => '#fff',
++ 'bgColor2=' => '#fff',
++ 'iconColor=' => '#777',
++ 'borderWidth=' => 1,
++ 'borderColor=' => '#000',
++ ) );
++?>
++
++ CAPTCHA
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+ $t_changeset ) {
++ event_signal( 'EVENT_BUG_ACTION', array('RESOLVE', $t_bug_id) );
++ }
+ }
+
+ /**
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix
new file mode 100644
index 0000000..1ab00c5
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchFromGitHub }:
+stdenv.mkDerivation rec {
+ version = "v2.2.0";
+ name = "mantisbt-plugin-source-integration-${version}";
+ src = fetchFromGitHub {
+ owner = "mantisbt-plugins";
+ repo = "source-integration";
+ rev = "44fc9e2e770aff4f40f56833f26a86ce0e2deb76";
+ sha256 = "0gcm6kqqijnv303sk59zn27adwx5vkr545mwzyaq2nrpxnkwdy5b";
+ };
+ patches = [
+ ./Source.API.php.diff
+ ];
+ installPhase = ''
+ mkdir $out
+ cp -a Source* $out/
+ '';
+ passthru = {
+ pluginName = "source-integration";
+ selector = "Source*";
+ };
+}
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/audioplayer.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/audioplayer.nix
new file mode 100644
index 0000000..6e7380c
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/audioplayer.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ audioplayer_3_4_0 = buildApp rec {
+ appName = "audioplayer";
+ version = "3.4.0";
+ url = "https://github.com/Rello/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
+ sha256 = "sha256-pog9cll02+AbYHG/jiUztO9odqu7PSEWBUieK32Eqf4=";
+ };
+ versions = {
+ "25" = audioplayer_3_4_0;
+ "26" = audioplayer_3_4_0;
+ "27" = audioplayer_3_4_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app audioplayer")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/bookmarks.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/bookmarks.nix
new file mode 100644
index 0000000..0503e5b
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/bookmarks.nix
@@ -0,0 +1,21 @@
+{ buildApp, nextcloudVersion }:
+let
+ bookmarks_12_1_0 = buildApp rec {
+ appName = "bookmarks";
+ version = "12.1.0";
+ url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
+ sha256 = "sha256-NVyaVeg/UPgFaW/iCZiJkw1l5Vqc+S/4FMfFhHCBUTo=";
+ };
+ bookmarks_13_0_1 = buildApp rec {
+ appName = "bookmarks";
+ version = "13.0.1";
+ url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
+ sha256 = "sha256-7Gx8e8C2dDkB/39eAGKOLrP3YkVbGkfPKpQBeCaV/cE=";
+ };
+ versions = {
+ "25" = bookmarks_12_1_0;
+ "26" = bookmarks_13_0_1;
+ "27" = bookmarks_13_0_1;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app bookmarks")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/calendar.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/calendar.nix
new file mode 100644
index 0000000..497d4ba
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/calendar.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ calendar_4_4_4 = buildApp rec {
+ appName = "calendar";
+ version = "4.4.4";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-8UeHOpgbUf2oHHOvLN58v68QvyDYQXkSjsVKn6UGrGU=";
+ };
+ versions = {
+ "25" = calendar_4_4_4;
+ "26" = calendar_4_4_4;
+ "27" = calendar_4_4_4;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app calendar")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/carnet.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/carnet.nix
new file mode 100644
index 0000000..05f0928
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/carnet.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ carnet_0_25_2 = buildApp rec {
+ appName = "carnet";
+ version = "0.25.2";
+ url = "https://github.com/PhieF/CarnetNextcloud/releases/download/v${version}/${appName}-nc-v${version}.tar.gz";
+ sha256 = "sha256-HArD+M6UA9BhSsrlpp/gsKWkUTWAoNHl/gr0S3AlKzg=";
+ };
+ versions = {
+ "25" = carnet_0_25_2;
+ "26" = carnet_0_25_2;
+ "27" = carnet_0_25_2;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app carnet")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/contacts.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/contacts.nix
new file mode 100644
index 0000000..f8931b7
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/contacts.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ contacts_5_3_2 = buildApp rec {
+ appName = "contacts";
+ version = "5.3.2";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-1jQ+pyLBPU7I4wSPkmezJq7ukrQh8WPErG4J6Ps3LR4=";
+ };
+ versions = {
+ "25" = contacts_5_3_2;
+ "26" = contacts_5_3_2;
+ "27" = contacts_5_3_2;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app contacts")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/cookbook.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/cookbook.nix
new file mode 100644
index 0000000..32fdcc0
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/cookbook.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ cookbook_0_10_2 = buildApp rec {
+ appName = "cookbook";
+ version = "0.10.2";
+ url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/Cookbook-${version}.tar.gz";
+ sha256 = "sha256-H7KVeISBnu0/4Q31ihhiXvRtkXz4yLGOAsAj5ERgeCM=";
+ };
+ versions = {
+ "25" = cookbook_0_10_2;
+ "26" = cookbook_0_10_2;
+ "27" = cookbook_0_10_2;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app cookbook")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/deck.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/deck.nix
new file mode 100644
index 0000000..c5dd2d3
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/deck.nix
@@ -0,0 +1,27 @@
+{ buildApp, nextcloudVersion }:
+let
+ deck_1_8_5 = buildApp rec {
+ appName = "deck";
+ version = "1.8.5";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-KsSSl9orqMEKJlBftHwCi/dh+aMCxZqjS7kPT0uDZlE=";
+ };
+ deck_1_9_2 = buildApp rec {
+ appName = "deck";
+ version = "1.9.2";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-h1fmT4CCEFDZPBwFDIBLmFGJmO1Wt3a5nVXX5xCk0o0=";
+ };
+ deck_1_10_0 = buildApp rec {
+ appName = "deck";
+ version = "1.10.0";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-W0XVvhTQoCjoK7S2tEd7bvU0MTWtqYt7QiB9H1p1UP8=";
+ };
+ versions = {
+ "25" = deck_1_8_5;
+ "26" = deck_1_9_2;
+ "27" = deck_1_10_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app deck")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/drawio.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/drawio.nix
new file mode 100644
index 0000000..c03c479
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/drawio.nix
@@ -0,0 +1,24 @@
+{ buildApp, nextcloudVersion }:
+let
+ otherConfig = {
+ mimetypealiases = {
+ "application/x-drawio" = "drawio";
+ };
+ mimetypemapping = {
+ "drawio" = ["application/x-drawio"];
+ };
+ };
+ drawio_2_1_2 = buildApp rec {
+ appName = "drawio";
+ version = "2.1.2";
+ url = "https://github.com/jgraph/drawio-nextcloud/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-5BrEnS2cMk/vwkAr1lXKtfocqReZAj1+pbDqmi/uG0A=";
+ inherit otherConfig;
+ };
+ versions = {
+ "25" = drawio_2_1_2;
+ "26" = drawio_2_1_2;
+ "27" = drawio_2_1_2;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app drawio")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/external.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/external.nix
new file mode 100644
index 0000000..941304a
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/external.nix
@@ -0,0 +1,27 @@
+{ buildApp, nextcloudVersion }:
+let
+ external_5_0_2 = buildApp rec {
+ appName = "external";
+ version = "5.0.2";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-Bkk9X1tVonKsiA3YlKux2y8K7HdJv4qM/eJ9TP+i17I=";
+ };
+ external_5_1_0 = buildApp rec {
+ appName = "external";
+ version = "5.1.0";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-EMKWSXufw4FMyaN2f37yifrpUm6QBqqpPPFmvLvYYmY=";
+ };
+ external_5_2_0 = buildApp rec {
+ appName = "external";
+ version = "5.2.0";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-XqeJCWS8mncS7CfrnXdhtzdgkFTib/RnursJ/AqyvD8=";
+ };
+ versions = {
+ "25" = external_5_0_2;
+ "26" = external_5_1_0;
+ "27" = external_5_2_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app external")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/extract.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/extract.nix
new file mode 100644
index 0000000..589115e
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/extract.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ extract_1_3_6 = buildApp rec {
+ appName = "extract";
+ version = "1.3.6";
+ url = "https://github.com/PaulLereverend/NextcloudExtract/releases/download/${version}/${appName}.tar.gz";
+ sha256 = "sha256-y1NacOWnCd/f5sOeEOLeZrWnqwi8q/XezOrhT7AzV/o=";
+ };
+ versions = {
+ "25" = extract_1_3_6;
+ "26" = extract_1_3_6;
+ "27" = extract_1_3_6;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app extract")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_markdown.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_markdown.nix
new file mode 100644
index 0000000..cf8e179
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_markdown.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ files_markdown_2_4_1 = buildApp rec {
+ appName = "files_markdown";
+ version = "2.4.1";
+ url = "https://github.com/icewind1991/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-6A9IMfRbKcF1+et7pzFF4zlZDmegx562cnyYsOFsVzU=";
+ };
+ versions = {
+ "25" = files_markdown_2_4_1;
+ "26" = files_markdown_2_4_1;
+ "27" = files_markdown_2_4_1;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app files_markdown")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_mindmap.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_mindmap.nix
new file mode 100644
index 0000000..fff85d7
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_mindmap.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ files_mindmap_0_0_28 = buildApp rec {
+ appName = "files_mindmap";
+ version = "0.0.28";
+ url = "https://github.com/ACTom/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
+ sha256 = "sha256-VlzqstlsdinaqkbK32NvS1oFoQcFasJGHSlcKxdQwIM=";
+ };
+ versions = {
+ "25" = files_mindmap_0_0_28;
+ "26" = files_mindmap_0_0_28;
+ "27" = files_mindmap_0_0_28;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app files_mindmap")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_readmemd.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_readmemd.nix
new file mode 100644
index 0000000..97aeaf7
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/files_readmemd.nix
@@ -0,0 +1,14 @@
+{ buildApp, nextcloudVersion }:
+let
+ files_readmemd_2_0_0 = buildApp rec {
+ appName = "files_readmemd";
+ version = "2.0.0";
+ url = "https://github.com/mamatt/files_readmemd/releases/download/V${version}/${appName}.tar.gz";
+ sha256 = "sha256-vUoSK+b4gj51eJcocrXINO/eFKPRZQoj0q6l0gVBqgw=";
+ };
+ versions = {
+ "25" = files_readmemd_2_0_0;
+ "26" = files_readmemd_2_0_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app files_readmemd")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/flowupload.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/flowupload.nix
new file mode 100644
index 0000000..55f4ba7
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/flowupload.nix
@@ -0,0 +1,14 @@
+{ buildApp, nextcloudVersion }:
+let
+ flowupload_1_1_3 = buildApp rec {
+ appName = "flowupload";
+ version = "1.1.3";
+ url = "https://github.com/e-alfred/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
+ sha256 = "0d1xvimd4hzd0jpvv1h89zfqv3ajlrrm1xdbggvjhk9bllwqgxng";
+ };
+ versions = {
+ "22" = flowupload_1_1_3;
+ "23" = flowupload_1_1_3;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app flowupload")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxedit.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxedit.nix
new file mode 100644
index 0000000..be230fd
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxedit.nix
@@ -0,0 +1,22 @@
+{ buildApp, nextcloudVersion }:
+let
+ gpxedit_0_0_14 = buildApp rec {
+ appName = "gpxedit";
+ version = "0.0.14";
+ url = "https://gitlab.com/eneiluj/gpxedit-oc/wikis/uploads/5b184c24f9e767ad19a84e177a9b473c/${appName}-${version}.tar.gz";
+ sha256 = "1kgpcxps73l83krrjxdzh4vzacja4m3vwidf9kidgqq505cgzq90";
+ otherConfig = {
+ mimetypealiases = {
+ "application/gpx+xml" = "gpx";
+ };
+ mimetypemapping = {
+ "gpx" = ["application/gpx+xml"];
+ };
+ };
+ };
+ versions = {
+ "22" = gpxedit_0_0_14;
+ "23" = gpxedit_0_0_14;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app gpxedit")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxpod.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxpod.nix
new file mode 100644
index 0000000..5a3b7e7
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxpod.nix
@@ -0,0 +1,31 @@
+{ buildApp, nextcloudVersion }:
+let
+ otherConfig = {
+ mimetypealiases = {
+ "application/gpx+xml" = "gpx";
+ };
+ mimetypemapping = {
+ "gpx" = ["application/gpx+xml"];
+ };
+ };
+ gpxpod_5_0_10 = buildApp rec {
+ appName = "gpxpod";
+ version = "5.0.10";
+ url = "https://github.com/julien-nc/gpxpod/releases/download/v${version}/${appName}-${version}.tar.gz";
+ sha256 = "sha256-Ylhl9jdOxG+Qfk5zgNO8FwOtAzrjGHS66y59qmorXPU=";
+ inherit otherConfig;
+ };
+ gpxpod_5_0_12 = buildApp rec {
+ appName = "gpxpod";
+ version = "5.0.12";
+ url = "https://github.com/julien-nc/gpxpod/releases/download/v${version}/${appName}-${version}.tar.gz";
+ sha256 = "sha256-uhz6AC8opDQkFQDpG4u8H4vkFtzbFAZvb8r32QHj/8I=";
+ inherit otherConfig;
+ };
+ versions = {
+ "25" = gpxpod_5_0_10;
+ "26" = gpxpod_5_0_12;
+ "27" = gpxpod_5_0_12;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app gpxpod")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/groupfolders.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/groupfolders.nix
new file mode 100644
index 0000000..b966d3d
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/groupfolders.nix
@@ -0,0 +1,27 @@
+{ buildApp, nextcloudVersion }:
+let
+ groupfolders_13_1_5 = buildApp rec {
+ appName = "groupfolders";
+ version = "13.1.5";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-1yf/uSN8TRsYvK3m2pxGaXo9xxHNrI/NjyWJ8rLPQfg=";
+ };
+ groupfolders_14_0_4 = buildApp rec {
+ appName = "groupfolders";
+ version = "14.0.4";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-QzlD8dLI6T7Sex75ZsO2F40nTrg2Ig6tHTG8cslnNME=";
+ };
+ groupfolders_15_0_2 = buildApp rec {
+ appName = "groupfolders";
+ version = "15.0.2";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-NsTZhmY1XBKHn/1IcIp2Al7BwJzE2xoBzgyBXnmuWls=";
+ };
+ versions = {
+ "25" = groupfolders_13_1_5;
+ "26" = groupfolders_14_0_4;
+ "27" = groupfolders_15_0_2;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app groupfolders")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/impersonate.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/impersonate.nix
new file mode 100644
index 0000000..afae917
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/impersonate.nix
@@ -0,0 +1,27 @@
+{ buildApp, nextcloudVersion }:
+let
+ impersonate_1_12_1 = buildApp rec {
+ appName = "impersonate";
+ version = "1.12.1";
+ url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-xhlWGbLm1CtW4BSa/yQhv05Kn2r1DZJDUoDXQOLpEeQ=";
+ };
+ impersonate_1_13_1 = buildApp rec {
+ appName = "impersonate";
+ version = "1.13.1";
+ url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-+tFWW5wQnbHxbgGdnp2GAFzfXnrW+e3eECY4O6ZckCU=";
+ };
+ impersonate_1_14_0 = buildApp rec {
+ appName = "impersonate";
+ version = "1.14.0";
+ url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-A1rGJJLaWhiNf9l0YUh6WOB+fKRBRDckE890hq5OB4k=";
+ };
+ versions = {
+ "25" = impersonate_1_12_1;
+ "26" = impersonate_1_13_1;
+ "27" = impersonate_1_14_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app impersonate")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/integration_dropbox.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/integration_dropbox.nix
new file mode 100644
index 0000000..d3834ad
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/integration_dropbox.nix
@@ -0,0 +1,13 @@
+{ buildApp, nextcloudVersion }:
+let
+ integration_dropbox_2_0_1 = buildApp rec {
+ appName = "integration_dropbox";
+ version = "2.0.1";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-RPCd8+/yKNlIGfEU+ITS8DBIxJDfc//8MGHaIjfYxdQ=";
+ };
+ versions = {
+ "27" = integration_dropbox_2_0_1;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app integration_dropbox")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/keeweb.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/keeweb.nix
new file mode 100644
index 0000000..7be8c6b
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/keeweb.nix
@@ -0,0 +1,24 @@
+{ buildApp, nextcloudVersion }:
+let
+ keeweb_0_6_13 = buildApp rec {
+ appName = "keeweb";
+ version = "0.6.13";
+ url = "https://github.com/jhass/nextcloud-keeweb/releases/download/v${version}/${appName}-${version}.tar.gz";
+ sha256 = "sha256-J9jFVXpmoeAjDI/crsXHVJvPvxCYaimWVuq473nLsNM=";
+ installPhase = ''
+ mkdir -p $out
+ cp -R . $out/
+ '';
+ otherConfig = {
+ mimetypemapping = {
+ "kdbx" = ["application/x-kdbx"];
+ };
+ };
+ };
+ versions = {
+ "25" = keeweb_0_6_13;
+ "26" = keeweb_0_6_13;
+ "27" = keeweb_0_6_13;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app keeweb")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/maps.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/maps.nix
new file mode 100644
index 0000000..1b29173
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/maps.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ maps_1_1_0 = buildApp rec {
+ appName = "maps";
+ version = "1.1.0";
+ url = "https://github.com/nextcloud/maps/releases/download/v${version}/${appName}-${version}.tar.gz";
+ sha256 = "sha256-Me/V+9wXZyq3UEVx9Nqim6pfPFJaALjKv9f7iUjill8=";
+ };
+ versions = {
+ "25" = maps_1_1_0;
+ "26" = maps_1_1_0;
+ "27" = maps_1_1_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app maps")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/metadata.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/metadata.nix
new file mode 100644
index 0000000..0fe7409
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/metadata.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ metadata_0_19_0 = buildApp rec {
+ appName = "metadata";
+ version = "0.19.0";
+ url = "https://github.com/gino0631/nextcloud-metadata/releases/download/v${version}/${appName}.tar.gz";
+ sha256 = "sha256-XfFxCwRFO0WnBPU4CIejNXySRQdguvzauu62bzUKD44=";
+ };
+ versions = {
+ "25" = metadata_0_19_0;
+ "26" = metadata_0_19_0;
+ "27" = metadata_0_19_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app metadata")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/music.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/music.nix
new file mode 100644
index 0000000..fc96224
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/music.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ music_1_8_4 = buildApp rec {
+ appName = "music";
+ version = "1.8.4";
+ url = "https://github.com/owncloud/music/releases/download/v${version}/${appName}_${version}_for_nextcloud.tar.gz";
+ sha256 = "sha256-WWXMpOyTRxykAVeUj/h6QP5ENqaMvTcPIqPQjhY68KA=";
+ };
+ versions = {
+ "25" = music_1_8_4;
+ "26" = music_1_8_4;
+ "27" = music_1_8_4;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app music")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/notes.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/notes.nix
new file mode 100644
index 0000000..7677c6c
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/notes.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ notes_4_8_1 = buildApp rec {
+ appName = "notes";
+ version = "4.8.1";
+ url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
+ sha256 = "sha256-BfH1W+7TWKZRuAAhKQEQtlv8ePTtJQvZQVMMu3zULR4=";
+ };
+ versions = {
+ "25" = notes_4_8_1;
+ "26" = notes_4_8_1;
+ "27" = notes_4_8_1;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app notes")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/ocsms.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/ocsms.nix
new file mode 100644
index 0000000..dcdaad2
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/ocsms.nix
@@ -0,0 +1,21 @@
+{ buildApp, nextcloudVersion }:
+let
+ ocsms_2_2_0 = buildApp rec {
+ appName = "ocsms";
+ version = "2.2.0";
+ url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
+ sha256 = "1hjl11lxdflk4w0l8prcjr3jvmsm8njldbrmnqm7yhdy6qcfli28";
+ installPhase = ''
+ mkdir -p $out
+ cp -R . $out/
+ '';
+ };
+ versions = {
+ "18" = ocsms_2_2_0;
+ "19" = ocsms_2_2_0;
+ "20" = ocsms_2_2_0;
+ # Beware, 1.10.1 has a too wide range of versions and is not
+ # compatible with nextcloud > 20!
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app ocsms")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/onlyoffice.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/onlyoffice.nix
new file mode 100644
index 0000000..e93df00
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/onlyoffice.nix
@@ -0,0 +1,21 @@
+{ buildApp, nextcloudVersion }:
+let
+ onlyoffice_7_9_0 = buildApp rec {
+ appName = "onlyoffice";
+ version = "7.9.0";
+ url = "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v${version}/${appName}.tar.gz";
+ sha256 = "sha256-GN0edA/aVdOEDR0LF6PgG2vTcULaG9RMj2gIAoxSVAM=";
+ };
+ onlyoffice_8_2_0 = buildApp rec {
+ appName = "onlyoffice";
+ version = "8.2.0";
+ url = "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v${version}/${appName}.tar.gz";
+ sha256 = "sha256-DfZKgpkpcogy9I3A3ru0V/WR5wYWBr+wrHe+mQJBPYk=";
+ };
+ versions = {
+ "25" = onlyoffice_7_9_0;
+ "26" = onlyoffice_7_9_0;
+ "27" = onlyoffice_8_2_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app onlyoffice")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/passman.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/passman.nix
new file mode 100644
index 0000000..5559b22
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/passman.nix
@@ -0,0 +1,21 @@
+{ buildApp, nextcloudVersion }:
+let
+ passman_2_4_5 = buildApp rec {
+ appName = "passman";
+ version = "2.4.5";
+ url = "https://releases.passman.cc/${appName}_${version}.tar.gz";
+ sha256 = "sha256-wcRx1lUEHbJBJBBSKOScGljOgHM7Vpf69OymJoI8S2Y=";
+ };
+ passman_2_4_7 = buildApp rec {
+ appName = "passman";
+ version = "2.4.7";
+ url = "https://releases.passman.cc/${appName}_${version}.tar.gz";
+ sha256 = "sha256-CeNaN0cioVjcW6ILB//BIvmjQWcbvfK3m8jVQ8LGtyM=";
+ };
+ versions = {
+ "25" = passman_2_4_5;
+ "26" = passman_2_4_7;
+ "27" = passman_2_4_7;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app passman")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/polls.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/polls.nix
new file mode 100644
index 0000000..a50ac43
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/polls.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ polls_5_2_0 = buildApp rec {
+ appName = "polls";
+ version = "5.2.0";
+ url = "https://github.com/nextcloud/polls/releases/download/v${version}/${appName}.tar.gz";
+ sha256 = "sha256-45YNcSeFG9v3mfk7eLbDiy6hFgmfePY0j86JiVS0k14=";
+ };
+ versions = {
+ "25" = polls_5_2_0;
+ "26" = polls_5_2_0;
+ "27" = polls_5_2_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app polls")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/side_menu.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/side_menu.nix
new file mode 100644
index 0000000..da48f91
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/side_menu.nix
@@ -0,0 +1,16 @@
+{ buildApp, nextcloudVersion }:
+let
+ side_menu_3_10_3 = buildApp rec {
+ appName = "side_menu";
+ version = "3.10.3";
+ url = "https://gitnet.fr/attachments/9c9be610-5d3b-414d-a523-396c237c15ef";
+ filename = "${appName}-${version}.tar.gz";
+ sha256 = "sha256-WKbc6Ln6v3LYyRzwy0xAOmXilbqrWGS8XGWIT+TajdM=";
+ };
+ versions = {
+ "25" = side_menu_3_10_3;
+ "26" = side_menu_3_10_3;
+ "27" = side_menu_3_10_3;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app side_menu")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/social.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/social.nix
new file mode 100644
index 0000000..912b5bf
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/social.nix
@@ -0,0 +1,14 @@
+{ buildApp, nextcloudVersion }:
+let
+ social_0_6_1 = buildApp rec {
+ appName = "social";
+ version = "0.6.1";
+ url = "https://github.com/nextcloud-releases/social/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-5mww31ibwgnSiTuTaKo5MngbhPIw8lwLt1tkQySmerY=";
+ };
+ versions = {
+ "26" = social_0_6_1;
+ "27" = social_0_6_1;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app social")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/spreed.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/spreed.nix
new file mode 100644
index 0000000..d8a20b9
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/spreed.nix
@@ -0,0 +1,27 @@
+{ buildApp, nextcloudVersion }:
+let
+ spreed_15_0_7 = buildApp rec {
+ appName = "spreed";
+ version = "15.0.7";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-J9udO7qlRL+TDwTPTbBpYeZLUi4oco42LoqYoHJbIyE=";
+ };
+ spreed_16_0_5 = buildApp rec {
+ appName = "spreed";
+ version = "16.0.5";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-tTDnWqNkP6fMSdCP1c0vPh8f0K7sTFBvRwws5Gln9Mg=";
+ };
+ spreed_17_0_3 = buildApp rec {
+ appName = "spreed";
+ version = "17.0.3";
+ url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
+ sha256 = "sha256-vb08DI+q+5f87zz2UguE1y6b0NV2EoICYpaKUGmyF5w=";
+ };
+ versions = {
+ "25" = spreed_15_0_7;
+ "26" = spreed_16_0_5;
+ "27" = spreed_17_0_3;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app spreed")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/talk_matterbridge.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/talk_matterbridge.nix
new file mode 100644
index 0000000..906719d
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/talk_matterbridge.nix
@@ -0,0 +1,14 @@
+{ buildApp, nextcloudVersion }:
+let
+ talk_matterbridge_1_26_0 = buildApp rec {
+ appName = "talk_matterbridge";
+ version = "1.26.0";
+ url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
+ sha256 = "sha256-gD5lfLWBjWOiy2ULf31ngQVIQbMZj3iwu3zuVrEDSks=";
+ };
+ versions = {
+ "25" = talk_matterbridge_1_26_0;
+ "26" = talk_matterbridge_1_26_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app talk_matterbridge")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/apps/tasks.nix b/flakes/mypackages/pkgs/webapps/nextcloud/apps/tasks.nix
new file mode 100644
index 0000000..aee7650
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/apps/tasks.nix
@@ -0,0 +1,15 @@
+{ buildApp, nextcloudVersion }:
+let
+ tasks_0_15_0 = buildApp rec {
+ appName = "tasks";
+ version = "0.15.0";
+ url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
+ sha256 = "sha256-nizJUFByK78FZ6KPJ4zfOU5Z9ClAxhwgQ7d+X5TGnM8=";
+ };
+ versions = {
+ "25" = tasks_0_15_0;
+ "26" = tasks_0_15_0;
+ "27" = tasks_0_15_0;
+ };
+in
+ versions."${builtins.toString nextcloudVersion}" or (throw "Unsupported version for nextcloud app tasks")
diff --git a/flakes/mypackages/pkgs/webapps/nextcloud/default.nix b/flakes/mypackages/pkgs/webapps/nextcloud/default.nix
new file mode 100644
index 0000000..6aeeaed
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/nextcloud/default.nix
@@ -0,0 +1,84 @@
+{ nextcloudVersion, otherConfig ? {}, lib, stdenv, callPackage, fetchzip, fetchurl, postInstall ? null }:
+let
+ shasumsAndVersion = {
+ "25" = { sum = "sha256-alvh0fWESSS5KbfiKI1gaoahisDWnfT/bUhsSEEXfQI="; fullVersion = "25.0.10"; }; # php 7.4 - 8.2
+ "26" = { sum = "sha256-nhq0aAY4T1hUZdKJY66ZSlirCSgPQet8YJpciwJw1b4="; fullVersion = "26.0.5"; }; # php 8.0 - 8.2
+ "27" = { sum = "sha256-ei3OpDqjuPswM0fv2kxvN3M8yhE8juFt2fDl+2jHIS8="; fullVersion = "27.0.2"; }; # php 8.0 - 8.2
+ };
+ appNames = [
+ "audioplayer" "bookmarks" "calendar" "carnet"
+ "contacts" "cookbook" "deck" "external" "extract" "files_markdown" "files_mindmap"
+ "files_readmemd" "flowupload" "gpxedit" "gpxpod" "groupfolders" "impersonate"
+ "keeweb" "maps" "metadata" "music" "notes" "ocsms" "onlyoffice" "passman" "polls"
+ "social" "spreed" "talk_matterbridge" "tasks" "drawio" "side_menu"
+ "integration_dropbox"
+ ];
+ toApp = name: callPackage (./apps + "/${name}.nix") { inherit buildApp nextcloudVersion; };
+ allSupportedApps = lib.mapAttrs (n: v: v.value) (lib.filterAttrs (n: v: v.success) (lib.genAttrs appNames (name: builtins.tryEval (toApp name))));
+ allApps = lib.genAttrs appNames toApp;
+ buildApp = { appName, version, filename ? null, url, sha256, installHook ? (n: ""), otherConfig ? {}, installPhase ? "mkdir -p $out && cp -R . $out/" }:
+ stdenv.mkDerivation rec {
+ name = "nextcloud-app-${appName}-${version}";
+ inherit version;
+ phases = "unpackPhase installPhase";
+ inherit installPhase;
+ src = fetchurl ({ inherit url sha256; } // lib.optionalAttrs (filename != null) { name = filename; });
+ passthru = {
+ inherit appName otherConfig installHook;
+ };
+ };
+ toPassthru = pkg: apps: otherConfig: {
+ inherit apps otherConfig allApps allSupportedApps buildApp;
+ withApps = withApps pkg;
+ };
+ withApps = pkg: toApps:
+ let
+ apps = toApps allApps;
+ toInstallApp = n: ''
+ if [ -e $out/apps/${n.appName} ]; then
+ echo "${n.appName} already exists"
+ false
+ fi
+ ln -sf ${n} $out/apps/${n.appName}
+ '' + (n.installHook n);
+ zipped = lib.attrsets.zipAttrs ([pkg.otherConfig or {}] ++ map (v: v.otherConfig) apps);
+ appConfigs = with lib.attrsets; with lib.lists; {
+ mimetypealiases = foldr (h: prev: prev // h) {} (zipped.mimetypealiases or []);
+ mimetypemapping = mapAttrs (_: v: unique (flatten v)) (zipAttrs (zipped.mimetypemapping or []));
+ };
+ newNextcloud = pkg.overrideAttrs(old: {
+ installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallApp apps);
+ passthru = toPassthru newNextcloud (pkg.apps ++ apps) appConfigs;
+ });
+ in newNextcloud;
+ package = stdenv.mkDerivation rec {
+ name = "nextcloud-${version}";
+ version = shasumsAndVersion."${builtins.toString nextcloudVersion}".fullVersion;
+
+ src = fetchurl {
+ url = "https://download.nextcloud.com/server/releases/${name}.tar.bz2";
+ sha256 = shasumsAndVersion."${builtins.toString nextcloudVersion}".sum;
+ };
+
+ inherit postInstall;
+ installPhase = ''
+ mkdir -p $out/
+ cp -R . $out/
+ sed -i -e "/'appDirsWithDifferentOwner'/d" $out/apps/settings/lib/Controller/CheckSetupController.php
+ mv $out/config $out/config.example
+ runHook postInstall
+ '';
+
+ noAuditTmpdir = true;
+ dontPatchELF = true;
+ dontStrip = true;
+ passthru = toPassthru package [] otherConfig;
+ meta = {
+ description = "Sharing solution for files, calendars, contacts and more";
+ homepage = https://nextcloud.com;
+ maintainers = with lib.maintainers; [ schneefux bachp globin fpletz ];
+ license = lib.licenses.agpl3Plus;
+ platforms = with lib.platforms; unix;
+ };
+ };
+in package
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/default.nix b/flakes/mypackages/pkgs/webapps/phpbb/default.nix
new file mode 100644
index 0000000..21ee154
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpbb/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl, callPackage
+, varDir ? "/var/lib/phpbb"
+}:
+let
+ allExts = {
+ alfredoramos.markdown = callPackage ./extensions/markdown.nix {};
+ davidiq.mailinglist = callPackage ./extensions/mailinglist.nix {};
+ dmzx.mchat = callPackage ./extensions/mchat.nix {};
+ empteintesduweb.monitoranswers = callPackage ./extensions/monitoranswers.nix {};
+ lr94.autosubscribe = callPackage ./extensions/autosubscribe.nix {};
+ phpbbmodders.adduser = callPackage ./extensions/adduser.nix {};
+ };
+ allLangs = {
+ fr = callPackage ./langs/fr.nix {};
+ };
+ toPassthru = pkg: {
+ inherit allLangs allExts;
+ withLangs = withLangs pkg;
+ withExts = withExts pkg;
+ };
+ withExts = pkg: toExts:
+ let
+ exts = toExts allExts;
+ toInstallExt = ext: "cp -r ${ext}/* $out/ext/";
+ newPhpBB = pkg.overrideAttrs(old: {
+ installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallExt exts);
+ passthru = toPassthru newPhpBB;
+ });
+ in newPhpBB;
+ withLangs = pkg: toLangs:
+ let
+ langs = toLangs allLangs;
+ toInstallLang = lang: "cp -r ${lang}/*/ $out";
+ newPhpBB = pkg.overrideAttrs(old: {
+ installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallLang langs);
+ passthru = toPassthru newPhpBB;
+ });
+ in newPhpBB;
+ phpBB = stdenv.mkDerivation rec {
+ pname = "phpBB";
+ version = "3.3.0";
+
+ src = fetchurl {
+ url = "https://download.phpbb.com/pub/release/3.3/${version}/${pname}-${version}.tar.bz2";
+ sha256 = "a6234ac9dcf9086c025ece29a0a235f997a92bb9a994eff0ddcf8917e841262f";
+ };
+
+ phases = [ "unpackPhase" "installPhase" ];
+
+ installPhase = ''
+ cp -a . $out
+ mkdir -p $out/vars
+ mv $out/{cache,files,store,config.php} $out/vars
+ ln -s ${varDir}/{cache,files,store,config.php} $out/
+ echo -e "core:\n allow_install_dir: true" >> $out/config/production/config.yml
+ '';
+
+ passthru = toPassthru phpBB;
+ };
+in
+ phpBB
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/adduser.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/adduser.nix
new file mode 100644
index 0000000..f9073e6
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/adduser.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, unzip }:
+stdenv.mkDerivation rec {
+ pname = "phpBB-extension-adduser";
+ version = "1.0.4";
+ src = fetchurl {
+ # https://www.phpbb.com/customise/db/extension/acp_add_user_2
+ url = "https://www.phpbb.com/customise/db/download/141601";
+ sha256 = "13m4anib74cinnv1ap3b1ncb8cxm3mzhhmlqhbrr9mlrqmwf4zg2";
+ };
+
+ buildInputs = [ unzip ];
+ phases = [ "unpackPhase" "installPhase" ];
+ unpackPhase = ''
+ mkdir src
+ cd src
+ unzip $src
+ '';
+ installPhase = ''
+ cp -a . $out
+ cp -a $out/phpbbmodders/adduser/language/en $out/phpbbmodders/adduser/language/fr
+ '';
+}
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/autosubscribe.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/autosubscribe.nix
new file mode 100644
index 0000000..78e23fc
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/autosubscribe.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, unzip }:
+stdenv.mkDerivation rec {
+ pname = "phpBB-extension-autosubscribe";
+ version = "1.1.0";
+ src = fetchurl {
+ # https://www.phpbb.com/customise/db/extension/autosubscribe
+ url = "https://www.phpbb.com/customise/db/download/146556";
+ sha256 = "0dsay463g4impw86w1nv307nslc195fkgkqmihfn5kc0hya0giv0";
+ };
+
+ buildInputs = [ unzip ];
+ phases = [ "unpackPhase" "installPhase" ];
+ unpackPhase = ''
+ mkdir src
+ cd src
+ unzip $src
+ '';
+ installPhase = "cp -a . $out";
+}
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/mailinglist.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/mailinglist.nix
new file mode 100644
index 0000000..d432aaf
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/mailinglist.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, unzip }:
+stdenv.mkDerivation rec {
+ pname = "phpBB-extension-MailingList";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://github.com/DavidIQ/MailingList/archive/${version}.tar.gz";
+ sha256 = "1ddg8bci85jwmvyakcwdn4yzqwz1rgy7ljf4nmfk9p2kvx2nhj62";
+ };
+
+ phases = [ "unpackPhase" "installPhase" ];
+ installPhase = ''
+ mkdir -p $out/davidiq/mailinglist
+ cp -a . $out/davidiq/mailinglist
+ # delete last two lines which contain EMAIL_SIG
+ sed -i -n -e :a -e '1,2!{P;N;D;};N;ba' $out/davidiq/mailinglist/language/en/email/*
+ '';
+}
+
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/markdown.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/markdown.nix
new file mode 100644
index 0000000..3bd73c7
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/markdown.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, unzip }:
+stdenv.mkDerivation rec {
+ pname = "phpBB-extension-markdown";
+ version = "1.2.0";
+ src = fetchurl {
+ # https://www.phpbb.com/customise/db/extension/markdown
+ name = "alfredoramos_markdown_${version}.zip";
+ url = "https://www.phpbb.com/customise/db/download/173626";
+ sha256 = "0bmgi8qr6azaaz8xnz8dkyf147dyawqvqr93r01qbm9s8bfkpzqx";
+ };
+
+ buildInputs = [ unzip ];
+ phases = [ "unpackPhase" "installPhase" ];
+ unpackPhase = ''
+ mkdir src
+ cd src
+ unzip $src
+ '';
+ installPhase = "cp -a . $out";
+}
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/mchat.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/mchat.nix
new file mode 100644
index 0000000..93ea861
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/mchat.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, unzip }:
+stdenv.mkDerivation rec {
+ pname = "phpBB-extension-mchat";
+ version = "2.1.3";
+ src = fetchurl {
+ # https://www.phpbb.com/customise/db/extension/mchat_extension
+ name = "dmzx_mchat_${version}.zip";
+ url = "https://www.phpbb.com/customise/db/download/168331";
+ sha256 = "0mcka02wamn899vg64m1c5d5k6f4qml18cshhzfvccrdc7a0m5p1";
+ };
+
+ buildInputs = [ unzip ];
+ phases = [ "unpackPhase" "installPhase" ];
+ unpackPhase = ''
+ mkdir src
+ cd src
+ unzip $src
+ '';
+ installPhase = "cp -a . $out";
+}
+
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/extensions/monitoranswers.nix b/flakes/mypackages/pkgs/webapps/phpbb/extensions/monitoranswers.nix
new file mode 100644
index 0000000..52c852e
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpbb/extensions/monitoranswers.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, unzip }:
+stdenv.mkDerivation rec {
+ pname = "phpBB-extension-monitoranswers";
+ version = "1.0.0";
+ src = fetchurl {
+ # http://forums.phpbb-fr.com/extensions-developpement-en-cours/sujet208410.html
+ url = "https://www.empreintesduweb.com/dl/extension_empreintesduweb_monitoranswers_v100.zip";
+ sha256 = "0g5khzz7brkra9rnnjh8vsv11h8vf36pcw53b4wrkcjb66bfm20s";
+ };
+
+ buildInputs = [ unzip ];
+ phases = [ "unpackPhase" "installPhase" ];
+ unpackPhase = ''
+ mkdir src
+ cd src
+ unzip $src
+ '';
+ installPhase = "cp -a . $out";
+}
diff --git a/flakes/mypackages/pkgs/webapps/phpbb/langs/fr.nix b/flakes/mypackages/pkgs/webapps/phpbb/langs/fr.nix
new file mode 100644
index 0000000..12f2df0
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpbb/langs/fr.nix
@@ -0,0 +1,12 @@
+{ stdenv, fetchurl }:
+stdenv.mkDerivation rec {
+ pname = "phpBB-language-fr";
+ version = "v4.0.0";
+ src = fetchurl {
+ url = "https://github.com/milescellar/phpbb-language-fr/archive/${version}.tar.gz";
+ sha256 = "0pkw55pb8ka4ayn1861hwvjwzs8vkq04yaxrs7zm9c8lh2g7y8z0";
+ };
+
+ phases = [ "unpackPhase" "installPhase" ];
+ installPhase = "cp -a . $out";
+}
diff --git a/flakes/mypackages/pkgs/webapps/phpldapadmin/default.nix b/flakes/mypackages/pkgs/webapps/phpldapadmin/default.nix
new file mode 100644
index 0000000..da32f97
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpldapadmin/default.nix
@@ -0,0 +1,27 @@
+{ config ? "/etc/phpldapadmin/config.php", fetchurl, fetchFromGitHub, stdenv, optipng }:
+stdenv.mkDerivation rec {
+ version = "1.2.5";
+ name = "phpldapadmin-${version}";
+ src = fetchFromGitHub {
+ owner = "leenooks";
+ repo = "phpLDAPadmin";
+ rev = "8f4ced96f9c63a09510a5bccb2189a8b92fb29ba";
+ sha256 = "1x6xc3xbvw3aj46i5ds06a8h6mfljxdv3argxrzz02l541ra6ni7";
+ };
+ patches = [
+ #./ldap-php5_5.patch
+ #./ldap-disable-mcrypt.patch
+ #./ldap-php7_2.patch
+ ./ldap-sort-in-templates.patch
+ ./ldap-align-button.patch
+ ./ldap-fix-password.patch
+ ];
+ buildInputs = [ optipng ];
+ buildPhase = ''
+ find -name '*.png' -exec optipng -quiet -force -fix {} \;
+ '';
+ installPhase = ''
+ cp -a . $out
+ ln -sf ${config} $out/config/config.php
+ '';
+}
diff --git a/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-align-button.patch b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-align-button.patch
new file mode 100644
index 0000000..d9a5504
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-align-button.patch
@@ -0,0 +1,11 @@
+--- a/htdocs/update_confirm.php 2012-10-01 08:54:14.000000000 +0200
++++ b/htdocs/update_confirm.php 2018-06-06 15:47:44.122398888 +0200
+@@ -187,7 +187,7 @@
+
+ echo '';
+
+- echo '';
++ echo '
';
+ echo ' ';
+ // @todo cant use AJAX here, it affects file uploads.
+ printf(' ',
diff --git a/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-fix-password.patch b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-fix-password.patch
new file mode 100644
index 0000000..d2d80e4
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-fix-password.patch
@@ -0,0 +1,13 @@
+diff --git a/htdocs/login.php b/htdocs/login.php
+index 48f9e2e..298b07d 100644
+--- a/htdocs/login.php
++++ b/htdocs/login.php
+@@ -13,7 +13,7 @@ require './common.php';
+
+ $user = array();
+ $user['login'] = get_request('login');
+-$user['password'] = get_request('login_pass');
++$user['password'] = get_request('login_pass','POST',false,null,false);
+
+ if ($user['login'] && ! strlen($user['password']))
+ system_message(array(
diff --git a/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch
new file mode 100644
index 0000000..55a1974
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch
@@ -0,0 +1,12 @@
+diff -wbBur phpldapadmin-1.2.3.org/lib/TemplateRender.php phpldapadmin-1.2.3/lib/TemplateRender.php
+--- phpldapadmin-1.2.3.org/lib/TemplateRender.php 2012-10-01 10:54:14.000000000 +0400
++++ phpldapadmin-1.2.3/lib/TemplateRender.php 2018-02-02 19:06:45.674760057 +0300
+@@ -321,6 +321,8 @@
+
+ $vals = array();
+
++ asort($picklistvalues);
++
+ foreach ($picklistvalues as $key => $values) {
+ $display = $args[3];
+
diff --git a/flakes/mypackages/pkgs/webapps/rompr/default.nix b/flakes/mypackages/pkgs/webapps/rompr/default.nix
new file mode 100644
index 0000000..5b3e7e0
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/rompr/default.nix
@@ -0,0 +1,17 @@
+{ varDir ? "/var/lib/rompr", stdenv, fetchFromGitHub }:
+stdenv.mkDerivation ({
+ pname = "rompr";
+ version = "1.24";
+ src = fetchFromGitHub {
+ owner = "fatg3erman";
+ repo = "RompR";
+ rev = "0d8f597027ac71b320963fe3f33f461a136312ad";
+ sha256 = "13p3c4whhmvz1vvh9fva5gdx4xji288k108hjdi8b1yn506lzix2";
+ fetchSubmodules = true;
+ };
+ installPhase = ''
+ cp -a . $out
+ ln -sf ${varDir}/prefs $out/prefs
+ ln -sf ${varDir}/albumart $out/albumart
+ '';
+})
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/add_all.patch b/flakes/mypackages/pkgs/webapps/roundcubemail/add_all.patch
new file mode 100644
index 0000000..ba651e2
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/roundcubemail/add_all.patch
@@ -0,0 +1,209 @@
+diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php
+index 0552b89c2..1b84e1b4e 100644
+--- a/program/include/rcmail_output_html.php
++++ b/program/include/rcmail_output_html.php
+@@ -1013,13 +1013,13 @@ EOF;
+ // use minified file if exists (not in development mode)
+ if (!$this->devel_mode && !preg_match('/\.min\.' . $ext . '$/', $file)) {
+ $minified_file = substr($file, 0, strlen($ext) * -1) . 'min.' . $ext;
+- if ($fs = @filemtime($this->assets_dir . $minified_file)) {
+- return $minified_file . '?s=' . $fs;
++ if ($fs = @md5_file($this->assets_dir . $minified_file)) {
++ return $minified_file . '?s=' . substr($fs, 0, 6);
+ }
+ }
+
+- if ($fs = @filemtime($this->assets_dir . $file)) {
+- $file .= '?s=' . $fs;
++ if ($fs = @md5_file($this->assets_dir . $file)) {
++ $file .= '?s=' . substr($fs, 0, 6);
+ }
+
+ return $file;
+diff --git a/program/js/app.js b/program/js/app.js
+index 2094b7b7b..06fe96a80 100644
+--- a/program/js/app.js
++++ b/program/js/app.js
+@@ -2277,6 +2277,9 @@ function rcube_webmail()
+ }
+
+ tree += ' ';
++ if (flags.mbox != this.env.mailbox) {
++ tree += '' + flags.mbox + ' ';
++ }
+ row.className = row_class;
+
+ // build subject link
+diff --git a/program/localization/en_CA/labels.inc b/program/localization/en_CA/labels.inc
+index 03c1c8e11..8d67a49ac 100644
+--- a/program/localization/en_CA/labels.inc
++++ b/program/localization/en_CA/labels.inc
+@@ -128,6 +128,7 @@ $labels['markunread'] = 'As unread';
+ $labels['markflagged'] = 'As flagged';
+ $labels['markunflagged'] = 'As unflagged';
+ $labels['moreactions'] = 'More actions...';
++$labels['folders-allsubscribed'] = 'All subscribed folders';
+ $labels['folders-all'] = 'All folders';
+ $labels['more'] = 'More';
+ $labels['back'] = 'Back';
+@@ -184,6 +185,7 @@ $labels['namex'] = 'Name';
+ $labels['searchscope'] = 'Scope';
+ $labels['currentfolder'] = 'Current folder';
+ $labels['subfolders'] = 'This and subfolders';
++$labels['allsubscribedfolders'] = 'All subscribed folders';
+ $labels['allfolders'] = 'All folders';
+ $labels['openinextwin'] = 'Open in new window';
+ $labels['emlsave'] = 'Download (.eml)';
+diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc
+index a442965de..b5b4839e3 100644
+--- a/program/localization/en_GB/labels.inc
++++ b/program/localization/en_GB/labels.inc
+@@ -135,6 +135,7 @@ $labels['moreactions'] = 'More actions...';
+ $labels['markallread'] = 'Mark all as read';
+ $labels['folders-cur'] = 'Selected folder only';
+ $labels['folders-sub'] = 'Selected folder and its subfolders';
++$labels['folders-allsubscribed'] = 'All subscribed folders';
+ $labels['folders-all'] = 'All folders';
+ $labels['more'] = 'More';
+ $labels['back'] = 'Back';
+@@ -221,6 +222,7 @@ $labels['namex'] = 'Name';
+ $labels['searchscope'] = 'Scope';
+ $labels['currentfolder'] = 'Current folder';
+ $labels['subfolders'] = 'This and subfolders';
++$labels['allsubscribedfolders'] = 'All subscribed folders';
+ $labels['allfolders'] = 'All folders';
+ $labels['searchinterval-1W'] = 'older than a week';
+ $labels['searchinterval-1M'] = 'older than a month';
+diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
+index 2e8ec8009..c7736557f 100644
+--- a/program/localization/en_US/labels.inc
++++ b/program/localization/en_US/labels.inc
+@@ -158,6 +158,7 @@ $labels['moreactions'] = 'More actions...';
+ $labels['markallread'] = 'Mark all as read';
+ $labels['folders-cur'] = 'Selected folder only';
+ $labels['folders-sub'] = 'Selected folder and its subfolders';
++$labels['folders-allsubscribed'] = 'All subscribed folders';
+ $labels['folders-all'] = 'All folders';
+ $labels['more'] = 'More';
+ $labels['back'] = 'Back';
+@@ -249,6 +250,7 @@ $labels['namex'] = 'Name';
+ $labels['searchscope'] = 'Scope';
+ $labels['currentfolder'] = 'Current folder';
+ $labels['subfolders'] = 'This and subfolders';
++$labels['allsubscribedfolders'] = 'All subscribed folders';
+ $labels['allfolders'] = 'All folders';
+ $labels['searchinterval-1W'] = 'older than a week';
+ $labels['searchinterval-1M'] = 'older than a month';
+diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc
+index 6db44f95c..ad83e15d8 100644
+--- a/program/localization/fr_FR/labels.inc
++++ b/program/localization/fr_FR/labels.inc
+@@ -135,6 +135,7 @@ $labels['moreactions'] = 'Plus d’actions…';
+ $labels['markallread'] = 'Tout marquer comme lu';
+ $labels['folders-cur'] = 'Dossier sélectionné seulement';
+ $labels['folders-sub'] = 'Dossier sélectionné et ses sous-dossiers';
++$labels['folders-allsubscribed'] = 'Tous les dossiers souscrits';
+ $labels['folders-all'] = 'Tous les dossiers';
+ $labels['more'] = 'Plus';
+ $labels['back'] = 'Retour';
+@@ -221,6 +222,7 @@ $labels['namex'] = 'Nom';
+ $labels['searchscope'] = 'Portée';
+ $labels['currentfolder'] = 'Répertoire actuel';
+ $labels['subfolders'] = 'Ceci et les sous-dossiers';
++$labels['allsubscribedfolders'] = 'Tous les dossiers souscrits';
+ $labels['allfolders'] = 'Tous les dossiers';
+ $labels['searchinterval-1W'] = 'plus d’une semaine';
+ $labels['searchinterval-1M'] = 'plus d’un mois';
+diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
+index 8e0c642f6..ac79780e0 100644
+--- a/program/steps/mail/func.inc
++++ b/program/steps/mail/func.inc
+@@ -110,8 +110,8 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
+ 'copy', 'move', 'quota', 'replyall', 'replylist', 'stillsearching',
+ 'flagged', 'unflagged', 'unread', 'deleted', 'replied', 'forwarded',
+ 'priority', 'withattachment', 'fileuploaderror', 'mark', 'markallread',
+- 'folders-cur', 'folders-sub', 'folders-all', 'cancel', 'bounce', 'bouncemsg',
+- 'sendingmessage');
++ 'folders-cur', 'folders-sub', 'folders-allsubscribed', 'folder-all',
++ 'cancel', 'bounce', 'bouncemsg', 'sendingmessage');
+ }
+ }
+
+diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc
+index f60528835..836a715b0 100644
+--- a/program/steps/mail/search.inc
++++ b/program/steps/mail/search.inc
+@@ -86,7 +86,7 @@ else if (strlen(trim($str))) {
+ }
+
+ // save search modifiers for the current folder to user prefs
+- $mkey = $scope == 'all' ? '*' : $mbox;
++ $mkey = ($scope == 'all' || $scope == 'allsubscribed') ? '*' : $mbox;
+ $search_mods = rcmail_search_mods();
+ $search_mods[$mkey] = array_fill_keys(array_keys($subject), 1);
+
+@@ -124,6 +124,10 @@ if (!empty($continue) && isset($_SESSION['search']) && $_SESSION['search_request
+ if ($search_str) {
+ // search all, current or subfolders folders
+ if ($scope == 'all') {
++ $mboxes = $RCMAIL->storage->list_folders('', '*', 'mail', null, true);
++ natcasesort($mboxes); // we want natural alphabetic sorting of folders in the result set
++ }
++ else if ($scope == 'allsubscribed') {
+ $mboxes = $RCMAIL->storage->list_folders_subscribed('', '*', 'mail', null, true);
+ natcasesort($mboxes); // we want natural alphabetic sorting of folders in the result set
+ }
+@@ -133,7 +137,7 @@ if ($search_str) {
+ array_unshift($mboxes, $mbox);
+ }
+
+- if ($scope != 'all') {
++ if ($scope != 'all' && $scope != 'allsubscribed') {
+ // Remember current folder, it can change in meantime (plugins)
+ // but we need it to e.g. recognize Sent folder to handle From/To column later
+ $RCMAIL->output->set_env('mailbox', $mbox);
+@@ -194,7 +198,7 @@ else {
+ $count = 0;
+ $OUTPUT->show_message('searchnomatch', 'notice');
+ $OUTPUT->set_env('multifolder_listing', (bool)$result->multi);
+- if ($result->multi && $scope == 'all') {
++ if ($result->multi && ($scope == 'all' || $scope == 'allsubscribed')) {
+ $OUTPUT->command('select_folder', '');
+ }
+ }
+diff --git a/skins/classic/templates/mail.html b/skins/classic/templates/mail.html
+index 666adf606..23d12a275 100644
+--- a/skins/classic/templates/mail.html
++++ b/skins/classic/templates/mail.html
+@@ -106,6 +106,7 @@
+
+
+
++
+
+
+
+diff --git a/skins/elastic/templates/mail.html b/skins/elastic/templates/mail.html
+index 51dbfcd30..4c2281281 100644
+--- a/skins/elastic/templates/mail.html
++++ b/skins/elastic/templates/mail.html
+@@ -77,6 +77,7 @@
+
+
+
++
+
+
+
+diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html
+index 5ef0bc211..e0e8280ad 100644
+--- a/skins/larry/templates/mail.html
++++ b/skins/larry/templates/mail.html
+@@ -56,6 +56,7 @@
+
+
+
++
+
+
+
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/default.nix
new file mode 100644
index 0000000..bdddf2f
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/roundcubemail/default.nix
@@ -0,0 +1,85 @@
+{ varDir ? "/var/lib/roundcubemail"
+, roundcube_config ? "/etc/roundcube/config.php"
+, stdenv, fetchurl, jre, unzip, lib, callPackage }:
+let
+ defaultInstall = ''
+ mkdir -p $out
+ cp -R . $out/
+ cd $out
+ if [ -d skins -a -d skins/larry -a ! -d skins/elastic ]; then
+ ln -s larry skins/elastic
+ fi
+ '';
+ buildPlugin = { appName, version, url, sha256, installPhase ? defaultInstall }:
+ stdenv.mkDerivation rec {
+ name = "roundcube-${appName}-${version}";
+ inherit version;
+ phases = "unpackPhase installPhase";
+ inherit installPhase;
+ src = fetchurl { inherit url sha256; };
+ passthru.pluginName = appName;
+ };
+ skinNames = [];
+ allSkins = lib.attrsets.genAttrs skinNames
+ (name: callPackage (./skins + "/${name}") {});
+ pluginNames = [
+ "automatic_addressbook" "carddav" "contextmenu"
+ "contextmenu_folder" "html5_notifier" "ident_switch"
+ "message_highlight" "thunderbird_labels"
+ ];
+ allPlugins = lib.attrsets.genAttrs pluginNames
+ (name: callPackage (./plugins + "/${name}") { inherit buildPlugin; });
+ toPassthru = pkg: plugins: skins: {
+ inherit plugins skins allSkins allPlugins;
+ withSkins = withSkins pkg;
+ withPlugins = withPlugins pkg;
+ };
+ withPlugins = pkg: toPlugins:
+ let
+ plugins = toPlugins allPlugins;
+ toInstallPlugin = n: "ln -s ${n} $out/plugins/${n.pluginName}";
+ newRoundcube = pkg.overrideAttrs(old: {
+ installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
+ passthru = toPassthru newRoundcube (pkg.plugins ++ plugins) pkg.skins;
+ });
+ in newRoundcube;
+ withSkins = pkg: toSkins:
+ let
+ skins = toSkins allSkins;
+ toInstallSkin = n: "ln -s ${n} $out/skins/${n.skinName}";
+ newRoundcube = pkg.overrideAttrs(old: {
+ installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallSkin skins);
+ passthru = toPassthru newRoundcube pkg.plugins (pkg.skins ++ skins);
+ });
+ in newRoundcube;
+ shrinker = fetchurl {
+ url = "https://dl.google.com/closure-compiler/compiler-20200719.zip";
+ sha256 = "0j46y9ack2yq67naca6nfysbmyilwjlkl29dbswidf1lq09yhhj3";
+ };
+ package = stdenv.mkDerivation rec {
+ version = "1.4.4";
+ name = "roundcubemail-${version}";
+ src= fetchurl {
+ url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/${name}-complete.tar.gz";
+ sha256 = "1my726p0wmsn21nbdsjx02h6hnbh8nidzipzdy0gk0qgda1j729b";
+ };
+ patches = [ ./add_all.patch ]; # This patch includes js modification which requires to re-run the jsshrink below
+ buildInputs = [ unzip jre ];
+ buildPhase = ''
+ mkdir -p /tmp
+ unzip -p "${shrinker}" "*.jar" > "/tmp/compiler.jar"
+ ./bin/jsshrink.sh
+ sed -i \
+ -e "s|RCUBE_INSTALL_PATH . 'temp.*|'${varDir}/cache';|" \
+ config/defaults.inc.php
+ sed -i \
+ -e "s|RCUBE_INSTALL_PATH . 'logs.*|'${varDir}/logs';|" \
+ config/defaults.inc.php
+ '';
+ installPhase = ''
+ cp -a . $out
+ ln -s ${roundcube_config} $out/config/config.inc.php
+ '';
+ passthru = toPassthru package [] [];
+ };
+in package
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix
new file mode 100644
index 0000000..cd9efee
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix
@@ -0,0 +1,7 @@
+{ buildPlugin }:
+buildPlugin rec {
+ appName = "automatic_addressbook";
+ version = "0.4.3";
+ url = "https://github.com/sblaisot/${appName}/archive/${version}.tar.gz";
+ sha256 = "0bx5qjzp3a3wc72fr295bvgsy5n15949c041hq76n6c7sqdn7inc";
+}
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/carddav/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/carddav/default.nix
new file mode 100644
index 0000000..ad6856b
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/carddav/default.nix
@@ -0,0 +1,7 @@
+{ buildPlugin }:
+buildPlugin rec {
+ appName = "carddav";
+ version = "3.0.3";
+ url = "https://github.com/blind-coder/rcmcarddav/releases/download/v${version}/${appName}-${version}.tar.bz2";
+ sha256 = "0cf5rnqkhhag2vdy808zfpr4l5586fn43nvcia8ac1ha58azrxal";
+}
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix
new file mode 100644
index 0000000..34a43a7
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix
@@ -0,0 +1,7 @@
+{ buildPlugin }:
+buildPlugin rec {
+ appName = "contextmenu";
+ version = "3.2";
+ url = "https://github.com/johndoh/roundcube-${appName}/archive/${version}.tar.gz";
+ sha256 = "1j7qns42bvgwav8d5n8g16iajyrhydd76hgil8625f3xyjbv4mx0";
+}
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix
new file mode 100644
index 0000000..e5cb46d
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix
@@ -0,0 +1,7 @@
+{ buildPlugin }:
+buildPlugin rec {
+ appName = "contextmenu_folder";
+ version = "1.3.3";
+ url = "https://github.com/random-cuber/${appName}/archive/${version}.tar.gz";
+ sha256 = "1ngfws1v8qrpa52rjh7kirc98alchk2vbqwra86h00agyjjlcc57";
+}
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix
new file mode 100644
index 0000000..a5788b3
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix
@@ -0,0 +1,7 @@
+{ buildPlugin }:
+buildPlugin rec {
+ appName = "html5_notifier";
+ version = "v0.6.4";
+ url = "https://github.com/stremlau/${appName}/archive/${version}.tar.gz";
+ sha256 = "1w6xkffgxwbahi7acixdh5sgjvsjlfwdq942gkvc64byk8r3bhsj";
+}
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix
new file mode 100644
index 0000000..3e10fee
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix
@@ -0,0 +1,7 @@
+{ buildPlugin }:
+buildPlugin rec {
+ appName = "ident_switch";
+ version = "4.2";
+ url = "https://bitbucket.org/BoresExpress/${appName}/get/${version}.tar.gz";
+ sha256 = "0rf2krjsnly4i0mzgsbx09xckr3p9a9dzxf8qq4lkyng1a7dvjkq";
+}
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix
new file mode 100644
index 0000000..dc7138a
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix
@@ -0,0 +1,7 @@
+{ buildPlugin }:
+buildPlugin rec {
+ appName = "message_highlight";
+ version = "4.4";
+ url = "https://github.com/corbosman/${appName}/archive/${version}.tar.gz";
+ sha256 = "12c4x47y70xdl5pgm8csh5i4yiyhpi232lvjbixmca6di4lkhh9j";
+}
diff --git a/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix
new file mode 100644
index 0000000..b67f16a
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix
@@ -0,0 +1,7 @@
+{ buildPlugin }:
+buildPlugin rec {
+ appName = "thunderbird_labels";
+ version = "v1.4.2";
+ url = "https://github.com/mike-kfed/roundcube-${appName}/archive/${version}.tar.gz";
+ sha256 = "00dqqlq6m8a6dwynp6gwfimc10anbs8kh0qdy8xvq2l06hk6jxyc";
+}
diff --git a/flakes/mypackages/pkgs/webapps/spip/default.nix b/flakes/mypackages/pkgs/webapps/spip/default.nix
new file mode 100644
index 0000000..20d5c8c
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/spip/default.nix
@@ -0,0 +1,32 @@
+{ siteName ? "spip"
+, siteDir ? runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out"
+, environment ? "prod"
+, ldap ? false
+, varDir ? "/var/lib/${siteName}_${environment}"
+, lib, fetchzip, runCommand, stdenv }:
+let
+ app = stdenv.mkDerivation rec {
+ name = "${siteName}-${environment}-spip-${version}";
+ version = "3.2.7";
+ src = fetchzip {
+ url = "https://files.spip.net/spip/archives/SPIP-v${version}.zip";
+ sha256 = "0n4kc95nhn524zbb11bpfjs965pm4v026s3m3q44pl8nyms91r33";
+ };
+ paches = lib.optionals ldap [ ./spip_ldap_patch.patch ];
+ buildPhase = ''
+ rm -rf IMG local tmp config/remove.txt
+ ln -sf ${./spip_mes_options.php} config/mes_options.php
+ echo "Require all denied" > "config/.htaccess"
+ ln -sf ${varDir}/{IMG,local} .
+ '';
+ installPhase = ''
+ cp -a . $out
+ cp -a ${siteDir}/* $out
+ '';
+ passthru = {
+ inherit siteName siteDir environment varDir;
+ webRoot = app;
+ spipConfig = ./spip_mes_options.php;
+ };
+ };
+in app
diff --git a/flakes/mypackages/pkgs/webapps/spip/spip_ldap_patch.patch b/flakes/mypackages/pkgs/webapps/spip/spip_ldap_patch.patch
new file mode 100644
index 0000000..653c909
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/spip/spip_ldap_patch.patch
@@ -0,0 +1,60 @@
+--- old/ecrire/auth/ldap.php 2017-06-08 21:58:17.000000000 +0200
++++ new/ecrire/auth/ldap.php 2017-06-10 02:54:02.687954143 +0200
+@@ -171,24 +171,41 @@
+ $desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
+
+ $logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']);
++ if (isset($GLOBALS['ldap_search'])) {
++ $search_query = str_replace("%user%", $login_search, $GLOBALS['ldap_search']);
++ $result = @ldap_search($ldap_link, $ldap_base, $search_query, array("dn"));
++ $info = @ldap_get_entries($ldap_link, $result);
++ // Ne pas accepter les resultats si plus d'une entree
++ // (on veut un attribut unique)
+
+- // Tenter une recherche pour essayer de retrouver le DN
+- foreach ($logins as $att) {
+- $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
+- $info = @ldap_get_entries($ldap_link, $result);
+- // Ne pas accepter les resultats si plus d'une entree
+- // (on veut un attribut unique)
++ if (is_array($info) and $info['count'] == 1) {
++ $dn = $info[0]['dn'];
++ if (!$checkpass) {
++ return $dn;
++ }
++ if (@ldap_bind($ldap_link, $dn, $pass)) {
++ return $dn;
++ }
++ }
++ } else {
++ // Tenter une recherche pour essayer de retrouver le DN
++ foreach ($logins as $att) {
++ $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
++ $info = @ldap_get_entries($ldap_link, $result);
++ // Ne pas accepter les resultats si plus d'une entree
++ // (on veut un attribut unique)
+
+- if (is_array($info) and $info['count'] == 1) {
+- $dn = $info[0]['dn'];
+- if (!$checkpass) {
+- return $dn;
+- }
+- if (@ldap_bind($ldap_link, $dn, $pass)) {
+- return $dn;
+- }
+- }
+- }
++ if (is_array($info) and $info['count'] == 1) {
++ $dn = $info[0]['dn'];
++ if (!$checkpass) {
++ return $dn;
++ }
++ if (@ldap_bind($ldap_link, $dn, $pass)) {
++ return $dn;
++ }
++ }
++ }
++ }
+
+ if ($checkpass and !isset($dn)) {
+ // Si echec, essayer de deviner le DN
diff --git a/flakes/mypackages/pkgs/webapps/spip/spip_mes_options.php b/flakes/mypackages/pkgs/webapps/spip/spip_mes_options.php
new file mode 100644
index 0000000..8db8389
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/spip/spip_mes_options.php
@@ -0,0 +1,18 @@
+
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/default.nix
new file mode 100644
index 0000000..fa2453e
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/ttrss/default.nix
@@ -0,0 +1,37 @@
+{ ttrss_config ? "/etc/ttrss/config.php"
+, varDir ? "/var/lib/ttrss"
+, stdenv, lib, callPackage, sources }:
+let
+ pluginNames = [ "auth_ldap" "af_feedmod" "feediron" "ff_instagram" "tumblr_gdpr_ua" ];
+ allPlugins = lib.attrsets.genAttrs pluginNames
+ (name: callPackage (./plugins + "/${name}") {});
+ toPassthru = pkg: plugins: {
+ inherit plugins allPlugins;
+ withPlugins = withPlugins pkg;
+ };
+ withPlugins = pkg: toPlugins:
+ let
+ plugins = toPlugins allPlugins;
+ toInstallPlugin = n:
+ "ln -sf ${n} $out/plugins/${n.pluginName}";
+ newTtrss = pkg.overrideAttrs(old: {
+ installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
+ passthru = toPassthru newTtrss (pkg.plugins ++ plugins);
+ });
+ in newTtrss;
+ package = stdenv.mkDerivation rec {
+ pname = "tt-rss";
+ version = "${sources.tools.ttrss.shortRev}-master";
+ name = "${pname}-${version}";
+ src = sources.tools.ttrss;
+ buildPhase = ''
+ rm -rf lock feed-icons cache
+ ln -sf ${varDir}/{lock,feed-icons,cache} .
+ '';
+ installPhase = ''
+ cp -a . $out
+ ln -s ${ttrss_config} $out/config.php
+ '';
+ passthru = toPassthru package [];
+ };
+in package
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix
new file mode 100644
index 0000000..39f9e0e
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix
@@ -0,0 +1,18 @@
+{ patched ? false, stdenv, fetchFromGitHub, lib }:
+stdenv.mkDerivation ({
+ pname = "ttrss-af_feedmod";
+ version = "0ea2092-master";
+ src = fetchFromGitHub {
+ owner = "mbirth";
+ repo = "ttrss_plugin-af_feedmod";
+ rev = "0ea2092dd34067ecd898802cfca3570023d1ecfe";
+ sha256 = "02ibf47zcrsc2rr45wsix8gxyyf371davj8n8i0gj1zdq95klvnv";
+ fetchSubmodules = true;
+ };
+ patches = lib.optionals patched [ ./type_replace.patch ];
+ installPhase = ''
+ mkdir $out
+ cp init.php $out
+ '';
+ passthru.pluginName = "af_feedmod";
+})
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch b/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch
new file mode 100644
index 0000000..d622577
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch
@@ -0,0 +1,12 @@
+--- a/init.php 2014-06-16 14:21:06.995480038 +0200
++++ b/init.php 2014-06-16 14:22:00.151027654 +0200
+@@ -147,6 +147,9 @@
+ }
+ }
+ break;
++ case 'replace':
++ $article['content'] = preg_replace("/".$config['pattern']."/",$config['replacement'],$article['content']);
++ break;
+
+ default:
+ // unknown type or invalid config
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix
new file mode 100644
index 0000000..d283160
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchFromGitHub }:
+stdenv.mkDerivation ({
+ pname = "ttrss-auth-ldap";
+ version = "4d751b0-master";
+ src = fetchFromGitHub {
+ owner = "hydrian";
+ repo = "TTRSS-Auth-LDAP";
+ rev = "4d751b095c29a8dbe2dc7bb07777742956136e94";
+ sha256 = "0b9fl86acrzpcv41r7pj3bl8b3n72hpkdywzx9zjyfqv5pskxyim";
+ fetchSubmodules = true;
+ };
+ installPhase = ''
+ mkdir $out
+ cp plugins/auth_ldap/init.php $out
+ '';
+ passthru.pluginName = "auth_ldap";
+})
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/default.nix
new file mode 100644
index 0000000..2f86416
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/default.nix
@@ -0,0 +1,18 @@
+{ patched ? false, stdenv, fetchFromGitHub, lib }:
+stdenv.mkDerivation ({
+ pname = "ttrss-feediron";
+ version = "407168c-master";
+ src = fetchFromGitHub {
+ owner = "m42e";
+ repo = "ttrss_plugin-feediron";
+ rev = "407168c628880b5ced572cc549db6d50e866d3c8";
+ sha256 = "17b95ifpcph6m03hjd1mhi8gi1hw9yd3fnffmw66fqr5c9l3zd9r";
+ fetchSubmodules = true;
+ };
+ patches = lib.optionals patched [ ./json_reformat.patch ];
+ installPhase = ''
+ mkdir $out
+ cp -a . $out
+ '';
+ passthru.pluginName = "feediron";
+})
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch b/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch
new file mode 100644
index 0000000..e1c44d9
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch
@@ -0,0 +1,18 @@
+diff --git a/init.php b/init.php
+index 3c0f2f9..1aad146 100644
+--- a/init.php
++++ b/init.php
+@@ -600,10 +600,11 @@ class Feediron extends Plugin implements IHandler
+ return false;
+ }
+
+- $this->host->set($this, 'json_conf', Feediron_Json::format($json_conf));
++ $new_conf = json_encode(json_decode($json_conf), JSON_PRETTY_PRINT);
++ $this->host->set($this, 'json_conf', $new_conf);
+ $json_reply['success'] = true;
+ $json_reply['message'] = __('Configuration saved.');
+- $json_reply['json_conf'] = Feediron_Json::format($json_conf);
++ $json_reply['json_conf'] = $new_conf;
+ echo json_encode($json_reply);
+ }
+
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix
new file mode 100644
index 0000000..f0df588
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchFromGitHub }:
+stdenv.mkDerivation ({
+ pname = "ttrss-ff_instagram";
+ version = "0366ffb-master";
+ src = fetchFromGitHub {
+ owner = "wltb";
+ repo = "ff_instagram";
+ rev = "0366ffb18c4d490c8fbfba2f5f3367a5af23cfe8";
+ sha256 = "0vvzl6wi6jmrqknsfddvckjgsgfizz1d923d1nyrpzjfn6bda1vk";
+ fetchSubmodules = true;
+ };
+ installPhase = ''
+ mkdir $out
+ cp -a . $out
+ '';
+ passthru.pluginName = "ff_instagram";
+})
diff --git a/flakes/mypackages/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix b/flakes/mypackages/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix
new file mode 100644
index 0000000..072b6c3
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchFromGitHub }:
+stdenv.mkDerivation ({
+ pname = "ttrss-tumblr_gdpr_ua";
+ version = "287c584-master";
+ src = fetchFromGitHub {
+ owner = "hkockerbeck";
+ repo = "ttrss-tumblr-gdpr-ua";
+ rev = "287c584e68845d524f920156bff0b2eaa6f65117";
+ sha256 = "1fviawgcclqky4k4xv1sqzvpb8i74w9f0pclm09m78s8l85wh9py";
+ fetchSubmodules = true;
+ };
+ installPhase = ''
+ mkdir $out
+ cp -a . $out
+ '';
+ passthru.pluginName = "tumblr_gdpr_ua";
+})
diff --git a/flakes/mypackages/pkgs/webapps/wallabag/default.nix b/flakes/mypackages/pkgs/webapps/wallabag/default.nix
new file mode 100644
index 0000000..bd420d4
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/wallabag/default.nix
@@ -0,0 +1,54 @@
+{ varDir ? "/var/lib/wallabag"
+, wallabag_config ? "/etc/wallabag/parameters.yml"
+, ldap ? false
+, composerEnv, fetchurl, lib }:
+composerEnv.buildPackage rec {
+ packages = {
+ "fr3d/ldap-bundle" = {
+ targetDir = "";
+ src = composerEnv.buildZipPackage {
+ name = "fr3d-ldap-bundle-5a8927c11af45fa06331b97221c6da1a4a237475";
+ src = fetchurl {
+ url = https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475;
+ sha256 = "168zkd82j200wd6h0a3lq81g5s2pifg889rv27q2g429nppsbfxc";
+ };
+ };
+ };
+ "zendframework/zend-ldap" = {
+ targetDir = "";
+ src = composerEnv.buildZipPackage {
+ name = "zendframework-zend-ldap-b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49";
+ src = fetchurl {
+ url = https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49;
+ sha256 = "0mn4yqnb5prqhrbbybmw1i2rx7xf4s4wagbdq9qi55fa0vk3jgw9";
+ };
+ };
+ };
+ };
+ noDev = true;
+ doRemoveVendor = false;
+ # Beware when upgrading, I probably messed up with the migrations table
+ # (due to a psql bug in wallabag)
+ version = "2.3.8";
+ name = "wallabag-${version}";
+ src = fetchurl {
+ url = "https://static.wallabag.org/releases/wallabag-release-${version}.tar.gz";
+ sha256 = "1sr62hfk2f2rl5by48dg8yd1gchngjnc850as17wr3w287p1kwsq";
+ };
+ unpackPhase = ''
+ unpackFile "$src"
+ sourceRoot=${version}
+ src=$PWD/${version}
+ '';
+ patches = lib.optionals ldap [ ./ldap.patch ];
+ preInstall = ''
+ export SYMFONY_ENV="prod"
+ '';
+ postInstall = ''
+ rm -rf web/assets var/{cache,logs,sessions} app/config/parameters.yml data
+ ln -sf ${wallabag_config} app/config/parameters.yml
+ ln -sf ${varDir}/var/{cache,logs,sessions} var
+ ln -sf ${varDir}/data data
+ ln -sf ${varDir}/assets web/assets
+ '';
+}
diff --git a/flakes/mypackages/pkgs/webapps/wallabag/ldap.patch b/flakes/mypackages/pkgs/webapps/wallabag/ldap.patch
new file mode 100644
index 0000000..e04dae1
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/wallabag/ldap.patch
@@ -0,0 +1,664 @@
+diff --git a/.travis.yml b/.travis.yml
+index 04cea258..56b1f576 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -58,6 +58,7 @@ install:
+
+ before_script:
+ - PHP=$TRAVIS_PHP_VERSION
++ - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
+ - if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi;
+ # xdebug isn't enable for PHP 7.1
+ - if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi
+diff --git a/app/AppKernel.php b/app/AppKernel.php
+index 40726f05..c4f465dc 100644
+--- a/app/AppKernel.php
++++ b/app/AppKernel.php
+@@ -42,6 +42,10 @@ class AppKernel extends Kernel
+ new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(),
+ ];
+
++ if (class_exists('FR3D\\LdapBundle\\FR3DLdapBundle')) {
++ $bundles[] = new FR3D\LdapBundle\FR3DLdapBundle();
++ }
++
+ if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
+ $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
+ $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
+diff --git a/app/DoctrineMigrations/Version20170710113900.php b/app/DoctrineMigrations/Version20170710113900.php
+new file mode 100644
+index 00000000..7be83110
+--- /dev/null
++++ b/app/DoctrineMigrations/Version20170710113900.php
+@@ -0,0 +1,54 @@
++container = $container;
++ }
++
++ private function getTable($tableName)
++ {
++ return $this->container->getParameter('database_table_prefix').$tableName;
++ }
++
++ /**
++ * @param Schema $schema
++ */
++ public function up(Schema $schema)
++ {
++ $usersTable = $schema->getTable($this->getTable('user'));
++
++ $this->skipIf($usersTable->hasColumn('dn'), 'It seems that you already played this migration.');
++
++ $usersTable->addColumn('dn', 'text', [
++ 'default' => null,
++ 'notnull' => false,
++ ]);
++ }
++
++ /**
++ * @param Schema $schema
++ */
++ public function down(Schema $schema)
++ {
++ $usersTable = $schema->getTable($this->getTable('user'));
++ $usersTable->dropColumn('dn');
++ }
++}
++
+diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist
+index 6b0cb8e8..cfd41b69 100644
+--- a/app/config/parameters.yml.dist
++++ b/app/config/parameters.yml.dist
+@@ -62,3 +62,23 @@ parameters:
+ redis_port: 6379
+ redis_path: null
+ redis_password: null
++
++ # ldap configuration
++ # To enable, you need to require fr3d/ldap-bundle
++ ldap_enabled: false
++ ldap_host: localhost
++ ldap_port: 389
++ ldap_tls: false
++ ldap_ssl: false
++ ldap_bind_requires_dn: true
++ ldap_base: dc=example,dc=com
++ ldap_manager_dn: ou=Manager,dc=example,dc=com
++ ldap_manager_pw: password
++ ldap_filter: (&(ObjectClass=Person))
++ # optional (if null: no ldap user is admin)
++ ldap_admin_filter: (&(memberOf=ou=admins,dc=example,dc=com)(uid=%s))
++ ldap_username_attribute: uid
++ ldap_email_attribute: mail
++ ldap_name_attribute: cn
++ # optional (default sets user as enabled unconditionally)
++ ldap_enabled_attribute: ~
+diff --git a/app/config/security.yml b/app/config/security.yml
+index 02afc9ea..48fbb553 100644
+--- a/app/config/security.yml
++++ b/app/config/security.yml
+@@ -6,6 +6,7 @@ security:
+ ROLE_ADMIN: ROLE_USER
+ ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
+
++ # /!\ This list is modified in WallabagUserBundle when LDAP is enabled
+ providers:
+ administrators:
+ entity:
+@@ -36,6 +37,7 @@ security:
+ pattern: ^/login$
+ anonymous: ~
+
++ # /!\ This section is modified in WallabagUserBundle when LDAP is enabled
+ secured_area:
+ pattern: ^/
+ form_login:
+diff --git a/composer.json b/composer.json
+index 0483da1d..e3e47bdc 100644
+--- a/composer.json
++++ b/composer.json
+@@ -87,7 +87,11 @@
+ "bdunogier/guzzle-site-authenticator": "^1.0.0",
+ "defuse/php-encryption": "^2.1",
+ "html2text/html2text": "^4.1",
+- "sulu/symfony-intl-fix": "^1.0"
++ "sulu/symfony-intl-fix": "^1.0",
++ "fr3d/ldap-bundle": "^3.0"
++ },
++ "suggest": {
++ "fr3d/ldap-bundle": "If you want to authenticate via LDAP"
+ },
+ "require-dev": {
+ "doctrine/doctrine-fixtures-bundle": "~2.2",
+diff --git a/composer.lock b/composer.lock
+index b3b0a4c6..8c8a87ee 100644
+--- a/composer.lock
++++ b/composer.lock
+@@ -1346,6 +1346,65 @@
+ ],
+ "time": "2019-05-09T11:53:40+00:00"
+ },
++ {
++ "name": "fr3d/ldap-bundle",
++ "version": "v3.0.0",
++ "source": {
++ "type": "git",
++ "url": "https://github.com/Maks3w/FR3DLdapBundle.git",
++ "reference": "5a8927c11af45fa06331b97221c6da1a4a237475"
++ },
++ "dist": {
++ "type": "zip",
++ "url": "https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475",
++ "reference": "5a8927c11af45fa06331b97221c6da1a4a237475",
++ "shasum": ""
++ },
++ "require": {
++ "php": ">=5.5",
++ "psr/log": "~1.0",
++ "symfony/config": "2.3 - 3",
++ "symfony/dependency-injection": "2.3 - 3",
++ "symfony/polyfill-php56": "^1.1",
++ "symfony/security": "2.3 - 3",
++ "symfony/security-bundle": "2.3 - 3",
++ "zendframework/zend-ldap": "2.5 - 3"
++ },
++ "require-dev": {
++ "fabpot/php-cs-fixer": "1.11.*",
++ "fr3d/psr3-message-assertions": "0.1.*",
++ "friendsofsymfony/user-bundle": "~1.3",
++ "maks3w/phpunit-methods-trait": "^4.6",
++ "phpunit/phpunit": "^4.6",
++ "symfony/validator": "2.3 - 3"
++ },
++ "suggest": {
++ "friendsofsymfony/user-bundle": "Integrate authentication and management for DB users, useful for unmanned LDAP servers",
++ "symfony/validator": "Allow pre-validate for existing users before register new ones"
++ },
++ "type": "symfony-bundle",
++ "autoload": {
++ "psr-4": {
++ "FR3D\\LdapBundle\\": ""
++ }
++ },
++ "notification-url": "https://packagist.org/downloads/",
++ "license": [
++ "MIT"
++ ],
++ "authors": [
++ {
++ "name": "Maks3w"
++ }
++ ],
++ "description": "This package provide users and authentication services based on LDAP directories for Symfony2 framework",
++ "homepage": "https://github.com/Maks3w/FR3DLdapBundle",
++ "keywords": [
++ "Authentication",
++ "ldap"
++ ],
++ "time": "2016-02-12T17:45:14+00:00"
++ },
+ {
+ "name": "friendsofsymfony/jsrouting-bundle",
+ "version": "1.6.3",
+@@ -7069,6 +7128,59 @@
+ "zf2"
+ ],
+ "time": "2018-04-25T15:33:34+00:00"
++ },
++ {
++ "name": "zendframework/zend-ldap",
++ "version": "2.10.0",
++ "source": {
++ "type": "git",
++ "url": "https://github.com/zendframework/zend-ldap.git",
++ "reference": "b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49"
++ },
++ "dist": {
++ "type": "zip",
++ "url": "https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49",
++ "reference": "b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49",
++ "shasum": ""
++ },
++ "require": {
++ "ext-ldap": "*",
++ "php": "^5.6 || ^7.0"
++ },
++ "require-dev": {
++ "php-mock/php-mock-phpunit": "^1.1.2 || ^2.1.1",
++ "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2",
++ "zendframework/zend-coding-standard": "~1.0.0",
++ "zendframework/zend-config": "^2.5",
++ "zendframework/zend-eventmanager": "^2.6.3 || ^3.0.1",
++ "zendframework/zend-stdlib": "^2.7 || ^3.0"
++ },
++ "suggest": {
++ "zendframework/zend-eventmanager": "Zend\\EventManager component"
++ },
++ "type": "library",
++ "extra": {
++ "branch-alias": {
++ "dev-master": "2.10.x-dev",
++ "dev-develop": "2.11.x-dev"
++ }
++ },
++ "autoload": {
++ "psr-4": {
++ "Zend\\Ldap\\": "src/"
++ }
++ },
++ "notification-url": "https://packagist.org/downloads/",
++ "license": [
++ "BSD-3-Clause"
++ ],
++ "description": "Provides support for LDAP operations including but not limited to binding, searching and modifying entries in an LDAP directory",
++ "keywords": [
++ "ZendFramework",
++ "ldap",
++ "zf"
++ ],
++ "time": "2018-07-05T05:05:12+00:00"
+ }
+ ],
+ "packages-dev": [
+diff --git a/scripts/install.sh b/scripts/install.sh
+index affa715f..45254212 100755
+--- a/scripts/install.sh
++++ b/scripts/install.sh
+@@ -37,5 +37,8 @@ fi
+ TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
+
+ git checkout $TAG
++if [ -n "$LDAP_ENABLED" ]; then
++ SYMFONY_ENV=$ENV $COMPOSER_COMMAND require --no-update fr3d/ldap-bundle
++fi
+ SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist
+ php bin/console wallabag:install --env=$ENV
+diff --git a/scripts/update.sh b/scripts/update.sh
+index 3ef10439..eeee28d6 100755
+--- a/scripts/update.sh
++++ b/scripts/update.sh
+@@ -42,6 +42,9 @@ git fetch origin
+ git fetch --tags
+ TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
+ git checkout $TAG --force
++if [ -n "$LDAP_ENABLED" ]; then
++ SYMFONY_ENV=$ENV $COMPOSER_COMMAND require --no-update fr3d/ldap-bundle
++fi
+ SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist
+ php bin/console doctrine:migrations:migrate --no-interaction --env=$ENV
+ php bin/console cache:clear --env=$ENV
+diff --git a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
+index 5ca3482e..904a6af1 100644
+--- a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
++++ b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
+@@ -6,9 +6,34 @@ use Symfony\Component\Config\FileLocator;
+ use Symfony\Component\DependencyInjection\ContainerBuilder;
+ use Symfony\Component\DependencyInjection\Loader;
+ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
++use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
+
+-class WallabagUserExtension extends Extension
++class WallabagUserExtension extends Extension implements PrependExtensionInterface
+ {
++ public function prepend(ContainerBuilder $container)
++ {
++ $ldap = $container->getParameter('ldap_enabled');
++
++ if ($ldap) {
++ $container->prependExtensionConfig('security', array(
++ 'providers' => array(
++ 'chain_provider' => array(),
++ ),
++ ));
++ $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
++ $loader->load('ldap.yml');
++ } elseif ($container->hasExtension('fr3d_ldap')) {
++ $container->prependExtensionConfig('fr3_d_ldap', array(
++ 'driver' => array(
++ 'host' => 'localhost',
++ ),
++ 'user' => array(
++ 'baseDn' => 'dc=example,dc=com',
++ ),
++ ));
++ }
++ }
++
+ public function load(array $configs, ContainerBuilder $container)
+ {
+ $configuration = new Configuration();
+@@ -16,6 +41,9 @@ class WallabagUserExtension extends Extension
+
+ $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
+ $loader->load('services.yml');
++ if ($container->getParameter('ldap_enabled')) {
++ $loader->load('ldap_services.yml');
++ }
+ $container->setParameter('wallabag_user.registration_enabled', $config['registration_enabled']);
+ }
+
+diff --git a/src/Wallabag/UserBundle/Entity/User.php b/src/Wallabag/UserBundle/Entity/User.php
+index 48446e3c..f93c59c7 100644
+--- a/src/Wallabag/UserBundle/Entity/User.php
++++ b/src/Wallabag/UserBundle/Entity/User.php
+@@ -1,5 +1,15 @@
+ clients->first();
+ }
+ }
++
++ /**
++ * Set dn.
++ *
++ * @param string $dn
++ *
++ * @return User
++ */
++ public function setDn($dn)
++ {
++ $this->dn = $dn;
++
++ return $this;
++ }
++
++ /**
++ * Get dn.
++ *
++ * @return string
++ */
++ public function getDn()
++ {
++ return $this->dn;
++ }
++
++ public function isLdapUser()
++ {
++ return $this->dn !== null;
++ }
+ }
+diff --git a/src/Wallabag/UserBundle/LdapHydrator.php b/src/Wallabag/UserBundle/LdapHydrator.php
+new file mode 100644
+index 00000000..cea2450f
+--- /dev/null
++++ b/src/Wallabag/UserBundle/LdapHydrator.php
+@@ -0,0 +1,103 @@
++userManager = $user_manager;
++ $this->eventDispatcher = $event_dispatcher;
++
++ $this->attributesMap = array(
++ 'setUsername' => $attributes_map[0],
++ 'setEmail' => $attributes_map[1],
++ 'setName' => $attributes_map[2],
++ );
++ $this->enabledAttribute = $attributes_map[3];
++
++ $this->ldapBaseDn = $ldap_base_dn;
++ $this->ldapAdminFilter = $ldap_admin_filter;
++ $this->ldapDriver = $ldap_driver;
++ }
++
++ public function hydrate(array $ldapEntry)
++ {
++ $user = $this->userManager->findUserBy(array('dn' => $ldapEntry['dn']));
++
++ if (!$user) {
++ $user = $this->userManager->createUser();
++ $user->setDn($ldapEntry['dn']);
++ $user->setPassword('');
++ $user->setSalt('');
++ $this->updateUserFields($user, $ldapEntry);
++
++ $event = new UserEvent($user);
++ $this->eventDispatcher->dispatch(FOSUserEvents::USER_CREATED, $event);
++
++ $this->userManager->reloadUser($user);
++ } else {
++ $this->updateUserFields($user, $ldapEntry);
++ }
++
++ return $user;
++ }
++
++ private function updateUserFields($user, $ldapEntry)
++ {
++ foreach ($this->attributesMap as $key => $value) {
++ if (is_array($ldapEntry[$value])) {
++ $ldap_value = $ldapEntry[$value][0];
++ } else {
++ $ldap_value = $ldapEntry[$value];
++ }
++
++ call_user_func([$user, $key], $ldap_value);
++ }
++
++ if ($this->enabledAttribute !== null) {
++ $user->setEnabled($ldapEntry[$this->enabledAttribute]);
++ } else {
++ $user->setEnabled(true);
++ }
++
++ if ($this->isAdmin($user)) {
++ $user->addRole('ROLE_SUPER_ADMIN');
++ } else {
++ $user->removeRole('ROLE_SUPER_ADMIN');
++ }
++
++ $this->userManager->updateUser($user, true);
++ }
++
++ private function isAdmin($user)
++ {
++ if ($this->ldapAdminFilter === null) {
++ return false;
++ }
++
++ $escaped_username = ldap_escape($user->getUsername(), '', LDAP_ESCAPE_FILTER);
++ $filter = sprintf($this->ldapAdminFilter, $escaped_username);
++ $entries = $this->ldapDriver->search($this->ldapBaseDn, $filter);
++
++ return $entries['count'] == 1;
++ }
++}
+diff --git a/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php b/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php
+new file mode 100644
+index 00000000..8a851f12
+--- /dev/null
++++ b/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php
+@@ -0,0 +1,43 @@
++ldapManager = $ldap_manager;
++ }
++
++ public function checkUserCredentials(IOAuth2Client $client, $username, $password)
++ {
++ try {
++ $user = $this->userProvider->loadUserByUsername($username);
++ } catch (AuthenticationException $e) {
++ return false;
++ }
++
++ if ($user->isLdapUser()) {
++ return $this->checkLdapUserCredentials($user, $password);
++ } else {
++ return parent::checkUserCredentials($client, $username, $password);
++ }
++ }
++
++ private function checkLdapUserCredentials($user, $password)
++ {
++ if ($this->ldapManager->bind($user, $password)) {
++ return array(
++ 'data' => $user,
++ );
++ } else {
++ return false;
++ }
++ }
++}
+diff --git a/src/Wallabag/UserBundle/Resources/config/ldap.yml b/src/Wallabag/UserBundle/Resources/config/ldap.yml
+new file mode 100644
+index 00000000..5ec16088
+--- /dev/null
++++ b/src/Wallabag/UserBundle/Resources/config/ldap.yml
+@@ -0,0 +1,28 @@
++fr3d_ldap:
++ service:
++ user_hydrator: ldap_user_hydrator
++ driver:
++ host: "%ldap_host%"
++ port: "%ldap_port%"
++ useSsl: "%ldap_ssl%"
++ useStartTls: "%ldap_tls%"
++ bindRequiresDn: "%ldap_bind_requires_dn%"
++ username: "%ldap_manager_dn%"
++ password: "%ldap_manager_pw%"
++ user:
++ baseDn: "%ldap_base%"
++ filter: "%ldap_filter%"
++ usernameAttribute: "%ldap_username_attribute%"
++security:
++ providers:
++ chain_provider:
++ chain:
++ providers: [ fr3d_ldapbundle, fos_userbundle ]
++ fr3d_ldapbundle:
++ id: fr3d_ldap.security.user.provider
++ firewalls:
++ secured_area:
++ fr3d_ldap: ~
++ form_login:
++ provider: chain_provider
++
+diff --git a/src/Wallabag/UserBundle/Resources/config/ldap_services.yml b/src/Wallabag/UserBundle/Resources/config/ldap_services.yml
+new file mode 100644
+index 00000000..b3e3fd8a
+--- /dev/null
++++ b/src/Wallabag/UserBundle/Resources/config/ldap_services.yml
+@@ -0,0 +1,22 @@
++services:
++ fos_oauth_server.server:
++ class: OAuth2\OAuth2
++ arguments:
++ - "@oauth_storage_ldap_wrapper"
++ - "%fos_oauth_server.server.options%"
++ oauth_storage_ldap_wrapper:
++ class: Wallabag\UserBundle\OAuthStorageLdapWrapper
++ parent: fos_oauth_server.storage
++ calls:
++ - [setLdapManager, ["@fr3d_ldap.ldap_manager"]]
++
++ ldap_user_hydrator:
++ class: Wallabag\UserBundle\LdapHydrator
++ arguments:
++ - "@fos_user.user_manager"
++ - "@event_dispatcher"
++ - [ "%ldap_username_attribute%", "%ldap_email_attribute%", "%ldap_name_attribute%", "%ldap_enabled_attribute%" ]
++ - "%ldap_base%"
++ - "%ldap_admin_filter%"
++ - "@fr3d_ldap.ldap_driver"
++
diff --git a/flakes/mypackages/pkgs/webapps/yourls/default.nix b/flakes/mypackages/pkgs/webapps/yourls/default.nix
new file mode 100644
index 0000000..8001a60
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/yourls/default.nix
@@ -0,0 +1,37 @@
+{ yourls_config ? "/etc/yourls/config.php", fetchFromGitHub, callPackage, lib, stdenv }:
+let
+ pluginNames = [ "ldap" ];
+ allPlugins = lib.attrsets.genAttrs pluginNames
+ (name: callPackage (./plugins + "/${name}") {});
+ toPassthru = pkg: plugins: {
+ inherit plugins allPlugins;
+ withPlugins = withPlugins pkg;
+ };
+ withPlugins = pkg: toPlugins:
+ let
+ plugins = toPlugins allPlugins;
+ toInstallPlugin = n: "ln -s ${n} $out/user/plugins/${n.pluginName}";
+ newYourls = pkg.overrideAttrs(old: {
+ installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
+ passthru = toPassthru newYourls (pkg.plugins ++ plugins);
+ });
+ in newYourls;
+ package = stdenv.mkDerivation (rec {
+ pname = "yourls";
+ version = "1.7.3";
+ src = fetchFromGitHub {
+ owner = "YOURLS";
+ repo = "YOURLS";
+ rev = "077018822d3594229daa8343310d0b40804b9ddc";
+ sha256 = "1av6h619rwqn0yn0kjn2s2h3gmrhmxaaa9hd5ns4ralxgg731imd";
+ fetchSubmodules = true;
+ };
+ installPhase = ''
+ mkdir -p $out
+ cp -a */ *.php $out/
+ cp sample-robots.txt $out/robots.txt
+ ln -sf ${yourls_config} $out/includes/config.php
+ '';
+ passthru = toPassthru package [];
+ });
+in package
diff --git a/flakes/mypackages/pkgs/webapps/yourls/plugins/ldap/default.nix b/flakes/mypackages/pkgs/webapps/yourls/plugins/ldap/default.nix
new file mode 100644
index 0000000..5870faa
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/yourls/plugins/ldap/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchFromGitHub }:
+stdenv.mkDerivation (rec {
+ pname = "yourls-ldap-plugin";
+ version = "2a3cb03-master";
+ src = fetchFromGitHub {
+ owner = "k3a";
+ repo = "yourls-ldap-plugin";
+ rev = "2a3cb0334b8a6b81b284a7196e614bbd2b2b1615";
+ sha256 = "0cchbnli77d295lzf7kjmn4dcxj2bmdqa9qc3f8l8qgmp4n5n0gh";
+ fetchSubmodules = true;
+ };
+ installPhase = ''
+ mkdir -p $out
+ cp plugin.php $out
+ '';
+ passthru.pluginName = "ldap";
+})
diff --git a/flakes/myuids/flake.nix b/flakes/myuids/flake.nix
index cc6dc66..ff33651 100644
--- a/flakes/myuids/flake.nix
+++ b/flakes/myuids/flake.nix
@@ -6,6 +6,7 @@
# Check that there is no clash with nixos/modules/misc/ids.nix
uids = {
cryptpad = 386;
+ openldap = 99; # commented in the ids file
postfixscripts = 387;
acme = 388;
backup = 389;
@@ -21,6 +22,7 @@
};
gids = {
nagios = 11; # commented in the ids file
+ openldap = 99; # commented in the ids file
cryptpad = 386;
acme = 388;
backup = 389;
@@ -35,10 +37,20 @@
mastodon = 399;
};
};
- nixosModule = { ... }: {
+ nixosModule = { config, lib, ... }: {
config = {
ids.uids = self.lib.uids;
ids.gids = self.lib.gids;
+ assertions = [
+ {
+ assertion = builtins.length (builtins.attrValues config.ids.gids) == builtins.length (lib.unique (builtins.attrValues config.ids.gids));
+ message = "Non-unique list of gids";
+ }
+ {
+ assertion = builtins.length (builtins.attrValues config.ids.uids) == builtins.length (lib.unique (builtins.attrValues config.ids.uids));
+ message = "Non-unique list of uids";
+ }
+ ];
};
};
};
diff --git a/flakes/naemon/flake.nix b/flakes/naemon/flake.nix
new file mode 100644
index 0000000..9b2ace5
--- /dev/null
+++ b/flakes/naemon/flake.nix
@@ -0,0 +1,191 @@
+{
+ outputs = { self }: {
+ nixosModule = self.nixosModules.naemon;
+ nixosModules.naemon = { config, lib, pkgs, ... }:
+ with lib;
+
+ let
+ cfg = config.services.naemon;
+
+ naemonConfig = pkgs.runCommand "naemon-config" {
+ objectsFile = pkgs.writeText "naemon_objects.cfg" cfg.objectDefs;
+ resourceFile = config.secrets.fullPaths."naemon/resources.cfg";
+ extraConfig = pkgs.writeText "extra.cfg" cfg.extraConfig;
+ inherit (cfg) logDir varDir runDir cacheDir;
+ } ''
+ substituteAll ${./naemon.cfg} $out
+ cat $extraConfig >> $out
+ '';
+ in
+ {
+ # Necessary for situations where flake gets included multiple times
+ key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
+
+ options = {
+ services.naemon = {
+ enable = mkOption {
+ default = false;
+ description = "
+ Whether to use Naemon to monitor
+ your system or network.
+ ";
+ };
+
+ objectDefs = mkOption {
+ type = types.lines;
+ default = "";
+ description = "
+ A list of Naemon object configuration that must define
+ the hosts, host groups, services and contacts for the
+ network that you want Naemon to monitor.
+ ";
+ };
+
+ extraResource = mkOption {
+ type = types.lines;
+ default = "";
+ example = ''
+ # Sets $USER2$ to be the path to event handlers
+ #$USER2$=/usr/lib/monitoring-plugins/eventhandlers
+
+ # Store some usernames and passwords (hidden from the CGIs)
+ #$USER3$=someuser
+ #$USER4$=somepassword
+ '';
+ description = "
+ Lines to add to the resource file
+ # You can define $USERx$ macros in this file, which can in turn be used
+ # in command definitions in your host config file(s). $USERx$ macros are
+ # useful for storing sensitive information such as usernames, passwords,
+ # etc. They are also handy for specifying the path to plugins and
+ # event handlers - if you decide to move the plugins or event handlers to
+ # a different directory in the future, you can just update one or two
+ # $USERx$ macros, instead of modifying a lot of command definitions.
+ #
+ # Naemon supports up to 256 $USERx$ macros ($USER1$ through $USER256$)
+ #
+ # Resource files may also be used to store configuration directives for
+ # external data sources like MySQL...
+ #
+ ";
+ };
+
+ extraConfig = mkOption {
+ type = types.lines;
+ default = "";
+ description = "
+ Extra config to append to main config
+ ";
+ };
+
+ user = mkOption {
+ type = types.str;
+ default = "naemon";
+ description = "User for naemon";
+ };
+
+ group = mkOption {
+ type = types.str;
+ default = "naemon";
+ description = "Group for naemon";
+ };
+
+ varDir = mkOption {
+ type = types.path;
+ default = "/var/lib/naemon";
+ description = "The directory where naemon stores its data";
+ };
+
+ cacheDir = mkOption {
+ type = types.path;
+ default = "/var/cache/naemon";
+ description = "The directory where naemon stores its cache";
+ };
+
+ runDir = mkOption {
+ type = types.path;
+ default = "/run/naemon";
+ description = "The directory where naemon stores its runtime files";
+ };
+
+ logDir = mkOption {
+ type = types.path;
+ default = "/var/log/naemon";
+ description = "The directory where naemon stores its log files";
+ };
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.naemon.override {
+ inherit (cfg) varDir cacheDir logDir runDir user group;
+ };
+ description = ''
+ Naemon package to use
+ '';
+ };
+ };
+ };
+
+
+ config = mkIf cfg.enable {
+ secrets.keys = {
+ "naemon/resources.cfg" = {
+ user = cfg.user;
+ group = cfg.group;
+ permissions = "0400";
+ text = ''
+ $USER1$=${pkgs.monitoring-plugins}/libexec
+ ${cfg.extraResource}
+ '';
+ keyDependencies = [ pkgs.monitoring-plugins ];
+ };
+ };
+
+ users.users = optionalAttrs (cfg.user == "naemon") {
+ naemon = {
+ group = cfg.group;
+ uid = config.ids.uids.nagios;
+ extraGroups = [ "keys" ];
+ };
+ };
+ users.groups = optionalAttrs (cfg.user == "naemon") {
+ naemon = {
+ gid = config.ids.gids.nagios;
+ };
+ };
+
+ services.filesWatcher.naemon = {
+ paths = [ config.secrets.fullPaths."naemon/resources.cfg" ];
+ };
+ systemd.services.naemon = {
+ description = "Naemon monitoring daemon";
+ path = [ cfg.package ];
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+
+ preStart = "${cfg.package}/bin/naemon -vp ${naemonConfig}";
+ script = "${cfg.package}/bin/naemon --daemon ${naemonConfig}";
+ reload = "${pkgs.utillinux}/bin/kill -HUP $MAINPID";
+ serviceConfig = {
+ User = cfg.user;
+ Restart = "always";
+ RestartSec = 2;
+ StandardOutput = "journal";
+ StandardError = "inherit";
+ PIDFile = "${cfg.runDir}/naemon.pid";
+ LogsDirectory = assert lib.strings.hasPrefix "/var/log/" cfg.logDir;
+ lib.strings.removePrefix "/var/log/" cfg.logDir;
+ CacheDirectory = assert lib.strings.hasPrefix "/var/cache/" cfg.cacheDir;
+ let unprefixed = lib.strings.removePrefix "/var/cache/" cfg.cacheDir;
+ in [ unprefixed "${unprefixed}/checkresults" ];
+ StateDirectory = assert lib.strings.hasPrefix "/var/lib/" cfg.varDir;
+ lib.strings.removePrefix "/var/lib/" cfg.varDir;
+ RuntimeDirectory = assert lib.strings.hasPrefix "/run/" cfg.runDir;
+ lib.strings.removePrefix "/run/" cfg.runDir;
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/flakes/naemon/naemon.cfg b/flakes/naemon/naemon.cfg
new file mode 100644
index 0000000..792e03b
--- /dev/null
+++ b/flakes/naemon/naemon.cfg
@@ -0,0 +1,1059 @@
+##############################################################################
+#
+# naemon.cfg - Sample Main Config File for Naemon 1.0.10.gc2a87305.dirty.20190703.source
+#
+# Read the documentation for more information on this configuration
+# file. I've provided some comments here, but things may not be so
+# clear without further explanation.
+#
+#
+##############################################################################
+
+
+# LOG FILE
+# This is the main log file where service and host events are logged
+# for historical purposes. This should be the first option specified
+# in the config file!!!
+
+log_file=@logDir@/naemon.log
+
+
+
+# OBJECT CONFIGURATION FILE(S)
+# These are the object configuration files in which you define hosts,
+# host groups, contacts, contact groups, services, etc.
+# You can split your object definitions across several config files
+# if you wish (as shown below), or keep them all in a single config file.
+
+# You can specify individual object config files as shown below:
+#cfg_file=/etc/naemon/objects/commands.cfg
+#cfg_file=/etc/naemon/objects/contacts.cfg
+#cfg_file=/etc/naemon/objects/timeperiods.cfg
+#cfg_file=/etc/naemon/objects/templates.cfg
+cfg_file=@objectsFile@
+
+
+# You can also tell naemon to process all config files (with a .cfg
+# extension) in a particular directory by using the cfg_dir
+# directive as shown below:
+#cfg_dir=/etc/naemon/conf.d
+
+
+
+
+# OBJECT CACHE FILE
+# This option determines where object definitions are cached when
+# naemon starts/restarts. The CGIs read object definitions from
+# this cache file (rather than looking at the object config files
+# directly) in order to prevent inconsistencies that can occur
+# when the config files are modified after naemon starts.
+
+object_cache_file=@varDir@/objects.cache
+
+
+
+# PRE-CACHED OBJECT FILE
+# This options determines the location of the precached object file.
+# If you run naemon with the -p command line option, it will preprocess
+# your object configuration file(s) and write the cached config to this
+# file. You can then start naemon with the -u option to have it read
+# object definitions from this precached file, rather than the standard
+# object configuration files (see the cfg_file and cfg_dir options above).
+# Using a precached object file can speed up the time needed to (re)start
+# the naemon process if you've got a large and/or complex configuration.
+# Read the documentation section on optimizing naemon to find our more
+# about how this feature works.
+
+precached_object_file=@varDir@/objects.precache
+
+
+
+# RESOURCE FILE
+# This is an optional resource file that contains $USERx$ macro
+# definitions. Multiple resource files can be specified by using
+# multiple resource_file definitions. The CGIs will not attempt to
+# read the contents of resource files, so information that is
+# considered to be sensitive (usernames, passwords, etc) can be
+# defined as macros in this file and restrictive permissions (600)
+# can be placed on this file.
+
+resource_file=@resourceFile@
+
+
+
+# STATUS FILE
+# This is where the current status of all monitored services and
+# hosts is stored. Its contents are read and processed by the CGIs.
+# The contents of the status file are deleted every time naemon
+# restarts.
+
+status_file=@varDir@/status.dat
+
+
+
+# STATUS FILE UPDATE INTERVAL
+# This option determines the frequency (in seconds) that
+# naemon will periodically dump program, host, and
+# service status data. Set it to 0 to disable updates.
+
+status_update_interval=10
+
+
+
+# EXTERNAL COMMAND OPTION
+# This option allows you to specify whether or not Naemon should check
+# for external commands (in the command file defined below). By default
+# Naemon will *not* check for external commands, just to be on the
+# cautious side. If you want to be able to use the CGI command interface
+# you will have to enable this.
+# Values: 0 = disable commands, 1 = enable commands
+
+check_external_commands=1
+
+
+
+# EXTERNAL COMMAND FILE
+# This is the file that Naemon checks for external command requests.
+# It is also where the command CGI will write commands that are submitted
+# by users, so it must be writeable by the user that the web server
+# is running as (usually 'nobody'). Permissions should be set at the
+# directory level instead of on the file, as the file is deleted every
+# time its contents are processed.
+
+command_file=@runDir@/naemon.cmd
+
+
+
+# QUERY HANDLER INTERFACE
+# This is the socket that is created for the Query Handler interface
+
+query_socket=@runDir@/naemon.qh
+
+
+
+# LOCK FILE
+# This is the lockfile that Naemon will use to store its PID number
+# in when it is running in daemon mode.
+
+lock_file=@runDir@/naemon.pid
+
+
+
+# TEMP FILE
+# This is a temporary file that is used as scratch space when Naemon
+# updates the status log, cleans the comment file, etc. This file
+# is created, used, and deleted throughout the time that Naemon is
+# running.
+
+temp_file=@cacheDir@/naemon.tmp
+
+
+
+# TEMP PATH
+# This is path where Naemon can create temp files for service and
+# host check results, etc.
+
+temp_path=@cacheDir@
+
+
+
+# EVENT BROKER OPTIONS
+# Controls what (if any) data gets sent to the event broker.
+# Values: 0 = Broker nothing
+# -1 = Broker everything
+# = See documentation
+
+event_broker_options=-1
+
+
+
+# EVENT BROKER MODULE(S)
+# This directive is used to specify an event broker module that should
+# be loaded by Naemon at startup. Use multiple directives if you want
+# to load more than one module. Arguments that should be passed to
+# the module at startup are seperated from the module path by a space.
+#
+# Example:
+#
+# broker_module= [moduleargs]
+
+#broker_module=/usr/lib/naemon/naemon-livestatus/livestatus.so @cacheDir@/live
+#broker_module=/somewhere/module1.o
+#broker_module=/somewhere/module2.o arg1 arg2=3 debug=0
+
+# In order to provide drop-in support for new modules, you can also make use of
+# the include_dir directive. The include_dir directive causes Naemon to parse
+# any configuration (not just object configuration, as with cfg_dir) as if the
+# contents of the files in the pointed-to directory was included on this line.
+# The path to the directory is relative to the path of the main naemon.cfg
+# file.
+#include_dir=module-conf.d
+
+# LOG ARCHIVE PATH
+# This is the directory where archived (rotated) log files are placed by the
+# logrotate daemon. It is used by out of core add-ons to discover the logfiles.
+
+log_archive_path=@logDir@/archives
+
+
+
+# LOGGING OPTIONS
+# If you want messages logged to the syslog facility, as well as the
+# Naemon log file set this option to 1. If not, set it to 0.
+
+use_syslog=0
+
+# NOTIFICATION LOGGING OPTION
+# If you don't want notifications to be logged, set this value to 0.
+# If notifications should be logged, set the value to 1.
+
+log_notifications=1
+
+# Notification suppression reason (NSR) logging causes the reason for a
+# notification suppression to be logged, when it occurs. This can potentially
+# add some noise to your log file, but is highly useful when troubleshooting
+# missing notifications.
+
+enable_notification_suppression_reason_logging=1
+
+
+# SERVICE RETRY LOGGING OPTION
+# If you don't want service check retries to be logged, set this value
+# to 0. If retries should be logged, set the value to 1.
+
+log_service_retries=1
+
+
+
+# HOST RETRY LOGGING OPTION
+# If you don't want host check retries to be logged, set this value to
+# 0. If retries should be logged, set the value to 1.
+
+log_host_retries=1
+
+
+
+# EVENT HANDLER LOGGING OPTION
+# If you don't want host and service event handlers to be logged, set
+# this value to 0. If event handlers should be logged, set the value
+# to 1.
+
+log_event_handlers=1
+
+
+
+# INITIAL STATES LOGGING OPTION
+# If you want Naemon to log all initial host and service states to
+# the main log file (the first time the service or host is checked)
+# you can enable this option by setting this value to 1. If you
+# are not using an external application that does long term state
+# statistics reporting, you do not need to enable this option. In
+# this case, set the value to 0.
+
+log_initial_states=0
+
+
+
+# CURRENT STATES LOGGING OPTION
+# If you don't want Naemon to log all current host and service states
+# after log has been rotated to the main log file, you can disable this
+# option by setting this value to 0. Default value is 1.
+
+log_current_states=1
+
+
+
+# EXTERNAL COMMANDS LOGGING OPTION
+# If you don't want Naemon to log external commands, set this value
+# to 0. If external commands should be logged, set this value to 1.
+# Note: This option does not include logging of passive service
+# checks - see the option below for controlling whether or not
+# passive checks are logged.
+
+log_external_commands=1
+
+
+
+# PASSIVE CHECKS LOGGING OPTION
+# If you don't want Naemon to log passive host and service checks, set
+# this value to 0. If passive checks should be logged, set
+# this value to 1.
+
+log_passive_checks=1
+
+
+
+# GLOBAL HOST AND SERVICE EVENT HANDLERS
+# These options allow you to specify a host and service event handler
+# command that is to be run for every host or service state change.
+# The global event handler is executed immediately prior to the event
+# handler that you have optionally specified in each host or
+# service definition. The command argument is the short name of a
+# command definition that you define in your host configuration file.
+# Read the HTML docs for more information.
+
+#global_host_event_handler=somecommand
+#global_service_event_handler=somecommand
+
+
+
+# MAXIMUM CONCURRENT SERVICE CHECKS
+# This option allows you to specify the maximum number of
+# service checks that can be run in parallel at any given time.
+# Specifying a value of 1 for this variable essentially prevents
+# any service checks from being parallelized. A value of 0
+# will not restrict the number of concurrent checks that are
+# being executed.
+
+max_concurrent_checks=0
+
+
+# CHECK RESULT PATH
+# This is directory where Naemon reads check results of host and
+# service checks to further process them.
+#
+# Note: Naemon does not require this folder internally but it still
+# can be used to pass check results to Naemon.
+
+check_result_path=@cacheDir@/checkresults
+
+
+# CACHED HOST CHECK HORIZON
+# This option determines the maximum amount of time (in seconds)
+# that the state of a previous host check is considered current.
+# Cached host states (from host checks that were performed more
+# recently that the timeframe specified by this value) can immensely
+# improve performance in regards to the host check logic.
+# Too high of a value for this option may result in inaccurate host
+# states being used by Naemon, while a lower value may result in a
+# performance hit for host checks. Use a value of 0 to disable host
+# check caching.
+
+cached_host_check_horizon=15
+
+
+
+# CACHED SERVICE CHECK HORIZON
+# This option determines the maximum amount of time (in seconds)
+# that the state of a previous service check is considered current.
+# Cached service states (from service checks that were performed more
+# recently that the timeframe specified by this value) can immensely
+# improve performance in regards to predictive dependency checks.
+# Use a value of 0 to disable service check caching.
+
+cached_service_check_horizon=15
+
+
+
+# ENABLE PREDICTIVE HOST DEPENDENCY CHECKS
+# This option determines whether or not Naemon will attempt to execute
+# checks of hosts when it predicts that future dependency logic test
+# may be needed. These predictive checks can help ensure that your
+# host dependency logic works well.
+# Values:
+# 0 = Disable predictive checks
+# 1 = Enable predictive checks (default)
+
+enable_predictive_host_dependency_checks=1
+
+
+
+# ENABLE PREDICTIVE SERVICE DEPENDENCY CHECKS
+# This option determines whether or not Naemon will attempt to execute
+# checks of service when it predicts that future dependency logic test
+# may be needed. These predictive checks can help ensure that your
+# service dependency logic works well.
+# Values:
+# 0 = Disable predictive checks
+# 1 = Enable predictive checks (default)
+
+enable_predictive_service_dependency_checks=1
+
+
+
+# SOFT STATE DEPENDENCIES
+# This option determines whether or not Naemon will use soft state
+# information when checking host and service dependencies. Normally
+# Naemon will only use the latest hard host or service state when
+# checking dependencies. If you want it to use the latest state (regardless
+# of whether its a soft or hard state type), enable this option.
+# Values:
+# 0 = Don't use soft state dependencies (default)
+# 1 = Use soft state dependencies
+
+soft_state_dependencies=0
+
+
+
+# TIME CHANGE ADJUSTMENT THRESHOLDS
+# These options determine when Naemon will react to detected changes
+# in system time (either forward or backwards).
+
+#time_change_threshold=900
+
+
+
+# TIMEOUT VALUES
+# These options control how much time Naemon will allow various
+# types of commands to execute before killing them off. Options
+# are available for controlling maximum time allotted for
+# service checks, host checks, event handlers, notifications, the
+# ocsp command, and performance data commands. All values are in
+# seconds.
+
+service_check_timeout=60
+host_check_timeout=30
+event_handler_timeout=30
+notification_timeout=30
+ocsp_timeout=5
+perfdata_timeout=5
+
+
+
+# RETAIN STATE INFORMATION
+# This setting determines whether or not Naemon will save state
+# information for services and hosts before it shuts down. Upon
+# startup Naemon will reload all saved service and host state
+# information before starting to monitor. This is useful for
+# maintaining long-term data on state statistics, etc, but will
+# slow Naemon down a bit when it (re)starts. Since its only
+# a one-time penalty, I think its well worth the additional
+# startup delay.
+
+retain_state_information=1
+
+
+
+# STATE RETENTION FILE
+# This is the file that Naemon should use to store host and
+# service state information before it shuts down. The state
+# information in this file is also read immediately prior to
+# starting to monitor the network when Naemon is restarted.
+# This file is used only if the retain_state_information
+# variable is set to 1.
+
+state_retention_file=@varDir@/retention.dat
+
+
+
+# RETENTION DATA UPDATE INTERVAL
+# This setting determines how often (in minutes) that Naemon
+# will automatically save retention data during normal operation.
+# If you set this value to 0, Naemon will not save retention
+# data at regular interval, but it will still save retention
+# data before shutting down or restarting. If you have disabled
+# state retention, this option has no effect.
+
+retention_update_interval=60
+
+
+
+# USE RETAINED PROGRAM STATE
+# This setting determines whether or not Naemon will set
+# program status variables based on the values saved in the
+# retention file. If you want to use retained program status
+# information, set this value to 1. If not, set this value
+# to 0.
+
+use_retained_program_state=1
+
+
+
+# USE RETAINED SCHEDULING INFO
+# This setting determines whether or not Naemon will retain
+# the scheduling info (next check time) for hosts and services
+# based on the values saved in the retention file. If you
+# If you want to use retained scheduling info, set this
+# value to 1. If not, set this value to 0.
+
+use_retained_scheduling_info=1
+
+
+# RETAINED_SCHEDULING_RANDOMIZE_WINDOW
+# If use_retained_scheduling info is enabled, this setting
+# sets the window (in seconds), in which checks that were
+# supposed to executed during a restart, is rescheduled.
+# That is, if set to 60 seconds, then all checks that were
+# missed due to a restart will be scheduled randomly to be
+# executed in the first 60 seconds after a restart.
+# If the retained_scheduling_randomize_window is larger than
+# the objects check_interval, the check_interval is used
+# instead.
+
+retained_scheduling_randomize_window=60
+
+
+# RETAINED ATTRIBUTE MASKS (ADVANCED FEATURE)
+# The following variables are used to specify specific host and
+# service attributes that should *not* be retained by Naemon during
+# program restarts.
+#
+# The values of the masks are bitwise ANDs of values specified
+# by the "MODATTR_" definitions found in include/common.h.
+# For example, if you do not want the current enabled/disabled state
+# of flap detection and event handlers for hosts to be retained, you
+# would use a value of 24 for the host attribute mask...
+# MODATTR_EVENT_HANDLER_ENABLED (8) + MODATTR_FLAP_DETECTION_ENABLED (16) = 24
+
+# This mask determines what host attributes are not retained
+retained_host_attribute_mask=0
+
+# This mask determines what service attributes are not retained
+retained_service_attribute_mask=0
+
+# These two masks determine what process attributes are not retained.
+# There are two masks, because some process attributes have host and service
+# options. For example, you can disable active host checks, but leave active
+# service checks enabled.
+retained_process_host_attribute_mask=0
+retained_process_service_attribute_mask=0
+
+# These two masks determine what contact attributes are not retained.
+# There are two masks, because some contact attributes have host and
+# service options. For example, you can disable host notifications for
+# a contact, but leave service notifications enabled for them.
+retained_contact_host_attribute_mask=0
+retained_contact_service_attribute_mask=0
+
+
+
+# INTERVAL LENGTH
+# This is the seconds per unit interval as used in the
+# host/contact/service configuration files. Setting this to 60 means
+# that each interval is one minute long (60 seconds). Other settings
+# have not been tested much, so your mileage is likely to vary...
+
+interval_length=60
+
+
+
+# AGGRESSIVE HOST CHECKING OPTION
+# If you don't want to turn on aggressive host checking features, set
+# this value to 0 (the default). Otherwise set this value to 1 to
+# enable the aggressive check option. Read the docs for more info
+# on what aggressive host check is or check out the source code in
+# base/checks.c
+
+use_aggressive_host_checking=0
+
+
+
+# SERVICE CHECK EXECUTION OPTION
+# This determines whether or not Naemon will actively execute
+# service checks when it initially starts. If this option is
+# disabled, checks are not actively made, but Naemon can still
+# receive and process passive check results that come in. Unless
+# you're implementing redundant hosts or have a special need for
+# disabling the execution of service checks, leave this enabled!
+# Values: 1 = enable checks, 0 = disable checks
+
+execute_service_checks=1
+
+
+
+# PASSIVE SERVICE CHECK ACCEPTANCE OPTION
+# This determines whether or not Naemon will accept passive
+# service checks results when it initially (re)starts.
+# Values: 1 = accept passive checks, 0 = reject passive checks
+
+accept_passive_service_checks=1
+
+
+
+# HOST CHECK EXECUTION OPTION
+# This determines whether or not Naemon will actively execute
+# host checks when it initially starts. If this option is
+# disabled, checks are not actively made, but Naemon can still
+# receive and process passive check results that come in. Unless
+# you're implementing redundant hosts or have a special need for
+# disabling the execution of host checks, leave this enabled!
+# Values: 1 = enable checks, 0 = disable checks
+
+execute_host_checks=1
+
+
+
+# PASSIVE HOST CHECK ACCEPTANCE OPTION
+# This determines whether or not Naemon will accept passive
+# host checks results when it initially (re)starts.
+# Values: 1 = accept passive checks, 0 = reject passive checks
+
+accept_passive_host_checks=1
+
+
+
+# NOTIFICATIONS OPTION
+# This determines whether or not Naemon will sent out any host or
+# service notifications when it is initially (re)started.
+# Values: 1 = enable notifications, 0 = disable notifications
+
+enable_notifications=1
+
+
+
+# EVENT HANDLER USE OPTION
+# This determines whether or not Naemon will run any host or
+# service event handlers when it is initially (re)started. Unless
+# you're implementing redundant hosts, leave this option enabled.
+# Values: 1 = enable event handlers, 0 = disable event handlers
+
+enable_event_handlers=1
+
+
+
+# PROCESS PERFORMANCE DATA OPTION
+# This determines whether or not Naemon will process performance
+# data returned from service and host checks. If this option is
+# enabled, host performance data will be processed using the
+# host_perfdata_command (defined below) and service performance
+# data will be processed using the service_perfdata_command (also
+# defined below). Read the HTML docs for more information on
+# performance data.
+# Values: 1 = process performance data, 0 = do not process performance data
+
+process_performance_data=0
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA PROCESSING COMMANDS
+# These commands are run after every host and service check is
+# performed. These commands are executed only if the
+# enable_performance_data option (above) is set to 1. The command
+# argument is the short name of a command definition that you
+# define in your host configuration file. Read the HTML docs for
+# more information on performance data.
+
+#host_perfdata_command=process-host-perfdata
+#service_perfdata_command=process-service-perfdata
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA FILES
+# These files are used to store host and service performance data.
+# Performance data is only written to these files if the
+# enable_performance_data option (above) is set to 1.
+
+#host_perfdata_file=@varDir@/host-perfdata
+#service_perfdata_file=@varDir@/service-perfdata
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA FILE TEMPLATES
+# These options determine what data is written (and how) to the
+# performance data files. The templates may contain macros, special
+# characters (\t for tab, \r for carriage return, \n for newline)
+# and plain text. A newline is automatically added after each write
+# to the performance data file. Some examples of what you can do are
+# shown below.
+
+#host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$
+#service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA FILE MODES
+# This option determines whether or not the host and service
+# performance data files are opened in write ("w") or append ("a")
+# mode. If you want to use named pipes, you should use the special
+# pipe ("p") mode which avoid blocking at startup, otherwise you will
+# likely want the defult append ("a") mode.
+
+#host_perfdata_file_mode=a
+#service_perfdata_file_mode=a
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING INTERVAL
+# These options determine how often (in seconds) the host and service
+# performance data files are processed using the commands defined
+# below. A value of 0 indicates the files should not be periodically
+# processed.
+
+#host_perfdata_file_processing_interval=0
+#service_perfdata_file_processing_interval=0
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING COMMANDS
+# These commands are used to periodically process the host and
+# service performance data files. The interval at which the
+# processing occurs is determined by the options above.
+
+#host_perfdata_file_processing_command=process-host-perfdata-file
+#service_perfdata_file_processing_command=process-service-perfdata-file
+
+
+
+# HOST AND SERVICE PERFORMANCE DATA PROCESS EMPTY RESULTS
+# These options determine wether the core will process empty perfdata
+# results or not. This is needed for distributed monitoring, and intentionally
+# turned on by default.
+# If you don't require empty perfdata - saving some cpu cycles
+# on unwanted macro calculation - you can turn that off. Be careful!
+# Values: 1 = enable, 0 = disable
+
+#host_perfdata_process_empty_results=1
+#service_perfdata_process_empty_results=1
+
+
+# OBSESS OVER SERVICE CHECKS OPTION
+# This determines whether or not Naemon will obsess over service
+# checks and run the ocsp_command defined below. Unless you're
+# planning on implementing distributed monitoring, do not enable
+# this option. Read the HTML docs for more information on
+# implementing distributed monitoring.
+# Values: 1 = obsess over services, 0 = do not obsess (default)
+
+obsess_over_services=0
+
+
+
+# OBSESSIVE COMPULSIVE SERVICE PROCESSOR COMMAND
+# This is the command that is run for every service check that is
+# processed by Naemon. This command is executed only if the
+# obsess_over_services option (above) is set to 1. The command
+# argument is the short name of a command definition that you
+# define in your host configuration file. Read the HTML docs for
+# more information on implementing distributed monitoring.
+
+#ocsp_command=somecommand
+
+
+
+# OBSESS OVER HOST CHECKS OPTION
+# This determines whether or not Naemon will obsess over host
+# checks and run the ochp_command defined below. Unless you're
+# planning on implementing distributed monitoring, do not enable
+# this option. Read the HTML docs for more information on
+# implementing distributed monitoring.
+# Values: 1 = obsess over hosts, 0 = do not obsess (default)
+
+obsess_over_hosts=0
+
+
+
+# OBSESSIVE COMPULSIVE HOST PROCESSOR COMMAND
+# This is the command that is run for every host check that is
+# processed by Naemon. This command is executed only if the
+# obsess_over_hosts option (above) is set to 1. The command
+# argument is the short name of a command definition that you
+# define in your host configuration file. Read the HTML docs for
+# more information on implementing distributed monitoring.
+
+#ochp_command=somecommand
+
+
+
+# TRANSLATE PASSIVE HOST CHECKS OPTION
+# This determines whether or not Naemon will translate
+# DOWN/UNREACHABLE passive host check results into their proper
+# state for this instance of Naemon. This option is useful
+# if you have distributed or failover monitoring setup. In
+# these cases your other Naemon servers probably have a different
+# "view" of the network, with regards to the parent/child relationship
+# of hosts. If a distributed monitoring server thinks a host
+# is DOWN, it may actually be UNREACHABLE from the point of
+# this Naemon instance. Enabling this option will tell Naemon
+# to translate any DOWN or UNREACHABLE host states it receives
+# passively into the correct state from the view of this server.
+# Values: 1 = perform translation, 0 = do not translate (default)
+
+translate_passive_host_checks=0
+
+
+
+# PASSIVE HOST CHECKS ARE SOFT OPTION
+# This determines whether or not Naemon will treat passive host
+# checks as being HARD or SOFT. By default, a passive host check
+# result will put a host into a HARD state type. This can be changed
+# by enabling this option.
+# Values: 0 = passive checks are HARD, 1 = passive checks are SOFT
+
+passive_host_checks_are_soft=0
+
+
+
+# ORPHANED HOST/SERVICE CHECK OPTIONS
+# These options determine whether or not Naemon will periodically
+# check for orphaned host service checks. Since service checks are
+# not rescheduled until the results of their previous execution
+# instance are processed, there exists a possibility that some
+# checks may never get rescheduled. A similar situation exists for
+# host checks, although the exact scheduling details differ a bit
+# from service checks. Orphaned checks seem to be a rare
+# problem and should not happen under normal circumstances.
+# If you have problems with service checks never getting
+# rescheduled, make sure you have orphaned service checks enabled.
+# Values: 1 = enable checks, 0 = disable checks
+
+check_for_orphaned_services=1
+check_for_orphaned_hosts=1
+
+
+
+# SERVICE FRESHNESS CHECK OPTION
+# This option determines whether or not Naemon will periodically
+# check the "freshness" of service results. Enabling this option
+# is useful for ensuring passive checks are received in a timely
+# manner.
+# Values: 1 = enabled freshness checking, 0 = disable freshness checking
+
+check_service_freshness=1
+
+
+
+# SERVICE FRESHNESS CHECK INTERVAL
+# This setting determines how often (in seconds) Naemon will
+# check the "freshness" of service check results. If you have
+# disabled service freshness checking, this option has no effect.
+
+service_freshness_check_interval=60
+
+
+
+# SERVICE CHECK TIMEOUT STATE
+# This setting determines the state Naemon will report when a
+# service check times out - that is does not respond within
+# service_check_timeout seconds. This can be useful if a
+# machine is running at too high a load and you do not want
+# to consider a failed service check to be critical (the default).
+# Valid settings are:
+# c - Critical (default)
+# u - Unknown
+# w - Warning
+# o - OK
+
+service_check_timeout_state=c
+
+
+
+# HOST FRESHNESS CHECK OPTION
+# This option determines whether or not Naemon will periodically
+# check the "freshness" of host results. Enabling this option
+# is useful for ensuring passive checks are received in a timely
+# manner.
+# Values: 1 = enabled freshness checking, 0 = disable freshness checking
+
+check_host_freshness=0
+
+
+
+# HOST FRESHNESS CHECK INTERVAL
+# This setting determines how often (in seconds) Naemon will
+# check the "freshness" of host check results. If you have
+# disabled host freshness checking, this option has no effect.
+
+host_freshness_check_interval=60
+
+
+
+
+# ADDITIONAL FRESHNESS THRESHOLD LATENCY
+# This setting determines the number of seconds that Naemon
+# will add to any host and service freshness thresholds that
+# it calculates (those not explicitly specified by the user).
+
+additional_freshness_latency=15
+
+
+
+
+# FLAP DETECTION OPTION
+# This option determines whether or not Naemon will try
+# and detect hosts and services that are "flapping".
+# Flapping occurs when a host or service changes between
+# states too frequently. When Naemon detects that a
+# host or service is flapping, it will temporarily suppress
+# notifications for that host/service until it stops
+# flapping. Flap detection is very experimental, so read
+# the HTML documentation before enabling this feature!
+# Values: 1 = enable flap detection
+# 0 = disable flap detection (default)
+
+enable_flap_detection=1
+
+
+
+# FLAP DETECTION THRESHOLDS FOR HOSTS AND SERVICES
+# Read the HTML documentation on flap detection for
+# an explanation of what this option does. This option
+# has no effect if flap detection is disabled.
+
+low_service_flap_threshold=5.0
+high_service_flap_threshold=20.0
+low_host_flap_threshold=5.0
+high_host_flap_threshold=20.0
+
+
+
+# DATE FORMAT OPTION
+# This option determines how short dates are displayed. Valid options
+# include:
+# us (MM-DD-YYYY HH:MM:SS)
+# euro (DD-MM-YYYY HH:MM:SS)
+# iso8601 (YYYY-MM-DD HH:MM:SS)
+# strict-iso8601 (YYYY-MM-DDTHH:MM:SS)
+#
+
+date_format=us
+
+
+
+
+# TIMEZONE OFFSET
+# This option is used to override the default timezone that this
+# instance of Naemon runs in. If not specified, Naemon will use
+# the system configured timezone.
+
+#use_timezone=US/Mountain
+#use_timezone=Australia/Brisbane
+
+
+
+# ILLEGAL OBJECT NAME CHARACTERS
+# This option allows you to specify illegal characters that cannot
+# be used in host names, service descriptions, or names of other
+# object types.
+
+illegal_object_name_chars=`~!$%^&*|'"<>?,()=
+
+
+
+# ILLEGAL MACRO OUTPUT CHARACTERS
+# This option allows you to specify illegal characters that are
+# stripped from macros before being used in notifications, event
+# handlers, etc. This DOES NOT affect macros used in service or
+# host check commands.
+# The following macros are stripped of the characters you specify:
+# $HOSTOUTPUT$
+# $HOSTPERFDATA$
+# $HOSTACKAUTHOR$
+# $HOSTACKCOMMENT$
+# $SERVICEOUTPUT$
+# $SERVICEPERFDATA$
+# $SERVICEACKAUTHOR$
+# $SERVICEACKCOMMENT$
+
+illegal_macro_output_chars=`~$&|'"<>
+
+
+
+# REGULAR EXPRESSION MATCHING
+# This option controls whether or not regular expression matching
+# takes place in the object config files. Regular expression
+# matching is used to match host, hostgroup, service, and service
+# group names/descriptions in some fields of various object types.
+# Values: 1 = enable regexp matching, 0 = disable regexp matching
+
+use_regexp_matching=0
+
+
+
+# "TRUE" REGULAR EXPRESSION MATCHING
+# This option controls whether or not "true" regular expression
+# matching takes place in the object config files. This option
+# only has an effect if regular expression matching is enabled
+# (see above). If this option is DISABLED, regular expression
+# matching only occurs if a string contains wildcard characters
+# (* and ?). If the option is ENABLED, regexp matching occurs
+# all the time (which can be annoying).
+# Values: 1 = enable true matching, 0 = disable true matching
+
+use_true_regexp_matching=0
+
+
+
+# ADMINISTRATOR EMAIL/PAGER ADDRESSES
+# The email and pager address of a global administrator (likely you).
+# Naemon never uses these values itself, but you can access them by
+# using the $ADMINEMAIL$ and $ADMINPAGER$ macros in your notification
+# commands.
+
+admin_email=naemon@localhost
+admin_pager=pagenaemon@localhost
+
+
+
+# DEBUG LEVEL
+# This option determines how much (if any) debugging information will
+# be written to the debug file. OR values together to log multiple
+# types of information.
+# Values:
+# -1 = Everything
+# 0 = Nothing
+# 1 = Functions
+# 2 = Configuration
+# 4 = Process information
+# 8 = Scheduled events
+# 16 = Host/service checks
+# 32 = Notifications
+# 64 = Event broker
+# 128 = External commands
+# 256 = Commands
+# 512 = Scheduled downtime
+# 1024 = Comments
+# 2048 = Macros
+
+debug_level=0
+
+
+
+# DEBUG VERBOSITY
+# This option determines how verbose the debug log out will be.
+# Values: 0 = Brief output
+# 1 = More detailed
+# 2 = Very detailed
+
+debug_verbosity=1
+
+
+
+# DEBUG FILE
+# This option determines where Naemon should write debugging information.
+
+debug_file=@cacheDir@/naemon.debug
+
+
+
+# MAX DEBUG FILE SIZE
+# This option determines the maximum size (in bytes) of the debug file. If
+# the file grows larger than this size, it will be renamed with a .old
+# extension. If a file already exists with a .old extension it will
+# automatically be deleted. This helps ensure your disk space usage doesn't
+# get out of control when debugging Naemon.
+
+max_debug_file_size=1000000
+
+
+
+# Should we allow hostgroups to have no hosts, we default this to off since
+# that was the old behavior
+
+allow_empty_hostgroup_assignment=0
+
+
+
+# Normally worker count is dynamically allocated based on 1.5 * number of cpu's
+# with a minimum of 4 workers. This value will override the defaults
+
+#check_workers=3
+
+
+# DISABLE SERVICE CHECKS WHEN HOST DOWN
+# This option will disable all service checks if the host is not in an UP state
+#
+# While desirable in some environments, enabling this value can distort report
+# values as the expected quantity of checks will not have been performed
+
+#host_down_disable_service_checks=0
+
+
+# CIRCULAR DEPENDENCIES (EXPERIMENTAL)
+# Allow for circular dependencies in naemon's host graph.
+# Enabaling this will cause propagation the following to stop working:
+# * scheduling downtime
+# * enabling notification
+# * disabling notification
+# This feature is experimental and bugs might occur.
+
+allow_circular_dependencies=0
diff --git a/flakes/openarc/flake.lock b/flakes/openarc/flake.lock
index e0b78a8..a9e5e81 100644
--- a/flakes/openarc/flake.lock
+++ b/flakes/openarc/flake.lock
@@ -17,19 +17,14 @@
},
"myuids": {
"locked": {
- "dir": "flakes/myuids",
- "lastModified": 1628207001,
- "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=",
- "ref": "master",
- "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
- "revCount": 865,
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
},
"original": {
- "dir": "flakes/myuids",
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
+ "path": "../myuids",
+ "type": "path"
}
},
"nixpkgs": {
diff --git a/flakes/openarc/flake.nix b/flakes/openarc/flake.nix
index 6fd45bf..17a3fdd 100644
--- a/flakes/openarc/flake.nix
+++ b/flakes/openarc/flake.nix
@@ -2,9 +2,7 @@
description = "Open source ARC implementation";
inputs.myuids = {
- url = "https://git.immae.eu/perso/Immae/Config/Nix.git";
- type = "git";
- dir = "flakes/myuids";
+ url = "path:../myuids";
};
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.nixpkgs.url = "github:NixOS/nixpkgs";
@@ -66,6 +64,8 @@
defaultSock = "/run/openarc/openarc.sock";
args = [ "-f" "-p" "local:${cfg.socket}" ] ++ lib.optionals (cfg.configFile != null) [ "-c" cfg.configFile ];
in {
+ # Necessary for situations where flake gets included multiple times
+ key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
options = {
services.openarc = {
enable = lib.mkOption {
diff --git a/flakes/opendmarc/flake.lock b/flakes/opendmarc/flake.lock
index 4503c79..e0cbe17 100644
--- a/flakes/opendmarc/flake.lock
+++ b/flakes/opendmarc/flake.lock
@@ -17,19 +17,14 @@
},
"myuids": {
"locked": {
- "dir": "flakes/myuids",
- "lastModified": 1628207001,
- "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=",
- "ref": "master",
- "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
- "revCount": 865,
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
},
"original": {
- "dir": "flakes/myuids",
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
+ "path": "../myuids",
+ "type": "path"
}
},
"nixpkgs": {
diff --git a/flakes/opendmarc/flake.nix b/flakes/opendmarc/flake.nix
index 277fd25..70b8cd7 100644
--- a/flakes/opendmarc/flake.nix
+++ b/flakes/opendmarc/flake.nix
@@ -2,9 +2,7 @@
description = "Open source ARC implementation";
inputs.myuids = {
- url = "https://git.immae.eu/perso/Immae/Config/Nix.git";
- type = "git";
- dir = "flakes/myuids";
+ url = "path:../myuids";
};
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.nixpkgs.url = "github:NixOS/nixpkgs";
@@ -51,7 +49,9 @@
defaultSock = "/run/opendmarc/opendmarc.sock";
args = [ "-f" "-l" "-p" "local:${cfg.socket}" ] ++ lib.optionals (cfg.configFile != null) [ "-c" cfg.configFile ];
in {
- options = {
+ # Necessary for situations where flake gets included multiple times
+ key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
+ options = {
services.opendmarc = {
enable = lib.mkOption {
type = lib.types.bool;
diff --git a/flakes/openfoodnetwork/default.nix b/flakes/openfoodnetwork/default.nix
new file mode 100644
index 0000000..dd68177
--- /dev/null
+++ b/flakes/openfoodnetwork/default.nix
@@ -0,0 +1,39 @@
+{ bundlerEnv, defaultGemConfig, writeShellScript, v8, stdenv }:
+
+let
+ gems = bundlerEnv {
+ name = "openfoodnetwork";
+ gemfile = ./Gemfile;
+ lockfile = ./Gemfile.lock;
+ gemset = import ./gemset.nix;
+ gemConfig = defaultGemConfig // {
+ libv8-node = attrs: {
+ dontBuild = false;
+ postPatch = let
+ noopScript = writeShellScript "noop" "exit 0";
+ linkFiles = writeShellScript "link-files" ''
+ cd ../..
+
+ mkdir -p vendor/v8/out.gn/libv8/obj/
+ ln -s "${v8}/lib/libv8.a" vendor/v8/out.gn/libv8/obj/libv8_monolith.a
+
+ ln -s ${v8}/include vendor/v8/include
+
+ mkdir -p ext/libv8-node
+ echo '--- !ruby/object:Libv8::Node::Location::Vendor {}' >ext/libv8-node/.location.yml
+ '';
+ in ''
+ cp ${noopScript} libexec/build-libv8
+ cp ${noopScript} libexec/build-monolith
+ cp ${noopScript} libexec/download-node
+ cp ${noopScript} libexec/extract-node
+ cp ${linkFiles} libexec/inject-libv8
+ '';
+ };
+ };
+ };
+in
+ stdenv.mkDerivation {
+ name = "openfoodnetwork";
+ inherit
+ }
diff --git a/flakes/openfoodnetwork/gemset.nix b/flakes/openfoodnetwork/gemset.nix
new file mode 100644
index 0000000..2f212b8
--- /dev/null
+++ b/flakes/openfoodnetwork/gemset.nix
@@ -0,0 +1,2896 @@
+{
+ actioncable = {
+ dependencies = ["actionpack" "activesupport" "nio4r" "websocket-driver"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ilq5mniarm0zlvnkagqj9n9p73ljrhphciz02aymrpfxxxclz2x";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ actionmailbox = {
+ dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "16azdnjws215clb056b9mabglx4b8f61hr82hv7hm80dmn89zqq6";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ actionmailer = {
+ dependencies = ["actionpack" "actionview" "activejob" "activesupport" "mail" "rails-dom-testing"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00s07l2ac5igch1g2rpa0linmiq7mhgk6v6wxkckg8gbiqijb592";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ actionpack = {
+ dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0xgysqnibjsy6kdz10x2xb3kwa6lssiqhh0zggrbgs31ypwhlpia";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ actionpack-action_caching = {
+ dependencies = ["actionpack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1bxaz8sdhqkdjqwk58icy9668s0yxpgm28gdkdmxl3g41m94b8id";
+ type = "gem";
+ };
+ version = "1.2.2";
+ };
+ actiontext = {
+ dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "nokogiri"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0m4fy4qqh09vnzbhx383vjdfid6fzbs49bzzg415x05nmmjkx582";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ actionview = {
+ dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1yf4ic5kl324rs0raralpwx24s6hvvdzxfhinafylf8f3x7jj23z";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ active_model_serializers = {
+ dependencies = ["activemodel"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0k3mgia2ahh7mbk30hjq9pzqbk0kh281s91kq2z6p555nv9y6l3k";
+ type = "gem";
+ };
+ version = "0.8.4";
+ };
+ activejob = {
+ dependencies = ["activesupport" "globalid"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1q7c0i0kwarxgcbxk71wa9jnlg45grbxmhlrh7dk9bgcv7r7r7hn";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ activemerchant = {
+ dependencies = ["activesupport" "builder" "i18n" "nokogiri"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ajmcgc4idxmvh8sghyb1ngxsc9x6r5yfi4r1z22d6a4j7b1yjzj";
+ type = "gem";
+ };
+ version = "1.123.0";
+ };
+ activemodel = {
+ dependencies = ["activesupport"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "16ixam4lni8b5lgx0whnax0imzh1dh10fy5r9pxs52n83yz5nbq3";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ activerecord = {
+ dependencies = ["activemodel" "activesupport"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ccgvlj767ybps3pxlaa4iw77n7wbriw2sr8754id3ngjfap08ja";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ activerecord-import = {
+ dependencies = ["activerecord"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "17ydad9gcsh0c9ny68fyvxmh6rbld4pyvyabnc7882678dnvfy8i";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ activerecord-postgresql-adapter = {
+ dependencies = ["pg"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1wdfd1mkns28ilr6nm18x69h651mjxwb8p2zk8pb6cjgx7c26axl";
+ type = "gem";
+ };
+ version = "0.0.1";
+ };
+ activerecord-session_store = {
+ dependencies = ["actionpack" "activerecord" "multi_json" "rack" "railties"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06ddhz1b2yg72iv09n48gcd3ix5da7hxlzi7vvj13nrps2qwlffg";
+ type = "gem";
+ };
+ version = "2.0.0";
+ };
+ activestorage = {
+ dependencies = ["actionpack" "activejob" "activerecord" "activesupport" "marcel" "mini_mime"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "17knzz9fvqg4x582vy0xmlgjkxfb13xyzl2rgw19qfma86hxsvvi";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ activesupport = {
+ dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19gx1jcq46x9d1pi1w8xq0bgvvfw239y4lalr8asm291gj3q3ds4";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ acts-as-taggable-on = {
+ dependencies = ["activerecord"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kfnyix173bazjswab21bx7hmqmik71awj2kz090fsa2nv58c4mw";
+ type = "gem";
+ };
+ version = "8.1.0";
+ };
+ acts_as_list = {
+ dependencies = ["activerecord"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "12p22h59c45dnccb51pqk275ziyi502azf9w3qcnkcsq827ma5jm";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ addressable = {
+ dependencies = ["public_suffix"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "022r3m9wdxljpbya69y2i3h9g3dhhfaqzidf95m6qjzms792jvgp";
+ type = "gem";
+ };
+ version = "2.8.0";
+ };
+ afm = {
+ groups = ["default" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8";
+ type = "gem";
+ };
+ version = "0.2.2";
+ };
+ angular-rails-templates = {
+ dependencies = ["railties" "sprockets" "tilt"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0aja8b2bjj8af29zagkm6pv48s0933l0d38j5b4wgxipf0c0mjxq";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ angular_rails_csrf = {
+ dependencies = ["railties"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08g6xwz98apbfxwd0kbsxl7ll4bms11m563rjl4mavm1dnf3nsgh";
+ type = "gem";
+ };
+ version = "4.5.0";
+ };
+ angularjs-file-upload-rails = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "07s0b8bwdp8asc16rp16q78p17cl5qnw8svqarbcsv0b1fkxiqbd";
+ type = "gem";
+ };
+ version = "2.4.1";
+ };
+ angularjs-rails = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01blhjrzg82l76s5fj7jcgnykxxdj61m5swwy9x0wxnxhid81rgx";
+ type = "gem";
+ };
+ version = "1.8.0";
+ };
+ Ascii85 = {
+ groups = ["default" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ds4v9xgsyvijnlflak4dzf1qwmda9yd5bv8jwsb56nngd399rlw";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ ast = {
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y";
+ type = "gem";
+ };
+ version = "2.4.2";
+ };
+ awesome_nested_set = {
+ dependencies = ["activerecord"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06ggf81dy8wkds0b37xgx065b325fm0c6i6g1k0ml4ai8jwphm6r";
+ type = "gem";
+ };
+ version = "3.4.0";
+ };
+ awesome_print = {
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9";
+ type = "gem";
+ };
+ version = "1.9.2";
+ };
+ aws-sdk = {
+ dependencies = ["aws-sdk-resources"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xfan8fpiy019zp32l2a8smwfbii5m9hy49d8b8gvww2qcy5m3pr";
+ type = "gem";
+ };
+ version = "2.2.0";
+ };
+ aws-sdk-core = {
+ dependencies = ["jmespath"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1f8diki6xvz048i0lhkxqngirgmqqj50jda8vjw0xxgv3qzklq4r";
+ type = "gem";
+ };
+ version = "2.2.0";
+ };
+ aws-sdk-resources = {
+ dependencies = ["aws-sdk-core"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06y7sj2371pjw9vgsfipbz2g3pw3i4asdz27h1lb7pny8gwndkzk";
+ type = "gem";
+ };
+ version = "2.2.0";
+ };
+ bcrypt = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02r1c3isfchs5fxivbq99gc3aq4vfyn8snhcy707dal1p8qz12qb";
+ type = "gem";
+ };
+ version = "3.1.16";
+ };
+ bigdecimal = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0fxl2hybnfij668h7133p28f8b13jaj13wyyniqdiy8m3s6b1pcb";
+ type = "gem";
+ };
+ version = "3.0.2";
+ };
+ bindex = {
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0zmirr3m02p52bzq4xgksq4pn8j641rx5d4czk68pv9rqnfwq7kv";
+ type = "gem";
+ };
+ version = "0.8.1";
+ };
+ bootsnap = {
+ dependencies = ["msgpack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ndjra3h86dq28njm2swmaw6n3vsywrycrf7i5iy9l8hrhfhv4x2";
+ type = "gem";
+ };
+ version = "1.9.1";
+ };
+ bugsnag = {
+ dependencies = ["concurrent-ruby"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19yz4s0sw2w8jywkdf445zpdkg3s9869hmxcs7w68xvykpx0ickb";
+ type = "gem";
+ };
+ version = "6.24.0";
+ };
+ builder = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr";
+ type = "gem";
+ };
+ version = "3.2.4";
+ };
+ bullet = {
+ dependencies = ["activesupport" "uniform_notifier"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01xachwsyykmp153514vz2khanbsz1n27j09za5gcxj54srh5l4p";
+ type = "gem";
+ };
+ version = "6.1.5";
+ };
+ byebug = {
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0nx3yjf4xzdgb8jkmk2344081gqr22pgjqnmjg2q64mj5d6r9194";
+ type = "gem";
+ };
+ version = "11.1.3";
+ };
+ cable_ready = {
+ dependencies = ["rails" "thread-local"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06lqnv1b3zxgn189v7df6avf3zrk1snfxkbm1ax0fz129k997hak";
+ type = "gem";
+ };
+ version = "5.0.0.pre2";
+ };
+ cancancan = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "05kb459laaw339n7mas37v4k83nwz228bfpaghgybza347341x85";
+ type = "gem";
+ };
+ version = "1.15.0";
+ };
+ capybara = {
+ dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1viqcpsngy9fqjd68932m43ad6xj656d1x33nx9565q57chgi29k";
+ type = "gem";
+ };
+ version = "3.35.3";
+ };
+ catalog = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ path = engines/catalog;
+ type = "path";
+ };
+ version = "0.0.1";
+ };
+ childprocess = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5";
+ type = "gem";
+ };
+ version = "3.0.0";
+ };
+ chronic = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1hrdkn4g8x7dlzxwb1rfgr8kw3bp4ywg5l4y4i9c2g5cwv62yvvn";
+ type = "gem";
+ };
+ version = "0.10.2";
+ };
+ chunky_png = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1znw5x86hmm9vfhidwdsijz8m38pqgmv98l9ryilvky0aldv7mc9";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ climate_control = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0q11v0iabvr6rif0d025xh078ili5frrihlj0m04zfg7lgvagxji";
+ type = "gem";
+ };
+ version = "0.2.0";
+ };
+ cliver = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
+ type = "gem";
+ };
+ version = "0.3.2";
+ };
+ cocaine = {
+ dependencies = ["climate_control"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01kk5xd7lspbkdvn6nyj0y51zhvia3z6r4nalbdcqw5fbsywwi7d";
+ type = "gem";
+ };
+ version = "0.5.8";
+ };
+ codecov = {
+ dependencies = ["simplecov"];
+ groups = ["test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pi2dmqxjw5wsn65yx5qz5ks5msqflj0zxvk11r3cxwgacvj3hys";
+ type = "gem";
+ };
+ version = "0.6.0";
+ };
+ coderay = {
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw";
+ type = "gem";
+ };
+ version = "1.1.3";
+ };
+ coffee-rails = {
+ dependencies = ["coffee-script" "railties"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "170sp4y82bf6nsczkkkzypzv368sgjg6lfrkib4hfjgxa6xa3ajx";
+ type = "gem";
+ };
+ version = "5.0.0";
+ };
+ coffee-script = {
+ dependencies = ["coffee-script-source" "execjs"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0rc7scyk7mnpfxqv5yy4y5q1hx3i7q3ahplcp4bq2g5r24g2izl2";
+ type = "gem";
+ };
+ version = "2.4.1";
+ };
+ coffee-script-source = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1907v9q1zcqmmyqzhzych5l7qifgls2rlbnbhy5vzyr7i7yicaz1";
+ type = "gem";
+ };
+ version = "1.12.2";
+ };
+ combine_pdf = {
+ dependencies = ["ruby-rc4"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1bxakrrip0sg5gxy50wdn7lr3h2w7rd590cjhnj4qi477cvi1qgg";
+ type = "gem";
+ };
+ version = "1.0.21";
+ };
+ compass = {
+ dependencies = ["chunky_png" "compass-core" "compass-import-once" "rb-fsevent" "rb-inotify" "sass"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lfi83w8z75czr0pf0rmj9hda22082h3cmvczl8r1ma9agf88y2c";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
+ compass-core = {
+ dependencies = ["multi_json" "sass"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yaspqwdmzwdcqviclbs3blq7an16pysrfzylz8q1gxmmd6bpj3a";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
+ compass-import-once = {
+ dependencies = ["sass"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq";
+ type = "gem";
+ };
+ version = "1.0.5";
+ };
+ compass-rails = {
+ dependencies = ["compass" "sass-rails" "sprockets"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1y1gi9lcmxzn0xvx2pf4xzj8n0s6rl0vbycyjk1kpcvycyjnbjgr";
+ type = "gem";
+ };
+ version = "4.0.0";
+ };
+ concurrent-ruby = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0nwad3211p7yv9sda31jmbyw6sdafzmdi2i2niaz6f0wk5nq9h0f";
+ type = "gem";
+ };
+ version = "1.1.9";
+ };
+ connection_pool = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ffdxhgirgc86qb42yvmfj6v1v0x4lvi0pxn9zhghkff44wzra0k";
+ type = "gem";
+ };
+ version = "2.2.5";
+ };
+ crack = {
+ dependencies = ["rexml"];
+ groups = ["default" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r";
+ type = "gem";
+ };
+ version = "0.4.5";
+ };
+ crass = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw";
+ type = "gem";
+ };
+ version = "1.0.6";
+ };
+ css_parser = {
+ dependencies = ["addressable"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0xs4ind9xd099rb52b73pch8ha143dl8bhivqsbba4wrvxpbx751";
+ type = "gem";
+ };
+ version = "1.9.0";
+ };
+ cuprite = {
+ dependencies = ["capybara" "ferrum"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1gz7min595pq4xkzm1nvn538i7plg7jwfc1pw6w8f4apfh94fv56";
+ type = "gem";
+ };
+ version = "0.13";
+ };
+ custom_error_message = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ fetchSubmodules = false;
+ rev = "3a8ec9dddc7a5b0aab7c69a6060596de300c68f4";
+ sha256 = "1r2yah8dzng7i0000xfdksv3cj2z65x1nr4vjrnsv9sm7fj7bbld";
+ type = "git";
+ url = "https://github.com/jeremydurham/custom-err-msg.git";
+ };
+ version = "1.1.1";
+ };
+ dalli = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0br39scmr187w3ifl5gsddl2fhq6ahijgw6358plqjdzrizlg764";
+ type = "gem";
+ };
+ version = "2.7.11";
+ };
+ database_cleaner = {
+ dependencies = ["database_cleaner-active_record"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1x4r22rnpwnm9yln88vhzqj4cl3sbd26c4j50g9k6wp7y01rln4w";
+ type = "gem";
+ };
+ version = "2.0.1";
+ };
+ database_cleaner-active_record = {
+ dependencies = ["activerecord" "database_cleaner-core"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1jg7jd7w65hdarzbi8f252la3qgsnd2sjavhlmc82kwzfx37k38m";
+ type = "gem";
+ };
+ version = "2.0.0";
+ };
+ database_cleaner-core = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0v44bn386ipjjh4m2kl53dal8g4d41xajn2jggnmjbhn6965fil6";
+ type = "gem";
+ };
+ version = "2.0.1";
+ };
+ db2fog = {
+ dependencies = ["activerecord" "fog-core" "rails"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ fetchSubmodules = false;
+ rev = "5b63343847452f52aa42f7fc169d6ab3af57cda3";
+ sha256 = "02fc3v81sx6rnvc492bdg057fs67qpsf83y25bsdqz83k21xmzyl";
+ type = "git";
+ url = "https://github.com/openfoodfoundation/db2fog.git";
+ };
+ version = "0.9.2";
+ };
+ ddtrace = {
+ dependencies = ["ffi" "msgpack"];
+ groups = ["production" "staging"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0p7d6r2zpy9mqmd26ni9cpgc2yas4jira66rxx92l87amypkvasc";
+ type = "gem";
+ };
+ version = "0.53.0";
+ };
+ debugger-linecache = {
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0iwyx190fd5vfwj1gzr8pg3m374kqqix4g4fc4qw29sp54d3fpdz";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ devise = {
+ dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ag0skzk3h7bhmf1n2zwa7cg6kx5k5inxmq0kf5qpm7917ffm0mz";
+ type = "gem";
+ };
+ version = "4.8.0";
+ };
+ devise-encryptable = {
+ dependencies = ["devise"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1dh9gl7qa1a8x091xk9dc6lwc5jw6lqmiw7sii1hq0w4jknwlq4q";
+ type = "gem";
+ };
+ version = "0.2.0";
+ };
+ devise-i18n = {
+ dependencies = ["devise"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "11knkl0b40pyjz8934pmr3apzsmvvaj09w5ks8xzppd5agid2r6f";
+ type = "gem";
+ };
+ version = "1.10.0";
+ };
+ devise-token_authenticatable = {
+ dependencies = ["devise"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ss9wcmjghl6s2kyqrgjn5z4bw1gxmlbqv0in2kirn56428w239f";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ dfc_provider = {
+ dependencies = ["active_model_serializers" "jwt" "rspec"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ path = engines/dfc_provider;
+ type = "path";
+ };
+ version = "0.0.1";
+ };
+ diff-lcs = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0m925b8xc6kbpnif9dldna24q1szg4mk0fvszrki837pfn46afmz";
+ type = "gem";
+ };
+ version = "1.4.4";
+ };
+ docile = {
+ groups = ["default" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lxqxgq71rqwj1lpl9q1mbhhhhhhdkkj7my341f2889pwayk85sz";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ dotenv = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0iym172c5337sm1x2ykc2i3f961vj3wdclbyg1x6sxs3irgfsl94";
+ type = "gem";
+ };
+ version = "2.7.6";
+ };
+ dotenv-rails = {
+ dependencies = ["dotenv" "railties"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1my2jdmgmpf32rfxffkb9cyxh7ayis4q5ygpwjqj4vpp25y3a70c";
+ type = "gem";
+ };
+ version = "2.7.6";
+ };
+ e2mmap = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5";
+ type = "gem";
+ };
+ version = "0.1.0";
+ };
+ erubi = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "09l8lz3j00m898li0yfsnb6ihc63rdvhw3k5xczna5zrjk104f2l";
+ type = "gem";
+ };
+ version = "1.10.0";
+ };
+ et-orbi = {
+ dependencies = ["tzinfo"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0xr8i8ql4xzx17d12590i3j299hj6vc0ja2j29dy12i5nlchxrvp";
+ type = "gem";
+ };
+ version = "1.2.4";
+ };
+ excon = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19g5nvkycnkzqq4mqn1zjznq9adrlv2jz0dr9w10cbn42hhqpiz7";
+ type = "gem";
+ };
+ version = "0.81.0";
+ };
+ execjs = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
+ type = "gem";
+ };
+ version = "2.7.0";
+ };
+ factory_bot = {
+ dependencies = ["activesupport"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "04vxmjr200akcil9fqxc9ghbb9q0lyrh2q03xxncycd5vln910fi";
+ type = "gem";
+ };
+ version = "6.2.0";
+ };
+ factory_bot_rails = {
+ dependencies = ["factory_bot" "railties"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18fhcihkc074gk62iwqgbdgc3ymim4fm0b4p3ipffy5hcsb9d2r7";
+ type = "gem";
+ };
+ version = "6.2.0";
+ };
+ faraday = {
+ dependencies = ["faraday-excon" "faraday-net_http" "faraday-net_http_persistent" "multipart-post" "ruby2_keywords"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0q646m07lfahakx5jdq77j004rcgfj6lkg13c0f84993gi78dhvi";
+ type = "gem";
+ };
+ version = "1.4.1";
+ };
+ faraday-excon = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0h09wkb0k0bhm6dqsd47ac601qiaah8qdzjh8gvxfd376x1chmdh";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ faraday-net_http = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fi8sda5hc54v1w3mqfl5yz09nhx35kglyx72w7b8xxvdr0cwi9j";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ faraday-net_http_persistent = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0l2c835wl7gv34xp49fhd1bl4czkpw2g3ahqsak2251iqv5589ka";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ ferrum = {
+ dependencies = ["addressable" "cliver" "concurrent-ruby" "websocket-driver"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "17c2bryyzpdx3mj6rig4aym3wy24g2212zm0jz2gisbymhv9adbl";
+ type = "gem";
+ };
+ version = "0.11";
+ };
+ ffaker = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0gif76bq11qz73qm8hv050wf642f9zwawra78bnpnj5kpqhjg3dl";
+ type = "gem";
+ };
+ version = "2.20.0";
+ };
+ ffi = {
+ groups = ["default" "production" "staging"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ssxcywmb3flxsjdg13is6k01807zgzasdhj4j48dm7ac59cmksn";
+ type = "gem";
+ };
+ version = "1.15.4";
+ };
+ flipper = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1gdnd7j12a560r4pi22v1z2cy0nymwr340922rfj9qkpj7h46371";
+ type = "gem";
+ };
+ version = "0.20.4";
+ };
+ flipper-active_record = {
+ dependencies = ["activerecord" "flipper"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "042x64rr11ia7n4db2y6vjbfjv2ip0jp2m2mlyb6d9srbxvvkiif";
+ type = "gem";
+ };
+ version = "0.20.4";
+ };
+ flipper-ui = {
+ dependencies = ["erubi" "flipper" "rack" "rack-protection"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0sf9giwiwrncvvac48rgc56xgj6s8scs7a9ahr6b2hqbyr1nja9l";
+ type = "gem";
+ };
+ version = "0.20.4";
+ };
+ fog-aws = {
+ dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00skbbgvhqzq6gpgzmw0957n0wf1y3vjgrdyq3sib0ghpyfgmig3";
+ type = "gem";
+ };
+ version = "2.0.1";
+ };
+ fog-core = {
+ dependencies = ["builder" "excon" "formatador"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02449kh2x3zj9xxszm02vy8zpbsrykvjrg5gj3kqcy2yizy2bhp3";
+ type = "gem";
+ };
+ version = "1.45.0";
+ };
+ fog-json = {
+ dependencies = ["fog-core" "multi_json"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
+ type = "gem";
+ };
+ version = "1.2.0";
+ };
+ fog-xml = {
+ dependencies = ["fog-core" "nokogiri"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
+ type = "gem";
+ };
+ version = "0.1.3";
+ };
+ foreman = {
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0szgxvnzwkzrfbq5dkwa98mig78aqglfy6irdsvq1gq045pbq9r7";
+ type = "gem";
+ };
+ version = "0.87.2";
+ };
+ formatador = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ foundation-icons-sass-rails = {
+ dependencies = ["railties" "sass-rails"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1z3bp0kcz7csid9r6h8z8asywh8mn2fwcm71b4v4qjca13qf4n2w";
+ type = "gem";
+ };
+ version = "3.0.0";
+ };
+ foundation-rails = {
+ dependencies = ["railties" "sass"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1dizpi3k3bb2arnf96rxx1qx3x3rwqshbdzb3l8ycj1laddrhwnl";
+ type = "gem";
+ };
+ version = "5.5.2.1";
+ };
+ fugit = {
+ dependencies = ["et-orbi" "raabro"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0jhbmc1l94vz25byfbmgi783lrwsh74xvslqzxd0pjf8i9xsxv49";
+ type = "gem";
+ };
+ version = "1.4.5";
+ };
+ fuubar = {
+ dependencies = ["rspec-core" "ruby-progressbar"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1028vn7j3kc5qqwswrf3has3qm4j9xva70xmzb3n29i89f0afwmj";
+ type = "gem";
+ };
+ version = "2.5.1";
+ };
+ geocoder = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0is3xss043nxvckqrbk0r881950q4khigrh41qqqjff44gm24bs3";
+ type = "gem";
+ };
+ version = "1.6.7";
+ };
+ globalid = {
+ dependencies = ["activesupport"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0k6ww3shk3mv119xvr9m99l6ql0czq91xhd66hm8hqssb18r2lvm";
+ type = "gem";
+ };
+ version = "0.5.2";
+ };
+ gmaps4rails = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0avwx3ygmq2krkawyplw76q4bm05v56rwp1vdwfpvsd8bh4vzhq9";
+ type = "gem";
+ };
+ version = "2.1.2";
+ };
+ good_migrations = {
+ dependencies = ["activerecord" "railties"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0f613j6gkdkipzhw6r9kngqk3g2zi6hwmscy1sdf5snfjpamhvin";
+ type = "gem";
+ };
+ version = "0.1.0";
+ };
+ haml = {
+ dependencies = ["temple" "tilt"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "035fgbfr20m08w4603ls2lwqbggr0vy71mijz0p68ib1am394xbf";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ hashdiff = {
+ groups = ["default" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ hashery = {
+ groups = ["default" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj";
+ type = "gem";
+ };
+ version = "2.1.2";
+ };
+ highline = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yclf57n2j3cw8144ania99h1zinf8q3f5zrhqa754j6gl95rp9d";
+ type = "gem";
+ };
+ version = "2.0.3";
+ };
+ hiredis = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "04jj8k7lxqxw24sp0jiravigdkgsyrpprxpxm71ba93x1wr2w1bz";
+ type = "gem";
+ };
+ version = "0.6.3";
+ };
+ i18n = {
+ dependencies = ["concurrent-ruby"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0g2fnag935zn2ggm5cn6k4s4xvv53v2givj1j90szmvavlpya96a";
+ type = "gem";
+ };
+ version = "1.8.10";
+ };
+ i18n-js = {
+ dependencies = ["i18n"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0xiq65q0rhafp3aknj602nbj7i016yjfvw28y83hg8ddqlqvc9x0";
+ type = "gem";
+ };
+ version = "3.9.0";
+ };
+ immigrant = {
+ dependencies = ["activerecord"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15jf08h8if3wyq0kdgijcknqzmgfw4rqnyln68mydg1c5bn4s5cw";
+ type = "gem";
+ };
+ version = "0.3.6";
+ };
+ ipaddress = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
+ type = "gem";
+ };
+ version = "0.8.3";
+ };
+ jmespath = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ jquery-rails = {
+ dependencies = ["rails-dom-testing" "railties" "thor"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0dkhm8lan1vnyl3ll0ks2q06576pdils8a1dr354vfc1y5dqw15i";
+ type = "gem";
+ };
+ version = "4.4.0";
+ };
+ jquery-ui-rails = {
+ dependencies = ["railties"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1garrnqwh35acj2pp4sp6fpm2g881h23y644lzbic2qmcrq9wd2v";
+ type = "gem";
+ };
+ version = "4.2.1";
+ };
+ json = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lrirj0gw420kw71bjjlqkqhqbrplla61gbv1jzgsz6bv90qr3ci";
+ type = "gem";
+ };
+ version = "2.5.1";
+ };
+ json-schema = {
+ dependencies = ["addressable"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5";
+ type = "gem";
+ };
+ version = "2.8.1";
+ };
+ json_spec = {
+ dependencies = ["multi_json" "rspec"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "03yiravv6q8lp37rip2i25w2qd63mwwi4jmw7ymf51y7j9xbjxvs";
+ type = "gem";
+ };
+ version = "1.1.5";
+ };
+ jwt = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bg8pjx0mpvl10k6d8a6gc8dzlv2z5jkqcjbjcirnk032iriq838";
+ type = "gem";
+ };
+ version = "2.3.0";
+ };
+ knapsack = {
+ dependencies = ["rake"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1f42akjbdkrg1ihwvls9pkkvz8vikaapzgxl82dd128rfn42chm9";
+ type = "gem";
+ };
+ version = "4.0.0";
+ };
+ launchy = {
+ dependencies = ["addressable"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xdyvr5j0gjj7b10kgvh8ylxnwk3wx19my42wqn9h82r4p246hlm";
+ type = "gem";
+ };
+ version = "2.5.0";
+ };
+ letter_opener = {
+ dependencies = ["launchy"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "09a7kgsmr10a0hrc9bwxglgqvppjxij9w8bxx91mnvh0ivaw0nq9";
+ type = "gem";
+ };
+ version = "1.7.0";
+ };
+ libv8-node = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xx217hrkpcm41p41inmy05kb7g8p9w5fwabgjgmpvz0d60j2862";
+ type = "gem";
+ };
+ version = "15.14.0.1";
+ };
+ loofah = {
+ dependencies = ["crass" "nokogiri"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1nqcya57x2n58y1dify60i0dpla40n4yir928khp4nj5jrn9mgmw";
+ type = "gem";
+ };
+ version = "2.12.0";
+ };
+ mail = {
+ dependencies = ["mini_mime"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
+ type = "gem";
+ };
+ version = "2.7.1";
+ };
+ marcel = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bp001p687nsa4a8sp3q1iv8pfhs24w7s3avychjp64sdkg6jxq3";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ method_source = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp";
+ type = "gem";
+ };
+ version = "1.0.0";
+ };
+ mime-types = {
+ dependencies = ["mime-types-data"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zj12l9qk62anvk9bjvandpa6vy4xslil15wl6wlivyf51z773vh";
+ type = "gem";
+ };
+ version = "3.3.1";
+ };
+ mime-types-data = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1phcq7z0zpipwd7y4fbqmlaqghv07fjjgrx99mwq3z3n0yvy7fmi";
+ type = "gem";
+ };
+ version = "3.2021.0225";
+ };
+ mimemagic = {
+ dependencies = ["nokogiri" "rake"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "17ycgsmz2229jh224ws77yg974cz326flgc401xrdkfpw90jvb08";
+ type = "gem";
+ };
+ version = "0.4.3";
+ };
+ mini_mime = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kb7jq3wjgckmkzna799y5qmvn6vg52878bkgw35qay6lflcrwih";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ mini_portile2 = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lvxm91hi0pabnkkg47wh1siv56s6slm2mdq1idfm86dyfidfprq";
+ type = "gem";
+ };
+ version = "2.6.1";
+ };
+ mini_racer = {
+ dependencies = ["libv8-node"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0334q46gi3il9izw7k4z32fj06nm8pznqdkr9r51033lnwwy9zy3";
+ type = "gem";
+ };
+ version = "0.4.0";
+ };
+ minitest = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19z7wkhg59y8abginfrm2wzplz7py3va8fyngiigngqvsws6cwgl";
+ type = "gem";
+ };
+ version = "5.14.4";
+ };
+ monetize = {
+ dependencies = ["money"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn";
+ type = "gem";
+ };
+ version = "1.11.0";
+ };
+ money = {
+ dependencies = ["i18n"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "11fk7i1w3qjb1br7507z748g1rh3mcmnvpm4jach0i4hsc2wrb5k";
+ type = "gem";
+ };
+ version = "6.14.1";
+ };
+ msgpack = {
+ groups = ["default" "production" "staging"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06iajjyhx0rvpn4yr3h1hc4w4w3k59bdmfhxnjzzh76wsrdxxrc6";
+ type = "gem";
+ };
+ version = "1.4.2";
+ };
+ multi_json = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z";
+ type = "gem";
+ };
+ version = "1.15.0";
+ };
+ multi_xml = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
+ type = "gem";
+ };
+ version = "0.6.0";
+ };
+ multipart-post = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zgw9zlwh2a6i1yvhhc4a84ry1hv824d6g2iw2chs3k5aylpmpfj";
+ type = "gem";
+ };
+ version = "2.1.1";
+ };
+ nio4r = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0xk64wghkscs6bv2n22853k2nh39d131c6rfpnlw12mbjnnv9v1v";
+ type = "gem";
+ };
+ version = "2.5.8";
+ };
+ nokogiri = {
+ dependencies = ["mini_portile2" "racc"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1v02g7k7cxiwdcahvlxrmizn3avj2q6nsjccgilq1idc89cr081b";
+ type = "gem";
+ };
+ version = "1.12.5";
+ };
+ oauth2 = {
+ dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1q6q2kgpxmygk8kmxqn54zkw8cs57a34zzz5cxpsh1bj3ag06rk3";
+ type = "gem";
+ };
+ version = "1.4.7";
+ };
+ ofn-qz = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ fetchSubmodules = false;
+ rev = "467f6ea1c44529c7c91cac4c8211bbd863588c0b";
+ sha256 = "1rm2r2gfbc8cbv9gd4619ivv3qvklwpdayvklyd7w5k9c110fm7j";
+ type = "git";
+ url = "https://github.com/openfoodfoundation/ofn-qz.git";
+ };
+ version = "0.1.0";
+ };
+ order_management = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ path = engines/order_management;
+ type = "path";
+ };
+ version = "0.0.1";
+ };
+ orm_adapter = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+ pagy = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "010z4lmpj7ld8k6hcpsyd2m0iicycaaabyzscgvnir8cklx1w9cw";
+ type = "gem";
+ };
+ version = "4.11.0";
+ };
+ paper_trail = {
+ dependencies = ["activerecord" "request_store"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1hvz0fdzginyyx2x8c755aibdhfvmpjfb9666pdk6ccr9nkb7w1k";
+ type = "gem";
+ };
+ version = "12.1.0";
+ };
+ paperclip = {
+ dependencies = ["activemodel" "activerecord" "activesupport" "cocaine" "mime-types"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "12acd9ambpsq25x4mi4anmsz9p442zhqkba2f4hgml01njxpn8y9";
+ type = "gem";
+ };
+ version = "3.4.2";
+ };
+ parallel = {
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1hkfpm78c2vs1qblnva3k1grijvxh87iixcnyd83s3lxrxsjvag4";
+ type = "gem";
+ };
+ version = "1.21.0";
+ };
+ paranoia = {
+ dependencies = ["activerecord"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02plzv9qygzxa3fryz6cgap64jqrzwprjsm7r467g15mhaa4fzxi";
+ type = "gem";
+ };
+ version = "2.4.3";
+ };
+ parser = {
+ dependencies = ["ast"];
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06ma6w87ph8lnc9z4hi40ynmcdnjv0p8x53x0s3fjkz4q2p6sxh5";
+ type = "gem";
+ };
+ version = "3.0.2.0";
+ };
+ paypal-sdk-core = {
+ dependencies = ["multi_json" "xml-simple"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0zjqykpxn6snv92wn8a179xyn1vbj327x91dh75lld3myfjz0b0l";
+ type = "gem";
+ };
+ version = "0.3.4";
+ };
+ paypal-sdk-merchant = {
+ dependencies = ["paypal-sdk-core"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0v8gqhn7s53xdf5583hcf3ph22n81hniwli3s1jprak7nx5453f7";
+ type = "gem";
+ };
+ version = "1.117.2";
+ };
+ pdf-reader = {
+ dependencies = ["Ascii85" "afm" "hashery" "ruby-rc4" "ttfunk"];
+ groups = ["test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "14cxj3ra9nnn334qpm2vsx9s0zk3095s8ih6cwcp47h3hv03c73y";
+ type = "gem";
+ };
+ version = "2.5.0";
+ };
+ pg = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "13mfrysrdrh8cka1d96zm0lnfs59i5x2g6ps49r2kz5p3q81xrzj";
+ type = "gem";
+ };
+ version = "1.2.3";
+ };
+ power_assert = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01z44m715rb6nzfrc90c5rkkdiy42dv3q94jw1q8baf9dg33nwi5";
+ type = "gem";
+ };
+ version = "2.0.1";
+ };
+ pry = {
+ dependencies = ["coderay" "method_source"];
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk";
+ type = "gem";
+ };
+ version = "0.13.1";
+ };
+ pry-byebug = {
+ dependencies = ["byebug" "pry"];
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "096y5vmzpyy4x9h4ky4cs4y7d19vdq9vbwwrqafbh5gagzwhifiv";
+ type = "gem";
+ };
+ version = "3.9.0";
+ };
+ public_suffix = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9";
+ type = "gem";
+ };
+ version = "4.0.6";
+ };
+ puma = {
+ dependencies = ["nio4r"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ahk9a2a05985m0037gqlpha5vdkvmwhyk8v1shkbnwkkm30k0mq";
+ type = "gem";
+ };
+ version = "5.5.0";
+ };
+ raabro = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10m8bln9d00dwzjil1k42i5r7l82x25ysbi45fwyv4932zsrzynl";
+ type = "gem";
+ };
+ version = "1.4.0";
+ };
+ racc = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g";
+ type = "gem";
+ };
+ version = "1.5.2";
+ };
+ rack = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0i5vs0dph9i5jn8dfc6aqd6njcafmb20rwqngrf759c9cvmyff16";
+ type = "gem";
+ };
+ version = "2.2.3";
+ };
+ rack-mini-profiler = {
+ dependencies = ["rack"];
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "03hcvjw9nrv0w6yjy2zkv4ivin9xg2wr7xfcvx7rc2msv1gmjb6z";
+ type = "gem";
+ };
+ version = "2.3.3";
+ };
+ rack-protection = {
+ dependencies = ["rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "159a4j4kragqh0z0z8vrpilpmaisnlz3n7kgiyf16bxkwlb3qlhz";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ rack-proxy = {
+ dependencies = ["rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0jdr2r5phr3q7d6k9cnxjwlkaps0my0n43wq9mzw3xdqhg9wa3d6";
+ type = "gem";
+ };
+ version = "0.7.0";
+ };
+ rack-rewrite = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0milw71dv96wnc6i48vbzypws51dgf415kkp8c4air0mkdhpj838";
+ type = "gem";
+ };
+ version = "1.5.1";
+ };
+ rack-ssl = {
+ dependencies = ["rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0c21xqkjyl10fngq6dy8082vmn2png8cwkiyzv83ymixq5cx7ygp";
+ type = "gem";
+ };
+ version = "1.4.1";
+ };
+ rack-test = {
+ dependencies = ["rack"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ rack-timeout = {
+ groups = ["production" "staging"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "16ahj3qz3xhfrwvqb4nf6cfzvliigg0idfsp5jyr8qwk676d2f30";
+ type = "gem";
+ };
+ version = "0.6.0";
+ };
+ rails = {
+ dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1y59m2x8rdc581bjgyyr9dabi3vk3frqhhpbb5ldpbj622kxfpbz";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ rails-controller-testing = {
+ dependencies = ["actionpack" "actionview" "activesupport"];
+ groups = ["test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "151f303jcvs8s149mhx2g5mn67487x0blrf9dzl76q1nb7dlh53l";
+ type = "gem";
+ };
+ version = "1.0.5";
+ };
+ rails-dom-testing = {
+ dependencies = ["activesupport" "nokogiri"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
+ type = "gem";
+ };
+ version = "2.0.3";
+ };
+ rails-html-sanitizer = {
+ dependencies = ["loofah"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "09qrfi3pgllxb08r024lln9k0qzxs57v0slsj8616xf9c0cwnwbk";
+ type = "gem";
+ };
+ version = "1.4.2";
+ };
+ rails-i18n = {
+ dependencies = ["i18n" "railties"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "05mcgv748vppnm3fnml37wjy3dw61wj8vfw14ldaj1yx1bmkhb07";
+ type = "gem";
+ };
+ version = "6.0.0";
+ };
+ rails_safe_tasks = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "06bl9cgj8jyc04qdm4jp02ph2vlarapy119lagk6cq1hadzdw7n2";
+ type = "gem";
+ };
+ version = "1.0.0";
+ };
+ railties = {
+ dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1kwpm068cqys34p2g0j3l1g0cd5f3kxnsay5v7lmbd0sgarac0vy";
+ type = "gem";
+ };
+ version = "6.1.4.1";
+ };
+ rainbow = {
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
+ type = "gem";
+ };
+ version = "3.0.0";
+ };
+ rake = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15whn7p9nrkxangbs9hh75q585yfn66lv0v2mhj6q6dl6x8bzr2w";
+ type = "gem";
+ };
+ version = "13.0.6";
+ };
+ ransack = {
+ dependencies = ["activerecord" "activesupport" "i18n"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0z25sv93lfiyjjm9fgkmnjkc9kjdlpkd7wairk2vqj7dxklv7yvs";
+ type = "gem";
+ };
+ version = "2.4.2";
+ };
+ rb-fsevent = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1qsx9c4jr11vr3a9s5j83avczx9qn9rjaf32gxpc2v451hvbc0is";
+ type = "gem";
+ };
+ version = "0.11.0";
+ };
+ rb-inotify = {
+ dependencies = ["ffi"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005";
+ type = "gem";
+ };
+ version = "0.10.1";
+ };
+ redcarpet = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bvk8yyns5s1ls437z719y5sdv9fr8kfs8dmr6g8s761dv5n8zvi";
+ type = "gem";
+ };
+ version = "3.5.1";
+ };
+ redis = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ig832dp0xmpp6a934nifzaj7wm9lzjxzasw911fagycs8p6m720";
+ type = "gem";
+ };
+ version = "4.4.0";
+ };
+ regexp_parser = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0vg7imjnfcqjx7kw94ccj5r78j4g190cqzi1i59sh4a0l940b9cr";
+ type = "gem";
+ };
+ version = "2.1.1";
+ };
+ request_store = {
+ dependencies = ["rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0cx74kispmnw3ljwb239j65a2j14n8jlsygy372hrsa8mxc71hxi";
+ type = "gem";
+ };
+ version = "1.5.0";
+ };
+ responders = {
+ dependencies = ["actionpack" "railties"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "14kjykc6rpdh24sshg9savqdajya2dislc1jmbzg91w9967f4gv1";
+ type = "gem";
+ };
+ version = "3.0.1";
+ };
+ rexml = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
+ type = "gem";
+ };
+ version = "3.2.5";
+ };
+ roadie = {
+ dependencies = ["css_parser" "nokogiri"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01kld3drqfiih5x8c13cvr6dpvdl7jml0v9bcw4fsy322lax3kn0";
+ type = "gem";
+ };
+ version = "4.0.0";
+ };
+ roadie-rails = {
+ dependencies = ["railties" "roadie"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0jjcqnp37z65dksykzwjiz149kx65nw70lyx8dkw1fm5x7yraqvh";
+ type = "gem";
+ };
+ version = "2.2.0";
+ };
+ roo = {
+ dependencies = ["nokogiri" "rubyzip"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1z2nbf1w48ip2akf1ql86y6569aizi53d6ickjbplkga12n0isf8";
+ type = "gem";
+ };
+ version = "2.8.3";
+ };
+ rspec = {
+ dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1dwai7jnwmdmd7ajbi2q0k0lx1dh88knv5wl7c34wjmf94yv8w5q";
+ type = "gem";
+ };
+ version = "3.10.0";
+ };
+ rspec-core = {
+ dependencies = ["rspec-support"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0wwnfhxxvrlxlk1a3yxlb82k2f9lm0yn0598x7lk8fksaz4vv6mc";
+ type = "gem";
+ };
+ version = "3.10.1";
+ };
+ rspec-expectations = {
+ dependencies = ["diff-lcs" "rspec-support"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1sz9bj4ri28adsklnh257pnbq4r5ayziw02qf67wry0kvzazbb17";
+ type = "gem";
+ };
+ version = "3.10.1";
+ };
+ rspec-mocks = {
+ dependencies = ["diff-lcs" "rspec-support"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1d13g6kipqqc9lmwz5b244pdwc97z15vcbnbq6n9rlf32bipdz4k";
+ type = "gem";
+ };
+ version = "3.10.2";
+ };
+ rspec-rails = {
+ dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "152yz205p8zi5nxxhs8z581rjdvvqsfjndklkvn11f2vi50nv7n9";
+ type = "gem";
+ };
+ version = "5.0.2";
+ };
+ rspec-retry = {
+ dependencies = ["rspec-core"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0n6qc0d16h6bgh1xarmc8vc58728mgjcsjj8wcd822c8lcivl0b1";
+ type = "gem";
+ };
+ version = "0.6.2";
+ };
+ rspec-support = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15j52parvb8cgvl6s0pbxi2ywxrv6x0764g222kz5flz0s4mycbl";
+ type = "gem";
+ };
+ version = "3.10.2";
+ };
+ rswag = {
+ dependencies = ["rswag-api" "rswag-specs" "rswag-ui"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1w7dc4ipxaf6dagj6zbn4j7r384gh4zhdb2i7dvpqahrszf6cc7r";
+ type = "gem";
+ };
+ version = "2.4.0";
+ };
+ rswag-api = {
+ dependencies = ["railties"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1s8wc2m4xngbdm5ms2xskpykzbmr9cvapxpjv4k6yirv71lqdxqc";
+ type = "gem";
+ };
+ version = "2.4.0";
+ };
+ rswag-specs = {
+ dependencies = ["activesupport" "json-schema" "railties"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1dma3j5vfjhyclg8y0gsp44vs4wn9chf4jgfhc9r6ws018xrbxzd";
+ type = "gem";
+ };
+ version = "2.4.0";
+ };
+ rswag-ui = {
+ dependencies = ["actionpack" "railties"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08f7g0cmz5gyzsszaqwmy4mrj2xh6krnd03jw9yi80gqayda4rkr";
+ type = "gem";
+ };
+ version = "2.4.0";
+ };
+ rubocop = {
+ dependencies = ["parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19jg2mm4xj044j06asqv7v0bmq1axikl9pskf35riz54rskv8wci";
+ type = "gem";
+ };
+ version = "1.22.1";
+ };
+ rubocop-ast = {
+ dependencies = ["parser"];
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0x0xfq2mpg194rcanbjrgvjbh94s9kq72jynxx61789s628kxy59";
+ type = "gem";
+ };
+ version = "1.12.0";
+ };
+ rubocop-rails = {
+ dependencies = ["activesupport" "rack" "rubocop"];
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1mq3x7jpmp49wwa2r880dcmn27arqc9ln8v2y0dv3ha7s5g8mzrn";
+ type = "gem";
+ };
+ version = "2.12.3";
+ };
+ ruby-progressbar = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02nmaw7yx9kl7rbaan5pl8x5nn0y4j5954mzrkzi9i3dhsrps4nc";
+ type = "gem";
+ };
+ version = "1.11.0";
+ };
+ ruby-rc4 = {
+ groups = ["default" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00";
+ type = "gem";
+ };
+ version = "0.1.5";
+ };
+ ruby2_keywords = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15wfcqxyfgka05v2a7kpg64x57gl1y4xzvnc9lh60bqx5sf1iqrs";
+ type = "gem";
+ };
+ version = "0.0.4";
+ };
+ rubyzip = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz";
+ type = "gem";
+ };
+ version = "2.3.2";
+ };
+ rufus-scheduler = {
+ dependencies = ["fugit"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1x1cr9hd3phshgrrh796ql37339j5i6w7i7skxjkyygigdzl5kjy";
+ type = "gem";
+ };
+ version = "3.7.0";
+ };
+ sass = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0kfpcwh8dgw4lc81qglkvjl73689jy3g7196zkxm4fpskg1p5lkw";
+ type = "gem";
+ };
+ version = "3.4.25";
+ };
+ sass-rails = {
+ dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19bcs1ya3bkx36qaz21kgiz28s9h678m3rszcw7aany2lsis56y7";
+ type = "gem";
+ };
+ version = "5.0.8";
+ };
+ sd_notify = {
+ groups = ["production" "staging"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0c9imnjbakx25r2n7widfp00s19ndzmmwax761mx5vbwm9nariyb";
+ type = "gem";
+ };
+ version = "0.1.1";
+ };
+ select2-rails = {
+ dependencies = ["sass-rails" "thor"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ fetchSubmodules = false;
+ rev = "fc240e85fbdf1878ff3c39d972c0cd9a312f5ed4";
+ sha256 = "0lflvygxgmm4yqhnx66h77g742g01x7jajjjn33a4hm0n7lgdq5y";
+ type = "git";
+ url = "https://github.com/openfoodfoundation/select2-rails.git";
+ };
+ version = "3.4.9";
+ };
+ selenium-webdriver = {
+ dependencies = ["childprocess" "rubyzip"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0adcvp86dinaqq3nhf8p3m0rl2g6q0a4h52k0i7kdnsg1qz9k86y";
+ type = "gem";
+ };
+ version = "3.142.7";
+ };
+ semantic_range = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1dlp97vg95plrsaaqj7x8l7z9vsjbhnqk4rw1l30gy26lmxpfrih";
+ type = "gem";
+ };
+ version = "3.0.0";
+ };
+ shoulda-matchers = {
+ dependencies = ["activesupport"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0z6v2acldnvqrnvfk70f9xq39ppw5j03kbz2hpz7s17lgnn21vx8";
+ type = "gem";
+ };
+ version = "5.0.0";
+ };
+ sidekiq = {
+ dependencies = ["connection_pool" "rack" "redis"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "104a97cl94aclg71ngrr097zjbdf6cibnz4q3rqjb88izmd7cfk6";
+ type = "gem";
+ };
+ version = "6.2.2";
+ };
+ sidekiq-scheduler = {
+ dependencies = ["e2mmap" "redis" "rufus-scheduler" "sidekiq" "thwait" "tilt"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0k686psrg8rd902yyqi38vys11zb07192skzx8zyyvyz2l9vrzds";
+ type = "gem";
+ };
+ version = "3.1.0";
+ };
+ simplecov = {
+ dependencies = ["docile" "simplecov-html" "simplecov_json_formatter"];
+ groups = ["test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1hrv046jll6ad1s964gsmcq4hvkr3zzr6jc7z1mns22mvfpbc3cr";
+ type = "gem";
+ };
+ version = "0.21.2";
+ };
+ simplecov-html = {
+ groups = ["default" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb";
+ type = "gem";
+ };
+ version = "0.12.3";
+ };
+ simplecov_json_formatter = {
+ groups = ["default" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19r15hyvh52jx7fmsrcflb58xh8l7l0zx4sxkh3hqzhq68y81pjl";
+ type = "gem";
+ };
+ version = "0.1.3";
+ };
+ spring = {
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "12kyz3jdnaarhf2jbykmd9mqg085gxsx00c16la5q7czxvpb2x2r";
+ type = "gem";
+ };
+ version = "3.0.0";
+ };
+ spring-commands-rspec = {
+ dependencies = ["spring"];
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ sprockets = {
+ dependencies = ["concurrent-ruby" "rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
+ type = "gem";
+ };
+ version = "3.7.2";
+ };
+ sprockets-rails = {
+ dependencies = ["actionpack" "activesupport" "sprockets"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0mwmz36265646xqfyczgr1mhkm1hfxgxxvgdgr4xfcbf2g72p1k2";
+ type = "gem";
+ };
+ version = "3.2.2";
+ };
+ state_machines = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+ state_machines-activemodel = {
+ dependencies = ["activemodel" "state_machines"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0b4dffzlj38adin6gm0ky72r5c507qdb1jprnm7h9gnlj2qxlcp9";
+ type = "gem";
+ };
+ version = "0.8.0";
+ };
+ state_machines-activerecord = {
+ dependencies = ["activerecord" "state_machines-activemodel"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1dmaf4f4cg3gamzgga3gamp0kv9lvianqzr9103dw0xbp00vfbq7";
+ type = "gem";
+ };
+ version = "0.8.0";
+ };
+ stringex = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15ns7j5smw04w6w7bqd5mm2qcl7w9lhwykyb974i4isgg9yc23ys";
+ type = "gem";
+ };
+ version = "2.8.5";
+ };
+ stripe = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0b2savy5h9shdzr6fkfqyrpmpx1a82gn4j47895zwc279dhwnlrh";
+ type = "gem";
+ };
+ version = "5.38.0";
+ };
+ temple = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861";
+ type = "gem";
+ };
+ version = "0.8.2";
+ };
+ test-prof = {
+ groups = ["test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1vg0zjfgibdcgkzb4c25v0f4v6v8mvpzvgcag194rwglmkkyrwkx";
+ type = "gem";
+ };
+ version = "1.0.7";
+ };
+ test-unit = {
+ dependencies = ["power_assert"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "03pn837vgza8v550ggzhcxbvb80d6qivqnhv3n39lrfnsc8xgi7m";
+ type = "gem";
+ };
+ version = "3.4.7";
+ };
+ thor = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "18yhlvmfya23cs3pvhr1qy38y41b6mhr5q9vwv5lrgk16wmf3jna";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ thread-local = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ryjgfwcsbkxph1l24x87p1yabnnbqy958s57w37iwhf3z9nid9g";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ thwait = {
+ dependencies = ["e2mmap"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0q0fqlh0668j66z0g3s5yhqs39368az2ycxyphsx4c5nib5r4kak";
+ type = "gem";
+ };
+ version = "0.2.0";
+ };
+ tilt = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0rn8z8hda4h41a64l0zhkiwz2vxw9b1nb70gl37h1dg2k874yrlv";
+ type = "gem";
+ };
+ version = "2.0.10";
+ };
+ timecop = {
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fw3nzycvd15qa7sxy9dxb4hqyizy1s8f7q3d50smbzyyvr8fvia";
+ type = "gem";
+ };
+ version = "0.9.4";
+ };
+ ttfunk = {
+ groups = ["default" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15iaxz9iak5643bq2bc0jkbjv8w2zn649lxgvh5wg48q9d4blw13";
+ type = "gem";
+ };
+ version = "1.7.0";
+ };
+ tzinfo = {
+ dependencies = ["concurrent-ruby"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "10qp5x7f9hvlc0psv9gsfbxg4a7s0485wsbq1kljkxq94in91l4z";
+ type = "gem";
+ };
+ version = "2.0.4";
+ };
+ uglifier = {
+ dependencies = ["execjs"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0wgh7bzy68vhv9v68061519dd8samcy8sazzz0w3k8kqpy3g4s5f";
+ type = "gem";
+ };
+ version = "4.2.0";
+ };
+ unicode-display_width = {
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0csjm9shhfik0ci9mgimb7hf3xgh7nx45rkd9rzgdz6vkwr8rzxn";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ uniform_notifier = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1614dqnky0f9f1znj0lih8i184vfps86md93dw0kxrg3af9gnqb4";
+ type = "gem";
+ };
+ version = "1.14.2";
+ };
+ valid_email2 = {
+ dependencies = ["activemodel" "mail"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0l4xkwvx7aj5z18h6vzp0wsfjbcrl76ixp0x95wwlrhn03qab6hs";
+ type = "gem";
+ };
+ version = "4.0.0";
+ };
+ view_component = {
+ dependencies = ["activesupport" "method_source"];
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0qygf9dfn42q8y3i2g04zqqmw1bjklmsxgdcpfk07nbnpjh391i9";
+ type = "gem";
+ };
+ version = "2.40.0";
+ };
+ view_component_storybook = {
+ dependencies = ["view_component"];
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yslfpcw58mqqaig83b2h98mf04i19ck37m270d8naxr69iv9h0n";
+ type = "gem";
+ };
+ version = "0.10.1";
+ };
+ warden = {
+ dependencies = ["rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1l7gl7vms023w4clg02pm4ky9j12la2vzsixi2xrv9imbn44ys26";
+ type = "gem";
+ };
+ version = "1.2.9";
+ };
+ web = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ path = engines/web;
+ type = "path";
+ };
+ version = "0.0.1";
+ };
+ web-console = {
+ dependencies = ["actionview" "activemodel" "bindex" "railties"];
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0d9hk929cmisix2l1w9kkh05b57ih9yvnh4wv52axxw41scnv2d9";
+ type = "gem";
+ };
+ version = "4.1.0";
+ };
+ webdrivers = {
+ dependencies = ["nokogiri" "rubyzip" "selenium-webdriver"];
+ groups = ["development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1naymcfmm9pkf0f67xd99d9f6dpv477ggyvc1c04gxifirynfydp";
+ type = "gem";
+ };
+ version = "4.6.1";
+ };
+ webmock = {
+ dependencies = ["addressable" "crack" "hashdiff"];
+ groups = ["test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1l8vh8p0g92cqcvv0ra3mblsa4nczh0rz8nbwbkc3g3yzbva85xk";
+ type = "gem";
+ };
+ version = "3.14.0";
+ };
+ webpacker = {
+ dependencies = ["activesupport" "rack-proxy" "railties" "semantic_range"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1cq6m5qwm3bmi7hkjfmbg2cs4qjq4wswlrwcfk8l1svfqbi135v3";
+ type = "gem";
+ };
+ version = "5.4.3";
+ };
+ websocket-driver = {
+ dependencies = ["websocket-extensions"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0a3bwxd9v3ghrxzjc4vxmf4xa18c6m4xqy5wb0yk5c6b9psc7052";
+ type = "gem";
+ };
+ version = "0.7.5";
+ };
+ websocket-extensions = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0hc2g9qps8lmhibl5baa91b4qx8wqw872rgwagml78ydj8qacsqw";
+ type = "gem";
+ };
+ version = "0.1.5";
+ };
+ whenever = {
+ dependencies = ["chronic"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0im2x9rgr752hb9f1nnfj486k96bfiqj0xsv2bmzaq1rqhbi9dyr";
+ type = "gem";
+ };
+ version = "1.0.0";
+ };
+ wicked_pdf = {
+ dependencies = ["activesupport"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0i7ifpb5ynvg7m6i1bivmvnaz29vjfwf6f4qj9gs7nq4yyxflqr6";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ wkhtmltopdf-binary = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ksmryizimmw60k5siciv3xfxx9q797bh5a1rga7hqban98rv0c2";
+ type = "gem";
+ };
+ version = "0.12.6.5";
+ };
+ xml-simple = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1flpmghcbil6qbl3f6w67kpjrnjbw86x7h6g5n4m5ff0cg4sylrv";
+ type = "gem";
+ };
+ version = "1.1.8";
+ };
+ xpath = {
+ dependencies = ["nokogiri"];
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
+ type = "gem";
+ };
+ version = "3.2.0";
+ };
+ zeitwerk = {
+ groups = ["default" "development" "test"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1746czsjarixq0x05f7p3hpzi38ldg6wxnxxw74kbjzh1sdjgmpl";
+ type = "gem";
+ };
+ version = "2.4.2";
+ };
+}
\ No newline at end of file
diff --git a/flakes/paste/flake.nix b/flakes/paste/flake.nix
index 08d0681..97e31c8 100644
--- a/flakes/paste/flake.nix
+++ b/flakes/paste/flake.nix
@@ -45,6 +45,8 @@
let
cfg = config.services.paste;
in {
+ # Necessary for situations where flake gets included multiple times
+ key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
options = {
services.paste = {
enable = lib.mkOption {
diff --git a/flakes/paste/paste/paste.py b/flakes/paste/paste/paste.py
index 86666b8..3172de5 100644
--- a/flakes/paste/paste/paste.py
+++ b/flakes/paste/paste/paste.py
@@ -10,9 +10,32 @@ import mimetypes
magic = magic.Magic(mime=True)
+mit_license = """
+Copyright (c) 2022 Immae
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+"""
+
config = {
"directory": os.environ["PASTE_DIRECTORY"],
"self_paste_id": "abcd123",
+ "license_paste_id": "license",
"max_content_length": 16 * 1000 * 1000
}
@@ -33,6 +56,8 @@ def read_paste(paste_id):
if mime.startswith("text/x-script."):
mime="text/plain"
return (content, mime)
+ elif paste_id == config["license_paste_id"]:
+ return (mit_license, "text/plain")
else:
abort(404)
@@ -69,9 +94,11 @@ $ curl -X POST --data-binary @{self} {host}
-> GET {paste}/download
force download of file
-Get the source
+Get the source
+Software licensed under the terms of the MIT license
'''.format(host=url_for('post_paste', _external=True, _scheme="https"),
paste=url_for('get_paste', _external=True, _scheme="https", paste_id=config["self_paste_id"]),
+ license=url_for('get_paste', _external=True, _scheme="https", paste_id=config["license_paste_id"]),
self=os.path.basename(__file__)
), mimetype="text/html")
diff --git a/flakes/peertube/flake.lock b/flakes/peertube/flake.lock
index 6187115..eeb516a 100644
--- a/flakes/peertube/flake.lock
+++ b/flakes/peertube/flake.lock
@@ -17,19 +17,14 @@
},
"myuids": {
"locked": {
- "dir": "flakes/myuids",
- "lastModified": 1628207001,
- "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=",
- "ref": "master",
- "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
- "revCount": 865,
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
},
"original": {
- "dir": "flakes/myuids",
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
+ "path": "../myuids",
+ "type": "path"
}
},
"nixpkgs": {
diff --git a/flakes/peertube/flake.nix b/flakes/peertube/flake.nix
index 2f9c8c1..e8153eb 100644
--- a/flakes/peertube/flake.nix
+++ b/flakes/peertube/flake.nix
@@ -1,9 +1,7 @@
{
description = "A free software to take back control of your videos";
inputs.myuids = {
- url = "https://git.immae.eu/perso/Immae/Config/Nix.git";
- type = "git";
- dir = "flakes/myuids";
+ url = "path:../myuids";
};
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.nixpkgs.url = "github:NixOS/nixpkgs";
@@ -166,10 +164,10 @@
nixosModule = { lib, pkgs, config, ... }:
let
name = "peertube";
- cfg = config.services.peertube;
+ cfg = config.immaeServices.peertube;
in
{
- options.services.peertube = {
+ options.immaeServices.peertube = {
enable = lib.mkEnableOption "Enable Peertube’s service";
user = lib.mkOption {
type = lib.types.str;
@@ -239,6 +237,8 @@
environment.NODE_CONFIG_DIR = "${cfg.dataDir}/config";
environment.NODE_ENV = "production";
+ environment.NPM_CONFIG_LOGS_DIR = "${cfg.dataDir}/npm_logs";
+ environment.NPM_CONFIG_CACHE = "${cfg.dataDir}/npm_cache";
environment.HOME = cfg.package;
path = [ pkgs.nodejs pkgs.yarn pkgs.bashInteractive pkgs.ffmpeg pkgs.openssl ];
diff --git a/flakes/private/buildbot/buildslist/bower.nix b/flakes/private/buildbot/buildslist/bower.nix
new file mode 100644
index 0000000..8b26e0a
--- /dev/null
+++ b/flakes/private/buildbot/buildslist/bower.nix
@@ -0,0 +1,9 @@
+# Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix)
+{ fetchbower, buildEnv }:
+buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
+ (fetchbower "jquery" "2.1.1" "2.1.1" "1qir36vi0bppjr9ckm6303vk1f1dkvq5wandpihb7dxl76s832bd")
+ (fetchbower "angular" "1.5.11" "~1.5.3" "1sw31v3dhmxwgrmncw2f9yl07i9px62ssbj0739zsgi59cq2khl7")
+ (fetchbower "lodash" "2.4.2" "~2.4.1" "0bhqarlvhlrxfvcgnxgsrsjgi6az4c117ffxyfi7gjwr9cvrzz4q")
+ (fetchbower "angular-mocks" "1.5.11" "~1.5.3" "0yv0396fw51i6d9lwiwf241rmc28rnxgg2aa9vsc7dnm4qjkn6gx")
+ (fetchbower "buildbot-data" "2.1.0" "~2.1.0" "0hkmm1byy7d712898lhkxf7i0wshmd1f8cr98iz67679nm6abimk")
+]; }
diff --git a/flakes/private/buildbot/buildslist/default.nix b/flakes/private/buildbot/buildslist/default.nix
new file mode 100644
index 0000000..7f72503
--- /dev/null
+++ b/flakes/private/buildbot/buildslist/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, runCommand, writeScriptBin, buildBowerComponents, pythonPackages, fetchurl, jq, yarn, nodejs-10_x, yarn2nix-moretea, buildslist_src }:
+let
+ yarn2nix-moretea' = yarn2nix-moretea.override({
+ yarn = yarn.override({ nodejs = nodejs-10_x; });
+ nodejs = nodejs-10_x;
+ });
+ packagejson = runCommand "package.json" { buildInputs = [ jq ]; } ''
+ cat ${buildslist_src}/package.json | jq -r '.version = "${pythonPackages.buildbot-pkg.version}"|.license= "MIT"' > $out
+ '';
+ nodeHeaders = fetchurl {
+ url = "https://nodejs.org/download/release/v${nodejs-10_x.version}/node-v${nodejs-10_x.version}-headers.tar.gz";
+ sha256 = "sha256-LEk6BOW/vwdUXGAialDOoyFIkZ81k6ADy6MhMfRiE5Y=";
+ };
+ buildslist_yarn = yarn2nix-moretea'.mkYarnModules rec {
+ name = "buildslist-yarn-modules";
+ pname = name;
+ inherit (pythonPackages.buildbot-pkg) version;
+ packageJSON = packagejson;
+ yarnLock = "${buildslist_src}/yarn.lock";
+ yarnNix = ./yarn-packages.nix;
+ pkgConfig = {
+ node-sass = {
+ buildInputs = with yarn2nix-moretea'.pkgs; [ libsass python2 ];
+ postInstall =
+ ''
+ node scripts/build.js --tarball=${nodeHeaders}
+ '';
+ };
+ };
+ };
+ buildslist_bower = buildBowerComponents {
+ name = "buildslist";
+ generated = ./bower.nix;
+ src = "${buildslist_src}/guanlecoja/";
+ };
+ # the buildbot-pkg calls yarn and screws up everything...
+ fakeYarn = writeScriptBin "yarn" ''
+ #!${stdenv.shell}
+ if [ "$1" = "--version" ]; then
+ echo "1.17"
+ fi
+ '';
+in
+pythonPackages.buildPythonPackage rec {
+ pname = "buildbot-buildslist";
+ inherit (pythonPackages.buildbot-pkg) version;
+
+ preConfigure = ''
+ export HOME=$PWD
+ ln -s ${buildslist_yarn}/node_modules .
+ cp -a ${buildslist_bower}/bower_components ./libs
+ PATH=${buildslist_yarn}/node_modules/.bin:$PATH
+ chmod -R u+w libs
+ '';
+ propagatedBuildInputs = with pythonPackages; [
+ (klein.overridePythonAttrs(old: { checkPhase = ""; }))
+ buildbot-pkg
+ ];
+ nativeBuildInputs = [ fakeYarn nodejs-10_x ];
+ buildInputs = [ buildslist_yarn buildslist_bower ];
+
+ doCheck = false;
+ src = buildslist_src;
+}
diff --git a/flakes/private/buildbot/buildslist/yarn-packages.nix b/flakes/private/buildbot/buildslist/yarn-packages.nix
new file mode 100644
index 0000000..2ade970
--- /dev/null
+++ b/flakes/private/buildbot/buildslist/yarn-packages.nix
@@ -0,0 +1,9293 @@
+{fetchurl, linkFarm}: rec {
+ offline_cache = linkFarm "offline" packages;
+ packages = [
+
+ {
+ name = "_types_babel_types___babel_types_7.0.7.tgz";
+ path = fetchurl {
+ name = "_types_babel_types___babel_types_7.0.7.tgz";
+ url = "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz";
+ sha1 = "667eb1640e8039436028055737d2b9986ee336e3";
+ };
+ }
+
+ {
+ name = "_types_babylon___babylon_6.16.5.tgz";
+ path = fetchurl {
+ name = "_types_babylon___babylon_6.16.5.tgz";
+ url = "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz";
+ sha1 = "1c5641db69eb8cdf378edd25b4be7754beeb48b4";
+ };
+ }
+
+ {
+ name = "_types_color_name___color_name_1.1.1.tgz";
+ path = fetchurl {
+ name = "_types_color_name___color_name_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz";
+ sha1 = "1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0";
+ };
+ }
+
+ {
+ name = "Base64___Base64_0.2.1.tgz";
+ path = fetchurl {
+ name = "Base64___Base64_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz";
+ sha1 = "ba3a4230708e186705065e66babdd4c35cf60028";
+ };
+ }
+
+ {
+ name = "JSONStream___JSONStream_0.6.4.tgz";
+ path = fetchurl {
+ name = "JSONStream___JSONStream_0.6.4.tgz";
+ url = "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.6.4.tgz";
+ sha1 = "4b2c8063f8f512787b2375f7ee9db69208fa2dcb";
+ };
+ }
+
+ {
+ name = "JSONStream___JSONStream_0.7.4.tgz";
+ path = fetchurl {
+ name = "JSONStream___JSONStream_0.7.4.tgz";
+ url = "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.7.4.tgz";
+ sha1 = "734290e41511eea7c2cfe151fbf9a563a97b9786";
+ };
+ }
+
+ {
+ name = "abbrev___abbrev_1.1.1.tgz";
+ path = fetchurl {
+ name = "abbrev___abbrev_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz";
+ sha1 = "f8f2c887ad10bf67f634f005b6987fed3179aac8";
+ };
+ }
+
+ {
+ name = "abbrev___abbrev_1.0.9.tgz";
+ path = fetchurl {
+ name = "abbrev___abbrev_1.0.9.tgz";
+ url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz";
+ sha1 = "91b4792588a7738c25f35dd6f63752a2f8776135";
+ };
+ }
+
+ {
+ name = "accepts___accepts_1.3.3.tgz";
+ path = fetchurl {
+ name = "accepts___accepts_1.3.3.tgz";
+ url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz";
+ sha1 = "c3ca7434938648c3e0d9c1e328dd68b622c284ca";
+ };
+ }
+
+ {
+ name = "acorn_globals___acorn_globals_3.1.0.tgz";
+ path = fetchurl {
+ name = "acorn_globals___acorn_globals_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz";
+ sha1 = "fd8270f71fbb4996b004fa880ee5d46573a731bf";
+ };
+ }
+
+ {
+ name = "acorn___acorn_2.7.0.tgz";
+ path = fetchurl {
+ name = "acorn___acorn_2.7.0.tgz";
+ url = "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz";
+ sha1 = "ab6e7d9d886aaca8b085bc3312b79a198433f0e7";
+ };
+ }
+
+ {
+ name = "acorn___acorn_3.3.0.tgz";
+ path = fetchurl {
+ name = "acorn___acorn_3.3.0.tgz";
+ url = "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz";
+ sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
+ };
+ }
+
+ {
+ name = "acorn___acorn_4.0.13.tgz";
+ path = fetchurl {
+ name = "acorn___acorn_4.0.13.tgz";
+ url = "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz";
+ sha1 = "105495ae5361d697bd195c825192e1ad7f253787";
+ };
+ }
+
+ {
+ name = "acorn___acorn_2.6.4.tgz";
+ path = fetchurl {
+ name = "acorn___acorn_2.6.4.tgz";
+ url = "https://registry.yarnpkg.com/acorn/-/acorn-2.6.4.tgz";
+ sha1 = "eb1f45b4a43fa31d03701a5ec46f3b52673e90ee";
+ };
+ }
+
+ {
+ name = "after___after_0.8.2.tgz";
+ path = fetchurl {
+ name = "after___after_0.8.2.tgz";
+ url = "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz";
+ sha1 = "fedb394f9f0e02aa9768e702bda23b505fae7e1f";
+ };
+ }
+
+ {
+ name = "ajv___ajv_6.12.0.tgz";
+ path = fetchurl {
+ name = "ajv___ajv_6.12.0.tgz";
+ url = "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz";
+ sha1 = "06d60b96d87b8454a5adaba86e7854da629db4b7";
+ };
+ }
+
+ {
+ name = "align_text___align_text_0.1.4.tgz";
+ path = fetchurl {
+ name = "align_text___align_text_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz";
+ sha1 = "0cd90a561093f35d0a99256c22b7069433fad117";
+ };
+ }
+
+ {
+ name = "alter___alter_0.2.0.tgz";
+ path = fetchurl {
+ name = "alter___alter_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/alter/-/alter-0.2.0.tgz";
+ sha1 = "c7588808617572034aae62480af26b1d4d1cb3cd";
+ };
+ }
+
+ {
+ name = "amdefine___amdefine_1.0.1.tgz";
+ path = fetchurl {
+ name = "amdefine___amdefine_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz";
+ sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
+ };
+ }
+
+ {
+ name = "ansi_gray___ansi_gray_0.1.1.tgz";
+ path = fetchurl {
+ name = "ansi_gray___ansi_gray_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz";
+ sha1 = "2962cf54ec9792c48510a3deb524436861ef7251";
+ };
+ }
+
+ {
+ name = "ansi_regex___ansi_regex_0.2.1.tgz";
+ path = fetchurl {
+ name = "ansi_regex___ansi_regex_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz";
+ sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9";
+ };
+ }
+
+ {
+ name = "ansi_regex___ansi_regex_1.1.1.tgz";
+ path = fetchurl {
+ name = "ansi_regex___ansi_regex_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-1.1.1.tgz";
+ sha1 = "41c847194646375e6a1a5d10c3ca054ef9fc980d";
+ };
+ }
+
+ {
+ name = "ansi_regex___ansi_regex_2.1.1.tgz";
+ path = fetchurl {
+ name = "ansi_regex___ansi_regex_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
+ sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+ };
+ }
+
+ {
+ name = "ansi_regex___ansi_regex_3.0.0.tgz";
+ path = fetchurl {
+ name = "ansi_regex___ansi_regex_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
+ sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
+ };
+ }
+
+ {
+ name = "ansi_styles___ansi_styles_1.1.0.tgz";
+ path = fetchurl {
+ name = "ansi_styles___ansi_styles_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz";
+ sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de";
+ };
+ }
+
+ {
+ name = "ansi_styles___ansi_styles_2.2.1.tgz";
+ path = fetchurl {
+ name = "ansi_styles___ansi_styles_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz";
+ sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
+ };
+ }
+
+ {
+ name = "ansi_styles___ansi_styles_4.2.1.tgz";
+ path = fetchurl {
+ name = "ansi_styles___ansi_styles_4.2.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz";
+ sha1 = "90ae75c424d008d2624c5bf29ead3177ebfcf359";
+ };
+ }
+
+ {
+ name = "ansi_styles___ansi_styles_1.0.0.tgz";
+ path = fetchurl {
+ name = "ansi_styles___ansi_styles_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz";
+ sha1 = "cb102df1c56f5123eab8b67cd7b98027a0279178";
+ };
+ }
+
+ {
+ name = "ansi_wrap___ansi_wrap_0.1.0.tgz";
+ path = fetchurl {
+ name = "ansi_wrap___ansi_wrap_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz";
+ sha1 = "a82250ddb0015e9a27ca82e82ea603bbfa45efaf";
+ };
+ }
+
+ {
+ name = "ansicolors___ansicolors_0.2.1.tgz";
+ path = fetchurl {
+ name = "ansicolors___ansicolors_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz";
+ sha1 = "be089599097b74a5c9c4a84a0cdbcdb62bd87aef";
+ };
+ }
+
+ {
+ name = "anymatch___anymatch_1.3.2.tgz";
+ path = fetchurl {
+ name = "anymatch___anymatch_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz";
+ sha1 = "553dcb8f91e3c889845dfdba34c77721b90b9d7a";
+ };
+ }
+
+ {
+ name = "aproba___aproba_1.2.0.tgz";
+ path = fetchurl {
+ name = "aproba___aproba_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
+ sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
+ };
+ }
+
+ {
+ name = "archy___archy_1.0.0.tgz";
+ path = fetchurl {
+ name = "archy___archy_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz";
+ sha1 = "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40";
+ };
+ }
+
+ {
+ name = "archy___archy_0.0.2.tgz";
+ path = fetchurl {
+ name = "archy___archy_0.0.2.tgz";
+ url = "https://registry.yarnpkg.com/archy/-/archy-0.0.2.tgz";
+ sha1 = "910f43bf66141fc335564597abc189df44b3d35e";
+ };
+ }
+
+ {
+ name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
+ path = fetchurl {
+ name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
+ url = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
+ sha1 = "4b35c2944f062a8bfcda66410760350fe9ddfc21";
+ };
+ }
+
+ {
+ name = "argparse___argparse_1.0.10.tgz";
+ path = fetchurl {
+ name = "argparse___argparse_1.0.10.tgz";
+ url = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz";
+ sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911";
+ };
+ }
+
+ {
+ name = "argparse___argparse_0.1.16.tgz";
+ path = fetchurl {
+ name = "argparse___argparse_0.1.16.tgz";
+ url = "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz";
+ sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c";
+ };
+ }
+
+ {
+ name = "arr_diff___arr_diff_2.0.0.tgz";
+ path = fetchurl {
+ name = "arr_diff___arr_diff_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz";
+ sha1 = "8f3b827f955a8bd669697e4a4256ac3ceae356cf";
+ };
+ }
+
+ {
+ name = "arr_diff___arr_diff_4.0.0.tgz";
+ path = fetchurl {
+ name = "arr_diff___arr_diff_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz";
+ sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
+ };
+ }
+
+ {
+ name = "arr_flatten___arr_flatten_1.1.0.tgz";
+ path = fetchurl {
+ name = "arr_flatten___arr_flatten_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz";
+ sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1";
+ };
+ }
+
+ {
+ name = "arr_union___arr_union_3.1.0.tgz";
+ path = fetchurl {
+ name = "arr_union___arr_union_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz";
+ sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
+ };
+ }
+
+ {
+ name = "array_differ___array_differ_1.0.0.tgz";
+ path = fetchurl {
+ name = "array_differ___array_differ_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz";
+ sha1 = "eff52e3758249d33be402b8bb8e564bb2b5d4031";
+ };
+ }
+
+ {
+ name = "array_each___array_each_1.0.1.tgz";
+ path = fetchurl {
+ name = "array_each___array_each_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz";
+ sha1 = "a794af0c05ab1752846ee753a1f211a05ba0c44f";
+ };
+ }
+
+ {
+ name = "array_filter___array_filter_0.0.1.tgz";
+ path = fetchurl {
+ name = "array_filter___array_filter_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz";
+ sha1 = "7da8cf2e26628ed732803581fd21f67cacd2eeec";
+ };
+ }
+
+ {
+ name = "array_find_index___array_find_index_1.0.2.tgz";
+ path = fetchurl {
+ name = "array_find_index___array_find_index_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz";
+ sha1 = "df010aa1287e164bbda6f9723b0a96a1ec4187a1";
+ };
+ }
+
+ {
+ name = "array_map___array_map_0.0.0.tgz";
+ path = fetchurl {
+ name = "array_map___array_map_0.0.0.tgz";
+ url = "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz";
+ sha1 = "88a2bab73d1cf7bcd5c1b118a003f66f665fa662";
+ };
+ }
+
+ {
+ name = "array_reduce___array_reduce_0.0.0.tgz";
+ path = fetchurl {
+ name = "array_reduce___array_reduce_0.0.0.tgz";
+ url = "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz";
+ sha1 = "173899d3ffd1c7d9383e4479525dbe278cab5f2b";
+ };
+ }
+
+ {
+ name = "array_slice___array_slice_0.2.3.tgz";
+ path = fetchurl {
+ name = "array_slice___array_slice_0.2.3.tgz";
+ url = "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz";
+ sha1 = "dd3cfb80ed7973a75117cdac69b0b99ec86186f5";
+ };
+ }
+
+ {
+ name = "array_slice___array_slice_1.1.0.tgz";
+ path = fetchurl {
+ name = "array_slice___array_slice_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz";
+ sha1 = "e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4";
+ };
+ }
+
+ {
+ name = "array_uniq___array_uniq_1.0.3.tgz";
+ path = fetchurl {
+ name = "array_uniq___array_uniq_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz";
+ sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
+ };
+ }
+
+ {
+ name = "array_unique___array_unique_0.2.1.tgz";
+ path = fetchurl {
+ name = "array_unique___array_unique_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz";
+ sha1 = "a1d97ccafcbc2625cc70fadceb36a50c58b01a53";
+ };
+ }
+
+ {
+ name = "array_unique___array_unique_0.3.2.tgz";
+ path = fetchurl {
+ name = "array_unique___array_unique_0.3.2.tgz";
+ url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz";
+ sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
+ };
+ }
+
+ {
+ name = "arraybuffer.slice___arraybuffer.slice_0.0.6.tgz";
+ path = fetchurl {
+ name = "arraybuffer.slice___arraybuffer.slice_0.0.6.tgz";
+ url = "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz";
+ sha1 = "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca";
+ };
+ }
+
+ {
+ name = "asap___asap_2.0.6.tgz";
+ path = fetchurl {
+ name = "asap___asap_2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz";
+ sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
+ };
+ }
+
+ {
+ name = "asn1___asn1_0.1.11.tgz";
+ path = fetchurl {
+ name = "asn1___asn1_0.1.11.tgz";
+ url = "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz";
+ sha1 = "559be18376d08a4ec4dbe80877d27818639b2df7";
+ };
+ }
+
+ {
+ name = "asn1___asn1_0.2.4.tgz";
+ path = fetchurl {
+ name = "asn1___asn1_0.2.4.tgz";
+ url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
+ sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
+ };
+ }
+
+ {
+ name = "assert_plus___assert_plus_1.0.0.tgz";
+ path = fetchurl {
+ name = "assert_plus___assert_plus_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
+ sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+ };
+ }
+
+ {
+ name = "assert_plus___assert_plus_0.1.5.tgz";
+ path = fetchurl {
+ name = "assert_plus___assert_plus_0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz";
+ sha1 = "ee74009413002d84cec7219c6ac811812e723160";
+ };
+ }
+
+ {
+ name = "assert___assert_1.1.2.tgz";
+ path = fetchurl {
+ name = "assert___assert_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/assert/-/assert-1.1.2.tgz";
+ sha1 = "adaa04c46bb58c6dd1f294da3eb26e6228eb6e44";
+ };
+ }
+
+ {
+ name = "assign_symbols___assign_symbols_1.0.0.tgz";
+ path = fetchurl {
+ name = "assign_symbols___assign_symbols_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz";
+ sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
+ };
+ }
+
+ {
+ name = "astw___astw_2.2.0.tgz";
+ path = fetchurl {
+ name = "astw___astw_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz";
+ sha1 = "7bd41784d32493987aeb239b6b4e1c57a873b917";
+ };
+ }
+
+ {
+ name = "async_each___async_each_1.0.3.tgz";
+ path = fetchurl {
+ name = "async_each___async_each_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz";
+ sha1 = "b727dbf87d7651602f06f4d4ac387f47d91b0cbf";
+ };
+ }
+
+ {
+ name = "async_foreach___async_foreach_0.1.3.tgz";
+ path = fetchurl {
+ name = "async_foreach___async_foreach_0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz";
+ sha1 = "36121f845c0578172de419a97dbeb1d16ec34542";
+ };
+ }
+
+ {
+ name = "async___async_1.5.2.tgz";
+ path = fetchurl {
+ name = "async___async_1.5.2.tgz";
+ url = "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz";
+ sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
+ };
+ }
+
+ {
+ name = "async___async_0.2.10.tgz";
+ path = fetchurl {
+ name = "async___async_0.2.10.tgz";
+ url = "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz";
+ sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
+ };
+ }
+
+ {
+ name = "async___async_0.8.0.tgz";
+ path = fetchurl {
+ name = "async___async_0.8.0.tgz";
+ url = "https://registry.yarnpkg.com/async/-/async-0.8.0.tgz";
+ sha1 = "ee65ec77298c2ff1456bc4418a052d0f06435112";
+ };
+ }
+
+ {
+ name = "async___async_0.9.2.tgz";
+ path = fetchurl {
+ name = "async___async_0.9.2.tgz";
+ url = "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz";
+ sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d";
+ };
+ }
+
+ {
+ name = "asynckit___asynckit_0.4.0.tgz";
+ path = fetchurl {
+ name = "asynckit___asynckit_0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
+ sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+ };
+ }
+
+ {
+ name = "atob___atob_2.1.2.tgz";
+ path = fetchurl {
+ name = "atob___atob_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz";
+ sha1 = "6d9517eb9e030d2436666651e86bd9f6f13533c9";
+ };
+ }
+
+ {
+ name = "aws_sign2___aws_sign2_0.5.0.tgz";
+ path = fetchurl {
+ name = "aws_sign2___aws_sign2_0.5.0.tgz";
+ url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz";
+ sha1 = "c57103f7a17fc037f02d7c2e64b602ea223f7d63";
+ };
+ }
+
+ {
+ name = "aws_sign2___aws_sign2_0.7.0.tgz";
+ path = fetchurl {
+ name = "aws_sign2___aws_sign2_0.7.0.tgz";
+ url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
+ sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+ };
+ }
+
+ {
+ name = "aws_sign___aws_sign_0.3.0.tgz";
+ path = fetchurl {
+ name = "aws_sign___aws_sign_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/aws-sign/-/aws-sign-0.3.0.tgz";
+ sha1 = "3d81ca69b474b1e16518728b51c24ff0bbedc6e9";
+ };
+ }
+
+ {
+ name = "aws4___aws4_1.9.1.tgz";
+ path = fetchurl {
+ name = "aws4___aws4_1.9.1.tgz";
+ url = "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz";
+ sha1 = "7e33d8f7d449b3f673cd72deb9abdc552dbe528e";
+ };
+ }
+
+ {
+ name = "babel_runtime___babel_runtime_6.26.0.tgz";
+ path = fetchurl {
+ name = "babel_runtime___babel_runtime_6.26.0.tgz";
+ url = "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz";
+ sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
+ };
+ }
+
+ {
+ name = "babel_types___babel_types_6.26.0.tgz";
+ path = fetchurl {
+ name = "babel_types___babel_types_6.26.0.tgz";
+ url = "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz";
+ sha1 = "a3b073f94ab49eb6fa55cd65227a334380632497";
+ };
+ }
+
+ {
+ name = "babylon___babylon_6.18.0.tgz";
+ path = fetchurl {
+ name = "babylon___babylon_6.18.0.tgz";
+ url = "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz";
+ sha1 = "af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3";
+ };
+ }
+
+ {
+ name = "backo2___backo2_1.0.2.tgz";
+ path = fetchurl {
+ name = "backo2___backo2_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz";
+ sha1 = "31ab1ac8b129363463e35b3ebb69f4dfcfba7947";
+ };
+ }
+
+ {
+ name = "balanced_match___balanced_match_1.0.0.tgz";
+ path = fetchurl {
+ name = "balanced_match___balanced_match_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
+ sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+ };
+ }
+
+ {
+ name = "base64_arraybuffer___base64_arraybuffer_0.1.5.tgz";
+ path = fetchurl {
+ name = "base64_arraybuffer___base64_arraybuffer_0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz";
+ sha1 = "73926771923b5a19747ad666aa5cd4bf9c6e9ce8";
+ };
+ }
+
+ {
+ name = "base64_js___base64_js_0.0.8.tgz";
+ path = fetchurl {
+ name = "base64_js___base64_js_0.0.8.tgz";
+ url = "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz";
+ sha1 = "1101e9544f4a76b1bc3b26d452ca96d7a35e7978";
+ };
+ }
+
+ {
+ name = "base64id___base64id_1.0.0.tgz";
+ path = fetchurl {
+ name = "base64id___base64id_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz";
+ sha1 = "47688cb99bb6804f0e06d3e763b1c32e57d8e6b6";
+ };
+ }
+
+ {
+ name = "base___base_0.11.2.tgz";
+ path = fetchurl {
+ name = "base___base_0.11.2.tgz";
+ url = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz";
+ sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f";
+ };
+ }
+
+ {
+ name = "batch___batch_0.5.3.tgz";
+ path = fetchurl {
+ name = "batch___batch_0.5.3.tgz";
+ url = "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz";
+ sha1 = "3f3414f380321743bfc1042f9a83ff1d5824d464";
+ };
+ }
+
+ {
+ name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
+ path = fetchurl {
+ name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+ sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+ };
+ }
+
+ {
+ name = "beeper___beeper_1.1.1.tgz";
+ path = fetchurl {
+ name = "beeper___beeper_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz";
+ sha1 = "e6d5ea8c5dad001304a70b22638447f69cb2f809";
+ };
+ }
+
+ {
+ name = "better_assert___better_assert_1.0.2.tgz";
+ path = fetchurl {
+ name = "better_assert___better_assert_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz";
+ sha1 = "40866b9e1b9e0b55b481894311e68faffaebc522";
+ };
+ }
+
+ {
+ name = "binary_extensions___binary_extensions_1.13.1.tgz";
+ path = fetchurl {
+ name = "binary_extensions___binary_extensions_1.13.1.tgz";
+ url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz";
+ sha1 = "598afe54755b2868a5330d2aff9d4ebb53209b65";
+ };
+ }
+
+ {
+ name = "binary___binary_0.3.0.tgz";
+ path = fetchurl {
+ name = "binary___binary_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz";
+ sha1 = "9f60553bc5ce8c3386f3b553cff47462adecaa79";
+ };
+ }
+
+ {
+ name = "binaryextensions___binaryextensions_1.0.1.tgz";
+ path = fetchurl {
+ name = "binaryextensions___binaryextensions_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-1.0.1.tgz";
+ sha1 = "1e637488b35b58bda5f4774bf96a5212a8c90755";
+ };
+ }
+
+ {
+ name = "bindings___bindings_1.5.0.tgz";
+ path = fetchurl {
+ name = "bindings___bindings_1.5.0.tgz";
+ url = "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz";
+ sha1 = "10353c9e945334bc0511a6d90b38fbc7c9c504df";
+ };
+ }
+
+ {
+ name = "bl___bl_0.9.5.tgz";
+ path = fetchurl {
+ name = "bl___bl_0.9.5.tgz";
+ url = "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz";
+ sha1 = "c06b797af085ea00bc527afc8efcf11de2232054";
+ };
+ }
+
+ {
+ name = "blob___blob_0.0.4.tgz";
+ path = fetchurl {
+ name = "blob___blob_0.0.4.tgz";
+ url = "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz";
+ sha1 = "bcf13052ca54463f30f9fc7e95b9a47630a94921";
+ };
+ }
+
+ {
+ name = "block_stream___block_stream_0.0.9.tgz";
+ path = fetchurl {
+ name = "block_stream___block_stream_0.0.9.tgz";
+ url = "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz";
+ sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
+ };
+ }
+
+ {
+ name = "bluebird___bluebird_2.11.0.tgz";
+ path = fetchurl {
+ name = "bluebird___bluebird_2.11.0.tgz";
+ url = "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz";
+ sha1 = "534b9033c022c9579c56ba3b3e5a5caafbb650e1";
+ };
+ }
+
+ {
+ name = "body_parser___body_parser_1.19.0.tgz";
+ path = fetchurl {
+ name = "body_parser___body_parser_1.19.0.tgz";
+ url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz";
+ sha1 = "96b2709e57c9c4e09a6fd66a8fd979844f69f08a";
+ };
+ }
+
+ {
+ name = "body_parser___body_parser_1.14.2.tgz";
+ path = fetchurl {
+ name = "body_parser___body_parser_1.14.2.tgz";
+ url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.14.2.tgz";
+ sha1 = "1015cb1fe2c443858259581db53332f8d0cf50f9";
+ };
+ }
+
+ {
+ name = "boom___boom_0.4.2.tgz";
+ path = fetchurl {
+ name = "boom___boom_0.4.2.tgz";
+ url = "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz";
+ sha1 = "7a636e9ded4efcefb19cef4947a3c67dfaee911b";
+ };
+ }
+
+ {
+ name = "bower_config___bower_config_0.5.3.tgz";
+ path = fetchurl {
+ name = "bower_config___bower_config_0.5.3.tgz";
+ url = "https://registry.yarnpkg.com/bower-config/-/bower-config-0.5.3.tgz";
+ sha1 = "98fc5b41a87870ef9cbb9297635cf81f5505fdb1";
+ };
+ }
+
+ {
+ name = "bower_endpoint_parser___bower_endpoint_parser_0.2.2.tgz";
+ path = fetchurl {
+ name = "bower_endpoint_parser___bower_endpoint_parser_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz";
+ sha1 = "00b565adbfab6f2d35addde977e97962acbcb3f6";
+ };
+ }
+
+ {
+ name = "bower_json___bower_json_0.4.0.tgz";
+ path = fetchurl {
+ name = "bower_json___bower_json_0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/bower-json/-/bower-json-0.4.0.tgz";
+ sha1 = "a99c3ccf416ef0590ed0ded252c760f1c6d93766";
+ };
+ }
+
+ {
+ name = "bower_logger___bower_logger_0.2.2.tgz";
+ path = fetchurl {
+ name = "bower_logger___bower_logger_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/bower-logger/-/bower-logger-0.2.2.tgz";
+ sha1 = "39be07e979b2fc8e03a94634205ed9422373d381";
+ };
+ }
+
+ {
+ name = "bower_registry_client___bower_registry_client_0.2.4.tgz";
+ path = fetchurl {
+ name = "bower_registry_client___bower_registry_client_0.2.4.tgz";
+ url = "https://registry.yarnpkg.com/bower-registry-client/-/bower-registry-client-0.2.4.tgz";
+ sha1 = "269fc7e898b627fb939d1144a593254d7fbbeebc";
+ };
+ }
+
+ {
+ name = "bower___bower_1.3.8.tgz";
+ path = fetchurl {
+ name = "bower___bower_1.3.8.tgz";
+ url = "https://registry.yarnpkg.com/bower/-/bower-1.3.8.tgz";
+ sha1 = "afa3338a8a88a6e084c38112ea4a15998cbee3e6";
+ };
+ }
+
+ {
+ name = "brace_expansion___brace_expansion_1.1.11.tgz";
+ path = fetchurl {
+ name = "brace_expansion___brace_expansion_1.1.11.tgz";
+ url = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz";
+ sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd";
+ };
+ }
+
+ {
+ name = "braces___braces_0.1.5.tgz";
+ path = fetchurl {
+ name = "braces___braces_0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz";
+ sha1 = "c085711085291d8b75fdd74eab0f8597280711e6";
+ };
+ }
+
+ {
+ name = "braces___braces_1.8.5.tgz";
+ path = fetchurl {
+ name = "braces___braces_1.8.5.tgz";
+ url = "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz";
+ sha1 = "ba77962e12dff969d6b76711e914b737857bf6a7";
+ };
+ }
+
+ {
+ name = "braces___braces_2.3.2.tgz";
+ path = fetchurl {
+ name = "braces___braces_2.3.2.tgz";
+ url = "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz";
+ sha1 = "5979fd3f14cd531565e5fa2df1abfff1dfaee729";
+ };
+ }
+
+ {
+ name = "browser_pack___browser_pack_2.0.1.tgz";
+ path = fetchurl {
+ name = "browser_pack___browser_pack_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/browser-pack/-/browser-pack-2.0.1.tgz";
+ sha1 = "5d1c527f56c582677411c4db2a128648ff6bf150";
+ };
+ }
+
+ {
+ name = "browser_resolve___browser_resolve_1.2.4.tgz";
+ path = fetchurl {
+ name = "browser_resolve___browser_resolve_1.2.4.tgz";
+ url = "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.2.4.tgz";
+ sha1 = "59ae7820a82955ecd32f5fb7c468ac21c4723806";
+ };
+ }
+
+ {
+ name = "browserify_shim___browserify_shim_2.0.10.tgz";
+ path = fetchurl {
+ name = "browserify_shim___browserify_shim_2.0.10.tgz";
+ url = "https://registry.yarnpkg.com/browserify-shim/-/browserify-shim-2.0.10.tgz";
+ sha1 = "74a0ed5b9b784a5a287906513a896d31f54a84b8";
+ };
+ }
+
+ {
+ name = "browserify_zlib___browserify_zlib_0.1.4.tgz";
+ path = fetchurl {
+ name = "browserify_zlib___browserify_zlib_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz";
+ sha1 = "bb35f8a519f600e0fa6b8485241c979d0141fb2d";
+ };
+ }
+
+ {
+ name = "browserify___browserify_3.46.1.tgz";
+ path = fetchurl {
+ name = "browserify___browserify_3.46.1.tgz";
+ url = "https://registry.yarnpkg.com/browserify/-/browserify-3.46.1.tgz";
+ sha1 = "2c2e4a7f2f408178e78c223b5b57b37c2185ad8e";
+ };
+ }
+
+ {
+ name = "buffer_alloc_unsafe___buffer_alloc_unsafe_1.1.0.tgz";
+ path = fetchurl {
+ name = "buffer_alloc_unsafe___buffer_alloc_unsafe_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz";
+ sha1 = "bd7dc26ae2972d0eda253be061dba992349c19f0";
+ };
+ }
+
+ {
+ name = "buffer_alloc___buffer_alloc_1.2.0.tgz";
+ path = fetchurl {
+ name = "buffer_alloc___buffer_alloc_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz";
+ sha1 = "890dd90d923a873e08e10e5fd51a57e5b7cce0ec";
+ };
+ }
+
+ {
+ name = "buffer_fill___buffer_fill_1.0.0.tgz";
+ path = fetchurl {
+ name = "buffer_fill___buffer_fill_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz";
+ sha1 = "f8f78b76789888ef39f205cd637f68e702122b2c";
+ };
+ }
+
+ {
+ name = "buffer___buffer_2.1.13.tgz";
+ path = fetchurl {
+ name = "buffer___buffer_2.1.13.tgz";
+ url = "https://registry.yarnpkg.com/buffer/-/buffer-2.1.13.tgz";
+ sha1 = "c88838ebf79f30b8b4a707788470bea8a62c2355";
+ };
+ }
+
+ {
+ name = "buffers___buffers_0.1.1.tgz";
+ path = fetchurl {
+ name = "buffers___buffers_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz";
+ sha1 = "b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb";
+ };
+ }
+
+ {
+ name = "bufferstreams___bufferstreams_0.0.2.tgz";
+ path = fetchurl {
+ name = "bufferstreams___bufferstreams_0.0.2.tgz";
+ url = "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-0.0.2.tgz";
+ sha1 = "7ce8dff968bbac00b9e90158a2c41456f740abdd";
+ };
+ }
+
+ {
+ name = "builtins___builtins_0.0.7.tgz";
+ path = fetchurl {
+ name = "builtins___builtins_0.0.7.tgz";
+ url = "https://registry.yarnpkg.com/builtins/-/builtins-0.0.7.tgz";
+ sha1 = "355219cd6cf18dbe7c01cc7fd2dce765cfdc549a";
+ };
+ }
+
+ {
+ name = "bytes___bytes_2.2.0.tgz";
+ path = fetchurl {
+ name = "bytes___bytes_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/bytes/-/bytes-2.2.0.tgz";
+ sha1 = "fd35464a403f6f9117c2de3609ecff9cae000588";
+ };
+ }
+
+ {
+ name = "bytes___bytes_2.4.0.tgz";
+ path = fetchurl {
+ name = "bytes___bytes_2.4.0.tgz";
+ url = "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz";
+ sha1 = "7d97196f9d5baf7f6935e25985549edd2a6c2339";
+ };
+ }
+
+ {
+ name = "bytes___bytes_3.1.0.tgz";
+ path = fetchurl {
+ name = "bytes___bytes_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz";
+ sha1 = "f6cf7933a360e0588fa9fde85651cdc7f805d1f6";
+ };
+ }
+
+ {
+ name = "cache_base___cache_base_1.0.1.tgz";
+ path = fetchurl {
+ name = "cache_base___cache_base_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz";
+ sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2";
+ };
+ }
+
+ {
+ name = "callsite___callsite_1.0.0.tgz";
+ path = fetchurl {
+ name = "callsite___callsite_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz";
+ sha1 = "280398e5d664bd74038b6f0905153e6e8af1bc20";
+ };
+ }
+
+ {
+ name = "camelcase_keys___camelcase_keys_2.1.0.tgz";
+ path = fetchurl {
+ name = "camelcase_keys___camelcase_keys_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz";
+ sha1 = "308beeaffdf28119051efa1d932213c91b8f92e7";
+ };
+ }
+
+ {
+ name = "camelcase___camelcase_1.2.1.tgz";
+ path = fetchurl {
+ name = "camelcase___camelcase_1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz";
+ sha1 = "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39";
+ };
+ }
+
+ {
+ name = "camelcase___camelcase_2.1.1.tgz";
+ path = fetchurl {
+ name = "camelcase___camelcase_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz";
+ sha1 = "7c1d16d679a1bbe59ca02cacecfb011e201f5a1f";
+ };
+ }
+
+ {
+ name = "camelcase___camelcase_3.0.0.tgz";
+ path = fetchurl {
+ name = "camelcase___camelcase_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz";
+ sha1 = "32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a";
+ };
+ }
+
+ {
+ name = "cardinal___cardinal_0.4.4.tgz";
+ path = fetchurl {
+ name = "cardinal___cardinal_0.4.4.tgz";
+ url = "https://registry.yarnpkg.com/cardinal/-/cardinal-0.4.4.tgz";
+ sha1 = "ca5bb68a5b511b90fe93b9acea49bdee5c32bfe2";
+ };
+ }
+
+ {
+ name = "caseless___caseless_0.12.0.tgz";
+ path = fetchurl {
+ name = "caseless___caseless_0.12.0.tgz";
+ url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
+ sha1 = "1b681c21ff84033c826543090689420d187151dc";
+ };
+ }
+
+ {
+ name = "caseless___caseless_0.8.0.tgz";
+ path = fetchurl {
+ name = "caseless___caseless_0.8.0.tgz";
+ url = "https://registry.yarnpkg.com/caseless/-/caseless-0.8.0.tgz";
+ sha1 = "5bca2881d41437f54b2407ebe34888c7b9ad4f7d";
+ };
+ }
+
+ {
+ name = "center_align___center_align_0.1.3.tgz";
+ path = fetchurl {
+ name = "center_align___center_align_0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz";
+ sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad";
+ };
+ }
+
+ {
+ name = "chainsaw___chainsaw_0.1.0.tgz";
+ path = fetchurl {
+ name = "chainsaw___chainsaw_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz";
+ sha1 = "5eab50b28afe58074d0d58291388828b5e5fbc98";
+ };
+ }
+
+ {
+ name = "chalk___chalk_3.0.0.tgz";
+ path = fetchurl {
+ name = "chalk___chalk_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz";
+ sha1 = "3f73c2bf526591f574cc492c51e2456349f844e4";
+ };
+ }
+
+ {
+ name = "chalk___chalk_0.5.1.tgz";
+ path = fetchurl {
+ name = "chalk___chalk_0.5.1.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz";
+ sha1 = "663b3a648b68b55d04690d49167aa837858f2174";
+ };
+ }
+
+ {
+ name = "chalk___chalk_1.1.3.tgz";
+ path = fetchurl {
+ name = "chalk___chalk_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz";
+ sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
+ };
+ }
+
+ {
+ name = "chalk___chalk_0.4.0.tgz";
+ path = fetchurl {
+ name = "chalk___chalk_0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz";
+ sha1 = "5199a3ddcd0c1efe23bc08c1b027b06176e0c64f";
+ };
+ }
+
+ {
+ name = "character_parser___character_parser_2.2.0.tgz";
+ path = fetchurl {
+ name = "character_parser___character_parser_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz";
+ sha1 = "c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0";
+ };
+ }
+
+ {
+ name = "chmodr___chmodr_0.1.2.tgz";
+ path = fetchurl {
+ name = "chmodr___chmodr_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/chmodr/-/chmodr-0.1.2.tgz";
+ sha1 = "0dd8041c915087575bec383b47827bb7576a4fd6";
+ };
+ }
+
+ {
+ name = "chokidar___chokidar_1.7.0.tgz";
+ path = fetchurl {
+ name = "chokidar___chokidar_1.7.0.tgz";
+ url = "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz";
+ sha1 = "798e689778151c8076b4b360e5edd28cda2bb468";
+ };
+ }
+
+ {
+ name = "chownr___chownr_1.1.4.tgz";
+ path = fetchurl {
+ name = "chownr___chownr_1.1.4.tgz";
+ url = "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz";
+ sha1 = "6fc9d7b42d32a583596337666e7d08084da2cc6b";
+ };
+ }
+
+ {
+ name = "class_utils___class_utils_0.3.6.tgz";
+ path = fetchurl {
+ name = "class_utils___class_utils_0.3.6.tgz";
+ url = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz";
+ sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463";
+ };
+ }
+
+ {
+ name = "clean_css___clean_css_2.2.23.tgz";
+ path = fetchurl {
+ name = "clean_css___clean_css_2.2.23.tgz";
+ url = "https://registry.yarnpkg.com/clean-css/-/clean-css-2.2.23.tgz";
+ sha1 = "0590b5478b516c4903edc2d89bd3fdbdd286328c";
+ };
+ }
+
+ {
+ name = "clean_css___clean_css_4.2.3.tgz";
+ path = fetchurl {
+ name = "clean_css___clean_css_4.2.3.tgz";
+ url = "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz";
+ sha1 = "507b5de7d97b48ee53d84adb0160ff6216380f78";
+ };
+ }
+
+ {
+ name = "cli_color___cli_color_0.2.3.tgz";
+ path = fetchurl {
+ name = "cli_color___cli_color_0.2.3.tgz";
+ url = "https://registry.yarnpkg.com/cli-color/-/cli-color-0.2.3.tgz";
+ sha1 = "0a25ceae5a6a1602be7f77d28563c36700274e88";
+ };
+ }
+
+ {
+ name = "cli_color___cli_color_0.3.3.tgz";
+ path = fetchurl {
+ name = "cli_color___cli_color_0.3.3.tgz";
+ url = "https://registry.yarnpkg.com/cli-color/-/cli-color-0.3.3.tgz";
+ sha1 = "12d5bdd158ff8a0b0db401198913c03df069f6f5";
+ };
+ }
+
+ {
+ name = "cliui___cliui_2.1.0.tgz";
+ path = fetchurl {
+ name = "cliui___cliui_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz";
+ sha1 = "4b475760ff80264c762c3a1719032e91c7fea0d1";
+ };
+ }
+
+ {
+ name = "cliui___cliui_3.2.0.tgz";
+ path = fetchurl {
+ name = "cliui___cliui_3.2.0.tgz";
+ url = "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz";
+ sha1 = "120601537a916d29940f934da3b48d585a39213d";
+ };
+ }
+
+ {
+ name = "clone_buffer___clone_buffer_1.0.0.tgz";
+ path = fetchurl {
+ name = "clone_buffer___clone_buffer_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz";
+ sha1 = "e3e25b207ac4e701af721e2cb5a16792cac3dc58";
+ };
+ }
+
+ {
+ name = "clone_stats___clone_stats_0.0.1.tgz";
+ path = fetchurl {
+ name = "clone_stats___clone_stats_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz";
+ sha1 = "b88f94a82cf38b8791d58046ea4029ad88ca99d1";
+ };
+ }
+
+ {
+ name = "clone_stats___clone_stats_1.0.0.tgz";
+ path = fetchurl {
+ name = "clone_stats___clone_stats_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz";
+ sha1 = "b3782dff8bb5474e18b9b6bf0fdfe782f8777680";
+ };
+ }
+
+ {
+ name = "clone___clone_0.2.0.tgz";
+ path = fetchurl {
+ name = "clone___clone_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz";
+ sha1 = "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f";
+ };
+ }
+
+ {
+ name = "clone___clone_1.0.4.tgz";
+ path = fetchurl {
+ name = "clone___clone_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz";
+ sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
+ };
+ }
+
+ {
+ name = "clone___clone_2.1.2.tgz";
+ path = fetchurl {
+ name = "clone___clone_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz";
+ sha1 = "1b7f4b9f591f1e8f83670401600345a02887435f";
+ };
+ }
+
+ {
+ name = "cloneable_readable___cloneable_readable_1.1.3.tgz";
+ path = fetchurl {
+ name = "cloneable_readable___cloneable_readable_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz";
+ sha1 = "120a00cb053bfb63a222e709f9683ea2e11d8cec";
+ };
+ }
+
+ {
+ name = "code_point_at___code_point_at_1.1.0.tgz";
+ path = fetchurl {
+ name = "code_point_at___code_point_at_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz";
+ sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
+ };
+ }
+
+ {
+ name = "coffee_script___coffee_script_1.12.7.tgz";
+ path = fetchurl {
+ name = "coffee_script___coffee_script_1.12.7.tgz";
+ url = "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz";
+ sha1 = "c05dae0cb79591d05b3070a8433a98c9a89ccc53";
+ };
+ }
+
+ {
+ name = "coffee_script___coffee_script_1.10.0.tgz";
+ path = fetchurl {
+ name = "coffee_script___coffee_script_1.10.0.tgz";
+ url = "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.10.0.tgz";
+ sha1 = "12938bcf9be1948fa006f92e0c4c9e81705108c0";
+ };
+ }
+
+ {
+ name = "coffeescript___coffeescript_1.12.7.tgz";
+ path = fetchurl {
+ name = "coffeescript___coffeescript_1.12.7.tgz";
+ url = "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.12.7.tgz";
+ sha1 = "e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27";
+ };
+ }
+
+ {
+ name = "collection_visit___collection_visit_1.0.0.tgz";
+ path = fetchurl {
+ name = "collection_visit___collection_visit_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz";
+ sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
+ };
+ }
+
+ {
+ name = "color_convert___color_convert_2.0.1.tgz";
+ path = fetchurl {
+ name = "color_convert___color_convert_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz";
+ sha1 = "72d3a68d598c9bdb3af2ad1e84f21d896abd4de3";
+ };
+ }
+
+ {
+ name = "color_name___color_name_1.1.4.tgz";
+ path = fetchurl {
+ name = "color_name___color_name_1.1.4.tgz";
+ url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz";
+ sha1 = "c2a09a87acbde69543de6f63fa3995c826c536a2";
+ };
+ }
+
+ {
+ name = "color_support___color_support_1.1.3.tgz";
+ path = fetchurl {
+ name = "color_support___color_support_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz";
+ sha1 = "93834379a1cc9a0c61f82f52f0d04322251bd5a2";
+ };
+ }
+
+ {
+ name = "colors___colors_1.4.0.tgz";
+ path = fetchurl {
+ name = "colors___colors_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz";
+ sha1 = "c50491479d4c1bdaed2c9ced32cf7c7dc2360f78";
+ };
+ }
+
+ {
+ name = "combine_source_map___combine_source_map_0.3.0.tgz";
+ path = fetchurl {
+ name = "combine_source_map___combine_source_map_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.3.0.tgz";
+ sha1 = "d9e74f593d9cd43807312cb5d846d451efaa9eb7";
+ };
+ }
+
+ {
+ name = "combined_stream___combined_stream_1.0.8.tgz";
+ path = fetchurl {
+ name = "combined_stream___combined_stream_1.0.8.tgz";
+ url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz";
+ sha1 = "c3d45a8b34fd730631a110a8a2520682b31d5a7f";
+ };
+ }
+
+ {
+ name = "combined_stream___combined_stream_0.0.7.tgz";
+ path = fetchurl {
+ name = "combined_stream___combined_stream_0.0.7.tgz";
+ url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz";
+ sha1 = "0137e657baa5a7541c57ac37ac5fc07d73b4dc1f";
+ };
+ }
+
+ {
+ name = "commander___commander_2.2.0.tgz";
+ path = fetchurl {
+ name = "commander___commander_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/commander/-/commander-2.2.0.tgz";
+ sha1 = "175ad4b9317f3ff615f201c1e57224f55a3e91df";
+ };
+ }
+
+ {
+ name = "commander___commander_2.20.3.tgz";
+ path = fetchurl {
+ name = "commander___commander_2.20.3.tgz";
+ url = "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz";
+ sha1 = "fd485e84c03eb4881c20722ba48035e8531aeb33";
+ };
+ }
+
+ {
+ name = "commondir___commondir_0.0.1.tgz";
+ path = fetchurl {
+ name = "commondir___commondir_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/commondir/-/commondir-0.0.1.tgz";
+ sha1 = "89f00fdcd51b519c578733fec563e6a6da7f5be2";
+ };
+ }
+
+ {
+ name = "component_bind___component_bind_1.0.0.tgz";
+ path = fetchurl {
+ name = "component_bind___component_bind_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz";
+ sha1 = "00c608ab7dcd93897c0009651b1d3a8e1e73bbd1";
+ };
+ }
+
+ {
+ name = "component_emitter___component_emitter_1.1.2.tgz";
+ path = fetchurl {
+ name = "component_emitter___component_emitter_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz";
+ sha1 = "296594f2753daa63996d2af08d15a95116c9aec3";
+ };
+ }
+
+ {
+ name = "component_emitter___component_emitter_1.2.1.tgz";
+ path = fetchurl {
+ name = "component_emitter___component_emitter_1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz";
+ sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
+ };
+ }
+
+ {
+ name = "component_emitter___component_emitter_1.3.0.tgz";
+ path = fetchurl {
+ name = "component_emitter___component_emitter_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz";
+ sha1 = "16e4070fba8ae29b679f2215853ee181ab2eabc0";
+ };
+ }
+
+ {
+ name = "component_inherit___component_inherit_0.0.3.tgz";
+ path = fetchurl {
+ name = "component_inherit___component_inherit_0.0.3.tgz";
+ url = "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz";
+ sha1 = "645fc4adf58b72b649d5cae65135619db26ff143";
+ };
+ }
+
+ {
+ name = "concat_map___concat_map_0.0.1.tgz";
+ path = fetchurl {
+ name = "concat_map___concat_map_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
+ sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+ };
+ }
+
+ {
+ name = "concat_stream___concat_stream_1.4.11.tgz";
+ path = fetchurl {
+ name = "concat_stream___concat_stream_1.4.11.tgz";
+ url = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.11.tgz";
+ sha1 = "1dc9f666f2621da9c618b1e7f8f3b2ff70b5f76f";
+ };
+ }
+
+ {
+ name = "concat_with_sourcemaps___concat_with_sourcemaps_1.1.0.tgz";
+ path = fetchurl {
+ name = "concat_with_sourcemaps___concat_with_sourcemaps_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz";
+ sha1 = "d4ea93f05ae25790951b99e7b3b09e3908a4082e";
+ };
+ }
+
+ {
+ name = "configstore___configstore_0.3.2.tgz";
+ path = fetchurl {
+ name = "configstore___configstore_0.3.2.tgz";
+ url = "https://registry.yarnpkg.com/configstore/-/configstore-0.3.2.tgz";
+ sha1 = "25e4c16c3768abf75c5a65bc61761f495055b459";
+ };
+ }
+
+ {
+ name = "configstore___configstore_0.2.3.tgz";
+ path = fetchurl {
+ name = "configstore___configstore_0.2.3.tgz";
+ url = "https://registry.yarnpkg.com/configstore/-/configstore-0.2.3.tgz";
+ sha1 = "b1bdc4ad823a25423dc15d220fcc1ae1d7efab02";
+ };
+ }
+
+ {
+ name = "connect___connect_3.7.0.tgz";
+ path = fetchurl {
+ name = "connect___connect_3.7.0.tgz";
+ url = "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz";
+ sha1 = "5d49348910caa5e07a01800b030d0c35f20484f8";
+ };
+ }
+
+ {
+ name = "console_browserify___console_browserify_1.0.3.tgz";
+ path = fetchurl {
+ name = "console_browserify___console_browserify_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.0.3.tgz";
+ sha1 = "d3898d2c3a93102f364197f8874b4f92b5286a8e";
+ };
+ }
+
+ {
+ name = "console_control_strings___console_control_strings_1.1.0.tgz";
+ path = fetchurl {
+ name = "console_control_strings___console_control_strings_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz";
+ sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
+ };
+ }
+
+ {
+ name = "constantinople___constantinople_3.1.2.tgz";
+ path = fetchurl {
+ name = "constantinople___constantinople_3.1.2.tgz";
+ url = "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz";
+ sha1 = "d45ed724f57d3d10500017a7d3a889c1381ae647";
+ };
+ }
+
+ {
+ name = "constants_browserify___constants_browserify_0.0.1.tgz";
+ path = fetchurl {
+ name = "constants_browserify___constants_browserify_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-0.0.1.tgz";
+ sha1 = "92577db527ba6c4cf0a4568d84bc031f441e21f2";
+ };
+ }
+
+ {
+ name = "content_type___content_type_1.0.4.tgz";
+ path = fetchurl {
+ name = "content_type___content_type_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
+ sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
+ };
+ }
+
+ {
+ name = "convert_source_map___convert_source_map_0.4.1.tgz";
+ path = fetchurl {
+ name = "convert_source_map___convert_source_map_0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.4.1.tgz";
+ sha1 = "f919a0099fe31f80fc5a1d0eb303161b394070c7";
+ };
+ }
+
+ {
+ name = "convert_source_map___convert_source_map_1.7.0.tgz";
+ path = fetchurl {
+ name = "convert_source_map___convert_source_map_1.7.0.tgz";
+ url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz";
+ sha1 = "17a2cb882d7f77d3490585e2ce6c524424a3a442";
+ };
+ }
+
+ {
+ name = "convert_source_map___convert_source_map_0.3.5.tgz";
+ path = fetchurl {
+ name = "convert_source_map___convert_source_map_0.3.5.tgz";
+ url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz";
+ sha1 = "f1d802950af7dd2631a1febe0596550c86ab3190";
+ };
+ }
+
+ {
+ name = "convert_source_map___convert_source_map_1.1.3.tgz";
+ path = fetchurl {
+ name = "convert_source_map___convert_source_map_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz";
+ sha1 = "4829c877e9fe49b3161f3bf3673888e204699860";
+ };
+ }
+
+ {
+ name = "cookie_jar___cookie_jar_0.3.0.tgz";
+ path = fetchurl {
+ name = "cookie_jar___cookie_jar_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/cookie-jar/-/cookie-jar-0.3.0.tgz";
+ sha1 = "bc9a27d4e2b97e186cd57c9e2063cb99fa68cccc";
+ };
+ }
+
+ {
+ name = "cookie___cookie_0.3.1.tgz";
+ path = fetchurl {
+ name = "cookie___cookie_0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz";
+ sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
+ };
+ }
+
+ {
+ name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
+ path = fetchurl {
+ name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
+ sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
+ };
+ }
+
+ {
+ name = "core_js___core_js_2.6.11.tgz";
+ path = fetchurl {
+ name = "core_js___core_js_2.6.11.tgz";
+ url = "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz";
+ sha1 = "38831469f9922bded8ee21c9dc46985e0399308c";
+ };
+ }
+
+ {
+ name = "core_util_is___core_util_is_1.0.2.tgz";
+ path = fetchurl {
+ name = "core_util_is___core_util_is_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
+ sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+ };
+ }
+
+ {
+ name = "cross_spawn___cross_spawn_3.0.1.tgz";
+ path = fetchurl {
+ name = "cross_spawn___cross_spawn_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz";
+ sha1 = "1256037ecb9f0c5f79e3d6ef135e30770184b982";
+ };
+ }
+
+ {
+ name = "cryptiles___cryptiles_0.2.2.tgz";
+ path = fetchurl {
+ name = "cryptiles___cryptiles_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz";
+ sha1 = "ed91ff1f17ad13d3748288594f8a48a0d26f325c";
+ };
+ }
+
+ {
+ name = "crypto_browserify___crypto_browserify_1.0.9.tgz";
+ path = fetchurl {
+ name = "crypto_browserify___crypto_browserify_1.0.9.tgz";
+ url = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-1.0.9.tgz";
+ sha1 = "cc5449685dfb85eb11c9828acc7cb87ab5bbfcc0";
+ };
+ }
+
+ {
+ name = "ctype___ctype_0.5.3.tgz";
+ path = fetchurl {
+ name = "ctype___ctype_0.5.3.tgz";
+ url = "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz";
+ sha1 = "82c18c2461f74114ef16c135224ad0b9144ca12f";
+ };
+ }
+
+ {
+ name = "currently_unhandled___currently_unhandled_0.4.1.tgz";
+ path = fetchurl {
+ name = "currently_unhandled___currently_unhandled_0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz";
+ sha1 = "988df33feab191ef799a61369dd76c17adf957ea";
+ };
+ }
+
+ {
+ name = "custom_event___custom_event_1.0.1.tgz";
+ path = fetchurl {
+ name = "custom_event___custom_event_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz";
+ sha1 = "5d02a46850adf1b4a317946a3928fccb5bfd0425";
+ };
+ }
+
+ {
+ name = "d___d_1.0.1.tgz";
+ path = fetchurl {
+ name = "d___d_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz";
+ sha1 = "8698095372d58dbee346ffd0c7093f99f8f9eb5a";
+ };
+ }
+
+ {
+ name = "d___d_0.1.1.tgz";
+ path = fetchurl {
+ name = "d___d_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz";
+ sha1 = "da184c535d18d8ee7ba2aa229b914009fae11309";
+ };
+ }
+
+ {
+ name = "dashdash___dashdash_1.14.1.tgz";
+ path = fetchurl {
+ name = "dashdash___dashdash_1.14.1.tgz";
+ url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
+ sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+ };
+ }
+
+ {
+ name = "dateformat___dateformat_1.0.12.tgz";
+ path = fetchurl {
+ name = "dateformat___dateformat_1.0.12.tgz";
+ url = "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz";
+ sha1 = "9f124b67594c937ff706932e4a642cca8dbbfee9";
+ };
+ }
+
+ {
+ name = "dateformat___dateformat_2.2.0.tgz";
+ path = fetchurl {
+ name = "dateformat___dateformat_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz";
+ sha1 = "4065e2013cf9fb916ddfd82efb506ad4c6769062";
+ };
+ }
+
+ {
+ name = "deap___deap_1.0.1.tgz";
+ path = fetchurl {
+ name = "deap___deap_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/deap/-/deap-1.0.1.tgz";
+ sha1 = "0646e9e1a095ffe8a9e404d68d1f76dcf57e66fb";
+ };
+ }
+
+ {
+ name = "debug___debug_2.2.0.tgz";
+ path = fetchurl {
+ name = "debug___debug_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz";
+ sha1 = "f87057e995b1a1f6ae6a4960664137bc56f039da";
+ };
+ }
+
+ {
+ name = "debug___debug_2.3.3.tgz";
+ path = fetchurl {
+ name = "debug___debug_2.3.3.tgz";
+ url = "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz";
+ sha1 = "40c453e67e6e13c901ddec317af8986cda9eff8c";
+ };
+ }
+
+ {
+ name = "debug___debug_2.6.9.tgz";
+ path = fetchurl {
+ name = "debug___debug_2.6.9.tgz";
+ url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
+ sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
+ };
+ }
+
+ {
+ name = "debug___debug_3.2.6.tgz";
+ path = fetchurl {
+ name = "debug___debug_3.2.6.tgz";
+ url = "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz";
+ sha1 = "e83d17de16d8a7efb7717edbe5fb10135eee629b";
+ };
+ }
+
+ {
+ name = "decamelize___decamelize_1.2.0.tgz";
+ path = fetchurl {
+ name = "decamelize___decamelize_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
+ sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
+ };
+ }
+
+ {
+ name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
+ path = fetchurl {
+ name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
+ sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
+ };
+ }
+
+ {
+ name = "decompress_zip___decompress_zip_0.0.8.tgz";
+ path = fetchurl {
+ name = "decompress_zip___decompress_zip_0.0.8.tgz";
+ url = "https://registry.yarnpkg.com/decompress-zip/-/decompress-zip-0.0.8.tgz";
+ sha1 = "4a265b22c7b209d7b24fa66f2b2dfbced59044f3";
+ };
+ }
+
+ {
+ name = "deep_equal___deep_equal_0.1.2.tgz";
+ path = fetchurl {
+ name = "deep_equal___deep_equal_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.1.2.tgz";
+ sha1 = "b246c2b80a570a47c11be1d9bd1070ec878b87ce";
+ };
+ }
+
+ {
+ name = "deep_extend___deep_extend_0.6.0.tgz";
+ path = fetchurl {
+ name = "deep_extend___deep_extend_0.6.0.tgz";
+ url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz";
+ sha1 = "c4fa7c95404a17a9c3e8ca7e1537312b736330ac";
+ };
+ }
+
+ {
+ name = "deep_extend___deep_extend_0.2.11.tgz";
+ path = fetchurl {
+ name = "deep_extend___deep_extend_0.2.11.tgz";
+ url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.2.11.tgz";
+ sha1 = "7a16ba69729132340506170494bc83f7076fe08f";
+ };
+ }
+
+ {
+ name = "deep_is___deep_is_0.1.3.tgz";
+ path = fetchurl {
+ name = "deep_is___deep_is_0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz";
+ sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
+ };
+ }
+
+ {
+ name = "defaults___defaults_1.0.3.tgz";
+ path = fetchurl {
+ name = "defaults___defaults_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz";
+ sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d";
+ };
+ }
+
+ {
+ name = "define_property___define_property_0.2.5.tgz";
+ path = fetchurl {
+ name = "define_property___define_property_0.2.5.tgz";
+ url = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz";
+ sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
+ };
+ }
+
+ {
+ name = "define_property___define_property_1.0.0.tgz";
+ path = fetchurl {
+ name = "define_property___define_property_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz";
+ sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
+ };
+ }
+
+ {
+ name = "define_property___define_property_2.0.2.tgz";
+ path = fetchurl {
+ name = "define_property___define_property_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz";
+ sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d";
+ };
+ }
+
+ {
+ name = "defined___defined_0.0.0.tgz";
+ path = fetchurl {
+ name = "defined___defined_0.0.0.tgz";
+ url = "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz";
+ sha1 = "f35eea7d705e933baf13b2f03b3f83d921403b3e";
+ };
+ }
+
+ {
+ name = "delayed_stream___delayed_stream_0.0.5.tgz";
+ path = fetchurl {
+ name = "delayed_stream___delayed_stream_0.0.5.tgz";
+ url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz";
+ sha1 = "d4b1f43a93e8296dfe02694f4680bc37a313c73f";
+ };
+ }
+
+ {
+ name = "delayed_stream___delayed_stream_1.0.0.tgz";
+ path = fetchurl {
+ name = "delayed_stream___delayed_stream_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
+ sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+ };
+ }
+
+ {
+ name = "delegates___delegates_1.0.0.tgz";
+ path = fetchurl {
+ name = "delegates___delegates_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz";
+ sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
+ };
+ }
+
+ {
+ name = "depd___depd_1.1.2.tgz";
+ path = fetchurl {
+ name = "depd___depd_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
+ sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
+ };
+ }
+
+ {
+ name = "deprecated___deprecated_0.0.1.tgz";
+ path = fetchurl {
+ name = "deprecated___deprecated_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz";
+ sha1 = "f9c9af5464afa1e7a971458a8bdef2aa94d5bb19";
+ };
+ }
+
+ {
+ name = "deps_sort___deps_sort_0.1.2.tgz";
+ path = fetchurl {
+ name = "deps_sort___deps_sort_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/deps-sort/-/deps-sort-0.1.2.tgz";
+ sha1 = "daa2fb614a17c9637d801e2f55339ae370f3611a";
+ };
+ }
+
+ {
+ name = "derequire___derequire_0.8.0.tgz";
+ path = fetchurl {
+ name = "derequire___derequire_0.8.0.tgz";
+ url = "https://registry.yarnpkg.com/derequire/-/derequire-0.8.0.tgz";
+ sha1 = "c1f7f1da2cede44adede047378f03f444e9c4c0d";
+ };
+ }
+
+ {
+ name = "destroy___destroy_1.0.4.tgz";
+ path = fetchurl {
+ name = "destroy___destroy_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
+ sha1 = "978857442c44749e4206613e37946205826abd80";
+ };
+ }
+
+ {
+ name = "detect_file___detect_file_1.0.0.tgz";
+ path = fetchurl {
+ name = "detect_file___detect_file_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz";
+ sha1 = "f0d66d03672a825cb1b73bdb3fe62310c8e552b7";
+ };
+ }
+
+ {
+ name = "detect_libc___detect_libc_1.0.3.tgz";
+ path = fetchurl {
+ name = "detect_libc___detect_libc_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz";
+ sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
+ };
+ }
+
+ {
+ name = "detective___detective_3.1.0.tgz";
+ path = fetchurl {
+ name = "detective___detective_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/detective/-/detective-3.1.0.tgz";
+ sha1 = "77782444ab752b88ca1be2e9d0a0395f1da25eed";
+ };
+ }
+
+ {
+ name = "di___di_0.0.1.tgz";
+ path = fetchurl {
+ name = "di___di_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz";
+ sha1 = "806649326ceaa7caa3306d75d985ea2748ba913c";
+ };
+ }
+
+ {
+ name = "doctypes___doctypes_1.1.0.tgz";
+ path = fetchurl {
+ name = "doctypes___doctypes_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz";
+ sha1 = "ea80b106a87538774e8a3a4a5afe293de489e0a9";
+ };
+ }
+
+ {
+ name = "dom_serialize___dom_serialize_2.2.1.tgz";
+ path = fetchurl {
+ name = "dom_serialize___dom_serialize_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz";
+ sha1 = "562ae8999f44be5ea3076f5419dcd59eb43ac95b";
+ };
+ }
+
+ {
+ name = "domain_browser___domain_browser_1.1.7.tgz";
+ path = fetchurl {
+ name = "domain_browser___domain_browser_1.1.7.tgz";
+ url = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz";
+ sha1 = "867aa4b093faa05f1de08c06f4d7b21fdf8698bc";
+ };
+ }
+
+ {
+ name = "duplexer2___duplexer2_0.0.2.tgz";
+ path = fetchurl {
+ name = "duplexer2___duplexer2_0.0.2.tgz";
+ url = "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz";
+ sha1 = "c614dcf67e2fb14995a91711e5a617e8a60a31db";
+ };
+ }
+
+ {
+ name = "duplexer___duplexer_0.1.1.tgz";
+ path = fetchurl {
+ name = "duplexer___duplexer_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz";
+ sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1";
+ };
+ }
+
+ {
+ name = "duplexify___duplexify_3.7.1.tgz";
+ path = fetchurl {
+ name = "duplexify___duplexify_3.7.1.tgz";
+ url = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz";
+ sha1 = "2a4df5317f6ccfd91f86d6fd25d8d8a103b88309";
+ };
+ }
+
+ {
+ name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
+ path = fetchurl {
+ name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+ sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+ };
+ }
+
+ {
+ name = "ee_first___ee_first_1.1.1.tgz";
+ path = fetchurl {
+ name = "ee_first___ee_first_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
+ sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+ };
+ }
+
+ {
+ name = "encodeurl___encodeurl_1.0.2.tgz";
+ path = fetchurl {
+ name = "encodeurl___encodeurl_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
+ sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+ };
+ }
+
+ {
+ name = "end_of_stream___end_of_stream_1.4.4.tgz";
+ path = fetchurl {
+ name = "end_of_stream___end_of_stream_1.4.4.tgz";
+ url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz";
+ sha1 = "5ae64a5f45057baf3626ec14da0ca5e4b2431eb0";
+ };
+ }
+
+ {
+ name = "end_of_stream___end_of_stream_0.1.5.tgz";
+ path = fetchurl {
+ name = "end_of_stream___end_of_stream_0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz";
+ sha1 = "8e177206c3c80837d85632e8b9359dfe8b2f6eaf";
+ };
+ }
+
+ {
+ name = "engine.io_client___engine.io_client_1.8.5.tgz";
+ path = fetchurl {
+ name = "engine.io_client___engine.io_client_1.8.5.tgz";
+ url = "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.5.tgz";
+ sha1 = "fe7fb60cb0dcf2fa2859489329cb5968dedeb11f";
+ };
+ }
+
+ {
+ name = "engine.io_parser___engine.io_parser_1.3.2.tgz";
+ path = fetchurl {
+ name = "engine.io_parser___engine.io_parser_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz";
+ sha1 = "937b079f0007d0893ec56d46cb220b8cb435220a";
+ };
+ }
+
+ {
+ name = "engine.io___engine.io_1.8.5.tgz";
+ path = fetchurl {
+ name = "engine.io___engine.io_1.8.5.tgz";
+ url = "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.5.tgz";
+ sha1 = "4ebe5e75c6dc123dee4afdce6e5fdced21eb93f6";
+ };
+ }
+
+ {
+ name = "ent___ent_2.2.0.tgz";
+ path = fetchurl {
+ name = "ent___ent_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz";
+ sha1 = "e964219325a21d05f44466a2f686ed6ce5f5dd1d";
+ };
+ }
+
+ {
+ name = "error_ex___error_ex_1.3.2.tgz";
+ path = fetchurl {
+ name = "error_ex___error_ex_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz";
+ sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf";
+ };
+ }
+
+ {
+ name = "es5_ext___es5_ext_0.10.53.tgz";
+ path = fetchurl {
+ name = "es5_ext___es5_ext_0.10.53.tgz";
+ url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz";
+ sha1 = "93c5a3acfdbef275220ad72644ad02ee18368de1";
+ };
+ }
+
+ {
+ name = "es5_ext___es5_ext_0.9.2.tgz";
+ path = fetchurl {
+ name = "es5_ext___es5_ext_0.9.2.tgz";
+ url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.9.2.tgz";
+ sha1 = "d2e309d1f223b0718648835acf5b8823a8061f8a";
+ };
+ }
+
+ {
+ name = "es6_iterator___es6_iterator_0.1.3.tgz";
+ path = fetchurl {
+ name = "es6_iterator___es6_iterator_0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-0.1.3.tgz";
+ sha1 = "d6f58b8c4fc413c249b4baa19768f8e4d7c8944e";
+ };
+ }
+
+ {
+ name = "es6_iterator___es6_iterator_2.0.3.tgz";
+ path = fetchurl {
+ name = "es6_iterator___es6_iterator_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz";
+ sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
+ };
+ }
+
+ {
+ name = "es6_symbol___es6_symbol_3.1.3.tgz";
+ path = fetchurl {
+ name = "es6_symbol___es6_symbol_3.1.3.tgz";
+ url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz";
+ sha1 = "bad5d3c1bcdac28269f4cb331e431c78ac705d18";
+ };
+ }
+
+ {
+ name = "es6_symbol___es6_symbol_2.0.1.tgz";
+ path = fetchurl {
+ name = "es6_symbol___es6_symbol_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-2.0.1.tgz";
+ sha1 = "761b5c67cfd4f1d18afb234f691d678682cb3bf3";
+ };
+ }
+
+ {
+ name = "es6_weak_map___es6_weak_map_0.1.4.tgz";
+ path = fetchurl {
+ name = "es6_weak_map___es6_weak_map_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-0.1.4.tgz";
+ sha1 = "706cef9e99aa236ba7766c239c8b9e286ea7d228";
+ };
+ }
+
+ {
+ name = "escape_html___escape_html_1.0.3.tgz";
+ path = fetchurl {
+ name = "escape_html___escape_html_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
+ sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+ };
+ }
+
+ {
+ name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
+ path = fetchurl {
+ name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+ sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+ };
+ }
+
+ {
+ name = "escodegen___escodegen_1.8.1.tgz";
+ path = fetchurl {
+ name = "escodegen___escodegen_1.8.1.tgz";
+ url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz";
+ sha1 = "5a5b53af4693110bebb0867aa3430dd3b70a1018";
+ };
+ }
+
+ {
+ name = "escodegen___escodegen_1.1.0.tgz";
+ path = fetchurl {
+ name = "escodegen___escodegen_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.1.0.tgz";
+ sha1 = "c663923f6e20aad48d0c0fa49f31c6d4f49360cf";
+ };
+ }
+
+ {
+ name = "escope___escope_0.0.16.tgz";
+ path = fetchurl {
+ name = "escope___escope_0.0.16.tgz";
+ url = "https://registry.yarnpkg.com/escope/-/escope-0.0.16.tgz";
+ sha1 = "418c7a0afca721dafe659193fd986283e746538f";
+ };
+ }
+
+ {
+ name = "esprima_fb___esprima_fb_3001.0001.0000_dev_harmony_fb.tgz";
+ path = fetchurl {
+ name = "esprima_fb___esprima_fb_3001.0001.0000_dev_harmony_fb.tgz";
+ url = "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz";
+ sha1 = "b77d37abcd38ea0b77426bb8bc2922ce6b426411";
+ };
+ }
+
+ {
+ name = "esprima___esprima_2.7.3.tgz";
+ path = fetchurl {
+ name = "esprima___esprima_2.7.3.tgz";
+ url = "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz";
+ sha1 = "96e3b70d5779f6ad49cd032673d1c312767ba581";
+ };
+ }
+
+ {
+ name = "esprima___esprima_4.0.1.tgz";
+ path = fetchurl {
+ name = "esprima___esprima_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz";
+ sha1 = "13b04cdb3e6c5d19df91ab6987a8695619b0aa71";
+ };
+ }
+
+ {
+ name = "esprima___esprima_1.0.4.tgz";
+ path = fetchurl {
+ name = "esprima___esprima_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz";
+ sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad";
+ };
+ }
+
+ {
+ name = "esrefactor___esrefactor_0.1.0.tgz";
+ path = fetchurl {
+ name = "esrefactor___esrefactor_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/esrefactor/-/esrefactor-0.1.0.tgz";
+ sha1 = "d142795a282339ab81e936b5b7a21b11bf197b13";
+ };
+ }
+
+ {
+ name = "estraverse___estraverse_5.0.0.tgz";
+ path = fetchurl {
+ name = "estraverse___estraverse_5.0.0.tgz";
+ url = "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz";
+ sha1 = "ac81750b482c11cca26e4b07e83ed8f75fbcdc22";
+ };
+ }
+
+ {
+ name = "estraverse___estraverse_1.9.3.tgz";
+ path = fetchurl {
+ name = "estraverse___estraverse_1.9.3.tgz";
+ url = "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz";
+ sha1 = "af67f2dc922582415950926091a4005d29c9bb44";
+ };
+ }
+
+ {
+ name = "estraverse___estraverse_0.0.4.tgz";
+ path = fetchurl {
+ name = "estraverse___estraverse_0.0.4.tgz";
+ url = "https://registry.yarnpkg.com/estraverse/-/estraverse-0.0.4.tgz";
+ sha1 = "01a0932dfee574684a598af5a67c3bf9b6428db2";
+ };
+ }
+
+ {
+ name = "estraverse___estraverse_1.5.1.tgz";
+ path = fetchurl {
+ name = "estraverse___estraverse_1.5.1.tgz";
+ url = "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz";
+ sha1 = "867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71";
+ };
+ }
+
+ {
+ name = "esutils___esutils_2.0.3.tgz";
+ path = fetchurl {
+ name = "esutils___esutils_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz";
+ sha1 = "74d2eb4de0b8da1293711910d50775b9b710ef64";
+ };
+ }
+
+ {
+ name = "esutils___esutils_1.0.0.tgz";
+ path = fetchurl {
+ name = "esutils___esutils_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz";
+ sha1 = "8151d358e20c8acc7fb745e7472c0025fe496570";
+ };
+ }
+
+ {
+ name = "etag___etag_1.7.0.tgz";
+ path = fetchurl {
+ name = "etag___etag_1.7.0.tgz";
+ url = "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz";
+ sha1 = "03d30b5f67dd6e632d2945d30d6652731a34d5d8";
+ };
+ }
+
+ {
+ name = "event_emitter___event_emitter_0.2.2.tgz";
+ path = fetchurl {
+ name = "event_emitter___event_emitter_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.2.2.tgz";
+ sha1 = "c81e3724eb55407c5a0d5ee3299411f700f54291";
+ };
+ }
+
+ {
+ name = "event_emitter___event_emitter_0.3.5.tgz";
+ path = fetchurl {
+ name = "event_emitter___event_emitter_0.3.5.tgz";
+ url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz";
+ sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39";
+ };
+ }
+
+ {
+ name = "event_stream___event_stream_4.0.1.tgz";
+ path = fetchurl {
+ name = "event_stream___event_stream_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/event-stream/-/event-stream-4.0.1.tgz";
+ sha1 = "4092808ec995d0dd75ea4580c1df6a74db2cde65";
+ };
+ }
+
+ {
+ name = "event_stream___event_stream_3.3.2.tgz";
+ path = fetchurl {
+ name = "event_stream___event_stream_3.3.2.tgz";
+ url = "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.2.tgz";
+ sha1 = "3cc310feb1f28d2f62b2a085d736a9ef566378b8";
+ };
+ }
+
+ {
+ name = "event_stream___event_stream_3.3.5.tgz";
+ path = fetchurl {
+ name = "event_stream___event_stream_3.3.5.tgz";
+ url = "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.5.tgz";
+ sha1 = "e5dd8989543630d94c6cf4d657120341fa31636b";
+ };
+ }
+
+ {
+ name = "eventemitter3___eventemitter3_4.0.0.tgz";
+ path = fetchurl {
+ name = "eventemitter3___eventemitter3_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz";
+ sha1 = "d65176163887ee59f386d64c82610b696a4a74eb";
+ };
+ }
+
+ {
+ name = "events___events_1.0.2.tgz";
+ path = fetchurl {
+ name = "events___events_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/events/-/events-1.0.2.tgz";
+ sha1 = "75849dcfe93d10fb057c30055afdbd51d06a8e24";
+ };
+ }
+
+ {
+ name = "expand_braces___expand_braces_0.1.2.tgz";
+ path = fetchurl {
+ name = "expand_braces___expand_braces_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz";
+ sha1 = "488b1d1d2451cb3d3a6b192cfc030f44c5855fea";
+ };
+ }
+
+ {
+ name = "expand_brackets___expand_brackets_0.1.5.tgz";
+ path = fetchurl {
+ name = "expand_brackets___expand_brackets_0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz";
+ sha1 = "df07284e342a807cd733ac5af72411e581d1177b";
+ };
+ }
+
+ {
+ name = "expand_brackets___expand_brackets_2.1.4.tgz";
+ path = fetchurl {
+ name = "expand_brackets___expand_brackets_2.1.4.tgz";
+ url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz";
+ sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
+ };
+ }
+
+ {
+ name = "expand_range___expand_range_0.1.1.tgz";
+ path = fetchurl {
+ name = "expand_range___expand_range_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz";
+ sha1 = "4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044";
+ };
+ }
+
+ {
+ name = "expand_range___expand_range_1.8.2.tgz";
+ path = fetchurl {
+ name = "expand_range___expand_range_1.8.2.tgz";
+ url = "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz";
+ sha1 = "a299effd335fe2721ebae8e257ec79644fc85337";
+ };
+ }
+
+ {
+ name = "expand_tilde___expand_tilde_2.0.2.tgz";
+ path = fetchurl {
+ name = "expand_tilde___expand_tilde_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz";
+ sha1 = "97e801aa052df02454de46b02bf621642cdc8502";
+ };
+ }
+
+ {
+ name = "ext___ext_1.4.0.tgz";
+ path = fetchurl {
+ name = "ext___ext_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz";
+ sha1 = "89ae7a07158f79d35517882904324077e4379244";
+ };
+ }
+
+ {
+ name = "extend_shallow___extend_shallow_2.0.1.tgz";
+ path = fetchurl {
+ name = "extend_shallow___extend_shallow_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz";
+ sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
+ };
+ }
+
+ {
+ name = "extend_shallow___extend_shallow_3.0.2.tgz";
+ path = fetchurl {
+ name = "extend_shallow___extend_shallow_3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz";
+ sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
+ };
+ }
+
+ {
+ name = "extend___extend_3.0.2.tgz";
+ path = fetchurl {
+ name = "extend___extend_3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
+ sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
+ };
+ }
+
+ {
+ name = "extglob___extglob_0.3.2.tgz";
+ path = fetchurl {
+ name = "extglob___extglob_0.3.2.tgz";
+ url = "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz";
+ sha1 = "2e18ff3d2f49ab2765cec9023f011daa8d8349a1";
+ };
+ }
+
+ {
+ name = "extglob___extglob_2.0.4.tgz";
+ path = fetchurl {
+ name = "extglob___extglob_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz";
+ sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543";
+ };
+ }
+
+ {
+ name = "extsprintf___extsprintf_1.3.0.tgz";
+ path = fetchurl {
+ name = "extsprintf___extsprintf_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
+ sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+ };
+ }
+
+ {
+ name = "extsprintf___extsprintf_1.4.0.tgz";
+ path = fetchurl {
+ name = "extsprintf___extsprintf_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
+ sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
+ };
+ }
+
+ {
+ name = "fancy_log___fancy_log_1.3.3.tgz";
+ path = fetchurl {
+ name = "fancy_log___fancy_log_1.3.3.tgz";
+ url = "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz";
+ sha1 = "dbc19154f558690150a23953a0adbd035be45fc7";
+ };
+ }
+
+ {
+ name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
+ path = fetchurl {
+ name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
+ sha1 = "545145077c501491e33b15ec408c294376e94ae4";
+ };
+ }
+
+ {
+ name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz";
+ path = fetchurl {
+ name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
+ sha1 = "874bf69c6f404c2b5d99c481341399fd55892633";
+ };
+ }
+
+ {
+ name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
+ path = fetchurl {
+ name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
+ sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
+ };
+ }
+
+ {
+ name = "faye_websocket___faye_websocket_0.7.3.tgz";
+ path = fetchurl {
+ name = "faye_websocket___faye_websocket_0.7.3.tgz";
+ url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.7.3.tgz";
+ sha1 = "cc4074c7f4a4dfd03af54dd65c354b135132ce11";
+ };
+ }
+
+ {
+ name = "file_uri_to_path___file_uri_to_path_1.0.0.tgz";
+ path = fetchurl {
+ name = "file_uri_to_path___file_uri_to_path_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz";
+ sha1 = "553a7b8446ff6f684359c445f1e37a05dacc33dd";
+ };
+ }
+
+ {
+ name = "filename_regex___filename_regex_2.0.1.tgz";
+ path = fetchurl {
+ name = "filename_regex___filename_regex_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz";
+ sha1 = "c1c4b9bee3e09725ddb106b75c1e301fe2f18b26";
+ };
+ }
+
+ {
+ name = "fill_range___fill_range_2.2.4.tgz";
+ path = fetchurl {
+ name = "fill_range___fill_range_2.2.4.tgz";
+ url = "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz";
+ sha1 = "eb1e773abb056dcd8df2bfdf6af59b8b3a936565";
+ };
+ }
+
+ {
+ name = "fill_range___fill_range_4.0.0.tgz";
+ path = fetchurl {
+ name = "fill_range___fill_range_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz";
+ sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
+ };
+ }
+
+ {
+ name = "finalhandler___finalhandler_1.1.2.tgz";
+ path = fetchurl {
+ name = "finalhandler___finalhandler_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz";
+ sha1 = "b7e7d000ffd11938d0fdb053506f6ebabe9f587d";
+ };
+ }
+
+ {
+ name = "find_index___find_index_0.1.1.tgz";
+ path = fetchurl {
+ name = "find_index___find_index_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz";
+ sha1 = "675d358b2ca3892d795a1ab47232f8b6e2e0dde4";
+ };
+ }
+
+ {
+ name = "find_up___find_up_1.1.2.tgz";
+ path = fetchurl {
+ name = "find_up___find_up_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz";
+ sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f";
+ };
+ }
+
+ {
+ name = "findup_sync___findup_sync_2.0.0.tgz";
+ path = fetchurl {
+ name = "findup_sync___findup_sync_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz";
+ sha1 = "9326b1488c22d1a6088650a86901b2d9a90a2cbc";
+ };
+ }
+
+ {
+ name = "fined___fined_1.2.0.tgz";
+ path = fetchurl {
+ name = "fined___fined_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz";
+ sha1 = "d00beccf1aa2b475d16d423b0238b713a2c4a37b";
+ };
+ }
+
+ {
+ name = "first_chunk_stream___first_chunk_stream_1.0.0.tgz";
+ path = fetchurl {
+ name = "first_chunk_stream___first_chunk_stream_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz";
+ sha1 = "59bfb50cd905f60d7c394cd3d9acaab4e6ad934e";
+ };
+ }
+
+ {
+ name = "fixtures2js___fixtures2js_0.0.0.tgz";
+ path = fetchurl {
+ name = "fixtures2js___fixtures2js_0.0.0.tgz";
+ url = "https://registry.yarnpkg.com/fixtures2js/-/fixtures2js-0.0.0.tgz";
+ sha1 = "602f7964c5b2963fe73224c8e4a3607d75c1b34f";
+ };
+ }
+
+ {
+ name = "flagged_respawn___flagged_respawn_1.0.1.tgz";
+ path = fetchurl {
+ name = "flagged_respawn___flagged_respawn_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz";
+ sha1 = "e7de6f1279ddd9ca9aac8a5971d618606b3aab41";
+ };
+ }
+
+ {
+ name = "follow_redirects___follow_redirects_1.11.0.tgz";
+ path = fetchurl {
+ name = "follow_redirects___follow_redirects_1.11.0.tgz";
+ url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz";
+ sha1 = "afa14f08ba12a52963140fe43212658897bc0ecb";
+ };
+ }
+
+ {
+ name = "for_in___for_in_1.0.2.tgz";
+ path = fetchurl {
+ name = "for_in___for_in_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz";
+ sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
+ };
+ }
+
+ {
+ name = "for_own___for_own_0.1.5.tgz";
+ path = fetchurl {
+ name = "for_own___for_own_0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz";
+ sha1 = "5265c681a4f294dabbf17c9509b6763aa84510ce";
+ };
+ }
+
+ {
+ name = "for_own___for_own_1.0.0.tgz";
+ path = fetchurl {
+ name = "for_own___for_own_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz";
+ sha1 = "c63332f415cedc4b04dbfe70cf836494c53cb44b";
+ };
+ }
+
+ {
+ name = "forever_agent___forever_agent_0.5.2.tgz";
+ path = fetchurl {
+ name = "forever_agent___forever_agent_0.5.2.tgz";
+ url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.5.2.tgz";
+ sha1 = "6d0e09c4921f94a27f63d3b49c5feff1ea4c5130";
+ };
+ }
+
+ {
+ name = "forever_agent___forever_agent_0.6.1.tgz";
+ path = fetchurl {
+ name = "forever_agent___forever_agent_0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
+ sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+ };
+ }
+
+ {
+ name = "fork_stream___fork_stream_0.0.4.tgz";
+ path = fetchurl {
+ name = "fork_stream___fork_stream_0.0.4.tgz";
+ url = "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz";
+ sha1 = "db849fce77f6708a5f8f386ae533a0907b54ae70";
+ };
+ }
+
+ {
+ name = "form_data___form_data_0.1.4.tgz";
+ path = fetchurl {
+ name = "form_data___form_data_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/form-data/-/form-data-0.1.4.tgz";
+ sha1 = "91abd788aba9702b1aabfa8bc01031a2ac9e3b12";
+ };
+ }
+
+ {
+ name = "form_data___form_data_0.2.0.tgz";
+ path = fetchurl {
+ name = "form_data___form_data_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/form-data/-/form-data-0.2.0.tgz";
+ sha1 = "26f8bc26da6440e299cbdcfb69035c4f77a6e466";
+ };
+ }
+
+ {
+ name = "form_data___form_data_2.3.3.tgz";
+ path = fetchurl {
+ name = "form_data___form_data_2.3.3.tgz";
+ url = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz";
+ sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
+ };
+ }
+
+ {
+ name = "fragment_cache___fragment_cache_0.2.1.tgz";
+ path = fetchurl {
+ name = "fragment_cache___fragment_cache_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz";
+ sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
+ };
+ }
+
+ {
+ name = "fresh___fresh_0.3.0.tgz";
+ path = fetchurl {
+ name = "fresh___fresh_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz";
+ sha1 = "651f838e22424e7566de161d8358caa199f83d4f";
+ };
+ }
+
+ {
+ name = "from___from_0.1.7.tgz";
+ path = fetchurl {
+ name = "from___from_0.1.7.tgz";
+ url = "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz";
+ sha1 = "83c60afc58b9c56997007ed1a768b3ab303a44fe";
+ };
+ }
+
+ {
+ name = "fs_access___fs_access_1.0.1.tgz";
+ path = fetchurl {
+ name = "fs_access___fs_access_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz";
+ sha1 = "d6a87f262271cefebec30c553407fb995da8777a";
+ };
+ }
+
+ {
+ name = "fs_minipass___fs_minipass_1.2.7.tgz";
+ path = fetchurl {
+ name = "fs_minipass___fs_minipass_1.2.7.tgz";
+ url = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz";
+ sha1 = "ccff8570841e7fe4265693da88936c55aed7f7c7";
+ };
+ }
+
+ {
+ name = "fs.realpath___fs.realpath_1.0.0.tgz";
+ path = fetchurl {
+ name = "fs.realpath___fs.realpath_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
+ sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+ };
+ }
+
+ {
+ name = "fsevents___fsevents_1.2.12.tgz";
+ path = fetchurl {
+ name = "fsevents___fsevents_1.2.12.tgz";
+ url = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz";
+ sha1 = "db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c";
+ };
+ }
+
+ {
+ name = "fstream_ignore___fstream_ignore_0.0.10.tgz";
+ path = fetchurl {
+ name = "fstream_ignore___fstream_ignore_0.0.10.tgz";
+ url = "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-0.0.10.tgz";
+ sha1 = "b10f8f522cc55415f80b41f7d3a32e6cba254e8c";
+ };
+ }
+
+ {
+ name = "fstream___fstream_1.0.12.tgz";
+ path = fetchurl {
+ name = "fstream___fstream_1.0.12.tgz";
+ url = "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz";
+ sha1 = "4e8ba8ee2d48be4f7d0de505455548eae5932045";
+ };
+ }
+
+ {
+ name = "fstream___fstream_0.1.31.tgz";
+ path = fetchurl {
+ name = "fstream___fstream_0.1.31.tgz";
+ url = "https://registry.yarnpkg.com/fstream/-/fstream-0.1.31.tgz";
+ sha1 = "7337f058fbbbbefa8c9f561a28cab0849202c988";
+ };
+ }
+
+ {
+ name = "function_bind___function_bind_1.1.1.tgz";
+ path = fetchurl {
+ name = "function_bind___function_bind_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
+ sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
+ };
+ }
+
+ {
+ name = "gauge___gauge_2.7.4.tgz";
+ path = fetchurl {
+ name = "gauge___gauge_2.7.4.tgz";
+ url = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz";
+ sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
+ };
+ }
+
+ {
+ name = "gaze___gaze_0.5.2.tgz";
+ path = fetchurl {
+ name = "gaze___gaze_0.5.2.tgz";
+ url = "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz";
+ sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f";
+ };
+ }
+
+ {
+ name = "gaze___gaze_1.1.3.tgz";
+ path = fetchurl {
+ name = "gaze___gaze_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz";
+ sha1 = "c441733e13b927ac8c0ff0b4c3b033f28812924a";
+ };
+ }
+
+ {
+ name = "get_caller_file___get_caller_file_1.0.3.tgz";
+ path = fetchurl {
+ name = "get_caller_file___get_caller_file_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz";
+ sha1 = "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a";
+ };
+ }
+
+ {
+ name = "get_stdin___get_stdin_4.0.1.tgz";
+ path = fetchurl {
+ name = "get_stdin___get_stdin_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz";
+ sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe";
+ };
+ }
+
+ {
+ name = "get_value___get_value_2.0.6.tgz";
+ path = fetchurl {
+ name = "get_value___get_value_2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz";
+ sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
+ };
+ }
+
+ {
+ name = "getpass___getpass_0.1.7.tgz";
+ path = fetchurl {
+ name = "getpass___getpass_0.1.7.tgz";
+ url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
+ sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+ };
+ }
+
+ {
+ name = "glob_base___glob_base_0.3.0.tgz";
+ path = fetchurl {
+ name = "glob_base___glob_base_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz";
+ sha1 = "dbb164f6221b1c0b1ccf82aea328b497df0ea3c4";
+ };
+ }
+
+ {
+ name = "glob_parent___glob_parent_2.0.0.tgz";
+ path = fetchurl {
+ name = "glob_parent___glob_parent_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz";
+ sha1 = "81383d72db054fcccf5336daa902f182f6edbb28";
+ };
+ }
+
+ {
+ name = "glob_stream___glob_stream_3.1.18.tgz";
+ path = fetchurl {
+ name = "glob_stream___glob_stream_3.1.18.tgz";
+ url = "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz";
+ sha1 = "9170a5f12b790306fdfe598f313f8f7954fd143b";
+ };
+ }
+
+ {
+ name = "glob_watcher___glob_watcher_0.0.6.tgz";
+ path = fetchurl {
+ name = "glob_watcher___glob_watcher_0.0.6.tgz";
+ url = "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz";
+ sha1 = "b95b4a8df74b39c83298b0c05c978b4d9a3b710b";
+ };
+ }
+
+ {
+ name = "glob2base___glob2base_0.0.12.tgz";
+ path = fetchurl {
+ name = "glob2base___glob2base_0.0.12.tgz";
+ url = "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz";
+ sha1 = "9d419b3e28f12e83a362164a277055922c9c0d56";
+ };
+ }
+
+ {
+ name = "glob___glob_4.5.3.tgz";
+ path = fetchurl {
+ name = "glob___glob_4.5.3.tgz";
+ url = "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz";
+ sha1 = "c6cb73d3226c1efef04de3c56d012f03377ee15f";
+ };
+ }
+
+ {
+ name = "glob___glob_5.0.15.tgz";
+ path = fetchurl {
+ name = "glob___glob_5.0.15.tgz";
+ url = "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz";
+ sha1 = "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1";
+ };
+ }
+
+ {
+ name = "glob___glob_6.0.4.tgz";
+ path = fetchurl {
+ name = "glob___glob_6.0.4.tgz";
+ url = "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz";
+ sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
+ };
+ }
+
+ {
+ name = "glob___glob_7.1.6.tgz";
+ path = fetchurl {
+ name = "glob___glob_7.1.6.tgz";
+ url = "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz";
+ sha1 = "141f33b81a7c2492e125594307480c46679278a6";
+ };
+ }
+
+ {
+ name = "glob___glob_3.1.21.tgz";
+ path = fetchurl {
+ name = "glob___glob_3.1.21.tgz";
+ url = "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz";
+ sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd";
+ };
+ }
+
+ {
+ name = "glob___glob_3.2.11.tgz";
+ path = fetchurl {
+ name = "glob___glob_3.2.11.tgz";
+ url = "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz";
+ sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d";
+ };
+ }
+
+ {
+ name = "glob___glob_4.0.6.tgz";
+ path = fetchurl {
+ name = "glob___glob_4.0.6.tgz";
+ url = "https://registry.yarnpkg.com/glob/-/glob-4.0.6.tgz";
+ sha1 = "695c50bdd4e2fb5c5d370b091f388d3707e291a7";
+ };
+ }
+
+ {
+ name = "global_modules___global_modules_1.0.0.tgz";
+ path = fetchurl {
+ name = "global_modules___global_modules_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz";
+ sha1 = "6d770f0eb523ac78164d72b5e71a8877265cc3ea";
+ };
+ }
+
+ {
+ name = "global_prefix___global_prefix_1.0.2.tgz";
+ path = fetchurl {
+ name = "global_prefix___global_prefix_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz";
+ sha1 = "dbf743c6c14992593c655568cb66ed32c0122ebe";
+ };
+ }
+
+ {
+ name = "globule___globule_1.3.1.tgz";
+ path = fetchurl {
+ name = "globule___globule_1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz";
+ sha1 = "90a25338f22b7fbeb527cee63c629aea754d33b9";
+ };
+ }
+
+ {
+ name = "globule___globule_0.1.0.tgz";
+ path = fetchurl {
+ name = "globule___globule_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz";
+ sha1 = "d9c8edde1da79d125a151b79533b978676346ae5";
+ };
+ }
+
+ {
+ name = "glogg___glogg_1.0.2.tgz";
+ path = fetchurl {
+ name = "glogg___glogg_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz";
+ sha1 = "2d7dd702beda22eb3bffadf880696da6d846313f";
+ };
+ }
+
+ {
+ name = "got___got_3.3.1.tgz";
+ path = fetchurl {
+ name = "got___got_3.3.1.tgz";
+ url = "https://registry.yarnpkg.com/got/-/got-3.3.1.tgz";
+ sha1 = "e5d0ed4af55fc3eef4d56007769d98192bcb2eca";
+ };
+ }
+
+ {
+ name = "graceful_fs___graceful_fs_3.0.12.tgz";
+ path = fetchurl {
+ name = "graceful_fs___graceful_fs_3.0.12.tgz";
+ url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.12.tgz";
+ sha1 = "0034947ce9ed695ec8ab0b854bc919e82b1ffaef";
+ };
+ }
+
+ {
+ name = "graceful_fs___graceful_fs_4.2.3.tgz";
+ path = fetchurl {
+ name = "graceful_fs___graceful_fs_4.2.3.tgz";
+ url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz";
+ sha1 = "4a12ff1b60376ef09862c2093edd908328be8423";
+ };
+ }
+
+ {
+ name = "graceful_fs___graceful_fs_1.2.3.tgz";
+ path = fetchurl {
+ name = "graceful_fs___graceful_fs_1.2.3.tgz";
+ url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz";
+ sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364";
+ };
+ }
+
+ {
+ name = "graceful_fs___graceful_fs_2.0.3.tgz";
+ path = fetchurl {
+ name = "graceful_fs___graceful_fs_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-2.0.3.tgz";
+ sha1 = "7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0";
+ };
+ }
+
+ {
+ name = "guanlecoja___guanlecoja_0.9.2.tgz";
+ path = fetchurl {
+ name = "guanlecoja___guanlecoja_0.9.2.tgz";
+ url = "https://registry.yarnpkg.com/guanlecoja/-/guanlecoja-0.9.2.tgz";
+ sha1 = "03febe92d9e7575a633b4d5ad8d19f5ee1cdf326";
+ };
+ }
+
+ {
+ name = "gulp_angular_templatecache___gulp_angular_templatecache_1.9.1.tgz";
+ path = fetchurl {
+ name = "gulp_angular_templatecache___gulp_angular_templatecache_1.9.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp-angular-templatecache/-/gulp-angular-templatecache-1.9.1.tgz";
+ sha1 = "60f631e97aaaa765d942e37042e4bfbb1a5df244";
+ };
+ }
+
+ {
+ name = "gulp_bower_deps___gulp_bower_deps_0.3.3.tgz";
+ path = fetchurl {
+ name = "gulp_bower_deps___gulp_bower_deps_0.3.3.tgz";
+ url = "https://registry.yarnpkg.com/gulp-bower-deps/-/gulp-bower-deps-0.3.3.tgz";
+ sha1 = "2109fe3fbee35069f67312bb977e591d890296cd";
+ };
+ }
+
+ {
+ name = "gulp_browserify___gulp_browserify_0.5.1.tgz";
+ path = fetchurl {
+ name = "gulp_browserify___gulp_browserify_0.5.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp-browserify/-/gulp-browserify-0.5.1.tgz";
+ sha1 = "820108ac2554a954adb8be17d23958b0c04be083";
+ };
+ }
+
+ {
+ name = "gulp_cached___gulp_cached_1.1.1.tgz";
+ path = fetchurl {
+ name = "gulp_cached___gulp_cached_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp-cached/-/gulp-cached-1.1.1.tgz";
+ sha1 = "fe7cd4f87f37601e6073cfedee5c2bdaf8b6acce";
+ };
+ }
+
+ {
+ name = "gulp_clean_css___gulp_clean_css_2.4.0.tgz";
+ path = fetchurl {
+ name = "gulp_clean_css___gulp_clean_css_2.4.0.tgz";
+ url = "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-2.4.0.tgz";
+ sha1 = "2ae48109fe83ccc967ff5ad53c044949a4863b36";
+ };
+ }
+
+ {
+ name = "gulp_coffee___gulp_coffee_2.3.5.tgz";
+ path = fetchurl {
+ name = "gulp_coffee___gulp_coffee_2.3.5.tgz";
+ url = "https://registry.yarnpkg.com/gulp-coffee/-/gulp-coffee-2.3.5.tgz";
+ sha1 = "8c64e9ac884e1bab4e20b66ac7c386a816859041";
+ };
+ }
+
+ {
+ name = "gulp_concat___gulp_concat_2.6.0.tgz";
+ path = fetchurl {
+ name = "gulp_concat___gulp_concat_2.6.0.tgz";
+ url = "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.0.tgz";
+ sha1 = "585cfb115411f348773131140566b6a81c69cb91";
+ };
+ }
+
+ {
+ name = "gulp_concat___gulp_concat_2.6.1.tgz";
+ path = fetchurl {
+ name = "gulp_concat___gulp_concat_2.6.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz";
+ sha1 = "633d16c95d88504628ad02665663cee5a4793353";
+ };
+ }
+
+ {
+ name = "gulp_fixtures2js___gulp_fixtures2js_0.0.1.tgz";
+ path = fetchurl {
+ name = "gulp_fixtures2js___gulp_fixtures2js_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp-fixtures2js/-/gulp-fixtures2js-0.0.1.tgz";
+ sha1 = "4a3cbb4404bdfab92f7d2b6e09de2bfd0ae78506";
+ };
+ }
+
+ {
+ name = "gulp_footer___gulp_footer_1.0.5.tgz";
+ path = fetchurl {
+ name = "gulp_footer___gulp_footer_1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/gulp-footer/-/gulp-footer-1.0.5.tgz";
+ sha1 = "e84ca777e266be7bbc2d45d2df0e7eba8dfa3e54";
+ };
+ }
+
+ {
+ name = "gulp_footer___gulp_footer_1.1.2.tgz";
+ path = fetchurl {
+ name = "gulp_footer___gulp_footer_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/gulp-footer/-/gulp-footer-1.1.2.tgz";
+ sha1 = "7fe28324ec67e3d618d31e0f5ea2ee5b454f6877";
+ };
+ }
+
+ {
+ name = "gulp_header___gulp_header_1.8.2.tgz";
+ path = fetchurl {
+ name = "gulp_header___gulp_header_1.8.2.tgz";
+ url = "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.2.tgz";
+ sha1 = "3ab222f53719d2d03d81d9134252fe7d52425aa4";
+ };
+ }
+
+ {
+ name = "gulp_header___gulp_header_1.8.12.tgz";
+ path = fetchurl {
+ name = "gulp_header___gulp_header_1.8.12.tgz";
+ url = "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz";
+ sha1 = "ad306be0066599127281c4f8786660e705080a84";
+ };
+ }
+
+ {
+ name = "gulp_help___gulp_help_1.6.1.tgz";
+ path = fetchurl {
+ name = "gulp_help___gulp_help_1.6.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp-help/-/gulp-help-1.6.1.tgz";
+ sha1 = "261db186e18397fef3f6a2c22e9c315bfa88ae0c";
+ };
+ }
+
+ {
+ name = "gulp_if___gulp_if_2.0.2.tgz";
+ path = fetchurl {
+ name = "gulp_if___gulp_if_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/gulp-if/-/gulp-if-2.0.2.tgz";
+ sha1 = "a497b7e7573005041caa2bc8b7dda3c80444d629";
+ };
+ }
+
+ {
+ name = "gulp_less___gulp_less_1.3.9.tgz";
+ path = fetchurl {
+ name = "gulp_less___gulp_less_1.3.9.tgz";
+ url = "https://registry.yarnpkg.com/gulp-less/-/gulp-less-1.3.9.tgz";
+ sha1 = "e129750f236693ead5b522af311cc33eeff1910e";
+ };
+ }
+
+ {
+ name = "gulp_livereload___gulp_livereload_3.8.1.tgz";
+ path = fetchurl {
+ name = "gulp_livereload___gulp_livereload_3.8.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp-livereload/-/gulp-livereload-3.8.1.tgz";
+ sha1 = "00f744b2d749d3e9e3746589c8a44acac779b50f";
+ };
+ }
+
+ {
+ name = "gulp_match___gulp_match_1.1.0.tgz";
+ path = fetchurl {
+ name = "gulp_match___gulp_match_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.1.0.tgz";
+ sha1 = "552b7080fc006ee752c90563f9fec9d61aafdf4f";
+ };
+ }
+
+ {
+ name = "gulp_ng_annotate___gulp_ng_annotate_1.1.0.tgz";
+ path = fetchurl {
+ name = "gulp_ng_annotate___gulp_ng_annotate_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/gulp-ng-annotate/-/gulp-ng-annotate-1.1.0.tgz";
+ sha1 = "5e801be073d8f6d343c4ff65b71717b90fac13ce";
+ };
+ }
+
+ {
+ name = "gulp_ng_classify___gulp_ng_classify_4.0.1.tgz";
+ path = fetchurl {
+ name = "gulp_ng_classify___gulp_ng_classify_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp-ng-classify/-/gulp-ng-classify-4.0.1.tgz";
+ sha1 = "3019161127c35c317ea08dc2a65ea35b592dbfd7";
+ };
+ }
+
+ {
+ name = "gulp_pug___gulp_pug_3.3.0.tgz";
+ path = fetchurl {
+ name = "gulp_pug___gulp_pug_3.3.0.tgz";
+ url = "https://registry.yarnpkg.com/gulp-pug/-/gulp-pug-3.3.0.tgz";
+ sha1 = "46982c1439c094c360542ed8ba5c882d3bb711cf";
+ };
+ }
+
+ {
+ name = "gulp_remember___gulp_remember_0.3.1.tgz";
+ path = fetchurl {
+ name = "gulp_remember___gulp_remember_0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp-remember/-/gulp-remember-0.3.1.tgz";
+ sha1 = "5776b6f64c5a1c5c4d4555406723ec8e2b0407e7";
+ };
+ }
+
+ {
+ name = "gulp_rename___gulp_rename_1.2.3.tgz";
+ path = fetchurl {
+ name = "gulp_rename___gulp_rename_1.2.3.tgz";
+ url = "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.3.tgz";
+ sha1 = "37b75298e9d3e6c0fe9ac4eac13ce3be5434646b";
+ };
+ }
+
+ {
+ name = "gulp_replace___gulp_replace_0.5.4.tgz";
+ path = fetchurl {
+ name = "gulp_replace___gulp_replace_0.5.4.tgz";
+ url = "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-0.5.4.tgz";
+ sha1 = "69a67914bbd13c562bff14f504a403796aa0daa9";
+ };
+ }
+
+ {
+ name = "gulp_sass___gulp_sass_3.2.1.tgz";
+ path = fetchurl {
+ name = "gulp_sass___gulp_sass_3.2.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-3.2.1.tgz";
+ sha1 = "2e3688a96fd8be1c0c01340750c191b2e79fab94";
+ };
+ }
+
+ {
+ name = "gulp_sourcemaps___gulp_sourcemaps_1.6.0.tgz";
+ path = fetchurl {
+ name = "gulp_sourcemaps___gulp_sourcemaps_1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz";
+ sha1 = "b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c";
+ };
+ }
+
+ {
+ name = "gulp_uglify___gulp_uglify_1.4.2.tgz";
+ path = fetchurl {
+ name = "gulp_uglify___gulp_uglify_1.4.2.tgz";
+ url = "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-1.4.2.tgz";
+ sha1 = "2807ea1016e4962c37766c02feeb5501818857c3";
+ };
+ }
+
+ {
+ name = "gulp_util___gulp_util_3.0.8.tgz";
+ path = fetchurl {
+ name = "gulp_util___gulp_util_3.0.8.tgz";
+ url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz";
+ sha1 = "0054e1e744502e27c04c187c3ecc505dd54bbb4f";
+ };
+ }
+
+ {
+ name = "gulp_util___gulp_util_3.0.7.tgz";
+ path = fetchurl {
+ name = "gulp_util___gulp_util_3.0.7.tgz";
+ url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz";
+ sha1 = "78925c4b8f8b49005ac01a011c557e6218941cbb";
+ };
+ }
+
+ {
+ name = "gulp_util___gulp_util_2.2.20.tgz";
+ path = fetchurl {
+ name = "gulp_util___gulp_util_2.2.20.tgz";
+ url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-2.2.20.tgz";
+ sha1 = "d7146e5728910bd8f047a6b0b1e549bc22dbd64c";
+ };
+ }
+
+ {
+ name = "gulp_wrap___gulp_wrap_0.8.0.tgz";
+ path = fetchurl {
+ name = "gulp_wrap___gulp_wrap_0.8.0.tgz";
+ url = "https://registry.yarnpkg.com/gulp-wrap/-/gulp-wrap-0.8.0.tgz";
+ sha1 = "c41ce89a374947788b78c9e67f33bbe838c69b86";
+ };
+ }
+
+ {
+ name = "gulp___gulp_3.9.1.tgz";
+ path = fetchurl {
+ name = "gulp___gulp_3.9.1.tgz";
+ url = "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz";
+ sha1 = "571ce45928dd40af6514fc4011866016c13845b4";
+ };
+ }
+
+ {
+ name = "gulplog___gulplog_1.0.0.tgz";
+ path = fetchurl {
+ name = "gulplog___gulplog_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz";
+ sha1 = "e28c4d45d05ecbbed818363ce8f9c5926229ffe5";
+ };
+ }
+
+ {
+ name = "handlebars___handlebars_4.7.3.tgz";
+ path = fetchurl {
+ name = "handlebars___handlebars_4.7.3.tgz";
+ url = "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.3.tgz";
+ sha1 = "8ece2797826886cf8082d1726ff21d2a022550ee";
+ };
+ }
+
+ {
+ name = "handlebars___handlebars_1.3.0.tgz";
+ path = fetchurl {
+ name = "handlebars___handlebars_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/handlebars/-/handlebars-1.3.0.tgz";
+ sha1 = "9e9b130a93e389491322d975cf3ec1818c37ce34";
+ };
+ }
+
+ {
+ name = "har_schema___har_schema_2.0.0.tgz";
+ path = fetchurl {
+ name = "har_schema___har_schema_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
+ sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+ };
+ }
+
+ {
+ name = "har_validator___har_validator_5.1.3.tgz";
+ path = fetchurl {
+ name = "har_validator___har_validator_5.1.3.tgz";
+ url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz";
+ sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
+ };
+ }
+
+ {
+ name = "has_ansi___has_ansi_0.1.0.tgz";
+ path = fetchurl {
+ name = "has_ansi___has_ansi_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz";
+ sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e";
+ };
+ }
+
+ {
+ name = "has_ansi___has_ansi_2.0.0.tgz";
+ path = fetchurl {
+ name = "has_ansi___has_ansi_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz";
+ sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
+ };
+ }
+
+ {
+ name = "has_binary___has_binary_0.1.7.tgz";
+ path = fetchurl {
+ name = "has_binary___has_binary_0.1.7.tgz";
+ url = "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz";
+ sha1 = "68e61eb16210c9545a0a5cce06a873912fe1e68c";
+ };
+ }
+
+ {
+ name = "has_color___has_color_0.1.7.tgz";
+ path = fetchurl {
+ name = "has_color___has_color_0.1.7.tgz";
+ url = "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz";
+ sha1 = "67144a5260c34fc3cca677d041daf52fe7b78b2f";
+ };
+ }
+
+ {
+ name = "has_cors___has_cors_1.1.0.tgz";
+ path = fetchurl {
+ name = "has_cors___has_cors_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz";
+ sha1 = "5e474793f7ea9843d1bb99c23eef49ff126fff39";
+ };
+ }
+
+ {
+ name = "has_flag___has_flag_1.0.0.tgz";
+ path = fetchurl {
+ name = "has_flag___has_flag_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz";
+ sha1 = "9d9e793165ce017a00f00418c43f942a7b1d11fa";
+ };
+ }
+
+ {
+ name = "has_flag___has_flag_4.0.0.tgz";
+ path = fetchurl {
+ name = "has_flag___has_flag_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz";
+ sha1 = "944771fd9c81c81265c4d6941860da06bb59479b";
+ };
+ }
+
+ {
+ name = "has_gulplog___has_gulplog_0.1.0.tgz";
+ path = fetchurl {
+ name = "has_gulplog___has_gulplog_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz";
+ sha1 = "6414c82913697da51590397dafb12f22967811ce";
+ };
+ }
+
+ {
+ name = "has_unicode___has_unicode_2.0.1.tgz";
+ path = fetchurl {
+ name = "has_unicode___has_unicode_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz";
+ sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
+ };
+ }
+
+ {
+ name = "has_value___has_value_0.3.1.tgz";
+ path = fetchurl {
+ name = "has_value___has_value_0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz";
+ sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
+ };
+ }
+
+ {
+ name = "has_value___has_value_1.0.0.tgz";
+ path = fetchurl {
+ name = "has_value___has_value_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz";
+ sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
+ };
+ }
+
+ {
+ name = "has_values___has_values_0.1.4.tgz";
+ path = fetchurl {
+ name = "has_values___has_values_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz";
+ sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
+ };
+ }
+
+ {
+ name = "has_values___has_values_1.0.0.tgz";
+ path = fetchurl {
+ name = "has_values___has_values_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz";
+ sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
+ };
+ }
+
+ {
+ name = "has___has_1.0.3.tgz";
+ path = fetchurl {
+ name = "has___has_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
+ sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
+ };
+ }
+
+ {
+ name = "hawk___hawk_1.1.1.tgz";
+ path = fetchurl {
+ name = "hawk___hawk_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz";
+ sha1 = "87cd491f9b46e4e2aeaca335416766885d2d1ed9";
+ };
+ }
+
+ {
+ name = "hawk___hawk_1.0.0.tgz";
+ path = fetchurl {
+ name = "hawk___hawk_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/hawk/-/hawk-1.0.0.tgz";
+ sha1 = "b90bb169807285411da7ffcb8dd2598502d3b52d";
+ };
+ }
+
+ {
+ name = "hoek___hoek_0.9.1.tgz";
+ path = fetchurl {
+ name = "hoek___hoek_0.9.1.tgz";
+ url = "https://registry.yarnpkg.com/hoek/-/hoek-0.9.1.tgz";
+ sha1 = "3d322462badf07716ea7eb85baf88079cddce505";
+ };
+ }
+
+ {
+ name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz";
+ path = fetchurl {
+ name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz";
+ sha1 = "743298cef4e5af3e194161fbadcc2151d3a058e8";
+ };
+ }
+
+ {
+ name = "hosted_git_info___hosted_git_info_2.8.8.tgz";
+ path = fetchurl {
+ name = "hosted_git_info___hosted_git_info_2.8.8.tgz";
+ url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz";
+ sha1 = "7539bd4bc1e0e0a895815a2e0262420b12858488";
+ };
+ }
+
+ {
+ name = "http_browserify___http_browserify_1.3.2.tgz";
+ path = fetchurl {
+ name = "http_browserify___http_browserify_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.3.2.tgz";
+ sha1 = "b562c34479349a690d7a6597df495aefa8c604f5";
+ };
+ }
+
+ {
+ name = "http_errors___http_errors_1.7.2.tgz";
+ path = fetchurl {
+ name = "http_errors___http_errors_1.7.2.tgz";
+ url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz";
+ sha1 = "4f5029cf13239f31036e5b2e55292bcfbcc85c8f";
+ };
+ }
+
+ {
+ name = "http_errors___http_errors_1.3.1.tgz";
+ path = fetchurl {
+ name = "http_errors___http_errors_1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz";
+ sha1 = "197e22cdebd4198585e8694ef6786197b91ed942";
+ };
+ }
+
+ {
+ name = "http_parser_js___http_parser_js_0.4.10.tgz";
+ path = fetchurl {
+ name = "http_parser_js___http_parser_js_0.4.10.tgz";
+ url = "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz";
+ sha1 = "92c9c1374c35085f75db359ec56cc257cbb93fa4";
+ };
+ }
+
+ {
+ name = "http_proxy___http_proxy_1.18.0.tgz";
+ path = fetchurl {
+ name = "http_proxy___http_proxy_1.18.0.tgz";
+ url = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz";
+ sha1 = "dbe55f63e75a347db7f3d99974f2692a314a6a3a";
+ };
+ }
+
+ {
+ name = "http_signature___http_signature_0.10.1.tgz";
+ path = fetchurl {
+ name = "http_signature___http_signature_0.10.1.tgz";
+ url = "https://registry.yarnpkg.com/http-signature/-/http-signature-0.10.1.tgz";
+ sha1 = "4fbdac132559aa8323121e540779c0a012b27e66";
+ };
+ }
+
+ {
+ name = "http_signature___http_signature_1.2.0.tgz";
+ path = fetchurl {
+ name = "http_signature___http_signature_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
+ sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+ };
+ }
+
+ {
+ name = "https_browserify___https_browserify_0.0.1.tgz";
+ path = fetchurl {
+ name = "https_browserify___https_browserify_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz";
+ sha1 = "3f91365cabe60b77ed0ebba24b454e3e09d95a82";
+ };
+ }
+
+ {
+ name = "iconv_lite___iconv_lite_0.4.13.tgz";
+ path = fetchurl {
+ name = "iconv_lite___iconv_lite_0.4.13.tgz";
+ url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz";
+ sha1 = "1f88aba4ab0b1508e8312acc39345f36e992e2f2";
+ };
+ }
+
+ {
+ name = "iconv_lite___iconv_lite_0.4.24.tgz";
+ path = fetchurl {
+ name = "iconv_lite___iconv_lite_0.4.24.tgz";
+ url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz";
+ sha1 = "2022b4b25fbddc21d2f524974a474aafe733908b";
+ };
+ }
+
+ {
+ name = "ieee754___ieee754_1.1.13.tgz";
+ path = fetchurl {
+ name = "ieee754___ieee754_1.1.13.tgz";
+ url = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz";
+ sha1 = "ec168558e95aa181fd87d37f55c32bbcb6708b84";
+ };
+ }
+
+ {
+ name = "ignore_walk___ignore_walk_3.0.3.tgz";
+ path = fetchurl {
+ name = "ignore_walk___ignore_walk_3.0.3.tgz";
+ url = "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz";
+ sha1 = "017e2447184bfeade7c238e4aefdd1e8f95b1e37";
+ };
+ }
+
+ {
+ name = "in_publish___in_publish_2.0.1.tgz";
+ path = fetchurl {
+ name = "in_publish___in_publish_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz";
+ sha1 = "948b1a535c8030561cea522f73f78f4be357e00c";
+ };
+ }
+
+ {
+ name = "indent_string___indent_string_2.1.0.tgz";
+ path = fetchurl {
+ name = "indent_string___indent_string_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz";
+ sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80";
+ };
+ }
+
+ {
+ name = "indexof___indexof_0.0.1.tgz";
+ path = fetchurl {
+ name = "indexof___indexof_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz";
+ sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
+ };
+ }
+
+ {
+ name = "infinity_agent___infinity_agent_2.0.3.tgz";
+ path = fetchurl {
+ name = "infinity_agent___infinity_agent_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/infinity-agent/-/infinity-agent-2.0.3.tgz";
+ sha1 = "45e0e2ff7a9eb030b27d62b74b3744b7a7ac4216";
+ };
+ }
+
+ {
+ name = "inflight___inflight_1.0.6.tgz";
+ path = fetchurl {
+ name = "inflight___inflight_1.0.6.tgz";
+ url = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
+ sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+ };
+ }
+
+ {
+ name = "inherits___inherits_1.0.2.tgz";
+ path = fetchurl {
+ name = "inherits___inherits_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz";
+ sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b";
+ };
+ }
+
+ {
+ name = "inherits___inherits_2.0.4.tgz";
+ path = fetchurl {
+ name = "inherits___inherits_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz";
+ sha1 = "0fa2c64f932917c3433a0ded55363aae37416b7c";
+ };
+ }
+
+ {
+ name = "inherits___inherits_2.0.1.tgz";
+ path = fetchurl {
+ name = "inherits___inherits_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz";
+ sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
+ };
+ }
+
+ {
+ name = "inherits___inherits_2.0.3.tgz";
+ path = fetchurl {
+ name = "inherits___inherits_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
+ sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+ };
+ }
+
+ {
+ name = "ini___ini_1.3.5.tgz";
+ path = fetchurl {
+ name = "ini___ini_1.3.5.tgz";
+ url = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz";
+ sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927";
+ };
+ }
+
+ {
+ name = "inline_source_map___inline_source_map_0.3.1.tgz";
+ path = fetchurl {
+ name = "inline_source_map___inline_source_map_0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.3.1.tgz";
+ sha1 = "a528b514e689fce90db3089e870d92f527acb5eb";
+ };
+ }
+
+ {
+ name = "inquirer___inquirer_0.4.1.tgz";
+ path = fetchurl {
+ name = "inquirer___inquirer_0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/inquirer/-/inquirer-0.4.1.tgz";
+ sha1 = "6cf74eb1a347f97a1a207bea8ad1c987d0ff4b81";
+ };
+ }
+
+ {
+ name = "inquirer___inquirer_0.5.1.tgz";
+ path = fetchurl {
+ name = "inquirer___inquirer_0.5.1.tgz";
+ url = "https://registry.yarnpkg.com/inquirer/-/inquirer-0.5.1.tgz";
+ sha1 = "e9f2cd1ee172c7a32e054b78a03d4ddb0d7707f1";
+ };
+ }
+
+ {
+ name = "insert_module_globals___insert_module_globals_6.0.0.tgz";
+ path = fetchurl {
+ name = "insert_module_globals___insert_module_globals_6.0.0.tgz";
+ url = "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-6.0.0.tgz";
+ sha1 = "ee8aeb9dee16819e33aa14588a558824af0c15dc";
+ };
+ }
+
+ {
+ name = "insight___insight_0.3.1.tgz";
+ path = fetchurl {
+ name = "insight___insight_0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/insight/-/insight-0.3.1.tgz";
+ sha1 = "1a14f32c06115c0850338c38a253d707b611d448";
+ };
+ }
+
+ {
+ name = "interpret___interpret_1.2.0.tgz";
+ path = fetchurl {
+ name = "interpret___interpret_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz";
+ sha1 = "d5061a6224be58e8083985f5014d844359576296";
+ };
+ }
+
+ {
+ name = "intersect___intersect_0.0.3.tgz";
+ path = fetchurl {
+ name = "intersect___intersect_0.0.3.tgz";
+ url = "https://registry.yarnpkg.com/intersect/-/intersect-0.0.3.tgz";
+ sha1 = "c1a4a5e5eac6ede4af7504cc07e0ada7bc9f4920";
+ };
+ }
+
+ {
+ name = "invert_kv___invert_kv_1.0.0.tgz";
+ path = fetchurl {
+ name = "invert_kv___invert_kv_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz";
+ sha1 = "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6";
+ };
+ }
+
+ {
+ name = "is_absolute___is_absolute_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_absolute___is_absolute_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz";
+ sha1 = "395e1ae84b11f26ad1795e73c17378e48a301576";
+ };
+ }
+
+ {
+ name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
+ path = fetchurl {
+ name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
+ url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
+ sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
+ };
+ }
+
+ {
+ name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
+ sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656";
+ };
+ }
+
+ {
+ name = "is_arrayish___is_arrayish_0.2.1.tgz";
+ path = fetchurl {
+ name = "is_arrayish___is_arrayish_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
+ sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
+ };
+ }
+
+ {
+ name = "is_binary_path___is_binary_path_1.0.1.tgz";
+ path = fetchurl {
+ name = "is_binary_path___is_binary_path_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz";
+ sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
+ };
+ }
+
+ {
+ name = "is_buffer___is_buffer_1.1.6.tgz";
+ path = fetchurl {
+ name = "is_buffer___is_buffer_1.1.6.tgz";
+ url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
+ sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
+ };
+ }
+
+ {
+ name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
+ path = fetchurl {
+ name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
+ sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
+ };
+ }
+
+ {
+ name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
+ sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7";
+ };
+ }
+
+ {
+ name = "is_descriptor___is_descriptor_0.1.6.tgz";
+ path = fetchurl {
+ name = "is_descriptor___is_descriptor_0.1.6.tgz";
+ url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz";
+ sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca";
+ };
+ }
+
+ {
+ name = "is_descriptor___is_descriptor_1.0.2.tgz";
+ path = fetchurl {
+ name = "is_descriptor___is_descriptor_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz";
+ sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec";
+ };
+ }
+
+ {
+ name = "is_dotfile___is_dotfile_1.0.3.tgz";
+ path = fetchurl {
+ name = "is_dotfile___is_dotfile_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz";
+ sha1 = "a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1";
+ };
+ }
+
+ {
+ name = "is_equal_shallow___is_equal_shallow_0.1.3.tgz";
+ path = fetchurl {
+ name = "is_equal_shallow___is_equal_shallow_0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz";
+ sha1 = "2238098fc221de0bcfa5d9eac4c45d638aa1c534";
+ };
+ }
+
+ {
+ name = "is_expression___is_expression_3.0.0.tgz";
+ path = fetchurl {
+ name = "is_expression___is_expression_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz";
+ sha1 = "39acaa6be7fd1f3471dc42c7416e61c24317ac9f";
+ };
+ }
+
+ {
+ name = "is_extendable___is_extendable_0.1.1.tgz";
+ path = fetchurl {
+ name = "is_extendable___is_extendable_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz";
+ sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
+ };
+ }
+
+ {
+ name = "is_extendable___is_extendable_1.0.1.tgz";
+ path = fetchurl {
+ name = "is_extendable___is_extendable_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz";
+ sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4";
+ };
+ }
+
+ {
+ name = "is_extglob___is_extglob_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_extglob___is_extglob_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz";
+ sha1 = "ac468177c4943405a092fc8f29760c6ffc6206c0";
+ };
+ }
+
+ {
+ name = "is_extglob___is_extglob_2.1.1.tgz";
+ path = fetchurl {
+ name = "is_extglob___is_extglob_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz";
+ sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
+ };
+ }
+
+ {
+ name = "is_finite___is_finite_1.1.0.tgz";
+ path = fetchurl {
+ name = "is_finite___is_finite_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz";
+ sha1 = "904135c77fb42c0641d6aa1bcdbc4daa8da082f3";
+ };
+ }
+
+ {
+ name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
+ sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
+ };
+ }
+
+ {
+ name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
+ path = fetchurl {
+ name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+ sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+ };
+ }
+
+ {
+ name = "is_glob___is_glob_2.0.1.tgz";
+ path = fetchurl {
+ name = "is_glob___is_glob_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz";
+ sha1 = "d096f926a3ded5600f3fdfd91198cb0888c2d863";
+ };
+ }
+
+ {
+ name = "is_glob___is_glob_3.1.0.tgz";
+ path = fetchurl {
+ name = "is_glob___is_glob_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz";
+ sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
+ };
+ }
+
+ {
+ name = "is_npm___is_npm_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_npm___is_npm_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz";
+ sha1 = "f2fb63a65e4905b406c86072765a1a4dc793b9f4";
+ };
+ }
+
+ {
+ name = "is_number___is_number_0.1.1.tgz";
+ path = fetchurl {
+ name = "is_number___is_number_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz";
+ sha1 = "69a7af116963d47206ec9bd9b48a14216f1e3806";
+ };
+ }
+
+ {
+ name = "is_number___is_number_2.1.0.tgz";
+ path = fetchurl {
+ name = "is_number___is_number_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz";
+ sha1 = "01fcbbb393463a548f2f466cce16dece49db908f";
+ };
+ }
+
+ {
+ name = "is_number___is_number_3.0.0.tgz";
+ path = fetchurl {
+ name = "is_number___is_number_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz";
+ sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
+ };
+ }
+
+ {
+ name = "is_number___is_number_4.0.0.tgz";
+ path = fetchurl {
+ name = "is_number___is_number_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz";
+ sha1 = "0026e37f5454d73e356dfe6564699867c6a7f0ff";
+ };
+ }
+
+ {
+ name = "is_plain_object___is_plain_object_2.0.4.tgz";
+ path = fetchurl {
+ name = "is_plain_object___is_plain_object_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz";
+ sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677";
+ };
+ }
+
+ {
+ name = "is_posix_bracket___is_posix_bracket_0.1.1.tgz";
+ path = fetchurl {
+ name = "is_posix_bracket___is_posix_bracket_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz";
+ sha1 = "3334dc79774368e92f016e6fbc0a88f5cd6e6bc4";
+ };
+ }
+
+ {
+ name = "is_primitive___is_primitive_2.0.0.tgz";
+ path = fetchurl {
+ name = "is_primitive___is_primitive_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz";
+ sha1 = "207bab91638499c07b2adf240a41a87210034575";
+ };
+ }
+
+ {
+ name = "is_promise___is_promise_2.1.0.tgz";
+ path = fetchurl {
+ name = "is_promise___is_promise_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz";
+ sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
+ };
+ }
+
+ {
+ name = "is_redirect___is_redirect_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_redirect___is_redirect_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz";
+ sha1 = "1d03dded53bd8db0f30c26e4f95d36fc7c87dc24";
+ };
+ }
+
+ {
+ name = "is_regex___is_regex_1.0.5.tgz";
+ path = fetchurl {
+ name = "is_regex___is_regex_1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz";
+ sha1 = "39d589a358bf18967f726967120b8fc1aed74eae";
+ };
+ }
+
+ {
+ name = "is_relative___is_relative_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_relative___is_relative_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz";
+ sha1 = "a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d";
+ };
+ }
+
+ {
+ name = "is_root___is_root_0.1.0.tgz";
+ path = fetchurl {
+ name = "is_root___is_root_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-root/-/is-root-0.1.0.tgz";
+ sha1 = "825e394ab593df2d73c5d0092fce507270b53dcb";
+ };
+ }
+
+ {
+ name = "is_stream___is_stream_1.1.0.tgz";
+ path = fetchurl {
+ name = "is_stream___is_stream_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
+ sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
+ };
+ }
+
+ {
+ name = "is_typedarray___is_typedarray_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_typedarray___is_typedarray_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
+ sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+ };
+ }
+
+ {
+ name = "is_unc_path___is_unc_path_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_unc_path___is_unc_path_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz";
+ sha1 = "d731e8898ed090a12c352ad2eaed5095ad322c9d";
+ };
+ }
+
+ {
+ name = "is_utf8___is_utf8_0.2.1.tgz";
+ path = fetchurl {
+ name = "is_utf8___is_utf8_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz";
+ sha1 = "4b0da1442104d1b336340e80797e865cf39f7d72";
+ };
+ }
+
+ {
+ name = "is_windows___is_windows_1.0.2.tgz";
+ path = fetchurl {
+ name = "is_windows___is_windows_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz";
+ sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d";
+ };
+ }
+
+ {
+ name = "is___is_3.3.0.tgz";
+ path = fetchurl {
+ name = "is___is_3.3.0.tgz";
+ url = "https://registry.yarnpkg.com/is/-/is-3.3.0.tgz";
+ sha1 = "61cff6dd3c4193db94a3d62582072b44e5645d79";
+ };
+ }
+
+ {
+ name = "isarray___isarray_0.0.1.tgz";
+ path = fetchurl {
+ name = "isarray___isarray_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz";
+ sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
+ };
+ }
+
+ {
+ name = "isarray___isarray_1.0.0.tgz";
+ path = fetchurl {
+ name = "isarray___isarray_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
+ sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+ };
+ }
+
+ {
+ name = "isbinaryfile___isbinaryfile_3.0.3.tgz";
+ path = fetchurl {
+ name = "isbinaryfile___isbinaryfile_3.0.3.tgz";
+ url = "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz";
+ sha1 = "5d6def3edebf6e8ca8cae9c30183a804b5f8be80";
+ };
+ }
+
+ {
+ name = "isexe___isexe_2.0.0.tgz";
+ path = fetchurl {
+ name = "isexe___isexe_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
+ sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
+ };
+ }
+
+ {
+ name = "isobject___isobject_2.1.0.tgz";
+ path = fetchurl {
+ name = "isobject___isobject_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz";
+ sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
+ };
+ }
+
+ {
+ name = "isobject___isobject_3.0.1.tgz";
+ path = fetchurl {
+ name = "isobject___isobject_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz";
+ sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
+ };
+ }
+
+ {
+ name = "isstream___isstream_0.1.2.tgz";
+ path = fetchurl {
+ name = "isstream___isstream_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
+ sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+ };
+ }
+
+ {
+ name = "istanbul___istanbul_0.4.5.tgz";
+ path = fetchurl {
+ name = "istanbul___istanbul_0.4.5.tgz";
+ url = "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz";
+ sha1 = "65c7d73d4c4da84d4f3ac310b918fb0b8033733b";
+ };
+ }
+
+ {
+ name = "istextorbinary___istextorbinary_1.0.2.tgz";
+ path = fetchurl {
+ name = "istextorbinary___istextorbinary_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-1.0.2.tgz";
+ sha1 = "ace19354d1a9a0173efeb1084ce0f87b0ad7decf";
+ };
+ }
+
+ {
+ name = "jasmine_core___jasmine_core_2.99.1.tgz";
+ path = fetchurl {
+ name = "jasmine_core___jasmine_core_2.99.1.tgz";
+ url = "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.99.1.tgz";
+ sha1 = "e6400df1e6b56e130b61c4bcd093daa7f6e8ca15";
+ };
+ }
+
+ {
+ name = "js_base64___js_base64_2.5.2.tgz";
+ path = fetchurl {
+ name = "js_base64___js_base64_2.5.2.tgz";
+ url = "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz";
+ sha1 = "313b6274dda718f714d00b3330bbae6e38e90209";
+ };
+ }
+
+ {
+ name = "js_string_escape___js_string_escape_1.0.1.tgz";
+ path = fetchurl {
+ name = "js_string_escape___js_string_escape_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz";
+ sha1 = "e2625badbc0d67c7533e9edc1068c587ae4137ef";
+ };
+ }
+
+ {
+ name = "js_stringify___js_stringify_1.0.2.tgz";
+ path = fetchurl {
+ name = "js_stringify___js_stringify_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz";
+ sha1 = "1736fddfd9724f28a3682adc6230ae7e4e9679db";
+ };
+ }
+
+ {
+ name = "js_yaml___js_yaml_3.13.1.tgz";
+ path = fetchurl {
+ name = "js_yaml___js_yaml_3.13.1.tgz";
+ url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz";
+ sha1 = "aff151b30bfdfa8e49e05da22e7415e9dfa37847";
+ };
+ }
+
+ {
+ name = "js_yaml___js_yaml_3.0.2.tgz";
+ path = fetchurl {
+ name = "js_yaml___js_yaml_3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.0.2.tgz";
+ sha1 = "9937865f8e897a5e894e73c2c5cf2e89b32eb771";
+ };
+ }
+
+ {
+ name = "jsbn___jsbn_0.1.1.tgz";
+ path = fetchurl {
+ name = "jsbn___jsbn_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
+ sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+ };
+ }
+
+ {
+ name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
+ path = fetchurl {
+ name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+ sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
+ };
+ }
+
+ {
+ name = "json_schema___json_schema_0.2.3.tgz";
+ path = fetchurl {
+ name = "json_schema___json_schema_0.2.3.tgz";
+ url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
+ sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+ };
+ }
+
+ {
+ name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
+ path = fetchurl {
+ name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
+ url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+ sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+ };
+ }
+
+ {
+ name = "json3___json3_3.3.2.tgz";
+ path = fetchurl {
+ name = "json3___json3_3.3.2.tgz";
+ url = "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz";
+ sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
+ };
+ }
+
+ {
+ name = "jsonify___jsonify_0.0.0.tgz";
+ path = fetchurl {
+ name = "jsonify___jsonify_0.0.0.tgz";
+ url = "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz";
+ sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
+ };
+ }
+
+ {
+ name = "jsonparse___jsonparse_0.0.5.tgz";
+ path = fetchurl {
+ name = "jsonparse___jsonparse_0.0.5.tgz";
+ url = "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz";
+ sha1 = "330542ad3f0a654665b778f3eb2d9a9fa507ac64";
+ };
+ }
+
+ {
+ name = "jsprim___jsprim_1.4.1.tgz";
+ path = fetchurl {
+ name = "jsprim___jsprim_1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
+ sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+ };
+ }
+
+ {
+ name = "jstransformer___jstransformer_1.0.0.tgz";
+ path = fetchurl {
+ name = "jstransformer___jstransformer_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz";
+ sha1 = "ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3";
+ };
+ }
+
+ {
+ name = "junk___junk_0.3.0.tgz";
+ path = fetchurl {
+ name = "junk___junk_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/junk/-/junk-0.3.0.tgz";
+ sha1 = "6c89c636f6e99898d8efbfc50430db40be71e10c";
+ };
+ }
+
+ {
+ name = "karma_chrome_launcher___karma_chrome_launcher_2.1.1.tgz";
+ path = fetchurl {
+ name = "karma_chrome_launcher___karma_chrome_launcher_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz";
+ sha1 = "216879c68ac04d8d5140e99619ba04b59afd46cf";
+ };
+ }
+
+ {
+ name = "karma_coffee_preprocessor___karma_coffee_preprocessor_0.3.0.tgz";
+ path = fetchurl {
+ name = "karma_coffee_preprocessor___karma_coffee_preprocessor_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/karma-coffee-preprocessor/-/karma-coffee-preprocessor-0.3.0.tgz";
+ sha1 = "a4d8dc2b145bfef458a203d308b63bc03c9b4259";
+ };
+ }
+
+ {
+ name = "karma_coverage___karma_coverage_0.5.5.tgz";
+ path = fetchurl {
+ name = "karma_coverage___karma_coverage_0.5.5.tgz";
+ url = "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-0.5.5.tgz";
+ sha1 = "b0d58b1025d59d5c6620263186f1d58f5d5348c5";
+ };
+ }
+
+ {
+ name = "karma_jasmine___karma_jasmine_0.3.8.tgz";
+ path = fetchurl {
+ name = "karma_jasmine___karma_jasmine_0.3.8.tgz";
+ url = "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-0.3.8.tgz";
+ sha1 = "5b6457791ad9b89aa173f079e3ebe1b8c805236c";
+ };
+ }
+
+ {
+ name = "karma_sourcemap_loader___karma_sourcemap_loader_0.3.7.tgz";
+ path = fetchurl {
+ name = "karma_sourcemap_loader___karma_sourcemap_loader_0.3.7.tgz";
+ url = "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz";
+ sha1 = "91322c77f8f13d46fed062b042e1009d4c4505d8";
+ };
+ }
+
+ {
+ name = "karma___karma_0.13.22.tgz";
+ path = fetchurl {
+ name = "karma___karma_0.13.22.tgz";
+ url = "https://registry.yarnpkg.com/karma/-/karma-0.13.22.tgz";
+ sha1 = "07750b1bd063d7e7e7b91bcd2e6354d8f2aa8744";
+ };
+ }
+
+ {
+ name = "kind_of___kind_of_3.2.2.tgz";
+ path = fetchurl {
+ name = "kind_of___kind_of_3.2.2.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz";
+ sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
+ };
+ }
+
+ {
+ name = "kind_of___kind_of_4.0.0.tgz";
+ path = fetchurl {
+ name = "kind_of___kind_of_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz";
+ sha1 = "20813df3d712928b207378691a45066fae72dd57";
+ };
+ }
+
+ {
+ name = "kind_of___kind_of_5.1.0.tgz";
+ path = fetchurl {
+ name = "kind_of___kind_of_5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz";
+ sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d";
+ };
+ }
+
+ {
+ name = "kind_of___kind_of_6.0.3.tgz";
+ path = fetchurl {
+ name = "kind_of___kind_of_6.0.3.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz";
+ sha1 = "07c05034a6c349fa06e24fa35aa76db4580ce4dd";
+ };
+ }
+
+ {
+ name = "latest_version___latest_version_1.0.1.tgz";
+ path = fetchurl {
+ name = "latest_version___latest_version_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/latest-version/-/latest-version-1.0.1.tgz";
+ sha1 = "72cfc46e3e8d1be651e1ebb54ea9f6ea96f374bb";
+ };
+ }
+
+ {
+ name = "lazy_cache___lazy_cache_1.0.4.tgz";
+ path = fetchurl {
+ name = "lazy_cache___lazy_cache_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz";
+ sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e";
+ };
+ }
+
+ {
+ name = "lazypipe___lazypipe_1.0.2.tgz";
+ path = fetchurl {
+ name = "lazypipe___lazypipe_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/lazypipe/-/lazypipe-1.0.2.tgz";
+ sha1 = "b66f64ed7fd8b04869f1f1bcb795dbbaa80e418c";
+ };
+ }
+
+ {
+ name = "lcid___lcid_1.0.0.tgz";
+ path = fetchurl {
+ name = "lcid___lcid_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz";
+ sha1 = "308accafa0bc483a3867b4b6f2b9506251d1b835";
+ };
+ }
+
+ {
+ name = "less___less_1.7.5.tgz";
+ path = fetchurl {
+ name = "less___less_1.7.5.tgz";
+ url = "https://registry.yarnpkg.com/less/-/less-1.7.5.tgz";
+ sha1 = "4f220cf7288a27eaca739df6e4808a2d4c0d5756";
+ };
+ }
+
+ {
+ name = "levn___levn_0.3.0.tgz";
+ path = fetchurl {
+ name = "levn___levn_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz";
+ sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
+ };
+ }
+
+ {
+ name = "lexical_scope___lexical_scope_1.1.1.tgz";
+ path = fetchurl {
+ name = "lexical_scope___lexical_scope_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.1.1.tgz";
+ sha1 = "debac1067435f1359d90fcfd9e94bcb2ee47b2bf";
+ };
+ }
+
+ {
+ name = "liftoff___liftoff_2.5.0.tgz";
+ path = fetchurl {
+ name = "liftoff___liftoff_2.5.0.tgz";
+ url = "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz";
+ sha1 = "2009291bb31cea861bbf10a7c15a28caf75c31ec";
+ };
+ }
+
+ {
+ name = "livereload_js___livereload_js_2.4.0.tgz";
+ path = fetchurl {
+ name = "livereload_js___livereload_js_2.4.0.tgz";
+ url = "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz";
+ sha1 = "447c31cf1ea9ab52fc20db615c5ddf678f78009c";
+ };
+ }
+
+ {
+ name = "load_json_file___load_json_file_1.1.0.tgz";
+ path = fetchurl {
+ name = "load_json_file___load_json_file_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz";
+ sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0";
+ };
+ }
+
+ {
+ name = "lockfile___lockfile_0.4.3.tgz";
+ path = fetchurl {
+ name = "lockfile___lockfile_0.4.3.tgz";
+ url = "https://registry.yarnpkg.com/lockfile/-/lockfile-0.4.3.tgz";
+ sha1 = "79b965ee9b32d9dd24b59cf81205e6dcb6d3b224";
+ };
+ }
+
+ {
+ name = "lodash._baseassign___lodash._baseassign_3.2.0.tgz";
+ path = fetchurl {
+ name = "lodash._baseassign___lodash._baseassign_3.2.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz";
+ sha1 = "8c38a099500f215ad09e59f1722fd0c52bfe0a4e";
+ };
+ }
+
+ {
+ name = "lodash._basecopy___lodash._basecopy_3.0.1.tgz";
+ path = fetchurl {
+ name = "lodash._basecopy___lodash._basecopy_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz";
+ sha1 = "8da0e6a876cf344c0ad8a54882111dd3c5c7ca36";
+ };
+ }
+
+ {
+ name = "lodash._basetostring___lodash._basetostring_3.0.1.tgz";
+ path = fetchurl {
+ name = "lodash._basetostring___lodash._basetostring_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz";
+ sha1 = "d1861d877f824a52f669832dcaf3ee15566a07d5";
+ };
+ }
+
+ {
+ name = "lodash._basevalues___lodash._basevalues_3.0.0.tgz";
+ path = fetchurl {
+ name = "lodash._basevalues___lodash._basevalues_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz";
+ sha1 = "5b775762802bde3d3297503e26300820fdf661b7";
+ };
+ }
+
+ {
+ name = "lodash._bindcallback___lodash._bindcallback_3.0.1.tgz";
+ path = fetchurl {
+ name = "lodash._bindcallback___lodash._bindcallback_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz";
+ sha1 = "e531c27644cf8b57a99e17ed95b35c748789392e";
+ };
+ }
+
+ {
+ name = "lodash._createassigner___lodash._createassigner_3.1.1.tgz";
+ path = fetchurl {
+ name = "lodash._createassigner___lodash._createassigner_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz";
+ sha1 = "838a5bae2fdaca63ac22dee8e19fa4e6d6970b11";
+ };
+ }
+
+ {
+ name = "lodash._escapehtmlchar___lodash._escapehtmlchar_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash._escapehtmlchar___lodash._escapehtmlchar_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz";
+ sha1 = "df67c3bb6b7e8e1e831ab48bfa0795b92afe899d";
+ };
+ }
+
+ {
+ name = "lodash._escapestringchar___lodash._escapestringchar_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash._escapestringchar___lodash._escapestringchar_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz";
+ sha1 = "ecfe22618a2ade50bfeea43937e51df66f0edb72";
+ };
+ }
+
+ {
+ name = "lodash._getnative___lodash._getnative_3.9.1.tgz";
+ path = fetchurl {
+ name = "lodash._getnative___lodash._getnative_3.9.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz";
+ sha1 = "570bc7dede46d61cdcde687d65d3eecbaa3aaff5";
+ };
+ }
+
+ {
+ name = "lodash._htmlescapes___lodash._htmlescapes_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash._htmlescapes___lodash._htmlescapes_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz";
+ sha1 = "32d14bf0844b6de6f8b62a051b4f67c228b624cb";
+ };
+ }
+
+ {
+ name = "lodash._isiterateecall___lodash._isiterateecall_3.0.9.tgz";
+ path = fetchurl {
+ name = "lodash._isiterateecall___lodash._isiterateecall_3.0.9.tgz";
+ url = "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz";
+ sha1 = "5203ad7ba425fae842460e696db9cf3e6aac057c";
+ };
+ }
+
+ {
+ name = "lodash._isnative___lodash._isnative_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash._isnative___lodash._isnative_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz";
+ sha1 = "3ea6404b784a7be836c7b57580e1cdf79b14832c";
+ };
+ }
+
+ {
+ name = "lodash._objecttypes___lodash._objecttypes_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash._objecttypes___lodash._objecttypes_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz";
+ sha1 = "7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11";
+ };
+ }
+
+ {
+ name = "lodash._reescape___lodash._reescape_3.0.0.tgz";
+ path = fetchurl {
+ name = "lodash._reescape___lodash._reescape_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz";
+ sha1 = "2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a";
+ };
+ }
+
+ {
+ name = "lodash._reevaluate___lodash._reevaluate_3.0.0.tgz";
+ path = fetchurl {
+ name = "lodash._reevaluate___lodash._reevaluate_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz";
+ sha1 = "58bc74c40664953ae0b124d806996daca431e2ed";
+ };
+ }
+
+ {
+ name = "lodash._reinterpolate___lodash._reinterpolate_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash._reinterpolate___lodash._reinterpolate_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz";
+ sha1 = "4f1227aa5a8711fc632f5b07a1f4607aab8b3222";
+ };
+ }
+
+ {
+ name = "lodash._reinterpolate___lodash._reinterpolate_3.0.0.tgz";
+ path = fetchurl {
+ name = "lodash._reinterpolate___lodash._reinterpolate_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz";
+ sha1 = "0ccf2d89166af03b3663c796538b75ac6e114d9d";
+ };
+ }
+
+ {
+ name = "lodash._reunescapedhtml___lodash._reunescapedhtml_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash._reunescapedhtml___lodash._reunescapedhtml_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz";
+ sha1 = "747c4fc40103eb3bb8a0976e571f7a2659e93ba7";
+ };
+ }
+
+ {
+ name = "lodash._root___lodash._root_3.0.1.tgz";
+ path = fetchurl {
+ name = "lodash._root___lodash._root_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz";
+ sha1 = "fba1c4524c19ee9a5f8136b4609f017cf4ded692";
+ };
+ }
+
+ {
+ name = "lodash._shimkeys___lodash._shimkeys_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash._shimkeys___lodash._shimkeys_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz";
+ sha1 = "6e9cc9666ff081f0b5a6c978b83e242e6949d203";
+ };
+ }
+
+ {
+ name = "lodash.assign___lodash.assign_4.2.0.tgz";
+ path = fetchurl {
+ name = "lodash.assign___lodash.assign_4.2.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz";
+ sha1 = "0d99f3ccd7a6d261d19bdaeb9245005d285808e7";
+ };
+ }
+
+ {
+ name = "lodash.assign___lodash.assign_3.2.0.tgz";
+ path = fetchurl {
+ name = "lodash.assign___lodash.assign_3.2.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz";
+ sha1 = "3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa";
+ };
+ }
+
+ {
+ name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
+ path = fetchurl {
+ name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz";
+ sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef";
+ };
+ }
+
+ {
+ name = "lodash.debounce___lodash.debounce_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash.debounce___lodash.debounce_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-2.4.1.tgz";
+ sha1 = "d8cead246ec4b926e8b85678fc396bfeba8cc6fc";
+ };
+ }
+
+ {
+ name = "lodash.defaults___lodash.defaults_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash.defaults___lodash.defaults_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz";
+ sha1 = "a7e8885f05e68851144b6e12a8f3678026bc4c54";
+ };
+ }
+
+ {
+ name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
+ path = fetchurl {
+ name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
+ sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
+ };
+ }
+
+ {
+ name = "lodash.escape___lodash.escape_3.2.0.tgz";
+ path = fetchurl {
+ name = "lodash.escape___lodash.escape_3.2.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz";
+ sha1 = "995ee0dc18c1b48cc92effae71a10aab5b487698";
+ };
+ }
+
+ {
+ name = "lodash.escape___lodash.escape_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash.escape___lodash.escape_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-2.4.1.tgz";
+ sha1 = "2ce12c5e084db0a57dda5e5d1eeeb9f5d175a3b4";
+ };
+ }
+
+ {
+ name = "lodash.isarguments___lodash.isarguments_3.1.0.tgz";
+ path = fetchurl {
+ name = "lodash.isarguments___lodash.isarguments_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz";
+ sha1 = "2f573d85c6a24289ff00663b491c1d338ff3458a";
+ };
+ }
+
+ {
+ name = "lodash.isarray___lodash.isarray_3.0.4.tgz";
+ path = fetchurl {
+ name = "lodash.isarray___lodash.isarray_3.0.4.tgz";
+ url = "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz";
+ sha1 = "79e4eb88c36a8122af86f844aa9bcd851b5fbb55";
+ };
+ }
+
+ {
+ name = "lodash.isfunction___lodash.isfunction_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash.isfunction___lodash.isfunction_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz";
+ sha1 = "2cfd575c73e498ab57e319b77fa02adef13a94d1";
+ };
+ }
+
+ {
+ name = "lodash.isobject___lodash.isobject_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash.isobject___lodash.isobject_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz";
+ sha1 = "5a2e47fe69953f1ee631a7eba1fe64d2d06558f5";
+ };
+ }
+
+ {
+ name = "lodash.keys___lodash.keys_3.1.2.tgz";
+ path = fetchurl {
+ name = "lodash.keys___lodash.keys_3.1.2.tgz";
+ url = "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz";
+ sha1 = "4dbc0472b156be50a0b286855d1bd0b0c656098a";
+ };
+ }
+
+ {
+ name = "lodash.keys___lodash.keys_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash.keys___lodash.keys_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz";
+ sha1 = "48dea46df8ff7632b10d706b8acb26591e2b3727";
+ };
+ }
+
+ {
+ name = "lodash.now___lodash.now_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash.now___lodash.now_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.now/-/lodash.now-2.4.1.tgz";
+ sha1 = "6872156500525185faf96785bb7fe7fe15b562c6";
+ };
+ }
+
+ {
+ name = "lodash.restparam___lodash.restparam_3.6.1.tgz";
+ path = fetchurl {
+ name = "lodash.restparam___lodash.restparam_3.6.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz";
+ sha1 = "936a4e309ef330a7645ed4145986c85ae5b20805";
+ };
+ }
+
+ {
+ name = "lodash.template___lodash.template_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash.template___lodash.template_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-2.4.1.tgz";
+ sha1 = "9e611007edf629129a974ab3c48b817b3e1cf20d";
+ };
+ }
+
+ {
+ name = "lodash.template___lodash.template_3.6.2.tgz";
+ path = fetchurl {
+ name = "lodash.template___lodash.template_3.6.2.tgz";
+ url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz";
+ sha1 = "f8cdecc6169a255be9098ae8b0c53d378931d14f";
+ };
+ }
+
+ {
+ name = "lodash.template___lodash.template_4.5.0.tgz";
+ path = fetchurl {
+ name = "lodash.template___lodash.template_4.5.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz";
+ sha1 = "f976195cf3f347d0d5f52483569fe8031ccce8ab";
+ };
+ }
+
+ {
+ name = "lodash.templatesettings___lodash.templatesettings_3.1.1.tgz";
+ path = fetchurl {
+ name = "lodash.templatesettings___lodash.templatesettings_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz";
+ sha1 = "fb307844753b66b9f1afa54e262c745307dba8e5";
+ };
+ }
+
+ {
+ name = "lodash.templatesettings___lodash.templatesettings_4.2.0.tgz";
+ path = fetchurl {
+ name = "lodash.templatesettings___lodash.templatesettings_4.2.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz";
+ sha1 = "e481310f049d3cf6d47e912ad09313b154f0fb33";
+ };
+ }
+
+ {
+ name = "lodash.templatesettings___lodash.templatesettings_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash.templatesettings___lodash.templatesettings_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz";
+ sha1 = "ea76c75d11eb86d4dbe89a83893bb861929ac699";
+ };
+ }
+
+ {
+ name = "lodash.values___lodash.values_2.4.1.tgz";
+ path = fetchurl {
+ name = "lodash.values___lodash.values_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz";
+ sha1 = "abf514436b3cb705001627978cbcf30b1280eea4";
+ };
+ }
+
+ {
+ name = "lodash___lodash_2.4.2.tgz";
+ path = fetchurl {
+ name = "lodash___lodash_2.4.2.tgz";
+ url = "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz";
+ sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e";
+ };
+ }
+
+ {
+ name = "lodash___lodash_3.10.1.tgz";
+ path = fetchurl {
+ name = "lodash___lodash_3.10.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz";
+ sha1 = "5bf45e8e49ba4189e17d482789dfd15bd140b7b6";
+ };
+ }
+
+ {
+ name = "lodash___lodash_4.17.15.tgz";
+ path = fetchurl {
+ name = "lodash___lodash_4.17.15.tgz";
+ url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz";
+ sha1 = "b447f6670a0455bbfeedd11392eff330ea097548";
+ };
+ }
+
+ {
+ name = "lodash___lodash_1.0.2.tgz";
+ path = fetchurl {
+ name = "lodash___lodash_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz";
+ sha1 = "8f57560c83b59fc270bd3d561b690043430e2551";
+ };
+ }
+
+ {
+ name = "log4js___log4js_0.6.38.tgz";
+ path = fetchurl {
+ name = "log4js___log4js_0.6.38.tgz";
+ url = "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz";
+ sha1 = "2c494116695d6fb25480943d3fc872e662a522fd";
+ };
+ }
+
+ {
+ name = "longest___longest_1.0.1.tgz";
+ path = fetchurl {
+ name = "longest___longest_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz";
+ sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097";
+ };
+ }
+
+ {
+ name = "loophole___loophole_1.1.0.tgz";
+ path = fetchurl {
+ name = "loophole___loophole_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/loophole/-/loophole-1.1.0.tgz";
+ sha1 = "37949fea453b6256acc725c320ce0c5a7f70a2bd";
+ };
+ }
+
+ {
+ name = "loud_rejection___loud_rejection_1.6.0.tgz";
+ path = fetchurl {
+ name = "loud_rejection___loud_rejection_1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz";
+ sha1 = "5b46f80147edee578870f086d04821cf998e551f";
+ };
+ }
+
+ {
+ name = "lowercase_keys___lowercase_keys_1.0.1.tgz";
+ path = fetchurl {
+ name = "lowercase_keys___lowercase_keys_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz";
+ sha1 = "6f9e30b47084d971a7c820ff15a6c5167b74c26f";
+ };
+ }
+
+ {
+ name = "lru_cache___lru_cache_2.7.3.tgz";
+ path = fetchurl {
+ name = "lru_cache___lru_cache_2.7.3.tgz";
+ url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz";
+ sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952";
+ };
+ }
+
+ {
+ name = "lru_cache___lru_cache_4.1.5.tgz";
+ path = fetchurl {
+ name = "lru_cache___lru_cache_4.1.5.tgz";
+ url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz";
+ sha1 = "8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd";
+ };
+ }
+
+ {
+ name = "lru_cache___lru_cache_2.3.1.tgz";
+ path = fetchurl {
+ name = "lru_cache___lru_cache_2.3.1.tgz";
+ url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.3.1.tgz";
+ sha1 = "b3adf6b3d856e954e2c390e6cef22081245a53d6";
+ };
+ }
+
+ {
+ name = "lru_cache___lru_cache_2.5.2.tgz";
+ path = fetchurl {
+ name = "lru_cache___lru_cache_2.5.2.tgz";
+ url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.5.2.tgz";
+ sha1 = "1fddad938aae1263ce138680be1b3f591c0ab41c";
+ };
+ }
+
+ {
+ name = "lru_queue___lru_queue_0.1.0.tgz";
+ path = fetchurl {
+ name = "lru_queue___lru_queue_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz";
+ sha1 = "2738bd9f0d3cf4f84490c5736c48699ac632cda3";
+ };
+ }
+
+ {
+ name = "make_iterator___make_iterator_1.0.1.tgz";
+ path = fetchurl {
+ name = "make_iterator___make_iterator_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz";
+ sha1 = "29b33f312aa8f547c4a5e490f56afcec99133ad6";
+ };
+ }
+
+ {
+ name = "map_cache___map_cache_0.2.2.tgz";
+ path = fetchurl {
+ name = "map_cache___map_cache_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz";
+ sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
+ };
+ }
+
+ {
+ name = "map_obj___map_obj_1.0.1.tgz";
+ path = fetchurl {
+ name = "map_obj___map_obj_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz";
+ sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d";
+ };
+ }
+
+ {
+ name = "map_stream___map_stream_0.0.7.tgz";
+ path = fetchurl {
+ name = "map_stream___map_stream_0.0.7.tgz";
+ url = "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz";
+ sha1 = "8a1f07896d82b10926bd3744a2420009f88974a8";
+ };
+ }
+
+ {
+ name = "map_stream___map_stream_0.1.0.tgz";
+ path = fetchurl {
+ name = "map_stream___map_stream_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz";
+ sha1 = "e56aa94c4c8055a16404a0674b78f215f7c8e194";
+ };
+ }
+
+ {
+ name = "map_visit___map_visit_1.0.0.tgz";
+ path = fetchurl {
+ name = "map_visit___map_visit_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz";
+ sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
+ };
+ }
+
+ {
+ name = "math_random___math_random_1.0.4.tgz";
+ path = fetchurl {
+ name = "math_random___math_random_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz";
+ sha1 = "5dd6943c938548267016d4e34f057583080c514c";
+ };
+ }
+
+ {
+ name = "media_typer___media_typer_0.3.0.tgz";
+ path = fetchurl {
+ name = "media_typer___media_typer_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
+ sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+ };
+ }
+
+ {
+ name = "memoizee___memoizee_0.2.6.tgz";
+ path = fetchurl {
+ name = "memoizee___memoizee_0.2.6.tgz";
+ url = "https://registry.yarnpkg.com/memoizee/-/memoizee-0.2.6.tgz";
+ sha1 = "bb45a7ad02530082f1612671dab35219cd2e0741";
+ };
+ }
+
+ {
+ name = "memoizee___memoizee_0.3.10.tgz";
+ path = fetchurl {
+ name = "memoizee___memoizee_0.3.10.tgz";
+ url = "https://registry.yarnpkg.com/memoizee/-/memoizee-0.3.10.tgz";
+ sha1 = "4eca0d8aed39ec9d017f4c5c2f2f6432f42e5c8f";
+ };
+ }
+
+ {
+ name = "meow___meow_3.7.0.tgz";
+ path = fetchurl {
+ name = "meow___meow_3.7.0.tgz";
+ url = "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz";
+ sha1 = "72cb668b425228290abbfa856892587308a801fb";
+ };
+ }
+
+ {
+ name = "merge_stream___merge_stream_1.0.1.tgz";
+ path = fetchurl {
+ name = "merge_stream___merge_stream_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz";
+ sha1 = "4041202d508a342ba00174008df0c251b8c135e1";
+ };
+ }
+
+ {
+ name = "merge___merge_1.2.1.tgz";
+ path = fetchurl {
+ name = "merge___merge_1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz";
+ sha1 = "38bebf80c3220a8a487b6fcfb3941bb11720c145";
+ };
+ }
+
+ {
+ name = "micromatch___micromatch_2.3.11.tgz";
+ path = fetchurl {
+ name = "micromatch___micromatch_2.3.11.tgz";
+ url = "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz";
+ sha1 = "86677c97d1720b363431d04d0d15293bd38c1565";
+ };
+ }
+
+ {
+ name = "micromatch___micromatch_3.1.10.tgz";
+ path = fetchurl {
+ name = "micromatch___micromatch_3.1.10.tgz";
+ url = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz";
+ sha1 = "70859bc95c9840952f359a068a3fc49f9ecfac23";
+ };
+ }
+
+ {
+ name = "mime_db___mime_db_1.43.0.tgz";
+ path = fetchurl {
+ name = "mime_db___mime_db_1.43.0.tgz";
+ url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz";
+ sha1 = "0a12e0502650e473d735535050e7c8f4eb4fae58";
+ };
+ }
+
+ {
+ name = "mime_db___mime_db_1.12.0.tgz";
+ path = fetchurl {
+ name = "mime_db___mime_db_1.12.0.tgz";
+ url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz";
+ sha1 = "3d0c63180f458eb10d325aaa37d7c58ae312e9d7";
+ };
+ }
+
+ {
+ name = "mime_types___mime_types_2.1.26.tgz";
+ path = fetchurl {
+ name = "mime_types___mime_types_2.1.26.tgz";
+ url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz";
+ sha1 = "9c921fc09b7e149a65dfdc0da4d20997200b0a06";
+ };
+ }
+
+ {
+ name = "mime_types___mime_types_1.0.2.tgz";
+ path = fetchurl {
+ name = "mime_types___mime_types_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz";
+ sha1 = "995ae1392ab8affcbfcb2641dd054e943c0d5dce";
+ };
+ }
+
+ {
+ name = "mime_types___mime_types_2.0.14.tgz";
+ path = fetchurl {
+ name = "mime_types___mime_types_2.0.14.tgz";
+ url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz";
+ sha1 = "310e159db23e077f8bb22b748dabfa4957140aa6";
+ };
+ }
+
+ {
+ name = "mime___mime_1.3.4.tgz";
+ path = fetchurl {
+ name = "mime___mime_1.3.4.tgz";
+ url = "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz";
+ sha1 = "115f9e3b6b3daf2959983cb38f149a2d40eb5d53";
+ };
+ }
+
+ {
+ name = "mime___mime_1.6.0.tgz";
+ path = fetchurl {
+ name = "mime___mime_1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
+ sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
+ };
+ }
+
+ {
+ name = "mime___mime_1.2.11.tgz";
+ path = fetchurl {
+ name = "mime___mime_1.2.11.tgz";
+ url = "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz";
+ sha1 = "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10";
+ };
+ }
+
+ {
+ name = "mini_lr___mini_lr_0.1.9.tgz";
+ path = fetchurl {
+ name = "mini_lr___mini_lr_0.1.9.tgz";
+ url = "https://registry.yarnpkg.com/mini-lr/-/mini-lr-0.1.9.tgz";
+ sha1 = "02199d27347953d1fd1d6dbded4261f187b2d0f6";
+ };
+ }
+
+ {
+ name = "minimatch___minimatch_0.3.0.tgz";
+ path = fetchurl {
+ name = "minimatch___minimatch_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz";
+ sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd";
+ };
+ }
+
+ {
+ name = "minimatch___minimatch_3.0.4.tgz";
+ path = fetchurl {
+ name = "minimatch___minimatch_3.0.4.tgz";
+ url = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
+ sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
+ };
+ }
+
+ {
+ name = "minimatch___minimatch_0.2.14.tgz";
+ path = fetchurl {
+ name = "minimatch___minimatch_0.2.14.tgz";
+ url = "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz";
+ sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a";
+ };
+ }
+
+ {
+ name = "minimatch___minimatch_1.0.0.tgz";
+ path = fetchurl {
+ name = "minimatch___minimatch_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/minimatch/-/minimatch-1.0.0.tgz";
+ sha1 = "e0dd2120b49e1b724ce8d714c520822a9438576d";
+ };
+ }
+
+ {
+ name = "minimatch___minimatch_2.0.10.tgz";
+ path = fetchurl {
+ name = "minimatch___minimatch_2.0.10.tgz";
+ url = "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz";
+ sha1 = "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7";
+ };
+ }
+
+ {
+ name = "minimist___minimist_0.2.1.tgz";
+ path = fetchurl {
+ name = "minimist___minimist_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz";
+ sha1 = "827ba4e7593464e7c221e8c5bed930904ee2c455";
+ };
+ }
+
+ {
+ name = "minimist___minimist_1.2.5.tgz";
+ path = fetchurl {
+ name = "minimist___minimist_1.2.5.tgz";
+ url = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz";
+ sha1 = "67d66014b66a6a8aaa0c083c5fd58df4e4e97602";
+ };
+ }
+
+ {
+ name = "minimist___minimist_0.0.10.tgz";
+ path = fetchurl {
+ name = "minimist___minimist_0.0.10.tgz";
+ url = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz";
+ sha1 = "de3f98543dbf96082be48ad1a0c7cda836301dcf";
+ };
+ }
+
+ {
+ name = "minipass___minipass_2.9.0.tgz";
+ path = fetchurl {
+ name = "minipass___minipass_2.9.0.tgz";
+ url = "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz";
+ sha1 = "e713762e7d3e32fed803115cf93e04bca9fcc9a6";
+ };
+ }
+
+ {
+ name = "minizlib___minizlib_1.3.3.tgz";
+ path = fetchurl {
+ name = "minizlib___minizlib_1.3.3.tgz";
+ url = "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz";
+ sha1 = "2290de96818a34c29551c8a8d301216bd65a861d";
+ };
+ }
+
+ {
+ name = "mixin_deep___mixin_deep_1.3.2.tgz";
+ path = fetchurl {
+ name = "mixin_deep___mixin_deep_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz";
+ sha1 = "1120b43dc359a785dce65b55b82e257ccf479566";
+ };
+ }
+
+ {
+ name = "mkdirp___mkdirp_0.5.4.tgz";
+ path = fetchurl {
+ name = "mkdirp___mkdirp_0.5.4.tgz";
+ url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz";
+ sha1 = "fd01504a6797ec5c9be81ff43d204961ed64a512";
+ };
+ }
+
+ {
+ name = "mkdirp___mkdirp_0.3.5.tgz";
+ path = fetchurl {
+ name = "mkdirp___mkdirp_0.3.5.tgz";
+ url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz";
+ sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7";
+ };
+ }
+
+ {
+ name = "mkpath___mkpath_0.1.0.tgz";
+ path = fetchurl {
+ name = "mkpath___mkpath_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz";
+ sha1 = "7554a6f8d871834cc97b5462b122c4c124d6de91";
+ };
+ }
+
+ {
+ name = "module_deps___module_deps_2.0.6.tgz";
+ path = fetchurl {
+ name = "module_deps___module_deps_2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/module-deps/-/module-deps-2.0.6.tgz";
+ sha1 = "b999321c73ac33580f00712c0f3075fdca42563f";
+ };
+ }
+
+ {
+ name = "mout___mout_0.9.1.tgz";
+ path = fetchurl {
+ name = "mout___mout_0.9.1.tgz";
+ url = "https://registry.yarnpkg.com/mout/-/mout-0.9.1.tgz";
+ sha1 = "84f0f3fd6acc7317f63de2affdcc0cee009b0477";
+ };
+ }
+
+ {
+ name = "ms___ms_0.7.1.tgz";
+ path = fetchurl {
+ name = "ms___ms_0.7.1.tgz";
+ url = "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz";
+ sha1 = "9cd13c03adbff25b65effde7ce864ee952017098";
+ };
+ }
+
+ {
+ name = "ms___ms_0.7.2.tgz";
+ path = fetchurl {
+ name = "ms___ms_0.7.2.tgz";
+ url = "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz";
+ sha1 = "ae25cf2512b3885a1d95d7f037868d8431124765";
+ };
+ }
+
+ {
+ name = "ms___ms_2.0.0.tgz";
+ path = fetchurl {
+ name = "ms___ms_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
+ sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+ };
+ }
+
+ {
+ name = "ms___ms_2.1.2.tgz";
+ path = fetchurl {
+ name = "ms___ms_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz";
+ sha1 = "d09d1f357b443f493382a8eb3ccd183872ae6009";
+ };
+ }
+
+ {
+ name = "multipipe___multipipe_0.1.2.tgz";
+ path = fetchurl {
+ name = "multipipe___multipipe_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz";
+ sha1 = "2a8f2ddf70eed564dff2d57f1e1a137d9f05078b";
+ };
+ }
+
+ {
+ name = "mute_stream___mute_stream_0.0.4.tgz";
+ path = fetchurl {
+ name = "mute_stream___mute_stream_0.0.4.tgz";
+ url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.4.tgz";
+ sha1 = "a9219960a6d5d5d046597aee51252c6655f7177e";
+ };
+ }
+
+ {
+ name = "mute_stream___mute_stream_0.0.8.tgz";
+ path = fetchurl {
+ name = "mute_stream___mute_stream_0.0.8.tgz";
+ url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz";
+ sha1 = "1630c42b2251ff81e2a283de96a5497ea92e5e0d";
+ };
+ }
+
+ {
+ name = "nan___nan_2.14.0.tgz";
+ path = fetchurl {
+ name = "nan___nan_2.14.0.tgz";
+ url = "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz";
+ sha1 = "7818f722027b2459a86f0295d434d1fc2336c52c";
+ };
+ }
+
+ {
+ name = "nanomatch___nanomatch_1.2.13.tgz";
+ path = fetchurl {
+ name = "nanomatch___nanomatch_1.2.13.tgz";
+ url = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz";
+ sha1 = "b87a8aa4fc0de8fe6be88895b38983ff265bd119";
+ };
+ }
+
+ {
+ name = "natives___natives_1.1.6.tgz";
+ path = fetchurl {
+ name = "natives___natives_1.1.6.tgz";
+ url = "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz";
+ sha1 = "a603b4a498ab77173612b9ea1acdec4d980f00bb";
+ };
+ }
+
+ {
+ name = "needle___needle_2.3.3.tgz";
+ path = fetchurl {
+ name = "needle___needle_2.3.3.tgz";
+ url = "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz";
+ sha1 = "a041ad1d04a871b0ebb666f40baaf1fb47867117";
+ };
+ }
+
+ {
+ name = "negotiator___negotiator_0.6.1.tgz";
+ path = fetchurl {
+ name = "negotiator___negotiator_0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz";
+ sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
+ };
+ }
+
+ {
+ name = "neo_async___neo_async_2.6.1.tgz";
+ path = fetchurl {
+ name = "neo_async___neo_async_2.6.1.tgz";
+ url = "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz";
+ sha1 = "ac27ada66167fa8849a6addd837f6b189ad2081c";
+ };
+ }
+
+ {
+ name = "nested_error_stacks___nested_error_stacks_1.0.2.tgz";
+ path = fetchurl {
+ name = "nested_error_stacks___nested_error_stacks_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz";
+ sha1 = "19f619591519f096769a5ba9a86e6eeec823c3cf";
+ };
+ }
+
+ {
+ name = "next_tick___next_tick_0.1.0.tgz";
+ path = fetchurl {
+ name = "next_tick___next_tick_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/next-tick/-/next-tick-0.1.0.tgz";
+ sha1 = "1912cce8eb9b697d640fbba94f8f00dec3b94259";
+ };
+ }
+
+ {
+ name = "next_tick___next_tick_1.1.0.tgz";
+ path = fetchurl {
+ name = "next_tick___next_tick_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz";
+ sha1 = "1836ee30ad56d67ef281b22bd199f709449b35eb";
+ };
+ }
+
+ {
+ name = "next_tick___next_tick_0.2.2.tgz";
+ path = fetchurl {
+ name = "next_tick___next_tick_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz";
+ sha1 = "75da4a927ee5887e39065880065b7336413b310d";
+ };
+ }
+
+ {
+ name = "next_tick___next_tick_1.0.0.tgz";
+ path = fetchurl {
+ name = "next_tick___next_tick_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz";
+ sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c";
+ };
+ }
+
+ {
+ name = "ng_annotate___ng_annotate_1.2.2.tgz";
+ path = fetchurl {
+ name = "ng_annotate___ng_annotate_1.2.2.tgz";
+ url = "https://registry.yarnpkg.com/ng-annotate/-/ng-annotate-1.2.2.tgz";
+ sha1 = "dc3fc51ba0b2f8b385dbe047f4da06f580a1fd61";
+ };
+ }
+
+ {
+ name = "ng_classify___ng_classify_4.1.1.tgz";
+ path = fetchurl {
+ name = "ng_classify___ng_classify_4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ng-classify/-/ng-classify-4.1.1.tgz";
+ sha1 = "6688b924c3c9b5f94da5f8fbc0d55176f3dda122";
+ };
+ }
+
+ {
+ name = "node_gyp___node_gyp_3.8.0.tgz";
+ path = fetchurl {
+ name = "node_gyp___node_gyp_3.8.0.tgz";
+ url = "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz";
+ sha1 = "540304261c330e80d0d5edce253a68cb3964218c";
+ };
+ }
+
+ {
+ name = "node_pre_gyp___node_pre_gyp_0.14.0.tgz";
+ path = fetchurl {
+ name = "node_pre_gyp___node_pre_gyp_0.14.0.tgz";
+ url = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz";
+ sha1 = "9a0596533b877289bcad4e143982ca3d904ddc83";
+ };
+ }
+
+ {
+ name = "node_sass___node_sass_4.13.1.tgz";
+ path = fetchurl {
+ name = "node_sass___node_sass_4.13.1.tgz";
+ url = "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz";
+ sha1 = "9db5689696bb2eec2c32b98bfea4c7a2e992d0a3";
+ };
+ }
+
+ {
+ name = "node_uuid___node_uuid_1.4.8.tgz";
+ path = fetchurl {
+ name = "node_uuid___node_uuid_1.4.8.tgz";
+ url = "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz";
+ sha1 = "b040eb0923968afabf8d32fb1f17f1167fdab907";
+ };
+ }
+
+ {
+ name = "node.extend___node.extend_1.1.8.tgz";
+ path = fetchurl {
+ name = "node.extend___node.extend_1.1.8.tgz";
+ url = "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.8.tgz";
+ sha1 = "0aab3e63789f4e6d68b42bc00073ad1881243cf0";
+ };
+ }
+
+ {
+ name = "nopt___nopt_3.0.6.tgz";
+ path = fetchurl {
+ name = "nopt___nopt_3.0.6.tgz";
+ url = "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz";
+ sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
+ };
+ }
+
+ {
+ name = "nopt___nopt_4.0.3.tgz";
+ path = fetchurl {
+ name = "nopt___nopt_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz";
+ sha1 = "a375cad9d02fd921278d954c2254d5aa57e15e48";
+ };
+ }
+
+ {
+ name = "nopt___nopt_1.0.10.tgz";
+ path = fetchurl {
+ name = "nopt___nopt_1.0.10.tgz";
+ url = "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz";
+ sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
+ };
+ }
+
+ {
+ name = "nopt___nopt_2.2.1.tgz";
+ path = fetchurl {
+ name = "nopt___nopt_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/nopt/-/nopt-2.2.1.tgz";
+ sha1 = "2aa09b7d1768487b3b89a9c5aa52335bff0baea7";
+ };
+ }
+
+ {
+ name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
+ path = fetchurl {
+ name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
+ url = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz";
+ sha1 = "e66db1838b200c1dfc233225d12cb36520e234a8";
+ };
+ }
+
+ {
+ name = "normalize_path___normalize_path_2.1.1.tgz";
+ path = fetchurl {
+ name = "normalize_path___normalize_path_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz";
+ sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
+ };
+ }
+
+ {
+ name = "npm_bundled___npm_bundled_1.1.1.tgz";
+ path = fetchurl {
+ name = "npm_bundled___npm_bundled_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz";
+ sha1 = "1edd570865a94cdb1bc8220775e29466c9fb234b";
+ };
+ }
+
+ {
+ name = "npm_normalize_package_bin___npm_normalize_package_bin_1.0.1.tgz";
+ path = fetchurl {
+ name = "npm_normalize_package_bin___npm_normalize_package_bin_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz";
+ sha1 = "6e79a41f23fd235c0623218228da7d9c23b8f6e2";
+ };
+ }
+
+ {
+ name = "npm_packlist___npm_packlist_1.4.8.tgz";
+ path = fetchurl {
+ name = "npm_packlist___npm_packlist_1.4.8.tgz";
+ url = "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz";
+ sha1 = "56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e";
+ };
+ }
+
+ {
+ name = "npmlog___npmlog_4.1.2.tgz";
+ path = fetchurl {
+ name = "npmlog___npmlog_4.1.2.tgz";
+ url = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz";
+ sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
+ };
+ }
+
+ {
+ name = "null_check___null_check_1.0.0.tgz";
+ path = fetchurl {
+ name = "null_check___null_check_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz";
+ sha1 = "977dffd7176012b9ec30d2a39db5cf72a0439edd";
+ };
+ }
+
+ {
+ name = "number_is_nan___number_is_nan_1.0.1.tgz";
+ path = fetchurl {
+ name = "number_is_nan___number_is_nan_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz";
+ sha1 = "097b602b53422a522c1afb8790318336941a011d";
+ };
+ }
+
+ {
+ name = "oauth_sign___oauth_sign_0.3.0.tgz";
+ path = fetchurl {
+ name = "oauth_sign___oauth_sign_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.3.0.tgz";
+ sha1 = "cb540f93bb2b22a7d5941691a288d60e8ea9386e";
+ };
+ }
+
+ {
+ name = "oauth_sign___oauth_sign_0.5.0.tgz";
+ path = fetchurl {
+ name = "oauth_sign___oauth_sign_0.5.0.tgz";
+ url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.5.0.tgz";
+ sha1 = "d767f5169325620eab2e087ef0c472e773db6461";
+ };
+ }
+
+ {
+ name = "oauth_sign___oauth_sign_0.9.0.tgz";
+ path = fetchurl {
+ name = "oauth_sign___oauth_sign_0.9.0.tgz";
+ url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
+ sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
+ };
+ }
+
+ {
+ name = "object_assign___object_assign_4.1.1.tgz";
+ path = fetchurl {
+ name = "object_assign___object_assign_4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
+ sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+ };
+ }
+
+ {
+ name = "object_assign___object_assign_4.1.0.tgz";
+ path = fetchurl {
+ name = "object_assign___object_assign_4.1.0.tgz";
+ url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz";
+ sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
+ };
+ }
+
+ {
+ name = "object_assign___object_assign_2.1.1.tgz";
+ path = fetchurl {
+ name = "object_assign___object_assign_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz";
+ sha1 = "43c36e5d569ff8e4816c4efa8be02d26967c18aa";
+ };
+ }
+
+ {
+ name = "object_assign___object_assign_3.0.0.tgz";
+ path = fetchurl {
+ name = "object_assign___object_assign_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz";
+ sha1 = "9bedd5ca0897949bca47e7ff408062d549f587f2";
+ };
+ }
+
+ {
+ name = "object_assign___object_assign_0.1.2.tgz";
+ path = fetchurl {
+ name = "object_assign___object_assign_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/object-assign/-/object-assign-0.1.2.tgz";
+ sha1 = "036992f073aff7b2db83d06b3fb3155a5ccac37f";
+ };
+ }
+
+ {
+ name = "object_component___object_component_0.0.3.tgz";
+ path = fetchurl {
+ name = "object_component___object_component_0.0.3.tgz";
+ url = "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz";
+ sha1 = "f0c69aa50efc95b866c186f400a33769cb2f1291";
+ };
+ }
+
+ {
+ name = "object_copy___object_copy_0.1.0.tgz";
+ path = fetchurl {
+ name = "object_copy___object_copy_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz";
+ sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
+ };
+ }
+
+ {
+ name = "object_keys___object_keys_0.4.0.tgz";
+ path = fetchurl {
+ name = "object_keys___object_keys_0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz";
+ sha1 = "28a6aae7428dd2c3a92f3d95f21335dd204e0336";
+ };
+ }
+
+ {
+ name = "object_visit___object_visit_1.0.1.tgz";
+ path = fetchurl {
+ name = "object_visit___object_visit_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz";
+ sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
+ };
+ }
+
+ {
+ name = "object.defaults___object.defaults_1.1.0.tgz";
+ path = fetchurl {
+ name = "object.defaults___object.defaults_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz";
+ sha1 = "3a7f868334b407dea06da16d88d5cd29e435fecf";
+ };
+ }
+
+ {
+ name = "object.map___object.map_1.0.1.tgz";
+ path = fetchurl {
+ name = "object.map___object.map_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz";
+ sha1 = "cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37";
+ };
+ }
+
+ {
+ name = "object.omit___object.omit_2.0.1.tgz";
+ path = fetchurl {
+ name = "object.omit___object.omit_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz";
+ sha1 = "1a9c744829f39dbb858c76ca3579ae2a54ebd1fa";
+ };
+ }
+
+ {
+ name = "object.pick___object.pick_1.3.0.tgz";
+ path = fetchurl {
+ name = "object.pick___object.pick_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz";
+ sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
+ };
+ }
+
+ {
+ name = "on_finished___on_finished_2.3.0.tgz";
+ path = fetchurl {
+ name = "on_finished___on_finished_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
+ sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+ };
+ }
+
+ {
+ name = "once___once_1.4.0.tgz";
+ path = fetchurl {
+ name = "once___once_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
+ sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+ };
+ }
+
+ {
+ name = "once___once_1.3.3.tgz";
+ path = fetchurl {
+ name = "once___once_1.3.3.tgz";
+ url = "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz";
+ sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20";
+ };
+ }
+
+ {
+ name = "opn___opn_0.1.2.tgz";
+ path = fetchurl {
+ name = "opn___opn_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/opn/-/opn-0.1.2.tgz";
+ sha1 = "c527832cfd964d52096b524d0035ecaece51db4f";
+ };
+ }
+
+ {
+ name = "optimist___optimist_0.6.1.tgz";
+ path = fetchurl {
+ name = "optimist___optimist_0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz";
+ sha1 = "da3ea74686fa21a19a111c326e90eb15a0196686";
+ };
+ }
+
+ {
+ name = "optimist___optimist_0.3.7.tgz";
+ path = fetchurl {
+ name = "optimist___optimist_0.3.7.tgz";
+ url = "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz";
+ sha1 = "c90941ad59e4273328923074d2cf2e7cbc6ec0d9";
+ };
+ }
+
+ {
+ name = "optionator___optionator_0.8.3.tgz";
+ path = fetchurl {
+ name = "optionator___optionator_0.8.3.tgz";
+ url = "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz";
+ sha1 = "84fa1d036fe9d3c7e21d99884b601167ec8fb495";
+ };
+ }
+
+ {
+ name = "options___options_0.0.6.tgz";
+ path = fetchurl {
+ name = "options___options_0.0.6.tgz";
+ url = "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz";
+ sha1 = "ec22d312806bb53e731773e7cdaefcf1c643128f";
+ };
+ }
+
+ {
+ name = "orchestrator___orchestrator_0.3.8.tgz";
+ path = fetchurl {
+ name = "orchestrator___orchestrator_0.3.8.tgz";
+ url = "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz";
+ sha1 = "14e7e9e2764f7315fbac184e506c7aa6df94ad7e";
+ };
+ }
+
+ {
+ name = "ordered_ast_traverse___ordered_ast_traverse_1.1.1.tgz";
+ path = fetchurl {
+ name = "ordered_ast_traverse___ordered_ast_traverse_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ordered-ast-traverse/-/ordered-ast-traverse-1.1.1.tgz";
+ sha1 = "6843a170bc0eee8b520cc8ddc1ddd3aa30fa057c";
+ };
+ }
+
+ {
+ name = "ordered_esprima_props___ordered_esprima_props_1.1.0.tgz";
+ path = fetchurl {
+ name = "ordered_esprima_props___ordered_esprima_props_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/ordered-esprima-props/-/ordered-esprima-props-1.1.0.tgz";
+ sha1 = "a9827086df5f010aa60e9bd02b6e0335cea2ffcb";
+ };
+ }
+
+ {
+ name = "ordered_read_streams___ordered_read_streams_0.1.0.tgz";
+ path = fetchurl {
+ name = "ordered_read_streams___ordered_read_streams_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz";
+ sha1 = "fd565a9af8eb4473ba69b6ed8a34352cb552f126";
+ };
+ }
+
+ {
+ name = "os_browserify___os_browserify_0.1.2.tgz";
+ path = fetchurl {
+ name = "os_browserify___os_browserify_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz";
+ sha1 = "49ca0293e0b19590a5f5de10c7f265a617d8fe54";
+ };
+ }
+
+ {
+ name = "os_homedir___os_homedir_1.0.2.tgz";
+ path = fetchurl {
+ name = "os_homedir___os_homedir_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz";
+ sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
+ };
+ }
+
+ {
+ name = "os_locale___os_locale_1.4.0.tgz";
+ path = fetchurl {
+ name = "os_locale___os_locale_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz";
+ sha1 = "20f9f17ae29ed345e8bde583b13d2009803c14d9";
+ };
+ }
+
+ {
+ name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
+ path = fetchurl {
+ name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
+ sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
+ };
+ }
+
+ {
+ name = "osenv___osenv_0.1.5.tgz";
+ path = fetchurl {
+ name = "osenv___osenv_0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz";
+ sha1 = "85cdfafaeb28e8677f416e287592b5f3f49ea410";
+ };
+ }
+
+ {
+ name = "osenv___osenv_0.0.3.tgz";
+ path = fetchurl {
+ name = "osenv___osenv_0.0.3.tgz";
+ url = "https://registry.yarnpkg.com/osenv/-/osenv-0.0.3.tgz";
+ sha1 = "cd6ad8ddb290915ad9e22765576025d411f29cb6";
+ };
+ }
+
+ {
+ name = "p_throttler___p_throttler_0.0.1.tgz";
+ path = fetchurl {
+ name = "p_throttler___p_throttler_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/p-throttler/-/p-throttler-0.0.1.tgz";
+ sha1 = "c341e3589ec843852a035e6f88e6c1e96150029b";
+ };
+ }
+
+ {
+ name = "package_json___package_json_1.2.0.tgz";
+ path = fetchurl {
+ name = "package_json___package_json_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/package-json/-/package-json-1.2.0.tgz";
+ sha1 = "c8ecac094227cdf76a316874ed05e27cc939a0e0";
+ };
+ }
+
+ {
+ name = "pako___pako_0.2.9.tgz";
+ path = fetchurl {
+ name = "pako___pako_0.2.9.tgz";
+ url = "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz";
+ sha1 = "f3f7522f4ef782348da8161bad9ecfd51bf83a75";
+ };
+ }
+
+ {
+ name = "parents___parents_0.0.2.tgz";
+ path = fetchurl {
+ name = "parents___parents_0.0.2.tgz";
+ url = "https://registry.yarnpkg.com/parents/-/parents-0.0.2.tgz";
+ sha1 = "67147826e497d40759aaf5ba4c99659b6034d302";
+ };
+ }
+
+ {
+ name = "parents___parents_0.0.3.tgz";
+ path = fetchurl {
+ name = "parents___parents_0.0.3.tgz";
+ url = "https://registry.yarnpkg.com/parents/-/parents-0.0.3.tgz";
+ sha1 = "fa212f024d9fa6318dbb6b4ce676c8be493b9c43";
+ };
+ }
+
+ {
+ name = "parse_filepath___parse_filepath_1.0.2.tgz";
+ path = fetchurl {
+ name = "parse_filepath___parse_filepath_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz";
+ sha1 = "a632127f53aaf3d15876f5872f3ffac763d6c891";
+ };
+ }
+
+ {
+ name = "parse_glob___parse_glob_3.0.4.tgz";
+ path = fetchurl {
+ name = "parse_glob___parse_glob_3.0.4.tgz";
+ url = "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz";
+ sha1 = "b2c376cfb11f35513badd173ef0bb6e3a388391c";
+ };
+ }
+
+ {
+ name = "parse_json___parse_json_2.2.0.tgz";
+ path = fetchurl {
+ name = "parse_json___parse_json_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz";
+ sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
+ };
+ }
+
+ {
+ name = "parse_node_version___parse_node_version_1.0.1.tgz";
+ path = fetchurl {
+ name = "parse_node_version___parse_node_version_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz";
+ sha1 = "e2b5dbede00e7fa9bc363607f53327e8b073189b";
+ };
+ }
+
+ {
+ name = "parse_passwd___parse_passwd_1.0.0.tgz";
+ path = fetchurl {
+ name = "parse_passwd___parse_passwd_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz";
+ sha1 = "6d5b934a456993b23d37f40a382d6f1666a8e5c6";
+ };
+ }
+
+ {
+ name = "parsejson___parsejson_0.0.3.tgz";
+ path = fetchurl {
+ name = "parsejson___parsejson_0.0.3.tgz";
+ url = "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz";
+ sha1 = "ab7e3759f209ece99437973f7d0f1f64ae0e64ab";
+ };
+ }
+
+ {
+ name = "parseqs___parseqs_0.0.5.tgz";
+ path = fetchurl {
+ name = "parseqs___parseqs_0.0.5.tgz";
+ url = "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz";
+ sha1 = "d5208a3738e46766e291ba2ea173684921a8b89d";
+ };
+ }
+
+ {
+ name = "parseuri___parseuri_0.0.5.tgz";
+ path = fetchurl {
+ name = "parseuri___parseuri_0.0.5.tgz";
+ url = "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz";
+ sha1 = "80204a50d4dbb779bfdc6ebe2778d90e4bce320a";
+ };
+ }
+
+ {
+ name = "parseurl___parseurl_1.3.3.tgz";
+ path = fetchurl {
+ name = "parseurl___parseurl_1.3.3.tgz";
+ url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz";
+ sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4";
+ };
+ }
+
+ {
+ name = "pascalcase___pascalcase_0.1.1.tgz";
+ path = fetchurl {
+ name = "pascalcase___pascalcase_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz";
+ sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
+ };
+ }
+
+ {
+ name = "path_browserify___path_browserify_0.0.1.tgz";
+ path = fetchurl {
+ name = "path_browserify___path_browserify_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz";
+ sha1 = "e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a";
+ };
+ }
+
+ {
+ name = "path_exists___path_exists_2.1.0.tgz";
+ path = fetchurl {
+ name = "path_exists___path_exists_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz";
+ sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
+ };
+ }
+
+ {
+ name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
+ path = fetchurl {
+ name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+ sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+ };
+ }
+
+ {
+ name = "path_parse___path_parse_1.0.6.tgz";
+ path = fetchurl {
+ name = "path_parse___path_parse_1.0.6.tgz";
+ url = "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz";
+ sha1 = "d62dbb5679405d72c4737ec58600e9ddcf06d24c";
+ };
+ }
+
+ {
+ name = "path_platform___path_platform_0.0.1.tgz";
+ path = fetchurl {
+ name = "path_platform___path_platform_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/path-platform/-/path-platform-0.0.1.tgz";
+ sha1 = "b5585d7c3c463d89aa0060d86611cf1afd617e2a";
+ };
+ }
+
+ {
+ name = "path_root_regex___path_root_regex_0.1.2.tgz";
+ path = fetchurl {
+ name = "path_root_regex___path_root_regex_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz";
+ sha1 = "bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d";
+ };
+ }
+
+ {
+ name = "path_root___path_root_0.1.1.tgz";
+ path = fetchurl {
+ name = "path_root___path_root_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz";
+ sha1 = "9a4a6814cac1c0cd73360a95f32083c8ea4745b7";
+ };
+ }
+
+ {
+ name = "path_type___path_type_1.1.0.tgz";
+ path = fetchurl {
+ name = "path_type___path_type_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz";
+ sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441";
+ };
+ }
+
+ {
+ name = "pause_stream___pause_stream_0.0.11.tgz";
+ path = fetchurl {
+ name = "pause_stream___pause_stream_0.0.11.tgz";
+ url = "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz";
+ sha1 = "fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445";
+ };
+ }
+
+ {
+ name = "performance_now___performance_now_2.1.0.tgz";
+ path = fetchurl {
+ name = "performance_now___performance_now_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
+ sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+ };
+ }
+
+ {
+ name = "pify___pify_2.3.0.tgz";
+ path = fetchurl {
+ name = "pify___pify_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
+ sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
+ };
+ }
+
+ {
+ name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
+ path = fetchurl {
+ name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
+ sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
+ };
+ }
+
+ {
+ name = "pinkie___pinkie_2.0.4.tgz";
+ path = fetchurl {
+ name = "pinkie___pinkie_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz";
+ sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
+ };
+ }
+
+ {
+ name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
+ path = fetchurl {
+ name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
+ sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
+ };
+ }
+
+ {
+ name = "prelude_ls___prelude_ls_1.1.2.tgz";
+ path = fetchurl {
+ name = "prelude_ls___prelude_ls_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz";
+ sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
+ };
+ }
+
+ {
+ name = "prepend_http___prepend_http_1.0.4.tgz";
+ path = fetchurl {
+ name = "prepend_http___prepend_http_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz";
+ sha1 = "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc";
+ };
+ }
+
+ {
+ name = "preserve___preserve_0.2.0.tgz";
+ path = fetchurl {
+ name = "preserve___preserve_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz";
+ sha1 = "815ed1f6ebc65926f865b310c0713bcb3315ce4b";
+ };
+ }
+
+ {
+ name = "pretty_hrtime___pretty_hrtime_1.0.3.tgz";
+ path = fetchurl {
+ name = "pretty_hrtime___pretty_hrtime_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz";
+ sha1 = "b7e3ea42435a4c9b2759d99e0f201eb195802ee1";
+ };
+ }
+
+ {
+ name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
+ path = fetchurl {
+ name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
+ sha1 = "7820d9b16120cc55ca9ae7792680ae7dba6d7fe2";
+ };
+ }
+
+ {
+ name = "process___process_0.7.0.tgz";
+ path = fetchurl {
+ name = "process___process_0.7.0.tgz";
+ url = "https://registry.yarnpkg.com/process/-/process-0.7.0.tgz";
+ sha1 = "c52208161a34adf3812344ae85d3e6150469389d";
+ };
+ }
+
+ {
+ name = "process___process_0.5.2.tgz";
+ path = fetchurl {
+ name = "process___process_0.5.2.tgz";
+ url = "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz";
+ sha1 = "1638d8a8e34c2f440a91db95ab9aeb677fc185cf";
+ };
+ }
+
+ {
+ name = "process___process_0.6.0.tgz";
+ path = fetchurl {
+ name = "process___process_0.6.0.tgz";
+ url = "https://registry.yarnpkg.com/process/-/process-0.6.0.tgz";
+ sha1 = "7dd9be80ffaaedd4cb628f1827f1cbab6dc0918f";
+ };
+ }
+
+ {
+ name = "promise___promise_7.3.1.tgz";
+ path = fetchurl {
+ name = "promise___promise_7.3.1.tgz";
+ url = "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz";
+ sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf";
+ };
+ }
+
+ {
+ name = "promptly___promptly_0.2.1.tgz";
+ path = fetchurl {
+ name = "promptly___promptly_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/promptly/-/promptly-0.2.1.tgz";
+ sha1 = "6444e7ca4dbd9899e7eeb5ec3922827ebdc22b3b";
+ };
+ }
+
+ {
+ name = "pseudomap___pseudomap_1.0.2.tgz";
+ path = fetchurl {
+ name = "pseudomap___pseudomap_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz";
+ sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
+ };
+ }
+
+ {
+ name = "psl___psl_1.8.0.tgz";
+ path = fetchurl {
+ name = "psl___psl_1.8.0.tgz";
+ url = "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz";
+ sha1 = "9326f8bcfb013adcc005fdff056acce020e51c24";
+ };
+ }
+
+ {
+ name = "pug_attrs___pug_attrs_2.0.4.tgz";
+ path = fetchurl {
+ name = "pug_attrs___pug_attrs_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz";
+ sha1 = "b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336";
+ };
+ }
+
+ {
+ name = "pug_code_gen___pug_code_gen_2.0.2.tgz";
+ path = fetchurl {
+ name = "pug_code_gen___pug_code_gen_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.2.tgz";
+ sha1 = "ad0967162aea077dcf787838d94ed14acb0217c2";
+ };
+ }
+
+ {
+ name = "pug_error___pug_error_1.3.3.tgz";
+ path = fetchurl {
+ name = "pug_error___pug_error_1.3.3.tgz";
+ url = "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz";
+ sha1 = "f342fb008752d58034c185de03602dd9ffe15fa6";
+ };
+ }
+
+ {
+ name = "pug_filters___pug_filters_3.1.1.tgz";
+ path = fetchurl {
+ name = "pug_filters___pug_filters_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz";
+ sha1 = "ab2cc82db9eeccf578bda89130e252a0db026aa7";
+ };
+ }
+
+ {
+ name = "pug_lexer___pug_lexer_4.1.0.tgz";
+ path = fetchurl {
+ name = "pug_lexer___pug_lexer_4.1.0.tgz";
+ url = "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz";
+ sha1 = "531cde48c7c0b1fcbbc2b85485c8665e31489cfd";
+ };
+ }
+
+ {
+ name = "pug_linker___pug_linker_3.0.6.tgz";
+ path = fetchurl {
+ name = "pug_linker___pug_linker_3.0.6.tgz";
+ url = "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz";
+ sha1 = "f5bf218b0efd65ce6670f7afc51658d0f82989fb";
+ };
+ }
+
+ {
+ name = "pug_load___pug_load_2.0.12.tgz";
+ path = fetchurl {
+ name = "pug_load___pug_load_2.0.12.tgz";
+ url = "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz";
+ sha1 = "d38c85eb85f6e2f704dea14dcca94144d35d3e7b";
+ };
+ }
+
+ {
+ name = "pug_parser___pug_parser_5.0.1.tgz";
+ path = fetchurl {
+ name = "pug_parser___pug_parser_5.0.1.tgz";
+ url = "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz";
+ sha1 = "03e7ada48b6840bd3822f867d7d90f842d0ffdc9";
+ };
+ }
+
+ {
+ name = "pug_runtime___pug_runtime_2.0.5.tgz";
+ path = fetchurl {
+ name = "pug_runtime___pug_runtime_2.0.5.tgz";
+ url = "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz";
+ sha1 = "6da7976c36bf22f68e733c359240d8ae7a32953a";
+ };
+ }
+
+ {
+ name = "pug_strip_comments___pug_strip_comments_1.0.4.tgz";
+ path = fetchurl {
+ name = "pug_strip_comments___pug_strip_comments_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz";
+ sha1 = "cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8";
+ };
+ }
+
+ {
+ name = "pug_walk___pug_walk_1.1.8.tgz";
+ path = fetchurl {
+ name = "pug_walk___pug_walk_1.1.8.tgz";
+ url = "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz";
+ sha1 = "b408f67f27912f8c21da2f45b7230c4bd2a5ea7a";
+ };
+ }
+
+ {
+ name = "pug___pug_2.0.4.tgz";
+ path = fetchurl {
+ name = "pug___pug_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz";
+ sha1 = "ee7682ec0a60494b38d48a88f05f3b0ac931377d";
+ };
+ }
+
+ {
+ name = "punycode___punycode_1.3.2.tgz";
+ path = fetchurl {
+ name = "punycode___punycode_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz";
+ sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
+ };
+ }
+
+ {
+ name = "punycode___punycode_2.1.1.tgz";
+ path = fetchurl {
+ name = "punycode___punycode_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
+ sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
+ };
+ }
+
+ {
+ name = "punycode___punycode_1.2.4.tgz";
+ path = fetchurl {
+ name = "punycode___punycode_1.2.4.tgz";
+ url = "https://registry.yarnpkg.com/punycode/-/punycode-1.2.4.tgz";
+ sha1 = "54008ac972aec74175def9cba6df7fa9d3918740";
+ };
+ }
+
+ {
+ name = "q___q_1.5.1.tgz";
+ path = fetchurl {
+ name = "q___q_1.5.1.tgz";
+ url = "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz";
+ sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
+ };
+ }
+
+ {
+ name = "q___q_0.9.7.tgz";
+ path = fetchurl {
+ name = "q___q_0.9.7.tgz";
+ url = "https://registry.yarnpkg.com/q/-/q-0.9.7.tgz";
+ sha1 = "4de2e6cb3b29088c9e4cbc03bf9d42fb96ce2f75";
+ };
+ }
+
+ {
+ name = "q___q_1.0.1.tgz";
+ path = fetchurl {
+ name = "q___q_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/q/-/q-1.0.1.tgz";
+ sha1 = "11872aeedee89268110b10a718448ffb10112a14";
+ };
+ }
+
+ {
+ name = "qs___qs_5.2.0.tgz";
+ path = fetchurl {
+ name = "qs___qs_5.2.0.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-5.2.0.tgz";
+ sha1 = "a9f31142af468cb72b25b30136ba2456834916be";
+ };
+ }
+
+ {
+ name = "qs___qs_6.7.0.tgz";
+ path = fetchurl {
+ name = "qs___qs_6.7.0.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz";
+ sha1 = "41dc1a015e3d581f1621776be31afb2876a9b1bc";
+ };
+ }
+
+ {
+ name = "qs___qs_0.6.6.tgz";
+ path = fetchurl {
+ name = "qs___qs_0.6.6.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-0.6.6.tgz";
+ sha1 = "6e015098ff51968b8a3c819001d5f2c89bc4b107";
+ };
+ }
+
+ {
+ name = "qs___qs_1.0.2.tgz";
+ path = fetchurl {
+ name = "qs___qs_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-1.0.2.tgz";
+ sha1 = "50a93e2b5af6691c31bcea5dae78ee6ea1903768";
+ };
+ }
+
+ {
+ name = "qs___qs_2.2.5.tgz";
+ path = fetchurl {
+ name = "qs___qs_2.2.5.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-2.2.5.tgz";
+ sha1 = "1088abaf9dcc0ae5ae45b709e6c6b5888b23923c";
+ };
+ }
+
+ {
+ name = "qs___qs_2.3.3.tgz";
+ path = fetchurl {
+ name = "qs___qs_2.3.3.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz";
+ sha1 = "e9e85adbe75da0bbe4c8e0476a086290f863b404";
+ };
+ }
+
+ {
+ name = "qs___qs_6.5.2.tgz";
+ path = fetchurl {
+ name = "qs___qs_6.5.2.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
+ sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
+ };
+ }
+
+ {
+ name = "querystring_es3___querystring_es3_0.2.0.tgz";
+ path = fetchurl {
+ name = "querystring_es3___querystring_es3_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.0.tgz";
+ sha1 = "c365a08a69c443accfeb3a9deab35e3f0abaa476";
+ };
+ }
+
+ {
+ name = "querystring___querystring_0.2.0.tgz";
+ path = fetchurl {
+ name = "querystring___querystring_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz";
+ sha1 = "b209849203bb25df820da756e747005878521620";
+ };
+ }
+
+ {
+ name = "randomatic___randomatic_3.1.1.tgz";
+ path = fetchurl {
+ name = "randomatic___randomatic_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz";
+ sha1 = "b776efc59375984e36c537b2f51a1f0aff0da1ed";
+ };
+ }
+
+ {
+ name = "range_parser___range_parser_1.0.3.tgz";
+ path = fetchurl {
+ name = "range_parser___range_parser_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz";
+ sha1 = "6872823535c692e2c2a0103826afd82c2e0ff175";
+ };
+ }
+
+ {
+ name = "raw_body___raw_body_2.4.0.tgz";
+ path = fetchurl {
+ name = "raw_body___raw_body_2.4.0.tgz";
+ url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz";
+ sha1 = "a1ce6fb9c9bc356ca52e89256ab59059e13d0332";
+ };
+ }
+
+ {
+ name = "raw_body___raw_body_2.1.7.tgz";
+ path = fetchurl {
+ name = "raw_body___raw_body_2.1.7.tgz";
+ url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz";
+ sha1 = "adfeace2e4fb3098058014d08c072dcc59758774";
+ };
+ }
+
+ {
+ name = "rc___rc_1.2.8.tgz";
+ path = fetchurl {
+ name = "rc___rc_1.2.8.tgz";
+ url = "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz";
+ sha1 = "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed";
+ };
+ }
+
+ {
+ name = "read_all_stream___read_all_stream_3.1.0.tgz";
+ path = fetchurl {
+ name = "read_all_stream___read_all_stream_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz";
+ sha1 = "35c3e177f2078ef789ee4bfafa4373074eaef4fa";
+ };
+ }
+
+ {
+ name = "read_pkg_up___read_pkg_up_1.0.1.tgz";
+ path = fetchurl {
+ name = "read_pkg_up___read_pkg_up_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz";
+ sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02";
+ };
+ }
+
+ {
+ name = "read_pkg___read_pkg_1.1.0.tgz";
+ path = fetchurl {
+ name = "read_pkg___read_pkg_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz";
+ sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28";
+ };
+ }
+
+ {
+ name = "read___read_1.0.7.tgz";
+ path = fetchurl {
+ name = "read___read_1.0.7.tgz";
+ url = "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz";
+ sha1 = "b3da19bd052431a97671d44a42634adf710b40c4";
+ };
+ }
+
+ {
+ name = "readable_stream___readable_stream_1.0.34.tgz";
+ path = fetchurl {
+ name = "readable_stream___readable_stream_1.0.34.tgz";
+ url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz";
+ sha1 = "125820e34bc842d2f2aaafafe4c2916ee32c157c";
+ };
+ }
+
+ {
+ name = "readable_stream___readable_stream_1.1.14.tgz";
+ path = fetchurl {
+ name = "readable_stream___readable_stream_1.1.14.tgz";
+ url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz";
+ sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
+ };
+ }
+
+ {
+ name = "readable_stream___readable_stream_2.3.7.tgz";
+ path = fetchurl {
+ name = "readable_stream___readable_stream_2.3.7.tgz";
+ url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz";
+ sha1 = "1eca1cf711aef814c04f62252a36a62f6cb23b57";
+ };
+ }
+
+ {
+ name = "readdirp___readdirp_2.2.1.tgz";
+ path = fetchurl {
+ name = "readdirp___readdirp_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz";
+ sha1 = "0e87622a3325aa33e892285caf8b4e846529a525";
+ };
+ }
+
+ {
+ name = "readline2___readline2_0.1.1.tgz";
+ path = fetchurl {
+ name = "readline2___readline2_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/readline2/-/readline2-0.1.1.tgz";
+ sha1 = "99443ba6e83b830ef3051bfd7dc241a82728d568";
+ };
+ }
+
+ {
+ name = "rechoir___rechoir_0.6.2.tgz";
+ path = fetchurl {
+ name = "rechoir___rechoir_0.6.2.tgz";
+ url = "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz";
+ sha1 = "85204b54dba82d5742e28c96756ef43af50e3384";
+ };
+ }
+
+ {
+ name = "redent___redent_1.0.0.tgz";
+ path = fetchurl {
+ name = "redent___redent_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz";
+ sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde";
+ };
+ }
+
+ {
+ name = "redeyed___redeyed_0.4.4.tgz";
+ path = fetchurl {
+ name = "redeyed___redeyed_0.4.4.tgz";
+ url = "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz";
+ sha1 = "37e990a6f2b21b2a11c2e6a48fd4135698cba97f";
+ };
+ }
+
+ {
+ name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
+ path = fetchurl {
+ name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
+ url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
+ sha1 = "be05ad7f9bf7d22e056f9726cee5017fbf19e2e9";
+ };
+ }
+
+ {
+ name = "regex_cache___regex_cache_0.4.4.tgz";
+ path = fetchurl {
+ name = "regex_cache___regex_cache_0.4.4.tgz";
+ url = "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz";
+ sha1 = "75bdc58a2a1496cec48a12835bc54c8d562336dd";
+ };
+ }
+
+ {
+ name = "regex_not___regex_not_1.0.2.tgz";
+ path = fetchurl {
+ name = "regex_not___regex_not_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz";
+ sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c";
+ };
+ }
+
+ {
+ name = "registry_url___registry_url_3.1.0.tgz";
+ path = fetchurl {
+ name = "registry_url___registry_url_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz";
+ sha1 = "3d4ef870f73dde1d77f0cf9a381432444e174942";
+ };
+ }
+
+ {
+ name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
+ path = fetchurl {
+ name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
+ sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
+ };
+ }
+
+ {
+ name = "repeat_element___repeat_element_1.1.3.tgz";
+ path = fetchurl {
+ name = "repeat_element___repeat_element_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz";
+ sha1 = "782e0d825c0c5a3bb39731f84efee6b742e6b1ce";
+ };
+ }
+
+ {
+ name = "repeat_string___repeat_string_0.2.2.tgz";
+ path = fetchurl {
+ name = "repeat_string___repeat_string_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz";
+ sha1 = "c7a8d3236068362059a7e4651fc6884e8b1fb4ae";
+ };
+ }
+
+ {
+ name = "repeat_string___repeat_string_1.6.1.tgz";
+ path = fetchurl {
+ name = "repeat_string___repeat_string_1.6.1.tgz";
+ url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz";
+ sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
+ };
+ }
+
+ {
+ name = "repeating___repeating_2.0.1.tgz";
+ path = fetchurl {
+ name = "repeating___repeating_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz";
+ sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
+ };
+ }
+
+ {
+ name = "replace_ext___replace_ext_0.0.1.tgz";
+ path = fetchurl {
+ name = "replace_ext___replace_ext_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz";
+ sha1 = "29bbd92078a739f0bcce2b4ee41e837953522924";
+ };
+ }
+
+ {
+ name = "replace_ext___replace_ext_1.0.0.tgz";
+ path = fetchurl {
+ name = "replace_ext___replace_ext_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz";
+ sha1 = "de63128373fcbf7c3ccfa4de5a480c45a67958eb";
+ };
+ }
+
+ {
+ name = "replacestream___replacestream_4.0.3.tgz";
+ path = fetchurl {
+ name = "replacestream___replacestream_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/replacestream/-/replacestream-4.0.3.tgz";
+ sha1 = "3ee5798092be364b1cdb1484308492cb3dff2f36";
+ };
+ }
+
+ {
+ name = "request_progress___request_progress_0.3.1.tgz";
+ path = fetchurl {
+ name = "request_progress___request_progress_0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/request-progress/-/request-progress-0.3.1.tgz";
+ sha1 = "0721c105d8a96ac6b2ce8b2c89ae2d5ecfcf6b3a";
+ };
+ }
+
+ {
+ name = "request_replay___request_replay_0.2.0.tgz";
+ path = fetchurl {
+ name = "request_replay___request_replay_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/request-replay/-/request-replay-0.2.0.tgz";
+ sha1 = "9b693a5d118b39f5c596ead5ed91a26444057f60";
+ };
+ }
+
+ {
+ name = "request___request_2.88.2.tgz";
+ path = fetchurl {
+ name = "request___request_2.88.2.tgz";
+ url = "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz";
+ sha1 = "d73c918731cb5a87da047e207234146f664d12b3";
+ };
+ }
+
+ {
+ name = "request___request_2.27.0.tgz";
+ path = fetchurl {
+ name = "request___request_2.27.0.tgz";
+ url = "https://registry.yarnpkg.com/request/-/request-2.27.0.tgz";
+ sha1 = "dfb1a224dd3a5a9bade4337012503d710e538668";
+ };
+ }
+
+ {
+ name = "request___request_2.36.0.tgz";
+ path = fetchurl {
+ name = "request___request_2.36.0.tgz";
+ url = "https://registry.yarnpkg.com/request/-/request-2.36.0.tgz";
+ sha1 = "28c6c04262c7b9ffdd21b9255374517ee6d943f5";
+ };
+ }
+
+ {
+ name = "request___request_2.40.0.tgz";
+ path = fetchurl {
+ name = "request___request_2.40.0.tgz";
+ url = "https://registry.yarnpkg.com/request/-/request-2.40.0.tgz";
+ sha1 = "4dd670f696f1e6e842e66b4b5e839301ab9beb67";
+ };
+ }
+
+ {
+ name = "request___request_2.51.0.tgz";
+ path = fetchurl {
+ name = "request___request_2.51.0.tgz";
+ url = "https://registry.yarnpkg.com/request/-/request-2.51.0.tgz";
+ sha1 = "35d00bbecc012e55f907b1bd9e0dbd577bfef26e";
+ };
+ }
+
+ {
+ name = "require_directory___require_directory_2.1.1.tgz";
+ path = fetchurl {
+ name = "require_directory___require_directory_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
+ sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
+ };
+ }
+
+ {
+ name = "require_main_filename___require_main_filename_1.0.1.tgz";
+ path = fetchurl {
+ name = "require_main_filename___require_main_filename_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz";
+ sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
+ };
+ }
+
+ {
+ name = "requires_port___requires_port_1.0.0.tgz";
+ path = fetchurl {
+ name = "requires_port___requires_port_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz";
+ sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
+ };
+ }
+
+ {
+ name = "resolve_dir___resolve_dir_1.0.1.tgz";
+ path = fetchurl {
+ name = "resolve_dir___resolve_dir_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz";
+ sha1 = "79a40644c362be82f26effe739c9bb5382046f43";
+ };
+ }
+
+ {
+ name = "resolve_url___resolve_url_0.2.1.tgz";
+ path = fetchurl {
+ name = "resolve_url___resolve_url_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz";
+ sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
+ };
+ }
+
+ {
+ name = "resolve___resolve_0.6.3.tgz";
+ path = fetchurl {
+ name = "resolve___resolve_0.6.3.tgz";
+ url = "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz";
+ sha1 = "dd957982e7e736debdf53b58a4dd91754575dd46";
+ };
+ }
+
+ {
+ name = "resolve___resolve_1.1.7.tgz";
+ path = fetchurl {
+ name = "resolve___resolve_1.1.7.tgz";
+ url = "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz";
+ sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b";
+ };
+ }
+
+ {
+ name = "resolve___resolve_1.15.1.tgz";
+ path = fetchurl {
+ name = "resolve___resolve_1.15.1.tgz";
+ url = "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz";
+ sha1 = "27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8";
+ };
+ }
+
+ {
+ name = "resolve___resolve_0.3.1.tgz";
+ path = fetchurl {
+ name = "resolve___resolve_0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/resolve/-/resolve-0.3.1.tgz";
+ sha1 = "34c63447c664c70598d1c9b126fc43b2a24310a4";
+ };
+ }
+
+ {
+ name = "ret___ret_0.1.15.tgz";
+ path = fetchurl {
+ name = "ret___ret_0.1.15.tgz";
+ url = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz";
+ sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc";
+ };
+ }
+
+ {
+ name = "retry___retry_0.6.1.tgz";
+ path = fetchurl {
+ name = "retry___retry_0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/retry/-/retry-0.6.1.tgz";
+ sha1 = "fdc90eed943fde11b893554b8cc63d0e899ba918";
+ };
+ }
+
+ {
+ name = "rfile___rfile_1.0.0.tgz";
+ path = fetchurl {
+ name = "rfile___rfile_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/rfile/-/rfile-1.0.0.tgz";
+ sha1 = "59708cf90ca1e74c54c3cfc5c36fdb9810435261";
+ };
+ }
+
+ {
+ name = "right_align___right_align_0.1.3.tgz";
+ path = fetchurl {
+ name = "right_align___right_align_0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz";
+ sha1 = "61339b722fe6a3515689210d24e14c96148613ef";
+ };
+ }
+
+ {
+ name = "rimraf___rimraf_2.7.1.tgz";
+ path = fetchurl {
+ name = "rimraf___rimraf_2.7.1.tgz";
+ url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz";
+ sha1 = "35797f13a7fdadc566142c29d4f07ccad483e3ec";
+ };
+ }
+
+ {
+ name = "rimraf___rimraf_2.2.8.tgz";
+ path = fetchurl {
+ name = "rimraf___rimraf_2.2.8.tgz";
+ url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz";
+ sha1 = "e439be2aaee327321952730f99a8929e4fc50582";
+ };
+ }
+
+ {
+ name = "rimraf___rimraf_2.4.5.tgz";
+ path = fetchurl {
+ name = "rimraf___rimraf_2.4.5.tgz";
+ url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz";
+ sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
+ };
+ }
+
+ {
+ name = "ruglify___ruglify_1.0.0.tgz";
+ path = fetchurl {
+ name = "ruglify___ruglify_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ruglify/-/ruglify-1.0.0.tgz";
+ sha1 = "dc8930e2a9544a274301cc9972574c0d0986b675";
+ };
+ }
+
+ {
+ name = "run_sequence___run_sequence_1.1.5.tgz";
+ path = fetchurl {
+ name = "run_sequence___run_sequence_1.1.5.tgz";
+ url = "https://registry.yarnpkg.com/run-sequence/-/run-sequence-1.1.5.tgz";
+ sha1 = "556bd47eb47877349e36c9c582748897db7be4f7";
+ };
+ }
+
+ {
+ name = "safe_buffer___safe_buffer_5.2.0.tgz";
+ path = fetchurl {
+ name = "safe_buffer___safe_buffer_5.2.0.tgz";
+ url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz";
+ sha1 = "b74daec49b1148f88c64b68d49b1e815c1f2f519";
+ };
+ }
+
+ {
+ name = "safe_buffer___safe_buffer_5.1.2.tgz";
+ path = fetchurl {
+ name = "safe_buffer___safe_buffer_5.1.2.tgz";
+ url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
+ sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
+ };
+ }
+
+ {
+ name = "safe_regex___safe_regex_1.1.0.tgz";
+ path = fetchurl {
+ name = "safe_regex___safe_regex_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz";
+ sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
+ };
+ }
+
+ {
+ name = "safer_buffer___safer_buffer_2.1.2.tgz";
+ path = fetchurl {
+ name = "safer_buffer___safer_buffer_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
+ sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
+ };
+ }
+
+ {
+ name = "sass_graph___sass_graph_2.2.4.tgz";
+ path = fetchurl {
+ name = "sass_graph___sass_graph_2.2.4.tgz";
+ url = "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz";
+ sha1 = "13fbd63cd1caf0908b9fd93476ad43a51d1e0b49";
+ };
+ }
+
+ {
+ name = "sax___sax_1.2.4.tgz";
+ path = fetchurl {
+ name = "sax___sax_1.2.4.tgz";
+ url = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
+ sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
+ };
+ }
+
+ {
+ name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz";
+ path = fetchurl {
+ name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz";
+ url = "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz";
+ sha1 = "8eb06db9a9723333824d3f5530641149847ce5d1";
+ };
+ }
+
+ {
+ name = "semver_diff___semver_diff_2.1.0.tgz";
+ path = fetchurl {
+ name = "semver_diff___semver_diff_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz";
+ sha1 = "4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36";
+ };
+ }
+
+ {
+ name = "semver___semver_5.7.1.tgz";
+ path = fetchurl {
+ name = "semver___semver_5.7.1.tgz";
+ url = "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz";
+ sha1 = "a954f931aeba508d307bbf069eff0c01c96116f7";
+ };
+ }
+
+ {
+ name = "semver___semver_4.3.6.tgz";
+ path = fetchurl {
+ name = "semver___semver_4.3.6.tgz";
+ url = "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz";
+ sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da";
+ };
+ }
+
+ {
+ name = "semver___semver_2.3.2.tgz";
+ path = fetchurl {
+ name = "semver___semver_2.3.2.tgz";
+ url = "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz";
+ sha1 = "b9848f25d6cf36333073ec9ef8856d42f1233e52";
+ };
+ }
+
+ {
+ name = "semver___semver_5.3.0.tgz";
+ path = fetchurl {
+ name = "semver___semver_5.3.0.tgz";
+ url = "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz";
+ sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
+ };
+ }
+
+ {
+ name = "send___send_0.13.2.tgz";
+ path = fetchurl {
+ name = "send___send_0.13.2.tgz";
+ url = "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz";
+ sha1 = "765e7607c8055452bba6f0b052595350986036de";
+ };
+ }
+
+ {
+ name = "sequencify___sequencify_0.0.7.tgz";
+ path = fetchurl {
+ name = "sequencify___sequencify_0.0.7.tgz";
+ url = "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz";
+ sha1 = "90cff19d02e07027fd767f5ead3e7b95d1e7380c";
+ };
+ }
+
+ {
+ name = "serve_static___serve_static_1.10.3.tgz";
+ path = fetchurl {
+ name = "serve_static___serve_static_1.10.3.tgz";
+ url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.10.3.tgz";
+ sha1 = "ce5a6ecd3101fed5ec09827dac22a9c29bfb0535";
+ };
+ }
+
+ {
+ name = "set_blocking___set_blocking_2.0.0.tgz";
+ path = fetchurl {
+ name = "set_blocking___set_blocking_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
+ sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
+ };
+ }
+
+ {
+ name = "set_value___set_value_2.0.1.tgz";
+ path = fetchurl {
+ name = "set_value___set_value_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz";
+ sha1 = "a18d40530e6f07de4228c7defe4227af8cad005b";
+ };
+ }
+
+ {
+ name = "setprototypeof___setprototypeof_1.1.1.tgz";
+ path = fetchurl {
+ name = "setprototypeof___setprototypeof_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz";
+ sha1 = "7e95acb24aa92f5885e0abef5ba131330d4ae683";
+ };
+ }
+
+ {
+ name = "shallow_copy___shallow_copy_0.0.1.tgz";
+ path = fetchurl {
+ name = "shallow_copy___shallow_copy_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz";
+ sha1 = "415f42702d73d810330292cc5ee86eae1a11a170";
+ };
+ }
+
+ {
+ name = "shell_quote___shell_quote_0.0.1.tgz";
+ path = fetchurl {
+ name = "shell_quote___shell_quote_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/shell-quote/-/shell-quote-0.0.1.tgz";
+ sha1 = "1a41196f3c0333c482323593d6886ecf153dd986";
+ };
+ }
+
+ {
+ name = "shell_quote___shell_quote_1.4.3.tgz";
+ path = fetchurl {
+ name = "shell_quote___shell_quote_1.4.3.tgz";
+ url = "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.4.3.tgz";
+ sha1 = "952c44e0b1ed9013ef53958179cc643e8777466b";
+ };
+ }
+
+ {
+ name = "sigmund___sigmund_1.0.1.tgz";
+ path = fetchurl {
+ name = "sigmund___sigmund_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz";
+ sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
+ };
+ }
+
+ {
+ name = "signal_exit___signal_exit_3.0.3.tgz";
+ path = fetchurl {
+ name = "signal_exit___signal_exit_3.0.3.tgz";
+ url = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz";
+ sha1 = "a1410c2edd8f077b08b4e253c8eacfcaf057461c";
+ };
+ }
+
+ {
+ name = "simple_fmt___simple_fmt_0.1.0.tgz";
+ path = fetchurl {
+ name = "simple_fmt___simple_fmt_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz";
+ sha1 = "191bf566a59e6530482cb25ab53b4a8dc85c3a6b";
+ };
+ }
+
+ {
+ name = "simple_is___simple_is_0.2.0.tgz";
+ path = fetchurl {
+ name = "simple_is___simple_is_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz";
+ sha1 = "2abb75aade39deb5cc815ce10e6191164850baf0";
+ };
+ }
+
+ {
+ name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
+ path = fetchurl {
+ name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
+ sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b";
+ };
+ }
+
+ {
+ name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
+ path = fetchurl {
+ name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
+ sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2";
+ };
+ }
+
+ {
+ name = "snapdragon___snapdragon_0.8.2.tgz";
+ path = fetchurl {
+ name = "snapdragon___snapdragon_0.8.2.tgz";
+ url = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz";
+ sha1 = "64922e7c565b0e14204ba1aa7d6964278d25182d";
+ };
+ }
+
+ {
+ name = "sntp___sntp_0.2.4.tgz";
+ path = fetchurl {
+ name = "sntp___sntp_0.2.4.tgz";
+ url = "https://registry.yarnpkg.com/sntp/-/sntp-0.2.4.tgz";
+ sha1 = "fb885f18b0f3aad189f824862536bceeec750900";
+ };
+ }
+
+ {
+ name = "socket.io_adapter___socket.io_adapter_0.5.0.tgz";
+ path = fetchurl {
+ name = "socket.io_adapter___socket.io_adapter_0.5.0.tgz";
+ url = "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz";
+ sha1 = "cb6d4bb8bec81e1078b99677f9ced0046066bb8b";
+ };
+ }
+
+ {
+ name = "socket.io_client___socket.io_client_1.7.4.tgz";
+ path = fetchurl {
+ name = "socket.io_client___socket.io_client_1.7.4.tgz";
+ url = "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.4.tgz";
+ sha1 = "ec9f820356ed99ef6d357f0756d648717bdd4281";
+ };
+ }
+
+ {
+ name = "socket.io_parser___socket.io_parser_2.3.1.tgz";
+ path = fetchurl {
+ name = "socket.io_parser___socket.io_parser_2.3.1.tgz";
+ url = "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz";
+ sha1 = "dd532025103ce429697326befd64005fcfe5b4a0";
+ };
+ }
+
+ {
+ name = "socket.io___socket.io_1.7.4.tgz";
+ path = fetchurl {
+ name = "socket.io___socket.io_1.7.4.tgz";
+ url = "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.4.tgz";
+ sha1 = "2f7ecedc3391bf2d5c73e291fe233e6e34d4dd00";
+ };
+ }
+
+ {
+ name = "source_map_resolve___source_map_resolve_0.5.3.tgz";
+ path = fetchurl {
+ name = "source_map_resolve___source_map_resolve_0.5.3.tgz";
+ url = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz";
+ sha1 = "190866bece7553e1f8f267a2ee82c606b5509a1a";
+ };
+ }
+
+ {
+ name = "source_map_url___source_map_url_0.4.0.tgz";
+ path = fetchurl {
+ name = "source_map_url___source_map_url_0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz";
+ sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
+ };
+ }
+
+ {
+ name = "source_map___source_map_0.1.34.tgz";
+ path = fetchurl {
+ name = "source_map___source_map_0.1.34.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz";
+ sha1 = "a7cfe89aec7b1682c3b198d0acfb47d7d090566b";
+ };
+ }
+
+ {
+ name = "source_map___source_map_0.1.43.tgz";
+ path = fetchurl {
+ name = "source_map___source_map_0.1.43.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz";
+ sha1 = "c24bc146ca517c1471f5dacbe2571b2b7f9e3346";
+ };
+ }
+
+ {
+ name = "source_map___source_map_0.4.4.tgz";
+ path = fetchurl {
+ name = "source_map___source_map_0.4.4.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz";
+ sha1 = "eba4f5da9c0dc999de68032d8b4f76173652036b";
+ };
+ }
+
+ {
+ name = "source_map___source_map_0.5.7.tgz";
+ path = fetchurl {
+ name = "source_map___source_map_0.5.7.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz";
+ sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
+ };
+ }
+
+ {
+ name = "source_map___source_map_0.6.1.tgz";
+ path = fetchurl {
+ name = "source_map___source_map_0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
+ sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
+ };
+ }
+
+ {
+ name = "source_map___source_map_0.2.0.tgz";
+ path = fetchurl {
+ name = "source_map___source_map_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz";
+ sha1 = "dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d";
+ };
+ }
+
+ {
+ name = "source_map___source_map_0.3.0.tgz";
+ path = fetchurl {
+ name = "source_map___source_map_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.3.0.tgz";
+ sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9";
+ };
+ }
+
+ {
+ name = "sparkles___sparkles_1.0.1.tgz";
+ path = fetchurl {
+ name = "sparkles___sparkles_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz";
+ sha1 = "008db65edce6c50eec0c5e228e1945061dd0437c";
+ };
+ }
+
+ {
+ name = "spdx_correct___spdx_correct_3.1.0.tgz";
+ path = fetchurl {
+ name = "spdx_correct___spdx_correct_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz";
+ sha1 = "fb83e504445268f154b074e218c87c003cd31df4";
+ };
+ }
+
+ {
+ name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
+ path = fetchurl {
+ name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz";
+ sha1 = "2ea450aee74f2a89bfb94519c07fcd6f41322977";
+ };
+ }
+
+ {
+ name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
+ path = fetchurl {
+ name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
+ sha1 = "99e119b7a5da00e05491c9fa338b7904823b41d0";
+ };
+ }
+
+ {
+ name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz";
+ path = fetchurl {
+ name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz";
+ url = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz";
+ sha1 = "3694b5804567a458d3c8045842a6358632f62654";
+ };
+ }
+
+ {
+ name = "split_string___split_string_3.1.0.tgz";
+ path = fetchurl {
+ name = "split_string___split_string_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz";
+ sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2";
+ };
+ }
+
+ {
+ name = "split___split_0.3.3.tgz";
+ path = fetchurl {
+ name = "split___split_0.3.3.tgz";
+ url = "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz";
+ sha1 = "cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f";
+ };
+ }
+
+ {
+ name = "split___split_1.0.1.tgz";
+ path = fetchurl {
+ name = "split___split_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz";
+ sha1 = "605bd9be303aa59fb35f9229fbea0ddec9ea07d9";
+ };
+ }
+
+ {
+ name = "sprintf_js___sprintf_js_1.0.3.tgz";
+ path = fetchurl {
+ name = "sprintf_js___sprintf_js_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
+ sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+ };
+ }
+
+ {
+ name = "sshpk___sshpk_1.16.1.tgz";
+ path = fetchurl {
+ name = "sshpk___sshpk_1.16.1.tgz";
+ url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz";
+ sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877";
+ };
+ }
+
+ {
+ name = "stable___stable_0.1.8.tgz";
+ path = fetchurl {
+ name = "stable___stable_0.1.8.tgz";
+ url = "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz";
+ sha1 = "836eb3c8382fe2936feaf544631017ce7d47a3cf";
+ };
+ }
+
+ {
+ name = "static_extend___static_extend_0.1.2.tgz";
+ path = fetchurl {
+ name = "static_extend___static_extend_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz";
+ sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
+ };
+ }
+
+ {
+ name = "statuses___statuses_1.5.0.tgz";
+ path = fetchurl {
+ name = "statuses___statuses_1.5.0.tgz";
+ url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
+ sha1 = "161c7dac177659fd9811f43771fa99381478628c";
+ };
+ }
+
+ {
+ name = "statuses___statuses_1.2.1.tgz";
+ path = fetchurl {
+ name = "statuses___statuses_1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz";
+ sha1 = "dded45cc18256d51ed40aec142489d5c61026d28";
+ };
+ }
+
+ {
+ name = "stdout_stream___stdout_stream_1.4.1.tgz";
+ path = fetchurl {
+ name = "stdout_stream___stdout_stream_1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz";
+ sha1 = "5ac174cdd5cd726104aa0c0b2bd83815d8d535de";
+ };
+ }
+
+ {
+ name = "stream_browserify___stream_browserify_0.1.3.tgz";
+ path = fetchurl {
+ name = "stream_browserify___stream_browserify_0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-0.1.3.tgz";
+ sha1 = "95cf1b369772e27adaf46352265152689c6c4be9";
+ };
+ }
+
+ {
+ name = "stream_combiner___stream_combiner_0.2.2.tgz";
+ path = fetchurl {
+ name = "stream_combiner___stream_combiner_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz";
+ sha1 = "aec8cbac177b56b6f4fa479ced8c1912cee52858";
+ };
+ }
+
+ {
+ name = "stream_combiner___stream_combiner_0.0.4.tgz";
+ path = fetchurl {
+ name = "stream_combiner___stream_combiner_0.0.4.tgz";
+ url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz";
+ sha1 = "4d5e433c185261dde623ca3f44c586bcf5c4ad14";
+ };
+ }
+
+ {
+ name = "stream_combiner___stream_combiner_0.1.0.tgz";
+ path = fetchurl {
+ name = "stream_combiner___stream_combiner_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.1.0.tgz";
+ sha1 = "0dc389a3c203f8f4d56368f95dde52eb9269b5be";
+ };
+ }
+
+ {
+ name = "stream_consume___stream_consume_0.1.1.tgz";
+ path = fetchurl {
+ name = "stream_consume___stream_consume_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.1.tgz";
+ sha1 = "d3bdb598c2bd0ae82b8cac7ac50b1107a7996c48";
+ };
+ }
+
+ {
+ name = "stream_shift___stream_shift_1.0.1.tgz";
+ path = fetchurl {
+ name = "stream_shift___stream_shift_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz";
+ sha1 = "d7088281559ab2778424279b0877da3c392d5a3d";
+ };
+ }
+
+ {
+ name = "string_length___string_length_1.0.1.tgz";
+ path = fetchurl {
+ name = "string_length___string_length_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz";
+ sha1 = "56970fb1c38558e9e70b728bf3de269ac45adfac";
+ };
+ }
+
+ {
+ name = "string_width___string_width_1.0.2.tgz";
+ path = fetchurl {
+ name = "string_width___string_width_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz";
+ sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
+ };
+ }
+
+ {
+ name = "string_width___string_width_2.1.1.tgz";
+ path = fetchurl {
+ name = "string_width___string_width_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
+ sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
+ };
+ }
+
+ {
+ name = "string_decoder___string_decoder_0.0.1.tgz";
+ path = fetchurl {
+ name = "string_decoder___string_decoder_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.0.1.tgz";
+ sha1 = "f5472d0a8d1650ec823752d24e6fd627b39bf141";
+ };
+ }
+
+ {
+ name = "string_decoder___string_decoder_0.10.31.tgz";
+ path = fetchurl {
+ name = "string_decoder___string_decoder_0.10.31.tgz";
+ url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz";
+ sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
+ };
+ }
+
+ {
+ name = "string_decoder___string_decoder_1.1.1.tgz";
+ path = fetchurl {
+ name = "string_decoder___string_decoder_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz";
+ sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8";
+ };
+ }
+
+ {
+ name = "stringify_object___stringify_object_0.2.1.tgz";
+ path = fetchurl {
+ name = "stringify_object___stringify_object_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/stringify-object/-/stringify-object-0.2.1.tgz";
+ sha1 = "b58be50b3ff5f371038c545d4332656bfded5620";
+ };
+ }
+
+ {
+ name = "stringmap___stringmap_0.2.2.tgz";
+ path = fetchurl {
+ name = "stringmap___stringmap_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz";
+ sha1 = "556c137b258f942b8776f5b2ef582aa069d7d1b1";
+ };
+ }
+
+ {
+ name = "stringset___stringset_0.2.1.tgz";
+ path = fetchurl {
+ name = "stringset___stringset_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/stringset/-/stringset-0.2.1.tgz";
+ sha1 = "ef259c4e349344377fcd1c913dd2e848c9c042b5";
+ };
+ }
+
+ {
+ name = "stringstream___stringstream_0.0.6.tgz";
+ path = fetchurl {
+ name = "stringstream___stringstream_0.0.6.tgz";
+ url = "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz";
+ sha1 = "7880225b0d4ad10e30927d167a1d6f2fd3b33a72";
+ };
+ }
+
+ {
+ name = "strip_ansi___strip_ansi_0.3.0.tgz";
+ path = fetchurl {
+ name = "strip_ansi___strip_ansi_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz";
+ sha1 = "25f48ea22ca79187f3174a4db8759347bb126220";
+ };
+ }
+
+ {
+ name = "strip_ansi___strip_ansi_2.0.1.tgz";
+ path = fetchurl {
+ name = "strip_ansi___strip_ansi_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-2.0.1.tgz";
+ sha1 = "df62c1aa94ed2f114e1d0f21fd1d50482b79a60e";
+ };
+ }
+
+ {
+ name = "strip_ansi___strip_ansi_3.0.1.tgz";
+ path = fetchurl {
+ name = "strip_ansi___strip_ansi_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
+ sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+ };
+ }
+
+ {
+ name = "strip_ansi___strip_ansi_4.0.0.tgz";
+ path = fetchurl {
+ name = "strip_ansi___strip_ansi_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
+ sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+ };
+ }
+
+ {
+ name = "strip_ansi___strip_ansi_0.1.1.tgz";
+ path = fetchurl {
+ name = "strip_ansi___strip_ansi_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz";
+ sha1 = "39e8a98d044d150660abe4a6808acf70bb7bc991";
+ };
+ }
+
+ {
+ name = "strip_bom___strip_bom_1.0.0.tgz";
+ path = fetchurl {
+ name = "strip_bom___strip_bom_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz";
+ sha1 = "85b8862f3844b5a6d5ec8467a93598173a36f794";
+ };
+ }
+
+ {
+ name = "strip_bom___strip_bom_2.0.0.tgz";
+ path = fetchurl {
+ name = "strip_bom___strip_bom_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz";
+ sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e";
+ };
+ }
+
+ {
+ name = "strip_indent___strip_indent_1.0.1.tgz";
+ path = fetchurl {
+ name = "strip_indent___strip_indent_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz";
+ sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2";
+ };
+ }
+
+ {
+ name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
+ path = fetchurl {
+ name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
+ sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
+ };
+ }
+
+ {
+ name = "subarg___subarg_0.0.1.tgz";
+ path = fetchurl {
+ name = "subarg___subarg_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/subarg/-/subarg-0.0.1.tgz";
+ sha1 = "3d56b07dacfbc45bbb63f7672b43b63e46368e3a";
+ };
+ }
+
+ {
+ name = "supports_color___supports_color_0.2.0.tgz";
+ path = fetchurl {
+ name = "supports_color___supports_color_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz";
+ sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a";
+ };
+ }
+
+ {
+ name = "supports_color___supports_color_2.0.0.tgz";
+ path = fetchurl {
+ name = "supports_color___supports_color_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz";
+ sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
+ };
+ }
+
+ {
+ name = "supports_color___supports_color_3.2.3.tgz";
+ path = fetchurl {
+ name = "supports_color___supports_color_3.2.3.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz";
+ sha1 = "65ac0504b3954171d8a64946b2ae3cbb8a5f54f6";
+ };
+ }
+
+ {
+ name = "supports_color___supports_color_7.1.0.tgz";
+ path = fetchurl {
+ name = "supports_color___supports_color_7.1.0.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz";
+ sha1 = "68e32591df73e25ad1c4b49108a2ec507962bfd1";
+ };
+ }
+
+ {
+ name = "syntax_error___syntax_error_1.1.6.tgz";
+ path = fetchurl {
+ name = "syntax_error___syntax_error_1.1.6.tgz";
+ url = "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.1.6.tgz";
+ sha1 = "b4549706d386cc1c1dc7c2423f18579b6cade710";
+ };
+ }
+
+ {
+ name = "tar___tar_2.2.2.tgz";
+ path = fetchurl {
+ name = "tar___tar_2.2.2.tgz";
+ url = "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz";
+ sha1 = "0ca8848562c7299b8b446ff6a4d60cdbb23edc40";
+ };
+ }
+
+ {
+ name = "tar___tar_4.4.13.tgz";
+ path = fetchurl {
+ name = "tar___tar_4.4.13.tgz";
+ url = "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz";
+ sha1 = "43b364bc52888d555298637b10d60790254ab525";
+ };
+ }
+
+ {
+ name = "tar___tar_0.1.20.tgz";
+ path = fetchurl {
+ name = "tar___tar_0.1.20.tgz";
+ url = "https://registry.yarnpkg.com/tar/-/tar-0.1.20.tgz";
+ sha1 = "42940bae5b5f22c74483699126f9f3f27449cb13";
+ };
+ }
+
+ {
+ name = "ternary_stream___ternary_stream_2.1.1.tgz";
+ path = fetchurl {
+ name = "ternary_stream___ternary_stream_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-2.1.1.tgz";
+ sha1 = "4ad64b98668d796a085af2c493885a435a8a8bfc";
+ };
+ }
+
+ {
+ name = "textextensions___textextensions_1.0.2.tgz";
+ path = fetchurl {
+ name = "textextensions___textextensions_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/textextensions/-/textextensions-1.0.2.tgz";
+ sha1 = "65486393ee1f2bb039a60cbba05b0b68bd9501d2";
+ };
+ }
+
+ {
+ name = "throttleit___throttleit_0.0.2.tgz";
+ path = fetchurl {
+ name = "throttleit___throttleit_0.0.2.tgz";
+ url = "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz";
+ sha1 = "cfedf88e60c00dd9697b61fdd2a8343a9b680eaf";
+ };
+ }
+
+ {
+ name = "through2___through2_0.4.2.tgz";
+ path = fetchurl {
+ name = "through2___through2_0.4.2.tgz";
+ url = "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz";
+ sha1 = "dbf5866031151ec8352bb6c4db64a2292a840b9b";
+ };
+ }
+
+ {
+ name = "through2___through2_0.5.1.tgz";
+ path = fetchurl {
+ name = "through2___through2_0.5.1.tgz";
+ url = "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz";
+ sha1 = "dfdd012eb9c700e2323fd334f38ac622ab372da7";
+ };
+ }
+
+ {
+ name = "through2___through2_0.6.5.tgz";
+ path = fetchurl {
+ name = "through2___through2_0.6.5.tgz";
+ url = "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz";
+ sha1 = "41ab9c67b29d57209071410e1d7a7a968cd3ad48";
+ };
+ }
+
+ {
+ name = "through2___through2_2.0.5.tgz";
+ path = fetchurl {
+ name = "through2___through2_2.0.5.tgz";
+ url = "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz";
+ sha1 = "01c1e39eb31d07cb7d03a96a70823260b23132cd";
+ };
+ }
+
+ {
+ name = "through___through_2.3.8.tgz";
+ path = fetchurl {
+ name = "through___through_2.3.8.tgz";
+ url = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz";
+ sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
+ };
+ }
+
+ {
+ name = "through___through_2.2.7.tgz";
+ path = fetchurl {
+ name = "through___through_2.2.7.tgz";
+ url = "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz";
+ sha1 = "6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd";
+ };
+ }
+
+ {
+ name = "tildify___tildify_1.2.0.tgz";
+ path = fetchurl {
+ name = "tildify___tildify_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz";
+ sha1 = "dcec03f55dca9b7aa3e5b04f21817eb56e63588a";
+ };
+ }
+
+ {
+ name = "time_stamp___time_stamp_1.1.0.tgz";
+ path = fetchurl {
+ name = "time_stamp___time_stamp_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz";
+ sha1 = "764a5a11af50561921b133f3b44e618687e0f5c3";
+ };
+ }
+
+ {
+ name = "timed_out___timed_out_2.0.0.tgz";
+ path = fetchurl {
+ name = "timed_out___timed_out_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/timed-out/-/timed-out-2.0.0.tgz";
+ sha1 = "f38b0ae81d3747d628001f41dafc652ace671c0a";
+ };
+ }
+
+ {
+ name = "timers_browserify___timers_browserify_1.0.3.tgz";
+ path = fetchurl {
+ name = "timers_browserify___timers_browserify_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.0.3.tgz";
+ sha1 = "ffba70c9c12eed916fd67318e629ac6f32295551";
+ };
+ }
+
+ {
+ name = "timers_ext___timers_ext_0.1.7.tgz";
+ path = fetchurl {
+ name = "timers_ext___timers_ext_0.1.7.tgz";
+ url = "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz";
+ sha1 = "6f57ad8578e07a3fb9f91d9387d65647555e25c6";
+ };
+ }
+
+ {
+ name = "tmp___tmp_0.0.23.tgz";
+ path = fetchurl {
+ name = "tmp___tmp_0.0.23.tgz";
+ url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.23.tgz";
+ sha1 = "de874aa5e974a85f0a32cdfdbd74663cb3bd9c74";
+ };
+ }
+
+ {
+ name = "tmp___tmp_0.0.33.tgz";
+ path = fetchurl {
+ name = "tmp___tmp_0.0.33.tgz";
+ url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz";
+ sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9";
+ };
+ }
+
+ {
+ name = "to_array___to_array_0.1.4.tgz";
+ path = fetchurl {
+ name = "to_array___to_array_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz";
+ sha1 = "17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890";
+ };
+ }
+
+ {
+ name = "to_fast_properties___to_fast_properties_1.0.3.tgz";
+ path = fetchurl {
+ name = "to_fast_properties___to_fast_properties_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz";
+ sha1 = "b83571fa4d8c25b82e231b06e3a3055de4ca1a47";
+ };
+ }
+
+ {
+ name = "to_object_path___to_object_path_0.3.0.tgz";
+ path = fetchurl {
+ name = "to_object_path___to_object_path_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz";
+ sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
+ };
+ }
+
+ {
+ name = "to_regex_range___to_regex_range_2.1.1.tgz";
+ path = fetchurl {
+ name = "to_regex_range___to_regex_range_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz";
+ sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
+ };
+ }
+
+ {
+ name = "to_regex___to_regex_3.0.2.tgz";
+ path = fetchurl {
+ name = "to_regex___to_regex_3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz";
+ sha1 = "13cfdd9b336552f30b51f33a8ae1b42a7a7599ce";
+ };
+ }
+
+ {
+ name = "toidentifier___toidentifier_1.0.0.tgz";
+ path = fetchurl {
+ name = "toidentifier___toidentifier_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz";
+ sha1 = "7e1be3470f1e77948bc43d94a3c8f4d7752ba553";
+ };
+ }
+
+ {
+ name = "token_stream___token_stream_0.0.1.tgz";
+ path = fetchurl {
+ name = "token_stream___token_stream_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz";
+ sha1 = "ceeefc717a76c4316f126d0b9dbaa55d7e7df01a";
+ };
+ }
+
+ {
+ name = "touch___touch_0.0.2.tgz";
+ path = fetchurl {
+ name = "touch___touch_0.0.2.tgz";
+ url = "https://registry.yarnpkg.com/touch/-/touch-0.0.2.tgz";
+ sha1 = "a65a777795e5cbbe1299499bdc42281ffb21b5f4";
+ };
+ }
+
+ {
+ name = "tough_cookie___tough_cookie_4.0.0.tgz";
+ path = fetchurl {
+ name = "tough_cookie___tough_cookie_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz";
+ sha1 = "d822234eeca882f991f0f908824ad2622ddbece4";
+ };
+ }
+
+ {
+ name = "tough_cookie___tough_cookie_2.5.0.tgz";
+ path = fetchurl {
+ name = "tough_cookie___tough_cookie_2.5.0.tgz";
+ url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz";
+ sha1 = "cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2";
+ };
+ }
+
+ {
+ name = "traverse___traverse_0.3.9.tgz";
+ path = fetchurl {
+ name = "traverse___traverse_0.3.9.tgz";
+ url = "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz";
+ sha1 = "717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9";
+ };
+ }
+
+ {
+ name = "trim_newlines___trim_newlines_1.0.0.tgz";
+ path = fetchurl {
+ name = "trim_newlines___trim_newlines_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz";
+ sha1 = "5887966bb582a4503a41eb524f7d35011815a613";
+ };
+ }
+
+ {
+ name = "true_case_path___true_case_path_1.0.3.tgz";
+ path = fetchurl {
+ name = "true_case_path___true_case_path_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz";
+ sha1 = "f813b5a8c86b40da59606722b144e3225799f47d";
+ };
+ }
+
+ {
+ name = "tryor___tryor_0.1.2.tgz";
+ path = fetchurl {
+ name = "tryor___tryor_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/tryor/-/tryor-0.1.2.tgz";
+ sha1 = "8145e4ca7caff40acde3ccf946e8b8bb75b4172b";
+ };
+ }
+
+ {
+ name = "tty_browserify___tty_browserify_0.0.1.tgz";
+ path = fetchurl {
+ name = "tty_browserify___tty_browserify_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz";
+ sha1 = "3f05251ee17904dfd0677546670db9651682b811";
+ };
+ }
+
+ {
+ name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
+ path = fetchurl {
+ name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
+ url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+ sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+ };
+ }
+
+ {
+ name = "tunnel_agent___tunnel_agent_0.3.0.tgz";
+ path = fetchurl {
+ name = "tunnel_agent___tunnel_agent_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.3.0.tgz";
+ sha1 = "ad681b68f5321ad2827c4cfb1b7d5df2cfe942ee";
+ };
+ }
+
+ {
+ name = "tunnel_agent___tunnel_agent_0.4.3.tgz";
+ path = fetchurl {
+ name = "tunnel_agent___tunnel_agent_0.4.3.tgz";
+ url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz";
+ sha1 = "6373db76909fe570e08d73583365ed828a74eeeb";
+ };
+ }
+
+ {
+ name = "tweetnacl___tweetnacl_0.14.5.tgz";
+ path = fetchurl {
+ name = "tweetnacl___tweetnacl_0.14.5.tgz";
+ url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
+ sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+ };
+ }
+
+ {
+ name = "type_check___type_check_0.3.2.tgz";
+ path = fetchurl {
+ name = "type_check___type_check_0.3.2.tgz";
+ url = "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz";
+ sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
+ };
+ }
+
+ {
+ name = "type_is___type_is_1.6.18.tgz";
+ path = fetchurl {
+ name = "type_is___type_is_1.6.18.tgz";
+ url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz";
+ sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131";
+ };
+ }
+
+ {
+ name = "type___type_1.2.0.tgz";
+ path = fetchurl {
+ name = "type___type_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz";
+ sha1 = "848dd7698dafa3e54a6c479e759c4bc3f18847a0";
+ };
+ }
+
+ {
+ name = "type___type_2.0.0.tgz";
+ path = fetchurl {
+ name = "type___type_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz";
+ sha1 = "5f16ff6ef2eb44f260494dae271033b29c09a9c3";
+ };
+ }
+
+ {
+ name = "typedarray___typedarray_0.0.6.tgz";
+ path = fetchurl {
+ name = "typedarray___typedarray_0.0.6.tgz";
+ url = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz";
+ sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
+ };
+ }
+
+ {
+ name = "uglify_js___uglify_js_2.5.0.tgz";
+ path = fetchurl {
+ name = "uglify_js___uglify_js_2.5.0.tgz";
+ url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.5.0.tgz";
+ sha1 = "4ab5d65a4730ecb7a4fb62d3f499e2054d98fba1";
+ };
+ }
+
+ {
+ name = "uglify_js___uglify_js_2.8.29.tgz";
+ path = fetchurl {
+ name = "uglify_js___uglify_js_2.8.29.tgz";
+ url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz";
+ sha1 = "29c5733148057bb4e1f75df35b7a9cb72e6a59dd";
+ };
+ }
+
+ {
+ name = "uglify_js___uglify_js_3.8.1.tgz";
+ path = fetchurl {
+ name = "uglify_js___uglify_js_3.8.1.tgz";
+ url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.8.1.tgz";
+ sha1 = "43bb15ce6f545eaa0a64c49fd29375ea09fa0f93";
+ };
+ }
+
+ {
+ name = "uglify_js___uglify_js_2.2.5.tgz";
+ path = fetchurl {
+ name = "uglify_js___uglify_js_2.2.5.tgz";
+ url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.2.5.tgz";
+ sha1 = "a6e02a70d839792b9780488b7b8b184c095c99c7";
+ };
+ }
+
+ {
+ name = "uglify_js___uglify_js_2.3.6.tgz";
+ path = fetchurl {
+ name = "uglify_js___uglify_js_2.3.6.tgz";
+ url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz";
+ sha1 = "fa0984770b428b7a9b2a8058f46355d14fef211a";
+ };
+ }
+
+ {
+ name = "uglify_js___uglify_js_2.4.24.tgz";
+ path = fetchurl {
+ name = "uglify_js___uglify_js_2.4.24.tgz";
+ url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.4.24.tgz";
+ sha1 = "fad5755c1e1577658bb06ff9ab6e548c95bebd6e";
+ };
+ }
+
+ {
+ name = "uglify_save_license___uglify_save_license_0.4.1.tgz";
+ path = fetchurl {
+ name = "uglify_save_license___uglify_save_license_0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/uglify-save-license/-/uglify-save-license-0.4.1.tgz";
+ sha1 = "95726c17cc6fd171c3617e3bf4d8d82aa8c4cce1";
+ };
+ }
+
+ {
+ name = "uglify_to_browserify___uglify_to_browserify_1.0.2.tgz";
+ path = fetchurl {
+ name = "uglify_to_browserify___uglify_to_browserify_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz";
+ sha1 = "6e0924d6bda6b5afe349e39a6d632850a0f882b7";
+ };
+ }
+
+ {
+ name = "ultron___ultron_1.0.2.tgz";
+ path = fetchurl {
+ name = "ultron___ultron_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz";
+ sha1 = "ace116ab557cd197386a4e88f4685378c8b2e4fa";
+ };
+ }
+
+ {
+ name = "umd___umd_2.0.0.tgz";
+ path = fetchurl {
+ name = "umd___umd_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/umd/-/umd-2.0.0.tgz";
+ sha1 = "749683b0d514728ae0e1b6195f5774afc0ad4f8f";
+ };
+ }
+
+ {
+ name = "unc_path_regex___unc_path_regex_0.1.2.tgz";
+ path = fetchurl {
+ name = "unc_path_regex___unc_path_regex_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz";
+ sha1 = "e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa";
+ };
+ }
+
+ {
+ name = "underscore.string___underscore.string_2.4.0.tgz";
+ path = fetchurl {
+ name = "underscore.string___underscore.string_2.4.0.tgz";
+ url = "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz";
+ sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b";
+ };
+ }
+
+ {
+ name = "underscore___underscore_1.7.0.tgz";
+ path = fetchurl {
+ name = "underscore___underscore_1.7.0.tgz";
+ url = "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz";
+ sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209";
+ };
+ }
+
+ {
+ name = "union_value___union_value_1.0.1.tgz";
+ path = fetchurl {
+ name = "union_value___union_value_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz";
+ sha1 = "0b6fe7b835aecda61c6ea4d4f02c14221e109847";
+ };
+ }
+
+ {
+ name = "unique_stream___unique_stream_1.0.0.tgz";
+ path = fetchurl {
+ name = "unique_stream___unique_stream_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz";
+ sha1 = "d59a4a75427447d9aa6c91e70263f8d26a4b104b";
+ };
+ }
+
+ {
+ name = "universalify___universalify_0.1.2.tgz";
+ path = fetchurl {
+ name = "universalify___universalify_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz";
+ sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66";
+ };
+ }
+
+ {
+ name = "unpipe___unpipe_1.0.0.tgz";
+ path = fetchurl {
+ name = "unpipe___unpipe_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
+ sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+ };
+ }
+
+ {
+ name = "unset_value___unset_value_1.0.0.tgz";
+ path = fetchurl {
+ name = "unset_value___unset_value_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz";
+ sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
+ };
+ }
+
+ {
+ name = "update_notifier___update_notifier_0.2.2.tgz";
+ path = fetchurl {
+ name = "update_notifier___update_notifier_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/update-notifier/-/update-notifier-0.2.2.tgz";
+ sha1 = "e69b3a784b4e686a2acd98f5e66944591996e187";
+ };
+ }
+
+ {
+ name = "uri_js___uri_js_4.2.2.tgz";
+ path = fetchurl {
+ name = "uri_js___uri_js_4.2.2.tgz";
+ url = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
+ sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
+ };
+ }
+
+ {
+ name = "urix___urix_0.1.0.tgz";
+ path = fetchurl {
+ name = "urix___urix_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz";
+ sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
+ };
+ }
+
+ {
+ name = "url___url_0.10.3.tgz";
+ path = fetchurl {
+ name = "url___url_0.10.3.tgz";
+ url = "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz";
+ sha1 = "021e4d9c7705f21bbf37d03ceb58767402774c64";
+ };
+ }
+
+ {
+ name = "use___use_3.1.1.tgz";
+ path = fetchurl {
+ name = "use___use_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz";
+ sha1 = "d50c8cac79a19fbc20f2911f56eb973f4e10070f";
+ };
+ }
+
+ {
+ name = "user_home___user_home_1.1.1.tgz";
+ path = fetchurl {
+ name = "user_home___user_home_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz";
+ sha1 = "2b5be23a32b63a7c9deb8d0f28d485724a3df190";
+ };
+ }
+
+ {
+ name = "useragent___useragent_2.3.0.tgz";
+ path = fetchurl {
+ name = "useragent___useragent_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz";
+ sha1 = "217f943ad540cb2128658ab23fc960f6a88c9972";
+ };
+ }
+
+ {
+ name = "util_deprecate___util_deprecate_1.0.2.tgz";
+ path = fetchurl {
+ name = "util_deprecate___util_deprecate_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
+ sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+ };
+ }
+
+ {
+ name = "util___util_0.10.3.tgz";
+ path = fetchurl {
+ name = "util___util_0.10.3.tgz";
+ url = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz";
+ sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
+ };
+ }
+
+ {
+ name = "util___util_0.10.4.tgz";
+ path = fetchurl {
+ name = "util___util_0.10.4.tgz";
+ url = "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz";
+ sha1 = "3aa0125bfe668a4672de58857d3ace27ecb76901";
+ };
+ }
+
+ {
+ name = "utils_merge___utils_merge_1.0.1.tgz";
+ path = fetchurl {
+ name = "utils_merge___utils_merge_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz";
+ sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
+ };
+ }
+
+ {
+ name = "uuid___uuid_2.0.3.tgz";
+ path = fetchurl {
+ name = "uuid___uuid_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz";
+ sha1 = "67e2e863797215530dff318e5bf9dcebfd47b21a";
+ };
+ }
+
+ {
+ name = "uuid___uuid_3.4.0.tgz";
+ path = fetchurl {
+ name = "uuid___uuid_3.4.0.tgz";
+ url = "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz";
+ sha1 = "b23e4358afa8a202fe7a100af1f5f883f02007ee";
+ };
+ }
+
+ {
+ name = "uuid___uuid_1.4.2.tgz";
+ path = fetchurl {
+ name = "uuid___uuid_1.4.2.tgz";
+ url = "https://registry.yarnpkg.com/uuid/-/uuid-1.4.2.tgz";
+ sha1 = "453019f686966a6df83cdc5244e7c990ecc332fc";
+ };
+ }
+
+ {
+ name = "v8flags___v8flags_2.1.1.tgz";
+ path = fetchurl {
+ name = "v8flags___v8flags_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz";
+ sha1 = "aab1a1fa30d45f88dd321148875ac02c0b55e5b4";
+ };
+ }
+
+ {
+ name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
+ path = fetchurl {
+ name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
+ url = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
+ sha1 = "fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a";
+ };
+ }
+
+ {
+ name = "verror___verror_1.10.0.tgz";
+ path = fetchurl {
+ name = "verror___verror_1.10.0.tgz";
+ url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
+ sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+ };
+ }
+
+ {
+ name = "vinyl_fs___vinyl_fs_0.3.14.tgz";
+ path = fetchurl {
+ name = "vinyl_fs___vinyl_fs_0.3.14.tgz";
+ url = "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz";
+ sha1 = "9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6";
+ };
+ }
+
+ {
+ name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.1.4.tgz";
+ path = fetchurl {
+ name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.1.4.tgz";
+ sha1 = "c5fcbd43e2f238423c2dc98bddd6f79b72bc345b";
+ };
+ }
+
+ {
+ name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.2.1.tgz";
+ path = fetchurl {
+ name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz";
+ sha1 = "ab6549d61d172c2b1b87be5c508d239c8ef87705";
+ };
+ }
+
+ {
+ name = "vinyl___vinyl_0.2.3.tgz";
+ path = fetchurl {
+ name = "vinyl___vinyl_0.2.3.tgz";
+ url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.2.3.tgz";
+ sha1 = "bca938209582ec5a49ad538a00fa1f125e513252";
+ };
+ }
+
+ {
+ name = "vinyl___vinyl_0.4.6.tgz";
+ path = fetchurl {
+ name = "vinyl___vinyl_0.4.6.tgz";
+ url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz";
+ sha1 = "2f356c87a550a255461f36bbeb2a5ba8bf784847";
+ };
+ }
+
+ {
+ name = "vinyl___vinyl_0.5.3.tgz";
+ path = fetchurl {
+ name = "vinyl___vinyl_0.5.3.tgz";
+ url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz";
+ sha1 = "b0455b38fc5e0cf30d4325132e461970c2091cde";
+ };
+ }
+
+ {
+ name = "vinyl___vinyl_1.2.0.tgz";
+ path = fetchurl {
+ name = "vinyl___vinyl_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz";
+ sha1 = "5c88036cf565e5df05558bfc911f8656df218884";
+ };
+ }
+
+ {
+ name = "vinyl___vinyl_2.2.0.tgz";
+ path = fetchurl {
+ name = "vinyl___vinyl_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz";
+ sha1 = "d85b07da96e458d25b2ffe19fece9f2caa13ed86";
+ };
+ }
+
+ {
+ name = "vm_browserify___vm_browserify_0.0.4.tgz";
+ path = fetchurl {
+ name = "vm_browserify___vm_browserify_0.0.4.tgz";
+ url = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz";
+ sha1 = "5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73";
+ };
+ }
+
+ {
+ name = "void_elements___void_elements_2.0.1.tgz";
+ path = fetchurl {
+ name = "void_elements___void_elements_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz";
+ sha1 = "c066afb582bb1cb4128d60ea92392e94d5e9dbec";
+ };
+ }
+
+ {
+ name = "websocket_driver___websocket_driver_0.7.3.tgz";
+ path = fetchurl {
+ name = "websocket_driver___websocket_driver_0.7.3.tgz";
+ url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz";
+ sha1 = "a2d4e0d4f4f116f1e6297eba58b05d430100e9f9";
+ };
+ }
+
+ {
+ name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
+ path = fetchurl {
+ name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz";
+ sha1 = "5d2ff22977003ec687a4b87073dfbbac146ccf29";
+ };
+ }
+
+ {
+ name = "which_module___which_module_1.0.0.tgz";
+ path = fetchurl {
+ name = "which_module___which_module_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz";
+ sha1 = "bba63ca861948994ff307736089e3b96026c2a4f";
+ };
+ }
+
+ {
+ name = "which___which_1.3.1.tgz";
+ path = fetchurl {
+ name = "which___which_1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz";
+ sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a";
+ };
+ }
+
+ {
+ name = "which___which_1.0.9.tgz";
+ path = fetchurl {
+ name = "which___which_1.0.9.tgz";
+ url = "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz";
+ sha1 = "460c1da0f810103d0321a9b633af9e575e64486f";
+ };
+ }
+
+ {
+ name = "wide_align___wide_align_1.1.3.tgz";
+ path = fetchurl {
+ name = "wide_align___wide_align_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz";
+ sha1 = "ae074e6bdc0c14a431e804e624549c633b000457";
+ };
+ }
+
+ {
+ name = "window_size___window_size_0.1.0.tgz";
+ path = fetchurl {
+ name = "window_size___window_size_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz";
+ sha1 = "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d";
+ };
+ }
+
+ {
+ name = "with___with_5.1.1.tgz";
+ path = fetchurl {
+ name = "with___with_5.1.1.tgz";
+ url = "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz";
+ sha1 = "fa4daa92daf32c4ea94ed453c81f04686b575dfe";
+ };
+ }
+
+ {
+ name = "word_wrap___word_wrap_1.2.3.tgz";
+ path = fetchurl {
+ name = "word_wrap___word_wrap_1.2.3.tgz";
+ url = "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz";
+ sha1 = "610636f6b1f703891bd34771ccb17fb93b47079c";
+ };
+ }
+
+ {
+ name = "wordwrap___wordwrap_0.0.2.tgz";
+ path = fetchurl {
+ name = "wordwrap___wordwrap_0.0.2.tgz";
+ url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz";
+ sha1 = "b79669bb42ecb409f83d583cad52ca17eaa1643f";
+ };
+ }
+
+ {
+ name = "wordwrap___wordwrap_1.0.0.tgz";
+ path = fetchurl {
+ name = "wordwrap___wordwrap_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz";
+ sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
+ };
+ }
+
+ {
+ name = "wordwrap___wordwrap_0.0.3.tgz";
+ path = fetchurl {
+ name = "wordwrap___wordwrap_0.0.3.tgz";
+ url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz";
+ sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
+ };
+ }
+
+ {
+ name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
+ path = fetchurl {
+ name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
+ sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
+ };
+ }
+
+ {
+ name = "wrappy___wrappy_1.0.2.tgz";
+ path = fetchurl {
+ name = "wrappy___wrappy_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
+ sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+ };
+ }
+
+ {
+ name = "ws___ws_1.1.5.tgz";
+ path = fetchurl {
+ name = "ws___ws_1.1.5.tgz";
+ url = "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz";
+ sha1 = "cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51";
+ };
+ }
+
+ {
+ name = "wtf_8___wtf_8_1.0.0.tgz";
+ path = fetchurl {
+ name = "wtf_8___wtf_8_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz";
+ sha1 = "392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a";
+ };
+ }
+
+ {
+ name = "xdg_basedir___xdg_basedir_1.0.1.tgz";
+ path = fetchurl {
+ name = "xdg_basedir___xdg_basedir_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-1.0.1.tgz";
+ sha1 = "14ff8f63a4fdbcb05d5b6eea22b36f3033b9f04e";
+ };
+ }
+
+ {
+ name = "xmlhttprequest_ssl___xmlhttprequest_ssl_1.5.3.tgz";
+ path = fetchurl {
+ name = "xmlhttprequest_ssl___xmlhttprequest_ssl_1.5.3.tgz";
+ url = "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz";
+ sha1 = "185a888c04eca46c3e4070d99f7b49de3528992d";
+ };
+ }
+
+ {
+ name = "xtend___xtend_4.0.2.tgz";
+ path = fetchurl {
+ name = "xtend___xtend_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz";
+ sha1 = "bb72779f5fa465186b1f438f674fa347fdb5db54";
+ };
+ }
+
+ {
+ name = "xtend___xtend_3.0.0.tgz";
+ path = fetchurl {
+ name = "xtend___xtend_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz";
+ sha1 = "5cce7407baf642cba7becda568111c493f59665a";
+ };
+ }
+
+ {
+ name = "xtend___xtend_2.1.2.tgz";
+ path = fetchurl {
+ name = "xtend___xtend_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz";
+ sha1 = "6efecc2a4dad8e6962c4901b337ce7ba87b5d28b";
+ };
+ }
+
+ {
+ name = "y18n___y18n_3.2.1.tgz";
+ path = fetchurl {
+ name = "y18n___y18n_3.2.1.tgz";
+ url = "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz";
+ sha1 = "6d15fba884c08679c0d77e88e7759e811e07fa41";
+ };
+ }
+
+ {
+ name = "yallist___yallist_2.1.2.tgz";
+ path = fetchurl {
+ name = "yallist___yallist_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz";
+ sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
+ };
+ }
+
+ {
+ name = "yallist___yallist_3.1.1.tgz";
+ path = fetchurl {
+ name = "yallist___yallist_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz";
+ sha1 = "dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd";
+ };
+ }
+
+ {
+ name = "yargs_parser___yargs_parser_5.0.0.tgz";
+ path = fetchurl {
+ name = "yargs_parser___yargs_parser_5.0.0.tgz";
+ url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz";
+ sha1 = "275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a";
+ };
+ }
+
+ {
+ name = "yargs___yargs_7.1.0.tgz";
+ path = fetchurl {
+ name = "yargs___yargs_7.1.0.tgz";
+ url = "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz";
+ sha1 = "6ba318eb16961727f5d284f8ea003e8d6154d0c8";
+ };
+ }
+
+ {
+ name = "yargs___yargs_3.10.0.tgz";
+ path = fetchurl {
+ name = "yargs___yargs_3.10.0.tgz";
+ url = "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz";
+ sha1 = "f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1";
+ };
+ }
+
+ {
+ name = "yargs___yargs_3.5.4.tgz";
+ path = fetchurl {
+ name = "yargs___yargs_3.5.4.tgz";
+ url = "https://registry.yarnpkg.com/yargs/-/yargs-3.5.4.tgz";
+ sha1 = "d8aff8f665e94c34bd259bdebd1bfaf0ddd35361";
+ };
+ }
+
+ {
+ name = "yeast___yeast_0.1.2.tgz";
+ path = fetchurl {
+ name = "yeast___yeast_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz";
+ sha1 = "008e06d8094320c372dbc2f8ed76a0ca6c8ac419";
+ };
+ }
+ ];
+}
diff --git a/flakes/private/buildbot/common/build_helpers.py b/flakes/private/buildbot/common/build_helpers.py
new file mode 100644
index 0000000..77e6c07
--- /dev/null
+++ b/flakes/private/buildbot/common/build_helpers.py
@@ -0,0 +1,293 @@
+from buildbot.plugins import util, steps, schedulers
+from buildbot_buildslist import BuildsList
+from shutil import which
+
+__all__ = [
+ "force_scheduler", "deploy_scheduler", "git_hook_scheduler",
+ "clean_branch", "package_and_upload", "AppriseStatusPush",
+ "XMPPStatusPush", "NixShellCommand",
+ "all_builder_names", "compute_build_infos", "deploy_ssh_command",
+ "configure_apprise_push",
+ "configure_xmpp_push", "deploy_hook_scheduler",
+ ]
+
+# Small helpers"
+@util.renderer
+def clean_branch(props):
+ if props.hasProperty("branch") and len(props["branch"]) > 0:
+ return props["branch"].replace("/", "_")
+ else:
+ return "HEAD"
+
+def package_and_upload(package, package_dest, package_url):
+ return [
+ steps.ShellCommand(name="build package",
+ logEnviron=False, haltOnFailure=True,
+ command=["git", "archive", "HEAD", "-o", package]),
+
+ steps.FileUpload(name="upload package", workersrc=package,
+ masterdest=package_dest,
+ url=package_url, mode=0o644),
+
+ steps.ShellCommand(name="cleanup package", logEnviron=False,
+ haltOnFailure=True, alwaysRun=True,
+ command=["rm", "-f", package]),
+ ]
+
+# Steps
+class NixShellCommand(steps.ShellCommand):
+ def __init__(self, command=None, nixPackages=[], pure=True, nixFile=None, nixIncludes={}, nixArgs={}, **kwargs):
+ oldpath = kwargs.get("env", {}).get("PATH", None)
+ if which("nix-shell", path=oldpath) is None:
+ kwargs["env"] = kwargs.get("env", {})
+ if isinstance(oldpath, str):
+ kwargs["env"]["PATH"] = "/run/current-system/sw/bin:" + oldpath
+ elif isinstance(oldpath, list):
+ kwargs["env"]["PATH"] = ["/run/current-system/sw/bin"] + oldpath
+ nixcommand = ["nix-shell"]
+ for k, v in nixArgs.items():
+ nixcommand.append("--arg")
+ nixcommand.append(k)
+ nixcommand.append(v)
+ if pure:
+ nixcommand.append("--pure")
+ for k, v in nixIncludes.items():
+ nixcommand.append("-I")
+ nixcommand.append("{}={}".format(k, v))
+ nixcommand.append("--run")
+ nixcommand.append(command)
+ if len(nixPackages) > 0:
+ nixcommand.append("-p")
+ nixcommand += nixPackages
+ elif nixFile is not None:
+ nixcommand.append(nixFile)
+ super().__init__(command=nixcommand, **kwargs)
+
+# Schedulers
+def force_scheduler(name, builders, nobranch=False):
+ if nobranch:
+ branch = util.FixedParameter(name="branch", default="")
+ else:
+ branch=util.StringParameter(name="branch", label="Git reference (tag, branch)", required=True)
+
+ return schedulers.ForceScheduler(name=name,
+ label="Force build", buttonName="Force build",
+ reason=util.StringParameter(name="reason", label="Reason", default="Force build"),
+ codebases=[
+ util.CodebaseParameter("",
+ branch=branch,
+ revision=util.FixedParameter(name="revision", default=""),
+ repository=util.FixedParameter(name="repository", default=""),
+ project=util.FixedParameter(name="project", default=""),
+ ),
+ ],
+ username=util.FixedParameter(name="username", default="Web button"),
+ builderNames=builders)
+
+def deploy_scheduler(name, builders):
+ return schedulers.ForceScheduler(name=name,
+ builderNames=builders,
+ label="Deploy built package", buttonName="Deploy",
+ username=util.FixedParameter(name="username", default="Web button"),
+ codebases=[
+ util.CodebaseParameter(codebase="",
+ branch=util.FixedParameter(name="branch", default=""),
+ revision=util.FixedParameter(name="revision", default=""),
+ repository=util.FixedParameter(name="repository", default=""),
+ project=util.FixedParameter(name="project", default=""))],
+ reason=util.FixedParameter(name="reason", default="Deploy"),
+ properties=[
+ util.ChoiceStringParameter(label="Environment",
+ name="environment", default="integration",
+ choices=["integration", "production"]),
+ BuildsList(label="Build to deploy", name="build"),
+ ]
+ )
+
+def git_hook_scheduler(project, builders=[], timer=1):
+ if len(builders) == 0:
+ builders = ["{}_build".format(project)]
+ return schedulers.AnyBranchScheduler(
+ change_filter=util.ChangeFilter(category="gitolite-hooks", project=project),
+ name="{}_git_hook".format(project), treeStableTimer=timer, builderNames=builders)
+
+def deploy_hook_scheduler(project, builders, timer=1):
+ return schedulers.AnyBranchScheduler(
+ change_filter=util.ChangeFilter(category="deploy_webhook", project=project),
+ name="{}_deploy".format(project), treeStableTimer=timer, builderNames=builders)
+
+# Builders
+def all_builder_names(c):
+ return [builder.name for builder in c['builders']]
+
+# Apprise/XMPP status push
+from buildbot.reporters.http import HttpStatusPushBase
+from twisted.internet import defer
+from twisted.python import log
+from buildbot.reporters import utils
+from buildbot.process import results
+from twisted.words.protocols.jabber.jid import JID
+from wokkel import client, xmppim
+from functools import partial
+import apprise
+
+class AppriseStatusPush(HttpStatusPushBase):
+ name = "AppriseStatusPush"
+
+ @defer.inlineCallbacks
+ def reconfigService(self, appriseUrls, **kwargs):
+ self.appriseUrls = appriseUrls
+ yield HttpStatusPushBase.reconfigService(self, **kwargs)
+
+ @defer.inlineCallbacks
+ def send(self, build):
+ yield utils.getDetailsForBuild(self.master, build, wantProperties=True)
+ appobject = apprise.Apprise()
+ message = self.format(build)
+ for url in self.appriseUrls:
+ appobject.add(url.format(**message))
+ yield appobject.notify(title=message["title"], body=message["text"])
+
+ def format(self, build):
+ if "environment" in build["properties"]:
+ msg = "{} environment".format(build["properties"]["environment"][0])
+ if "build" in build["properties"]:
+ msg = "of archive {} in ".format(build["properties"]["build"][0]) + msg
+ elif len(build["buildset"]["sourcestamps"][0]["branch"] or []) > 0:
+ msg = "revision {}".format(build["buildset"]["sourcestamps"][0]["branch"])
+ else:
+ msg = "build"
+
+ if build["complete"]:
+ timedelta = int((build["complete_at"] - build["started_at"]).total_seconds())
+ hours, rest = divmod(timedelta, 3600)
+ minutes, seconds = divmod(rest, 60)
+ if hours > 0:
+ duration = "{}h {}min {}s".format(hours, minutes, seconds)
+ elif minutes > 0:
+ duration = "{}min {}s".format(minutes, seconds)
+ else:
+ duration = "{}s".format(seconds)
+
+ text = "Build {} ({}) of {}'s {} was {} in {}.".format(
+ build["number"], build["url"],
+ build["builder"]["name"],
+ msg,
+ results.Results[build["results"]],
+ duration,
+ )
+ else:
+ text = "Build {} ({}) of {}'s {} started.".format(
+ build["number"], build["url"],
+ build["builder"]["name"],
+ msg,
+ )
+ return {
+ "username": "Buildbot",
+ "image_url": "http://docs.buildbot.net/current/_static/icon.png",
+ "text": text,
+ "title": "",
+ }
+
+def configure_apprise_push(c, secrets_file, builders):
+ c['services'].append(AppriseStatusPush(
+ name="apprise_status", builders=builders,
+ appriseUrls=open(secrets_file + "/apprise_webhooks", "r").read().split("\n")))
+
+class XMPPStatusPush(HttpStatusPushBase):
+ name = "XMPPStatusPush"
+
+ @defer.inlineCallbacks
+ def reconfigService(self, password, recipients, **kwargs):
+ yield HttpStatusPushBase.reconfigService(self, **kwargs)
+ self.password = password
+ self.recipients = recipients
+
+ @defer.inlineCallbacks
+ def send(self, build):
+ yield utils.getDetailsForBuild(self.master, build, wantProperties=True)
+ body = self.format(build)
+ factory = client.DeferredClientFactory(JID("notify_bot@immae.fr/buildbot"), self.password)
+ d = client.clientCreator(factory)
+ def send_message(recipient, stream):
+ message = xmppim.Message(recipient=JID(recipient), body=body)
+ message.stanzaType = 'chat'
+ stream.send(message.toElement())
+ # To allow chaining
+ return stream
+ for recipient in self.recipients:
+ d.addCallback(partial(send_message, recipient))
+ d.addCallback(lambda _: factory.streamManager.xmlstream.sendFooter())
+ d.addErrback(log.err)
+
+ def format(self, build):
+ if "environment" in build["properties"]:
+ msg = "{} environment".format(build["properties"]["environment"][0])
+ if "build" in build["properties"]:
+ msg = "of archive {} in ".format(build["properties"]["build"][0]) + msg
+ elif len(build["buildset"]["sourcestamps"][0]["branch"] or []) > 0:
+ msg = "revision {}".format(build["buildset"]["sourcestamps"][0]["branch"])
+ else:
+ msg = "build"
+
+ if build["complete"]:
+ timedelta = int((build["complete_at"] - build["started_at"]).total_seconds())
+ hours, rest = divmod(timedelta, 3600)
+ minutes, seconds = divmod(rest, 60)
+ if hours > 0:
+ duration = "{}h {}min {}s".format(hours, minutes, seconds)
+ elif minutes > 0:
+ duration = "{}min {}s".format(minutes, seconds)
+ else:
+ duration = "{}s".format(seconds)
+
+ text = "Build {} ( {} ) of {}'s {} was {} in {}.".format(
+ build["number"], build["url"],
+ build["builder"]["name"],
+ msg,
+ results.Results[build["results"]],
+ duration,
+ )
+ else:
+ text = "Build {} ( {} ) of {}'s {} started.".format(
+ build["number"], build["url"],
+ build["builder"]["name"],
+ msg,
+ )
+
+ return text
+
+def configure_xmpp_push(c, secrets_file, builders, recipients):
+ c['services'].append(XMPPStatusPush(
+ name="xmpp_status", builders=builders, recipients=recipients,
+ password=open(secrets_file + "/notify_xmpp_password", "r").read().rstrip()))
+
+# LDAP edit
+from buildbot.process.buildstep import FAILURE
+from buildbot.process.buildstep import SUCCESS
+from buildbot.process.buildstep import BuildStep
+
+def compute_build_infos(prefix, release_path):
+ @util.renderer
+ def compute(props):
+ import re, hashlib
+ build_file = props.getProperty("build")
+ package_dest = "{}/{}".format(release_path, build_file)
+ version = re.match(r"{0}_(.*).tar.gz".format(prefix), build_file).group(1)
+ with open(package_dest, "rb") as f:
+ sha = hashlib.sha256(f.read()).hexdigest()
+ return {
+ "build_version": version,
+ "build_hash": sha,
+ }
+ return compute
+
+def deploy_ssh_command(ssh_key_path, deploy_hosts):
+ @util.renderer
+ def compute(props):
+ environment = props["environment"] if props.hasProperty("environment") else "integration"
+ ssh_command = [
+ "ssh", "-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no", "-o", "CheckHostIP=no",
+ "-i", ssh_key_path ]
+ return ssh_command + deploy_hosts.get(environment, ["host.invalid"])
+ return compute
diff --git a/flakes/private/buildbot/common/libvirt.py b/flakes/private/buildbot/common/libvirt.py
new file mode 100644
index 0000000..e250627
--- /dev/null
+++ b/flakes/private/buildbot/common/libvirt.py
@@ -0,0 +1,318 @@
+# This file was part of Buildbot. Buildbot is free software: you can
+# redistribute it and/or modify it under the terms of the GNU General Public
+# License as published by the Free Software Foundation, version 2.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 51
+# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Portions Copyright Buildbot Team Members
+# Portions Copyright 2010 Isotoma Limited
+
+
+import os
+
+from twisted.internet import defer
+from twisted.internet import threads
+from twisted.internet import utils
+from twisted.python import failure
+from twisted.python import log
+
+from buildbot import config
+from buildbot.util.eventual import eventually
+from buildbot.worker import AbstractLatentWorker
+
+try:
+ import libvirt
+except ImportError:
+ libvirt = None
+
+import random
+import string
+
+def random_string_generator():
+ chars = string.ascii_letters
+ return ''.join(random.choice(chars) for x in range(6))
+
+class WorkQueue:
+
+ """
+ I am a class that turns parallel access into serial access.
+
+ I exist because we want to run libvirt access in threads as we don't
+ trust calls not to block, but under load libvirt doesn't seem to like
+ this kind of threaded use.
+ """
+
+ def __init__(self):
+ self.queue = []
+
+ def _process(self):
+ log.msg("Looking to start a piece of work now...")
+
+ # Is there anything to do?
+ if not self.queue:
+ log.msg("_process called when there is no work")
+ return
+
+ # Peek at the top of the stack - get a function to call and
+ # a deferred to fire when its all over
+ d, next_operation, args, kwargs = self.queue[0]
+
+ # Start doing some work - expects a deferred
+ try:
+ d2 = next_operation(*args, **kwargs)
+ except Exception:
+ d2 = defer.fail()
+
+ # Whenever a piece of work is done, whether it worked or not
+ # call this to schedule the next piece of work
+ @d2.addBoth
+ def _work_done(res):
+ log.msg("Completed a piece of work")
+ self.queue.pop(0)
+ if self.queue:
+ log.msg("Preparing next piece of work")
+ eventually(self._process)
+ return res
+
+ # When the work is done, trigger d
+ d2.chainDeferred(d)
+
+ def execute(self, cb, *args, **kwargs):
+ kickstart_processing = not self.queue
+ d = defer.Deferred()
+ self.queue.append((d, cb, args, kwargs))
+ if kickstart_processing:
+ self._process()
+ return d
+
+ def executeInThread(self, cb, *args, **kwargs):
+ return self.execute(threads.deferToThread, cb, *args, **kwargs)
+
+
+# A module is effectively a singleton class, so this is OK
+queue = WorkQueue()
+
+
+class Domain:
+
+ """
+ I am a wrapper around a libvirt Domain object
+ """
+
+ def __init__(self, connection, domain):
+ self.connection = connection
+ self.domain = domain
+
+ def name(self):
+ return queue.executeInThread(self.domain.name)
+
+ def create(self):
+ return queue.executeInThread(self.domain.create)
+
+ def shutdown(self):
+ return queue.executeInThread(self.domain.shutdown)
+
+ def destroy(self):
+ return queue.executeInThread(self.domain.destroy)
+
+class Volume:
+ def __init__(self, connection, volume):
+ self.connection = connection
+ self.volume = volume
+
+ @defer.inlineCallbacks
+ def destroy(self):
+ yield queue.executeInThread(self.volume.wipe)
+ yield queue.executeInThread(self.volume.delete)
+
+class Pool:
+ VolumeClass = Volume
+ def __init__(self, connection, pool):
+ self.connection = connection
+ self.pool = pool
+
+ @defer.inlineCallbacks
+ def create_volume(self, xml):
+ res = yield queue.executeInThread(self.pool.createXML, xml)
+ return self.VolumeClass(self.connection, res)
+
+class Connection:
+
+ """
+ I am a wrapper around a libvirt Connection object.
+ """
+
+ DomainClass = Domain
+ PoolClass = Pool
+
+ def __init__(self, uri):
+ self.uri = uri
+ self._connection = None
+
+ @property
+ def connection(self):
+ if self._connection is not None:
+ try:
+ if not self._connection.isAlive():
+ self._connection = None
+ except:
+ self._connection = None
+ if self._connection is None:
+ self._connection = libvirt.open(self.uri)
+ return self._connection
+
+ @defer.inlineCallbacks
+ def create(self, xml):
+ """ I take libvirt XML and start a new VM """
+ res = yield queue.executeInThread(self.connection.createXML, xml, 0)
+ return self.DomainClass(self, res)
+
+ @defer.inlineCallbacks
+ def lookup_pool(self, name):
+ res = yield queue.executeInThread(self.connection.storagePoolLookupByName, name)
+ return self.PoolClass(self, res)
+
+class LibVirtWorker(AbstractLatentWorker):
+
+ def __init__(self, name, password, connection, master_url, base_image=None, **kwargs):
+ super().__init__(name, password, **kwargs)
+ if not libvirt:
+ config.error(
+ "The python module 'libvirt' is needed to use a LibVirtWorker")
+
+ self.master_url = master_url
+ self.random_name = random_string_generator()
+ self.connection = connection
+ self.base_image = base_image
+
+ self.domain = None
+ self.domain_name = "buildbot-" + self.workername + "-" + self.random_name
+ self.volume = None
+ self.volume_name = "buildbot-" + self.workername + "-" + self.random_name
+ self.pool_name = "buildbot-disks"
+
+ def reconfigService(self, *args, **kwargs):
+ if 'build_wait_timeout' not in kwargs:
+ kwargs['build_wait_timeout'] = 0
+ return super().reconfigService(*args, **kwargs)
+
+ def canStartBuild(self):
+ if self.domain and not self.isConnected():
+ log.msg(
+ "Not accepting builds as existing domain but worker not connected")
+ return False
+
+ return super().canStartBuild()
+
+ @defer.inlineCallbacks
+ def _prepare_image(self):
+ log.msg("Creating temporary image {}".format(self.volume_name))
+ pool = yield self.connection.lookup_pool(self.pool_name)
+ vol_xml = """
+
+ {vol_name}
+ 10
+
+
+
+ 0600
+ 0
+ 0
+
+
+
+ /etc/libvirtd/base-images/buildbot.qcow2
+
+
+
+ """.format(vol_name = self.volume_name)
+ self.volume = yield pool.create_volume(vol_xml)
+
+ @defer.inlineCallbacks
+ def start_instance(self, build):
+ """
+ I start a new instance of a VM.
+
+ If a base_image is specified, I will make a clone of that otherwise i will
+ use image directly.
+
+ If i'm not given libvirt domain definition XML, I will look for my name
+ in the list of defined virtual machines and start that.
+ """
+ domain_xml = """
+
+ {domain_name}
+ 2
+ 1
+
+
+ buildbot_master_url={master_url}
+ buildbot_worker_name={worker_name}
+
+
+
+ hvm
+
+
+
+ /run/current-system/sw/bin/qemu-system-x86_64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ """.format(volume_name = self.volume_name, master_url = self.master_url, pool_name =
+ self.pool_name, domain_name = self.domain_name, worker_name = self.workername)
+
+ yield self._prepare_image()
+
+ try:
+ self.domain = yield self.connection.create(domain_xml)
+ except Exception:
+ log.err(failure.Failure(),
+ ("Cannot start a VM ({}), failing gracefully and triggering"
+ "a new build check").format(self.workername))
+ self.domain = None
+ return False
+
+ return [self.domain_name]
+
+ def stop_instance(self, fast=False):
+ """
+ I attempt to stop a running VM.
+ I make sure any connection to the worker is removed.
+ If the VM was using a cloned image, I remove the clone
+ When everything is tidied up, I ask that bbot looks for work to do
+ """
+
+ log.msg("Attempting to stop '{}'".format(self.workername))
+ if self.domain is None:
+ log.msg("I don't think that domain is even running, aborting")
+ return defer.succeed(None)
+
+ domain = self.domain
+ self.domain = None
+
+ d = domain.destroy()
+ if self.volume is not None:
+ self.volume.destroy()
+
+ return d
diff --git a/flakes/private/buildbot/common/master.cfg b/flakes/private/buildbot/common/master.cfg
new file mode 100644
index 0000000..0357f2a
--- /dev/null
+++ b/flakes/private/buildbot/common/master.cfg
@@ -0,0 +1,93 @@
+# -*- python -*-
+# ex: set filetype=python:
+
+from buildbot.plugins import secrets, util, webhooks
+from buildbot.util import bytes2unicode
+import re
+import os
+from buildbot_config import E, configure
+import json
+
+class CustomBase(webhooks.base):
+ def getChanges(self, request):
+ try:
+ content = request.content.read()
+ args = json.loads(bytes2unicode(content))
+ except Exception as e:
+ raise ValueError("Error loading JSON: " + str(e))
+
+ args.setdefault("comments", "")
+ args.setdefault("repository", "")
+ args.setdefault("author", args.get("who"))
+
+ return ([args], None)
+
+class GitoliteHook(webhooks.base):
+ def getChanges(self, request):
+ try:
+ branch = request.args[b"branch"][0].decode("utf-8")
+ project = request.args[b"project"][0].decode("utf-8")
+ repository = request.args[b"repository"][0].decode("utf-8")
+ author = request.args[b"author"][0].decode("utf-8")
+ except Exception as e:
+ raise ValueError("Error missing key in request: " + str(e))
+
+ args = {
+ "author": "gitolite for " + author,
+ "category": "gitolite-hooks",
+ "comments": "gitolite post-receive hook",
+ "branch": branch,
+ "project": project,
+ "repository": repository,
+ }
+
+ return ([args], None)
+
+userInfoProvider = util.LdapUserInfo(
+ uri=E.LDAP_URL,
+ bindUser=E.LDAP_ADMIN_USER,
+ bindPw=open(E.SECRETS_FILE + "/ldap", "r").read().rstrip(),
+ accountBase=E.LDAP_BASE,
+ accountPattern=E.LDAP_PATTERN,
+ accountFullName='cn',
+ accountEmail='mail',
+ avatarData="jpegPhoto",
+ groupBase=E.LDAP_BASE,
+ groupName="cn",
+ groupMemberPattern=E.LDAP_GROUP_PATTERN,
+ )
+
+c = BuildmasterConfig = {
+ "title": E.TITLE,
+ "titleURL": E.TITLE_URL,
+ "db": {
+ "db_url": "sqlite:///state.sqlite"
+ },
+ "protocols": { "pb": { "port": E.PB_SOCKET } },
+ "workers": [],
+ "change_source": [],
+ "schedulers": [],
+ "builders": [],
+ "services": [],
+ "secretsProviders": [
+ secrets.SecretInAFile(E.SECRETS_FILE),
+ ],
+ "www": {
+ "change_hook_dialects": {
+ "base": { "custom_class": CustomBase },
+ "gitolite": { "custom_class": GitoliteHook },
+ },
+ "plugins": {
+ "waterfall_view": {},
+ "console_view": {},
+ "grid_view": {},
+ "buildslist": {},
+ },
+ "auth": util.RemoteUserAuth(
+ header=b"X-Remote-User",
+ userInfoProvider=userInfoProvider,
+ headerRegex=re.compile(br"(?P[^ @]+)")),
+ }
+ }
+
+configure(c)
diff --git a/flakes/private/buildbot/flake.lock b/flakes/private/buildbot/flake.lock
new file mode 100644
index 0000000..8952f75
--- /dev/null
+++ b/flakes/private/buildbot/flake.lock
@@ -0,0 +1,61 @@
+{
+ "nodes": {
+ "buildslist": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585697026,
+ "narHash": "sha256-7CO89q6Bmg59eN5tFGYaqJR/rpJrLu7dpulXgJUv/0E=",
+ "ref": "master",
+ "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0",
+ "revCount": 4,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "buildslist": "buildslist",
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/private/buildbot/flake.nix b/flakes/private/buildbot/flake.nix
new file mode 100644
index 0000000..8b3c704
--- /dev/null
+++ b/flakes/private/buildbot/flake.nix
@@ -0,0 +1,74 @@
+{
+ description = "The continuous integration framework";
+ inputs.flake-utils.url = "github:numtide/flake-utils";
+ inputs.nixpkgs = {
+ url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
+ flake = false;
+ };
+ inputs.buildslist = {
+ url = "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist";
+ type = "git";
+ flake = false;
+ };
+ outputs = { self, nixpkgs, flake-utils, buildslist }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
+ let
+ pkgs = import nixpkgs { inherit system; overlays = []; };
+ python = pkgs.python38;
+ wokkel = python.pkgs.buildPythonPackage rec {
+ pname = "wokkel";
+ version = "18.0.0";
+ src = python.pkgs.fetchPypi {
+ inherit pname version;
+ sha256 = "1spq44gg8gsviqx1dvlmjpgfc0wk0jpyx4ap01y2pad1ai9cw016";
+ };
+ propagatedBuildInputs = with python.pkgs; [ twisted.extras.tls twisted incremental dateutil ];
+ doCheck = false;
+ };
+ buildbot_common = python.pkgs.buildPythonPackage {
+ name = "buildbot_common";
+ src = ./common;
+ format = "other";
+ installPhase = ''
+ mkdir -p $out/${python.sitePackages}
+ cp -a $src $out/${python.sitePackages}/buildbot_common
+ '';
+ };
+ buildbot-full = python.pkgs.buildbot-full.withPlugins [ buildslist-plugin ] // {
+ inherit buildbot_common;
+ buildbot_config = project: python.pkgs.buildPythonPackage (rec {
+ name = "buildbot_config-${project.name}";
+ src = if project.name == "test" then ./test_project else project.src;
+ format = "other";
+ installPhase = ''
+ mkdir -p $out/${python.sitePackages}
+ cp -a $src $out/${python.sitePackages}/buildbot_config
+ '';
+ });
+ common_packages = pkgs: [
+ (pkgs.apprise.overridePythonAttrs(old: { propagatedBuildInputs = old.propagatedBuildInputs ++ [ pkgs.sleekxmpp ]; })) pkgs.libvirt pkgs.treq pkgs.ldap3
+ buildbot-full pkgs.buildbot-worker pkgs.pip buildbot_common
+ wokkel
+ ];
+ };
+ buildslist-plugin = pkgs.callPackage ./buildslist {
+ pythonPackages = python.pkgs;
+ buildslist_src = buildslist;
+ };
+ in rec {
+ packages = {
+ buildslist = buildslist-plugin;
+ buildbot-full = buildbot-full;
+ buildbot_common = buildbot_common;
+ };
+ defaultPackage = packages.buildbot-full;
+ legacyPackages = packages;
+ checks = packages;
+ }) // rec {
+ overlays = {
+ immae-buildbot = final: prev: {
+ immae-buildbot = self.defaultPackage."${final.system}";
+ };
+ };
+ overlay = overlays.immae-buildbot;
+ };
+}
diff --git a/flakes/private/buildbot/test_project/__init__.py b/flakes/private/buildbot/test_project/__init__.py
new file mode 100644
index 0000000..d5893fd
--- /dev/null
+++ b/flakes/private/buildbot/test_project/__init__.py
@@ -0,0 +1,121 @@
+from buildbot.plugins import *
+from buildbot_common.build_helpers import *
+import buildbot_common.libvirt as ilibvirt
+import os
+from buildbot.util import bytes2unicode
+import json
+
+__all__ = [ "configure", "E" ]
+
+class E():
+ PROJECT = "test"
+ BUILDBOT_URL = "https://git.immae.eu/buildbot/{}/".format(PROJECT)
+ SOCKET = "unix:/run/buildbot/{}.sock".format(PROJECT)
+ PB_SOCKET = os.environ["BUILDBOT_WORKER_PORT"]
+ WORKER_HOST = "{}:{}".format(os.environ["BUILDBOT_HOST"], PB_SOCKET)
+ RELEASE_PATH = "/var/lib/ftp/release.immae.eu/{}".format(PROJECT)
+ RELEASE_URL = "https://release.immae.eu/{}".format(PROJECT)
+ GIT_URL = "https://git.immae.eu/perso/Immae/TestProject.git"
+ SSH_KEY_PATH = "/var/lib/buildbot/buildbot_key"
+ LIBVIRT_URL = os.environ["BUILDBOT_VIRT_URL"] + "?keyfile=" + SSH_KEY_PATH
+ XMPP_RECIPIENTS = os.environ["BUILDBOT_XMPP_RECIPIENTS"].split(" ")
+
+ # master.cfg
+ SECRETS_FILE = os.getcwd() + "/secrets"
+ LDAP_URL = "ldaps://ldap.immae.eu:636"
+ LDAP_ADMIN_USER = "cn=buildbot,ou=services,dc=immae,dc=eu"
+ LDAP_BASE = "dc=immae,dc=eu"
+ LDAP_PATTERN = "(uid=%(username)s)"
+ LDAP_GROUP_PATTERN = "(&(memberOf=cn=groups,ou=test,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
+ TITLE_URL = "https://git.immae.eu/?p=perso/Immae/TestProject.git;a=summary"
+ TITLE = "Test project"
+
+class CustomBase(webhooks.base):
+ def getChanges(self, request):
+ try:
+ content = request.content.read()
+ args = json.loads(bytes2unicode(content))
+ except Exception as e:
+ raise ValueError("Error loading JSON: " + str(e))
+
+ args.setdefault("comments", "")
+ args.setdefault("repository", "")
+ args.setdefault("author", args.get("who", "unknown"))
+
+ if args["category"] == "deploy_webhook":
+ args = {
+ "category": "deploy_webhook",
+ "comments": "",
+ "repository": "",
+ "author": "unknown",
+ "project": "TestProject",
+ "properties": {
+ "environment": args.get("environment", "integration"),
+ "build": "test_{}.tar.gz".format(args.get("branch", "master"))
+ }
+ }
+
+ return ([args], None)
+
+def configure(c):
+ c["buildbotURL"] = E.BUILDBOT_URL
+ c["www"]["port"] = E.SOCKET
+
+ c["www"]["change_hook_dialects"]["base"] = { "custom_class": CustomBase }
+
+ configure_build(c)
+ configure_deploy(c)
+
+ configure_apprise_push(c, E.SECRETS_FILE, all_builder_names(c))
+ configure_xmpp_push(c, E.SECRETS_FILE, all_builder_names(c), E.XMPP_RECIPIENTS)
+
+def configure_build(c):
+ builder_name = "TestProject_build"
+ worker_name = "test-build"
+ c['schedulers'].append(force_scheduler("force_test", [builder_name]))
+ c['schedulers'].append(git_hook_scheduler("TestProject", [builder_name]))
+ c['workers'].append(libvirt_worker(worker_name))
+ c['builders'].append(util.BuilderConfig(name=builder_name, workernames=[worker_name], factory=build_factory()))
+
+def configure_deploy(c):
+ builder_name = "TestProject_deploy"
+ worker_name = "test-deploy"
+ c['workers'].append(libvirt_worker(worker_name))
+ c['schedulers'].append(deploy_hook_scheduler("TestProject", [builder_name]))
+ c['schedulers'].append(deploy_scheduler("deploy_test", [builder_name]))
+ c['builders'].append(util.BuilderConfig(name=builder_name, workernames=[worker_name], factory=deploy_factory()))
+
+def libvirt_worker(name):
+ return ilibvirt.LibVirtWorker(name,
+ open(E.SECRETS_FILE + "/worker_password", "r").read().rstrip(),
+ ilibvirt.Connection(E.LIBVIRT_URL),
+ E.WORKER_HOST)
+
+def build_factory():
+ package = util.Interpolate("test_%(kw:clean_branch)s.tar.gz", clean_branch=clean_branch)
+ package_dest = util.Interpolate("{}/test_%(kw:clean_branch)s.tar.gz".format(E.RELEASE_PATH), clean_branch=clean_branch)
+ package_url = util.Interpolate("{}/test_%(kw:clean_branch)s.tar.gz".format(E.RELEASE_URL), clean_branch=clean_branch)
+
+ factory = util.BuildFactory()
+ factory.addStep(steps.Git(logEnviron=False,
+ repourl=E.GIT_URL, mode="full", method="fresh"))
+ factory.addStep(steps.ShellCommand(name="env",
+ logEnviron=False, command=["env"]))
+ factory.addStep(steps.ShellCommand(name="pwd",
+ logEnviron=False, command=["pwd"]))
+ factory.addStep(steps.ShellCommand(name="true",
+ logEnviron=False, command=["true"]))
+ factory.addStep(steps.ShellCommand(name="echo",
+ logEnviron=False, command=["echo", package]))
+ factory.addSteps(package_and_upload(package, package_dest, package_url))
+
+ return factory
+
+def deploy_factory():
+ package_dest = util.Interpolate("{}/%(prop:build)s".format(E.RELEASE_PATH))
+
+ factory = util.BuildFactory()
+ factory.addStep(steps.MasterShellCommand(command=["test", "-f", package_dest]))
+ factory.addStep(steps.SetProperties(properties=compute_build_infos("test", E.RELEASE_PATH)))
+ factory.addStep(steps.MasterShellCommand(command=deploy_ssh_command(E.SSH_KEY_PATH, {})))
+ return factory
diff --git a/flakes/private/chatons/flake.lock b/flakes/private/chatons/flake.lock
new file mode 100644
index 0000000..39ed484
--- /dev/null
+++ b/flakes/private/chatons/flake.lock
@@ -0,0 +1,23 @@
+{
+ "nodes": {
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "environment": "environment"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/private/chatons/flake.nix b/flakes/private/chatons/flake.nix
new file mode 100644
index 0000000..70fb02d
--- /dev/null
+++ b/flakes/private/chatons/flake.nix
@@ -0,0 +1,142 @@
+{
+ inputs.environment.url = "path:../environment";
+ outputs = { self, environment }: {
+ nixosModule = self.nixosModules.chatons;
+ nixosModules.chatons = { config, lib, pkgs, nodes, ... }:
+ let
+ concatValue = value: if lib.isList value then builtins.concatStringsSep "," value else builtins.toString value;
+ toProperties = properties: builtins.concatStringsSep "\n" (
+ lib.collect
+ (p: !(lib.isAttrs p))
+ (lib.mapAttrsRecursive
+ (path: value: builtins.concatStringsSep "." (builtins.filter (f: f != "") path) + " = " + (concatValue value))
+ properties));
+ before = name: {
+ "${name}" = {
+ status.level = "OK";
+ status.description = "OK";
+ install.type = "PACKAGE";
+ registration.load = "OPEN";
+ };
+ host = {
+ name = "Hetzner";
+ server.type = "PHYSICAL";
+ provider.type = "HOSTEDSERVER";
+ server.distribution = "NixOS";
+ country.name = "Allemagne";
+ country.code = "DE";
+ };
+ };
+ after = name: {
+ file = {
+ class = name;
+ protocol = "ChatonsInfos-0.5";
+ generator = "Nix derivation";
+ };
+ "${name}" = {
+ legal.url = "https://www.immae.eu/mentions.html";
+ guide.technical = "https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/";
+ contact.url = "https://www.immae.eu/contacts_fr.html";
+ contact.email = config.myEnv.tools.contact;
+ startdate = "01/01/2019";
+ };
+ };
+ organization = {
+ file = {
+ class = "organization";
+ protocol = "ChatonsInfos-0.5";
+ datetime = "2021-01-11T22:23:00";
+ generator = "Nix derivation";
+ };
+ organization = {
+ country.name = "France";
+ country.code = "FR";
+ name = "ImmaeEu";
+ description = "ImmaeEu est un CHATONS des Alpes-Maritimes";
+ website = "https://www.immae.eu";
+ logo = "https://assets.immae.eu/logo.jpg";
+ socialnetworks = {
+ diaspora = "https://diaspora.immae.eu/people/1a185f29cc76cb35";
+ facebook = "https://www.facebook.com/ismael.bouya";
+ mastodon = "https://mastodon.immae.eu/@immae";
+ peertube = "https://peertube.immae.eu/accounts/immae/";
+ twitter = "https://twitter.com/_immae";
+ };
+ chatrooms = {
+ xmpp = "ismael@immae.fr";
+ irc = "immae@freenode";
+ matrix = "#support:immae.eu";
+ };
+ contact.url = "https://www.immae.eu/contacts_fr.html";
+ contact.email = config.myEnv.tools.contact;
+ legal.url = "https://www.immae.eu/mentions.html";
+ guide.technical = "https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/";
+ guide.user = "https://www.immae.eu/docs";
+ status.level = "ACTIVE";
+ status.description = "En activité";
+ startdate = "01/01/2019";
+ type = "COMPANY";
+ owner = {
+ logo = "https://assets.immae.eu/logo.jpg";
+ name = "Ismaël Bouya";
+ website = "https://www.immae.eu";
+ };
+ memberof.chatons = {
+ startdate = "01/07/2019";
+ status.level = "ACTIVE";
+ status.description = "Participe au collectif";
+ };
+ };
+ };
+ subname = v: if v.published or true then "subs" else "subs-hidden";
+ toOrganizationProperties = name: pkgs.writeText name (toProperties organization + "\n" + (
+ builtins.concatStringsSep "\n" (lib.mapAttrsToList
+ (n: v: "${subname v}.${n} = https://www.immae.eu/.well-known/chatonsinfos/service-${n}.properties") mergedServices
+ )) + "\n" + (
+ builtins.concatStringsSep "\n" (lib.mapAttrsToList
+ (n: v: "subs.hosting-${n} = https://www.immae.eu/.well-known/chatonsinfos/hosting-${n}.properties") mergedHostings
+ )));
+ toHostingProperties = name: content: pkgs.writeText name (toProperties (lib.recursiveUpdate (before "hosting") (lib.recursiveUpdate content (after "hosting"))));
+ toServiceProperties = name: content: pkgs.writeText name (toProperties (lib.recursiveUpdate (before "service") (lib.recursiveUpdate content (after "service"))));
+
+ cfg = config.myServices.chatonsProperties;
+ mergedServices = lib.foldr (v: o: lib.recursiveUpdate o v) {} (lib.mapAttrsToList (k: v: if (v.config.myServices or {}) ? "chatonsProperties" then v.config.myServices.chatonsProperties.services else {}) nodes);
+ mergedHostings = lib.foldr (v: o: lib.recursiveUpdate o v) {} (lib.mapAttrsToList (k: v: if (v.config.myServices or {}) ? "chatonsProperties" then v.config.myServices.chatonsProperties.hostings else {}) nodes);
+ in {
+ imports = [
+ environment.nixosModule
+ ];
+ options.myServices.chatonsProperties.organization = lib.mkOption {
+ type = lib.types.attrsOf lib.types.unspecified;
+ default = {};
+ description = ''
+ nested attrs of strings or arrays of strings
+ '';
+ };
+ options.myServices.chatonsProperties.services = lib.mkOption {
+ type = lib.types.attrsOf lib.types.unspecified;
+ default = {};
+ description = ''
+ nested attrs of strings or arrays of strings
+ '';
+ };
+ options.myServices.chatonsProperties.hostings = lib.mkOption {
+ type = lib.types.attrsOf lib.types.unspecified;
+ default = {};
+ description = ''
+ nested attrs of strings or arrays of strings
+ '';
+ };
+ options.myServices.chatonsProperties.propertiesPath = lib.mkOption {
+ type = lib.types.package;
+ readOnly = true;
+ default = pkgs.runCommand "chatons" {} ''
+ mkdir -p $out
+ cp ${toOrganizationProperties "immae-eu"} $out/immae-eu.properties
+ ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (n: c: "cp ${toHostingProperties n c} $out/hosting-${n}.properties") mergedHostings)}
+ ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (n: c: "cp ${toServiceProperties n c} $out/service-${n}.properties") mergedServices)}
+ '';
+ };
+ };
+ };
+}
diff --git a/flakes/private/environment-dummy/flake.nix b/flakes/private/environment-dummy/flake.nix
new file mode 100644
index 0000000..5ebc27f
--- /dev/null
+++ b/flakes/private/environment-dummy/flake.nix
@@ -0,0 +1,18 @@
+{
+ description = ''
+ A dummy flake that contains a compatible structure to the one stored at
+ git+ssh://gitolite@git.immae.eu/perso/Immae/Config/Nix/Nixops/Secrets
+ It is used as default value in "public" configurations
+ '';
+ outputs = { self }: {
+ vars-file = ./vars.yml;
+ ldap-conf = ./ldap.conf;
+ environment-file = ./environment.nix;
+ nixosModule = self.nixosModules.my-environment;
+ nixosModules.my-environment = { ... }: {
+ config.myEnv = import self.environment-file;
+ };
+ nixosModules.users-config-eldiron = { ... }: {};
+ };
+}
+
diff --git a/flakes/private/environment-dummy/ldap.conf b/flakes/private/environment-dummy/ldap.conf
new file mode 100644
index 0000000..064a4be
--- /dev/null
+++ b/flakes/private/environment-dummy/ldap.conf
@@ -0,0 +1,13 @@
+# Indices to maintain
+index objectClass eq
+index uid pres,eq
+index mail pres,sub,eq
+index cn pres,sub,eq
+index sn pres,sub,eq
+index dc eq
+index krbPrincipalName eq
+index member eq
+index memberOf eq
+
+access to *
+ by * none
diff --git a/flakes/private/environment-dummy/vars.yml b/flakes/private/environment-dummy/vars.yml
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/flakes/private/environment-dummy/vars.yml
@@ -0,0 +1 @@
+{}
diff --git a/flakes/private/environment/flake.nix b/flakes/private/environment/flake.nix
new file mode 100644
index 0000000..15c079a
--- /dev/null
+++ b/flakes/private/environment/flake.nix
@@ -0,0 +1,1135 @@
+{
+ outputs = { self }: {
+ nixosModule = self.nixosModules.environment;
+ nixosModules.environment = { config, lib, name, ... }:
+ with lib;
+ with types;
+ with lists;
+ let
+ ldapOptions = {
+ base = mkOption { description = "Base of the LDAP tree"; type = str; };
+ host = mkOption { description = "Host to access LDAP"; type = str; };
+ root_dn = mkOption { description = "DN of the root user"; type = str; };
+ root_pw = mkOption { description = "Hashed password of the root user"; type = str; };
+ replication_dn = mkOption { description = "DN of the user allowed to replicate the LDAP directory"; type = str; };
+ replication_pw = mkOption { description = "Password of the user allowed to replicate the LDAP directory"; type = str; };
+ };
+ mkLdapOptions = name: more: mkOption {
+ description = "${name} LDAP configuration";
+ type = submodule {
+ options = ldapOptions // {
+ dn = mkOption { description = "DN of the ${name} user"; type = str; };
+ password = mkOption { description = "password of the ${name} user"; type = str; };
+ filter = mkOption { description = "Filter for ${name} users"; type = str; default = ""; };
+ } // more;
+ };
+ };
+ mysqlOptions = {
+ host = mkOption { description = "Host to access Mysql"; type = str; };
+ remoteHost = mkOption { description = "Host to access Mysql from outside"; type = str; };
+ port = mkOption { description = "Port to access Mysql"; type = int; };
+ socket = mkOption { description = "Socket to access Mysql"; type = path; };
+ systemUsers = mkOption {
+ description = "Attrs of user-passwords allowed to access mysql";
+ type = attrsOf str;
+ };
+ pam = mkOption {
+ description = "PAM configuration for mysql";
+ type = submodule {
+ options = {
+ dn = mkOption { description = "DN to connect as to check users"; type = str; };
+ password = mkOption { description = "DN password to connect as to check users"; type = str; };
+ filter = mkOption { description = "filter to match users"; type = str; };
+ };
+ };
+ };
+ };
+ mkMysqlOptions = name: more: mkOption {
+ description = "${name} mysql configuration";
+ type = submodule {
+ options = mysqlOptions // {
+ database = mkOption { description = "${name} database"; type = str; };
+ user = mkOption { description = "${name} user"; type = str; };
+ password = mkOption { description = "mysql password of the ${name} user"; type = str; };
+ } // more;
+ };
+ };
+ psqlOptions = {
+ host = mkOption { description = "Host to access Postgresql"; type = str; };
+ port = mkOption { description = "Port to access Postgresql"; type = str; };
+ socket = mkOption { description = "Socket to access Postgresql"; type = path; };
+ pam = mkOption {
+ description = "PAM configuration for psql";
+ type = submodule {
+ options = {
+ dn = mkOption { description = "DN to connect as to check users"; type = str; };
+ password = mkOption { description = "DN password to connect as to check users"; type = str; };
+ filter = mkOption { description = "filter to match users"; type = str; };
+ };
+ };
+ };
+ };
+ mkPsqlOptions = name: mkOption {
+ description = "${name} psql configuration";
+ type = submodule {
+ options = psqlOptions // {
+ database = mkOption { description = "${name} database"; type = str; };
+ schema = mkOption { description = "${name} schema"; type = nullOr str; default = null; };
+ user = mkOption { description = "${name} user"; type = str; };
+ password = mkOption { description = "psql password of the ${name} user"; type = str; };
+ };
+ };
+ };
+ redisOptions = {
+ host = mkOption { description = "Host to access Redis"; type = str; };
+ port = mkOption { description = "Port to access Redis"; type = str; };
+ socket = mkOption { description = "Socket to access Redis"; type = path; };
+ dbs = mkOption {
+ description = "Attrs of db number. Each number should be unique to avoid collision!";
+ type = attrsOf str;
+ };
+ spiped_key = mkOption {
+ type = str;
+ description = ''
+ Key to use with spiped to make a secure channel to replication
+ '';
+ };
+ predixy = mkOption {
+ description = "Predixy configuration. Unused yet";
+ type = submodule {
+ options = {
+ read = mkOption { type = str; description = "Read password"; };
+ };
+ };
+ };
+ };
+ mkRedisOptions = name: mkOption {
+ description = "${name} redis configuration";
+ type = submodule {
+ options = redisOptions // {
+ db = mkOption { description = "${name} database"; type = str; };
+ };
+ };
+ };
+ smtpOptions = {
+ host = mkOption { description = "Host to access SMTP"; type = str; };
+ port = mkOption { description = "Port to access SMTP"; type = str; };
+ };
+ mkSmtpOptions = name: mkOption {
+ description = "${name} smtp configuration";
+ type = submodule {
+ options = smtpOptions // {
+ email = mkOption { description = "${name} email"; type = str; };
+ password = mkOption { description = "SMTP password of the ${name} user"; type = str; };
+ };
+ };
+ };
+ hostEnv = submodule {
+ options = {
+ fqdn = mkOption {
+ description = "Host FQDN";
+ type = str;
+ };
+ hostKey = mkOption {
+ type = nullOr str;
+ default = null;
+ description = ''
+ ssh host key
+ '';
+ };
+ isVm = mkEnableOption "The host is a vm";
+ users = mkOption {
+ type = unspecified;
+ default = pkgs: [];
+ description = ''
+ Sublist of users from realUsers. Function that takes pkgs as
+ argument and gives an array as a result
+ '';
+ };
+ emails = mkOption {
+ default = [];
+ description = "List of e-mails that the server can be a sender of";
+ type = listOf str;
+ };
+ ldap = mkOption {
+ description = ''
+ LDAP credentials for the host
+ '';
+ type = submodule {
+ options = {
+ password = mkOption { type = str; description = "Password for the LDAP connection"; };
+ dn = mkOption { type = str; description = "DN for the LDAP connection"; };
+ };
+ };
+ };
+ mx = mkOption {
+ description = "subdomain and priority for MX server";
+ default = { enable = false; };
+ type = submodule {
+ options = {
+ enable = mkEnableOption "Enable MX";
+ subdomain = mkOption { type = nullOr str; description = "Subdomain name (mx-*)"; };
+ priority = mkOption { type = nullOr int; description = "Priority"; };
+ };
+ };
+ };
+ ips = mkOption {
+ description = ''
+ attrs of ip4/ip6 grouped by section
+ '';
+ type = attrsOf (submodule {
+ options = {
+ alias = mkOption {
+ type = nullOr str;
+ default = null;
+ description = ''
+ alias to use in DNS for that group
+ '';
+ };
+ ip4 = mkOption {
+ type = listOf str;
+ default = [];
+ description = ''
+ ip4 addresses of the host
+ '';
+ };
+ ip6 = mkOption {
+ type = listOf str;
+ default = [];
+ description = ''
+ ip6 addresses of the host
+ '';
+ };
+ };
+ });
+ };
+ };
+ };
+ in
+ {
+ # Necessary for situations where flake gets included multiple times
+ key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
+
+ options.myEnv = {
+ servers = mkOption {
+ description = ''
+ Attrs of servers information in the cluster (not necessarily handled by nixops)
+ '';
+ default = {};
+ type = attrsOf hostEnv;
+ };
+ hetznerCloud = mkOption {
+ description = ''
+ Hetzner Cloud credential information
+ '';
+ type = submodule {
+ options = {
+ authToken = mkOption {
+ type = str;
+ description = ''
+ The API auth token.
+ '';
+ };
+ };
+ };
+ };
+ hetzner = mkOption {
+ description = ''
+ Hetzner credential information
+ '';
+ type = submodule {
+ options = {
+ user = mkOption { type = str; description = "User"; };
+ pass = mkOption { type = str; description = "Password"; };
+ };
+ };
+ };
+ sshd = mkOption {
+ description = ''
+ sshd service credential information
+ '';
+ type = submodule {
+ options = {
+ rootKeys = mkOption { type = attrsOf str; description = "Keys of root users"; };
+ ldap = mkOption {
+ description = ''
+ LDAP credentials for cn=ssh,ou=services,dc=immae,dc=eu dn
+ '';
+ type = submodule {
+ options = {
+ password = mkOption { description = "Password"; type = str; };
+ };
+ };
+ };
+ psql = mkOption {
+ description = ''
+ PSQL credentials for immae_auth_read
+ '';
+ type = submodule {
+ options = {
+ password = mkOption { description = "Password"; type = str; };
+ };
+ };
+ };
+ };
+ };
+ };
+ ports = mkOption {
+ description = ''
+ non-standard reserved ports. Must be unique!
+ '';
+ type = attrsOf port;
+ default = {};
+ apply = let
+ noDupl = x: builtins.length (builtins.attrValues x) == builtins.length (unique (builtins.attrValues x));
+ in
+ x: if isAttrs x && noDupl x then x else throw "Non unique values for ports";
+ };
+ httpd = mkOption {
+ description = ''
+ httpd service credential information
+ '';
+ type = submodule {
+ options = {
+ ldap = mkOption {
+ description = ''
+ LDAP credentials for cn=httpd,ou=services,dc=immae,dc=eu dn
+ '';
+ type = submodule {
+ options = {
+ password = mkOption { description = "Password"; type = str; };
+ };
+ };
+ };
+ };
+ };
+ };
+ smtp = mkOption {
+ type = submodule { options = smtpOptions; };
+ description = "SMTP configuration";
+ };
+ ldap = mkOption {
+ description = ''
+ LDAP server configuration
+ '';
+ type = submodule {
+ options = ldapOptions;
+ };
+ };
+ databases = mkOption {
+ description = "Databases configuration";
+ type = submodule {
+ options = {
+ mysql = mkOption {
+ type = submodule { options = mysqlOptions; };
+ description = "Mysql configuration";
+ };
+ redis = mkOption {
+ type = submodule { options = redisOptions; };
+ description = "Redis configuration";
+ };
+ postgresql = mkOption {
+ type = submodule { options = psqlOptions; };
+ description = "Postgresql configuration";
+ };
+ };
+ };
+ };
+ jabber = mkOption {
+ description = "Jabber configuration";
+ type = submodule {
+ options = {
+ postfix_user_filter = mkOption { type = str; description = "Postfix filter to get xmpp users"; };
+ ldap = mkLdapOptions "Jabber" {};
+ postgresql = mkPsqlOptions "Jabber";
+ };
+ };
+ };
+ realUsers = mkOption {
+ description = ''
+ Attrset of function taking pkgs as argument.
+ Real users settings, should provide a subattr of users.users.
+ with at least: name, (hashed)Password, shell
+ '';
+ type = attrsOf unspecified;
+ };
+ users = mkOption {
+ description = "System and regular users uid/gid";
+ type = attrsOf (submodule {
+ options = {
+ uid = mkOption {
+ description = "user uid";
+ type = int;
+ };
+ gid = mkOption {
+ description = "user gid";
+ type = int;
+ };
+ };
+ });
+ };
+ dns = mkOption {
+ description = "DNS configuration";
+ type = submodule {
+ options = {
+ ns = mkOption {
+ description = "Attrs of NS servers group";
+ example = {
+ foo = {
+ "ns1.foo.com" = [ "198.51.100.10" "2001:db8:abcd::1" ];
+ "ns2.foo.com" = [ "198.51.100.15" "2001:db8:1234::1" ];
+ };
+ };
+ type = attrsOf (attrsOf (listOf str));
+ };
+ };
+ };
+ };
+ backup = mkOption {
+ description = ''
+ Remote backup with duplicity
+ '';
+ type = submodule {
+ options = {
+ password = mkOption { type = str; description = "Password for encrypting files"; };
+ remotes = mkOption {
+ type = attrsOf (submodule {
+ options = {
+ remote = mkOption {
+ type = functionTo str;
+ example = literalExample ''
+ bucket: "s3://some_host/${bucket}";
+ '';
+ description = ''
+ Function.
+ Takes a bucket name as argument and returns a url
+ '';
+ };
+ accessKeyId = mkOption { type = str; description = "Remote access-key"; };
+ secretAccessKey = mkOption { type = str; description = "Remote access secret"; };
+ };
+ });
+ };
+ };
+ };
+ };
+ zrepl_backup = mkOption {
+ type = submodule {
+ options = {
+ ssh_key = mkOption {
+ description = "SSH key information";
+ type = submodule {
+ options = {
+ public = mkOption { type = str; description = "Public part of the key"; };
+ private = mkOption { type = lines; description = "Private part of the key"; };
+ };
+ };
+ };
+ mysql = mkMysqlOptions "Zrepl" {};
+ certs = mkOption {
+ description = "Certificates";
+ type = attrsOf (submodule {
+ options = {
+ key = mkOption { type = str; description = "Key"; };
+ certificate = mkOption { type = str; description = "Certificate"; };
+ };
+ });
+ };
+ };
+ };
+ };
+ rsync_backup = mkOption {
+ description =''
+ Rsync backup configuration from controlled host
+ '';
+ type = submodule {
+ options = {
+ ssh_key = mkOption {
+ description = "SSH key information";
+ type = submodule {
+ options = {
+ public = mkOption { type = str; description = "Public part of the key"; };
+ private = mkOption { type = lines; description = "Private part of the key"; };
+ };
+ };
+ };
+ profiles = mkOption {
+ description = "Attrs of profiles to backup";
+ default = {};
+ type = attrsOf (submodule {
+ options = {
+ keep = mkOption { type = int; description = "Number of backups to keep"; };
+ check_command = mkOption { type = str; description = "command to check if backup needs to be done"; default = "backup"; };
+ login = mkOption { type = str; description = "Login to connect to host"; };
+ port = mkOption { type = str; default = "22"; description = "Port to connect to host"; };
+ host = mkOption { type = str; description = "Host to connect to"; };
+ host_key = mkOption { type = str; description = "Host key"; };
+ host_key_type = mkOption { type = str; description = "Host key type"; };
+ parts = mkOption {
+ description = "Parts to backup for this host";
+ type = attrsOf (submodule {
+ options = {
+ remote_folder = mkOption { type = path; description = "Remote folder to backup";};
+ exclude_from = mkOption {
+ type = listOf path;
+ default = [];
+ description = "List of folders/files to exclude from the backup";
+ };
+ files_from = mkOption {
+ type = listOf path;
+ default = [];
+ description = "List of folders/files to backup in the base folder";
+ };
+ args = mkOption {
+ type = nullOr str;
+ default = null;
+ description = "Extra arguments to pass to rsync";
+ };
+ };
+ });
+ };
+ };
+ });
+ };
+ };
+ };
+ };
+ monitoring = mkOption {
+ description = "Monitoring configuration";
+ type = submodule {
+ options = {
+ status_url = mkOption { type = str; description = "URL to push status to"; };
+ status_token = mkOption { type = str; description = "Token for the status url"; };
+ http_user_password = mkOption { type = str; description = "HTTP credentials to check services behind wall"; };
+ email = mkOption { type = str; description = "Admin E-mail"; };
+ ssh_public_key = mkOption { type = str; description = "SSH public key"; };
+ ssh_secret_key = mkOption { type = str; description = "SSH secret key"; };
+ imap_login = mkOption { type = str; description = "IMAP login"; };
+ imap_password = mkOption { type = str; description = "IMAP password"; };
+ eriomem_keys = mkOption { type = listOf (listOf str); description = "Eriomem keys"; default = []; };
+ ovh_sms = mkOption {
+ description = "OVH credentials for sms script";
+ type = submodule {
+ options = {
+ endpoint = mkOption { type = str; default = "ovh-eu"; description = "OVH endpoint"; };
+ application_key = mkOption { type = str; description = "Application key"; };
+ application_secret = mkOption { type = str; description = "Application secret"; };
+ consumer_key = mkOption { type = str; description = "Consumer key"; };
+ account = mkOption { type = str; description = "Account"; };
+ };
+ };
+ };
+ nrdp_tokens = mkOption { type = listOf str; description = "Tokens allowed to push status update"; };
+ apprise_urls = mkOption { type = str; description = "Apprise space-separated urls to push status update"; };
+ netdata_aggregator = mkOption { type = str; description = "Url where netdata information should be sent"; };
+ netdata_keys = mkOption { type = attrsOf str; description = "netdata host keys"; };
+ immae_contact = mkOption { type = str; description = "Immae Contact e-mail"; };
+ email_check = mkOption {
+ description = "Emails services to check";
+ type = attrsOf (submodule {
+ options = {
+ local = mkOption { type = bool; default = false; description = "Use local configuration"; };
+ port = mkOption { type = nullOr str; default = null; description = "Port to connect to ssh"; };
+ login = mkOption { type = nullOr str; default = null; description = "Login to connect to ssh"; };
+ targets = mkOption { type = listOf str; description = "Hosts to send E-mails to"; };
+ mail_address = mkOption { type = nullOr str; default = null; description = "E-mail recipient part to send e-mail to"; };
+ mail_domain = mkOption { type = nullOr str; default = null; description = "E-mail domain part to send e-mail to"; };
+ };
+ });
+ };
+ };
+ };
+ };
+ mpd = mkOption {
+ description = "MPD configuration";
+ type = submodule {
+ options = {
+ folder = mkOption { type = str; description = "Folder to serve from the MPD instance"; };
+ password = mkOption { type = str; description = "Password to connect to the MPD instance"; };
+ host = mkOption { type = str; description = "Host to connect to the MPD instance"; };
+ port = mkOption { type = str; description = "Port to connect to the MPD instance"; };
+ };
+ };
+ };
+ ftp = mkOption {
+ description = "FTP configuration";
+ type = submodule {
+ options = {
+ ldap = mkLdapOptions "FTP" {
+ proftpd_filter = mkOption { type = str; description = "Filter for proftpd listing in LDAP"; };
+ pure-ftpd_filter = mkOption { type = str; description = "Filter for pure-ftpd listing in LDAP"; };
+ };
+ };
+ };
+ };
+ vpn = mkOption {
+ description = "VPN configuration";
+ type = attrsOf (submodule {
+ options = {
+ prefix = mkOption { type = str; description = "ipv6 prefix for the vpn subnet"; };
+ privateKey = mkOption { type = str; description = "Private key for the host"; };
+ publicKey = mkOption { type = str; description = "Public key for the host"; };
+ };
+ });
+ };
+ mail = mkOption {
+ description = "Mail configuration";
+ type = submodule {
+ options = {
+ dmarc = mkOption {
+ description = "DMARC configuration";
+ type = submodule {
+ options = {
+ ignore_hosts = mkOption {
+ type = lines;
+ description = ''
+ Hosts to ignore when checking for dmarc
+ '';
+ };
+ };
+ };
+ };
+ dkim = mkOption {
+ description = "DKIM configuration";
+ type = attrsOf (submodule {
+ options = {
+ public = mkOption {
+ type = attrsOf str;
+ example = literalExample ''
+ {
+ v = "DKIM1";
+ k = "rsa";
+ p = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3w1a2aMxWw9+hdcmbqX4UevcVqr204y0K73Wdc7MPZiOOlUJQYsMNSYR1Y/SC7jmPKeitpcJCpQgn/cveJZbuikjjPLsDReHyFEYmC278ZLRTELHx6f1IXM8WE08JIRT69CfZiMi1rVcOh9qRT4F93PyjCauU8Y5hJjtg9ThsWwIDAQAB";
+ }
+ '';
+ description = "Public entry to put in DNS TXT field";
+ };
+ private = mkOption { type = nullOr str; default = null; description = "Private key"; };
+ };
+ });
+ };
+ postfix = mkOption {
+ description = "Postfix configuration";
+ type = submodule {
+ options = {
+ mysql = mkMysqlOptions "Postfix" {
+ password_encrypt = mkOption { type = str; description = "Key to encrypt relay password in database"; };
+ };
+ admins = mkOption {
+ description = ''
+ List of admins meant to receive common aliases
+ '';
+ type = listOf str;
+ };
+ common_aliases = mkOption {
+ description = ''
+ List of aliases common to all hosts, to forward to admins
+ '';
+ type = listOf str;
+ };
+ other_aliases = mkOption {
+ description = ''
+ Other list of aliases, to forward to admins
+ '';
+ type = listOf str;
+ };
+ };
+ };
+ };
+ dovecot = mkOption {
+ description = "Dovecot configuration";
+ type = submodule {
+ options = {
+ ldap = mkLdapOptions "Dovecot" {
+ pass_attrs = mkOption { type = str; description = "Password attribute in LDAP"; };
+ user_attrs = mkOption { type = str; description = "User attribute mapping in LDAP"; };
+ iterate_attrs = mkOption { type = str; description = "User attribute mapping for listing in LDAP"; };
+ iterate_filter = mkOption { type = str; description = "User attribute filter for listing in LDAP"; };
+ postfix_mailbox_filter = mkOption { type = str; description = "Postfix filter to get mailboxes"; };
+ };
+ };
+ };
+ };
+ rspamd = mkOption {
+ description = "rspamd configuration";
+ type = submodule {
+ options = {
+ redis = mkRedisOptions "Redis";
+ read_password_hashed = mkOption { type = str; description = "Hashed read password for rspamd"; };
+ write_password_hashed = mkOption { type = str; description = "Hashed write password for rspamd"; };
+ read_password = mkOption {
+ type = str;
+ description = "Read password for rspamd. Unused";
+ apply = x: "";
+ };
+ write_password = mkOption {
+ type = str;
+ description = "Write password for rspamd. Unused";
+ apply = x: "";
+ };
+ };
+ };
+ };
+ sympa = mkOption {
+ description = "Sympa configuration";
+ type = submodule {
+ options = {
+ listmasters = mkOption {
+ type = listOf str;
+ description = "Listmasters";
+ };
+ postgresql = mkPsqlOptions "Sympa";
+ data_sources = mkOption {
+ type = attrsOf str;
+ default = {};
+ description = "Data sources to make available to sympa";
+ };
+ scenari = mkOption {
+ type = attrsOf str;
+ default = {};
+ description = "Scenari to make available to sympa";
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+ coturn = mkOption {
+ description = "Coturn configuration";
+ type = submodule {
+ options = {
+ auth_access_key = mkOption { type = str; description = "key to access coturn"; };
+ };
+ };
+ };
+ buildbot = mkOption {
+ description = "Buildbot configuration";
+ type = submodule {
+ options = {
+ ssh_key = mkOption {
+ description = "SSH key information";
+ type = submodule {
+ options = {
+ public = mkOption { type = str; description = "Public part of the key"; };
+ private = mkOption { type = lines; description = "Private part of the key"; };
+ };
+ };
+ };
+ workerPassword = mkOption { description = "Buildbot worker password"; type = str; };
+ user = mkOption {
+ description = "Buildbot user";
+ type = submodule {
+ options = {
+ uid = mkOption {
+ description = "user uid";
+ type = int;
+ };
+ gid = mkOption {
+ description = "user gid";
+ type = int;
+ };
+ };
+ };
+ };
+ ldap = mkOption {
+ description = "Ldap configuration for buildbot";
+ type = submodule {
+ options = {
+ password = mkOption { type = str; description = "Buildbot password"; };
+ };
+ };
+ };
+ projects = mkOption {
+ description = "Projects to make a buildbot for";
+ type = attrsOf (submodule {
+ options = {
+ name = mkOption { type = str; description = "Project name"; };
+ src = mkOption { type = path; description = "source of the project configuration"; };
+ packages = mkOption {
+ type = listOf package;
+ example = literalExample ''
+ [ pkgs.bash pkgs.git pkgs.gzip pkgs.openssh ];
+ '';
+ description = ''
+ Builds packages list to make available to buildbot project.
+ '';
+ };
+ pythonPathHome = mkOption { type = bool; description = "Whether to add project’s python home to python path"; };
+ workerPort = mkOption { type = port; description = "Port for the worker"; };
+ secrets = mkOption {
+ type = attrsOf lines;
+ description = "Secrets for the project to dump as files";
+ };
+ secretsDeps = mkOption {
+ type = listOf package;
+ default = [];
+ description = "Dependencies of file that will land in secrets";
+ };
+ environment = mkOption {
+ type = attrsOf str;
+ description = ''
+ Environment variables for the project.
+ BUILDBOT_ is prefixed to the variable names
+ '';
+ };
+ activationScript = mkOption {
+ type = lines;
+ description = ''
+ Activation script to run during deployment
+ '';
+ };
+ webhookTokens = mkOption {
+ type = nullOr (listOf str);
+ default = null;
+ description = ''
+ List of tokens allowed to push to project’s change_hook/base endpoint
+ '';
+ };
+ };
+ });
+ };
+ };
+ };
+ };
+ tools = mkOption {
+ description = "Tools configurations";
+ type = submodule {
+ options = {
+ contact = mkOption { type = str; description = "Contact e-mail address"; };
+ assets = mkOption {
+ default = {};
+ type = attrsOf (submodule {
+ options = {
+ assetType = mkOption { type = enum ["tgz" "url" "googleFont"]; default = "url"; description = "Type of asset"; };
+ tgzRemoveComponents = mkOption { type = int; default = 0; description = "Remove components when extracting"; };
+ url = mkOption { type = str; description = "URL to fetch"; };
+ sha256 = mkOption { type = str; description = "Hash of the url"; };
+ };
+ });
+ description = "Assets to provide on assets.immae.eu";
+ };
+ davical = mkOption {
+ description = "Davical configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "Davical";
+ ldap = mkLdapOptions "Davical" {};
+ };
+ };
+ };
+ diaspora = mkOption {
+ description = "Diaspora configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "Diaspora";
+ redis = mkRedisOptions "Diaspora";
+ ldap = mkLdapOptions "Diaspora" {};
+ secret_token = mkOption { type = str; description = "Secret token"; };
+ };
+ };
+ };
+ dmarc_reports = mkOption {
+ description = "DMARC reports configuration";
+ type = submodule {
+ options = {
+ mysql = mkMysqlOptions "DMARC" {};
+ anonymous_key = mkOption { type = str; description = "Anonymous hashing key"; };
+ };
+ };
+ };
+ etherpad-lite = mkOption {
+ description = "Etherpad configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "Etherpad";
+ ldap = mkLdapOptions "Etherpad" {
+ group_filter = mkOption { type = str; description = "Filter for groups"; };
+ };
+ adminPassword = mkOption { type = str; description = "Admin password for mypads / admin"; };
+ session_key = mkOption { type = str; description = "Session key"; };
+ api_key = mkOption { type = str; description = "API key"; };
+ };
+ };
+ };
+ gitolite = mkOption {
+ description = "Gitolite configuration";
+ type = submodule {
+ options = {
+ ldap = mkLdapOptions "Gitolite" {};
+ ssh_key = mkOption {
+ description = "SSH key information";
+ type = submodule {
+ options = {
+ public = mkOption { type = str; description = "Public part of the key"; };
+ private = mkOption { type = lines; description = "Private part of the key"; };
+ };
+ };
+ };
+ };
+ };
+ };
+ landing = mkOption {
+ description = "Landing configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "Landing";
+ };
+ };
+ };
+ kanboard = mkOption {
+ description = "Kanboard configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "Kanboard";
+ ldap = mkLdapOptions "Kanboard" {
+ admin_dn = mkOption { type = str; description = "Admin DN"; };
+ };
+ };
+ };
+ };
+ mantisbt = mkOption {
+ description = "Mantisbt configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "Mantisbt";
+ ldap = mkLdapOptions "Mantisbt" {};
+ master_salt = mkOption { type = str; description = "Master salt for password hash"; };
+ };
+ };
+ };
+ mastodon = mkOption {
+ description = "Mastodon configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "Mastodon";
+ redis = mkRedisOptions "Mastodon";
+ ldap = mkLdapOptions "Mastodon" {};
+ paperclip_secret = mkOption { type = str; description = "Paperclip secret"; };
+ otp_secret = mkOption { type = str; description = "OTP secret"; };
+ secret_key_base = mkOption { type = str; description = "Secret key base"; };
+ vapid = mkOption {
+ description = "vapid key";
+ type = submodule {
+ options = {
+ private = mkOption { type = str; description = "Private key"; };
+ public = mkOption { type = str; description = "Public key"; };
+ };
+ };
+ };
+ };
+ };
+ };
+ mediagoblin = mkOption {
+ description = "Mediagoblin configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "Mediagoblin";
+ redis = mkRedisOptions "Mediagoblin";
+ ldap = mkLdapOptions "Mediagoblin" {};
+ };
+ };
+ };
+ nextcloud = mkOption {
+ description = "Nextcloud configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "Nextcloud";
+ redis = mkRedisOptions "Nextcloud";
+ password_salt = mkOption { type = str; description = "Password salt"; };
+ instance_id = mkOption { type = str; description = "Instance ID"; };
+ secret = mkOption { type = str; description = "App secret"; };
+ };
+ };
+ };
+ peertube = mkOption {
+ description = "Peertube configuration";
+ type = submodule {
+ options = {
+ listenPort = mkOption { type = port; description = "Port to listen to"; };
+ postgresql = mkPsqlOptions "Peertube";
+ redis = mkRedisOptions "Peertube";
+ ldap = mkLdapOptions "Peertube" {};
+ };
+ };
+ };
+ phpldapadmin = mkOption {
+ description = "phpLdapAdmin configuration";
+ type = submodule {
+ options = {
+ ldap = mkLdapOptions "phpldapadmin" {};
+ };
+ };
+ };
+ rompr = mkOption {
+ description = "Rompr configuration";
+ type = submodule {
+ options = {
+ mpd = mkOption {
+ description = "MPD configuration";
+ type = submodule {
+ options = {
+ host = mkOption { type = str; description = "Host for MPD"; };
+ port = mkOption { type = port; description = "Port to access MPD host"; };
+ };
+ };
+ };
+ };
+ };
+ };
+ roundcubemail = mkOption {
+ description = "Roundcubemail configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "TT-RSS";
+ secret = mkOption { type = str; description = "Secret"; };
+ };
+ };
+ };
+ shaarli = mkOption {
+ description = "Shaarli configuration";
+ type = submodule {
+ options = {
+ ldap = mkLdapOptions "Shaarli" {};
+ };
+ };
+ };
+ status_engine = mkOption {
+ description = "Status Engine configuration";
+ type = submodule {
+ options = {
+ mysql = mkMysqlOptions "StatusEngine" {};
+ ldap = mkLdapOptions "StatusEngine" {};
+ };
+ };
+ };
+ task = mkOption {
+ description = "Taskwarrior configuration";
+ type = submodule {
+ options = {
+ ldap = mkLdapOptions "Taskwarrior" {};
+ taskwarrior-web = mkOption {
+ description = "taskwarrior-web profiles";
+ default = {};
+ type = attrsOf (submodule {
+ options = {
+ uid = mkOption {
+ type = listOf str;
+ description = "List of ldap uids having access to this profile";
+ };
+ org = mkOption { type = str; description = "Taskd organisation"; };
+ key = mkOption { type = str; description = "Taskd key"; };
+ date = mkOption { type = str; description = "Preferred date format"; };
+ };
+ });
+ };
+ };
+ };
+ };
+ ttrss = mkOption {
+ description = "TT-RSS configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "TT-RSS";
+ ldap = mkLdapOptions "TT-RSS" {};
+ };
+ };
+ };
+ wallabag = mkOption {
+ description = "Wallabag configuration";
+ type = submodule {
+ options = {
+ postgresql = mkPsqlOptions "Wallabag";
+ ldap = mkLdapOptions "Wallabag" {
+ admin_filter = mkOption { type = str; description = "Admin users filter"; };
+ };
+ redis = mkRedisOptions "Wallabag";
+ secret = mkOption { type = str; description = "App secret"; };
+ };
+ };
+ };
+ webhooks = mkOption {
+ type = attrsOf str;
+ description = "Mapping 'name'.php => script for webhooks";
+ };
+ csp_reports = mkOption {
+ description = "CSP report configuration";
+ type = submodule {
+ options = {
+ report_uri = mkOption { type = str; description = "URI to report CSP violations to"; };
+ policies = mkOption { type = attrsOf str; description = "CSP policies to apply"; };
+ };
+ };
+ };
+ commento = mkOption {
+ description = "Commento configuration";
+ type = submodule {
+ options = {
+ listenPort = mkOption { type = port; description = "Port to listen to"; };
+ postgresql = mkPsqlOptions "Commento";
+ smtp = mkSmtpOptions "Commento";
+ };
+ };
+ };
+ cryptpad = mkOption {
+ description = "Cryptpad configuration";
+ type = submodule {
+ options = {
+ email = mkOption { type = str; description = "Admin e-mail"; };
+ admins = mkOption { type = listOf str; description = "Instance admin public keys"; };
+ port = mkOption { type = port; description = "Port to listen to"; };
+ };
+ };
+ };
+ ympd = mkOption {
+ description = "Ympd configuration";
+ type = submodule {
+ options = {
+ listenPort = mkOption { type = port; description = "Port to listen to"; };
+ mpd = mkOption {
+ description = "MPD configuration";
+ type = submodule {
+ options = {
+ password = mkOption { type = str; description = "Password to access MPD host"; };
+ host = mkOption { type = str; description = "Host for MPD"; };
+ port = mkOption { type = port; description = "Port to access MPD host"; };
+ };
+ };
+ };
+ };
+ };
+ };
+ umami = mkOption {
+ description = "Umami configuration";
+ type = submodule {
+ options = {
+ listenPort = mkOption { type = port; description = "Port to listen to"; };
+ postgresql = mkPsqlOptions "Umami";
+ hashSalt = mkOption { type = str; description = "Hash salt"; };
+ };
+ };
+ };
+ yourls = mkOption {
+ description = "Yourls configuration";
+ type = submodule {
+ options = {
+ mysql = mkMysqlOptions "Yourls" {};
+ ldap = mkLdapOptions "Yourls" {};
+ cookieKey = mkOption { type = str; description = "Cookie key"; };
+ };
+ };
+ };
+ };
+ };
+ };
+ serverSpecific = mkOption { type = attrsOf unspecified; description = "Server specific configuration"; };
+ };
+ options.hostEnv = mkOption {
+ readOnly = true;
+ type = hostEnv;
+ default = config.myEnv.servers."${name}";
+ description = "Host environment";
+ };
+ };
+ };
+}
diff --git a/flakes/private/mail-relay/filter-rewrite-from.py b/flakes/private/mail-relay/filter-rewrite-from.py
new file mode 100755
index 0000000..aad9c69
--- /dev/null
+++ b/flakes/private/mail-relay/filter-rewrite-from.py
@@ -0,0 +1,68 @@
+#! /usr/bin/env python3
+import sys
+
+sys.stdin.reconfigure(encoding='utf-8')
+sys.stdout.reconfigure(encoding='utf-8')
+stdin = sys.stdin
+stdout = sys.stdout
+
+mailaddr = sys.argv[1]
+inheader = {}
+
+# Change to actual file for logging
+logfile = open("/dev/null", "a")
+
+def log(l, i):
+ logfile.write("{} {}\n".format(i, l))
+ logfile.flush()
+
+def send(l):
+ log(l, ">")
+ stdout.write("{}\n".format(l))
+ stdout.flush()
+
+def token_and_sid(version, sid, token):
+ if version < "0.5":
+ return "{}|{}".format(token, sid)
+ else:
+ return "{}|{}".format(sid, token)
+
+log("started", "l")
+while True:
+ line = stdin.readline().strip()
+ log(line, "<")
+ if not line:
+ log("finished", "l")
+ break
+ splitted = line.split("|")
+ if line == "config|ready":
+ log("in config ready", "l")
+ send("register|filter|smtp-in|mail-from")
+ send("register|filter|smtp-in|data-line")
+ send("register|ready")
+ if splitted[0] != "filter":
+ continue
+ if len(splitted) < 7:
+ send("invalid filter command: expected >6 fields!")
+ sys.exit(1)
+ version = splitted[1]
+ action = splitted[4]
+ sid = splitted[5]
+ token = splitted[6]
+ token_sid = token_and_sid(version, sid, token)
+ rest = "|".join(splitted[7:])
+ if action == "mail-from":
+ inheader[sid] = True
+ send("filter-result|{}|rewrite|<{}>".format(token_sid, mailaddr))
+ continue
+ if action == "data-line":
+ if rest == "" and inheader.get(sid, False):
+ inheader[sid] = False
+ if rest == "." and not inheader.get(sid):
+ del(inheader[sid])
+ if inheader.get(sid, False) and rest.upper().startswith("FROM:"):
+ send("filter-dataline|{}|From: {}".format(token_sid, mailaddr))
+ else:
+ send("filter-dataline|{}|{}".format(token_sid, rest))
+ continue
+ send("filter-result|{}|proceed".format(token_sid))
diff --git a/flakes/private/mail-relay/flake.lock b/flakes/private/mail-relay/flake.lock
new file mode 100644
index 0000000..bbb2011
--- /dev/null
+++ b/flakes/private/mail-relay/flake.lock
@@ -0,0 +1,36 @@
+{
+ "nodes": {
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "environment": "environment",
+ "secrets": "secrets"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/private/mail-relay/flake.nix b/flakes/private/mail-relay/flake.nix
new file mode 100644
index 0000000..639bd06
--- /dev/null
+++ b/flakes/private/mail-relay/flake.nix
@@ -0,0 +1,58 @@
+{
+ inputs.environment.url = "path:../environment";
+ inputs.secrets.url = "path:../../secrets";
+
+ outputs = { self, environment, secrets }: {
+ nixosModule = self.nixosModules.mail-relay;
+ nixosModules.mail-relay = { lib, pkgs, config, name, ... }:
+ {
+ imports = [
+ environment.nixosModule
+ secrets.nixosModule
+ ];
+ options.myServices.mailRelay.enable = lib.mkEnableOption "enable Mail relay services";
+ config = lib.mkIf config.myServices.mailRelay.enable {
+ secrets.keys."opensmtpd/creds" = {
+ user = "smtpd";
+ group = "smtpd";
+ permissions = "0400";
+ text = ''
+ eldiron ${name}:${config.hostEnv.ldap.password}
+ '';
+ };
+ users.users.smtpd.extraGroups = [ "keys" ];
+ services.opensmtpd = {
+ enable = true;
+ serverConfiguration = let
+ filter-rewrite-from = pkgs.runCommand "filter-rewrite-from.py" {
+ buildInputs = [ pkgs.python38 ];
+ } ''
+ cp ${./filter-rewrite-from.py} $out
+ patchShebangs $out
+ '';
+ in ''
+ table creds \
+ "${config.secrets.fullPaths."opensmtpd/creds"}"
+ # FIXME: filtering requires 6.6, uncomment following lines when
+ # upgrading
+ # filter "fixfrom" \
+ # proc-exec "${filter-rewrite-from} ${name}@immae.eu"
+ # listen on socket filter "fixfrom"
+ action "relay-rewrite-from" relay \
+ helo ${config.hostEnv.fqdn} \
+ host smtp+tls://eldiron@eldiron.immae.eu:587 \
+ auth \
+ mail-from ${name}@immae.eu
+ action "relay" relay \
+ helo ${config.hostEnv.fqdn} \
+ host smtp+tls://eldiron@eldiron.immae.eu:587 \
+ auth
+ match for any !mail-from "@immae.eu" action "relay-rewrite-from"
+ match for any mail-from "@immae.eu" action "relay"
+ '';
+ };
+ environment.systemPackages = [ config.services.opensmtpd.package ];
+ };
+ };
+ };
+}
diff --git a/flakes/private/milters/flake.lock b/flakes/private/milters/flake.lock
new file mode 100644
index 0000000..1a0c138
--- /dev/null
+++ b/flakes/private/milters/flake.lock
@@ -0,0 +1,186 @@
+{
+ "nodes": {
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "openarc": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "myuids": "myuids",
+ "nixpkgs": "nixpkgs",
+ "openarc": "openarc_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "opendmarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_2",
+ "myuids": "myuids_2",
+ "nixpkgs": "nixpkgs_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "environment": "environment",
+ "files-watcher": "files-watcher",
+ "openarc": "openarc",
+ "opendmarc": "opendmarc",
+ "secrets": "secrets"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/private/milters/flake.nix b/flakes/private/milters/flake.nix
new file mode 100644
index 0000000..c4de5b6
--- /dev/null
+++ b/flakes/private/milters/flake.nix
@@ -0,0 +1,106 @@
+{
+ inputs.secrets.url = "path:../../secrets";
+ inputs.environment.url = "path:../environment";
+ inputs.files-watcher.url = "path:../../files-watcher";
+ inputs.opendmarc.url = "path:../../opendmarc";
+ inputs.openarc.url = "path:../../openarc";
+ outputs = { self, secrets, environment, opendmarc, openarc, files-watcher }: {
+ nixosModule = self.nixosModules.milters;
+ nixosModules.milters = { lib, pkgs, config, nodes, ... }:
+ {
+ imports = [
+ secrets.nixosModule
+ environment.nixosModule
+ files-watcher.nixosModule
+ opendmarc.nixosModule
+ openarc.nixosModule
+ ];
+ options.myServices.mail.milters.enable = lib.mkEnableOption "enable Mail milters";
+ options.myServices.mail.milters.sockets = lib.mkOption {
+ type = lib.types.attrsOf lib.types.path;
+ default = {
+ opendkim = "/run/opendkim/opendkim.sock";
+ opendmarc = config.services.opendmarc.socket;
+ openarc = config.services.openarc.socket;
+ };
+ readOnly = true;
+ description = ''
+ milters sockets
+ '';
+ };
+ config = lib.mkIf config.myServices.mail.milters.enable {
+ secrets.keys = {
+ "opendkim" = {
+ isDir = true;
+ user = config.services.opendkim.user;
+ group = config.services.opendkim.group;
+ permissions = "0550";
+ };
+ "opendkim/eldiron.private" = {
+ user = config.services.opendkim.user;
+ group = config.services.opendkim.group;
+ permissions = "0400";
+ text = config.myEnv.mail.dkim.eldiron.private;
+ };
+ };
+ users.users."${config.services.opendkim.user}".extraGroups = [ "keys" ];
+ services.opendkim = {
+ enable = true;
+ socket = "local:${config.myServices.mail.milters.sockets.opendkim}";
+ domains =
+ let
+ getDomains = p: lib.mapAttrsToList (n: v: v.fqdn) p.emailPolicies;
+ bydomain = builtins.mapAttrs (n: getDomains) nodes.eldiron.config.myServices.dns.zones;
+ domains' = lib.flatten (builtins.attrValues bydomain);
+ in
+ builtins.concatStringsSep "," domains';
+ keyPath = config.secrets.fullPaths."opendkim";
+ selector = "eldiron";
+ configFile = pkgs.writeText "opendkim.conf" ''
+ SubDomains yes
+ UMask 002
+ AlwaysAddARHeader yes
+ '';
+ group = config.services.postfix.group;
+ };
+ systemd.services.opendkim.serviceConfig.Slice = "mail.slice";
+ systemd.services.opendkim.preStart = lib.mkBefore ''
+ # Skip the prestart script as keys are handled in secrets
+ exit 0
+ '';
+ services.filesWatcher.opendkim = {
+ restart = true;
+ paths = [
+ config.secrets.fullPaths."opendkim/eldiron.private"
+ ];
+ };
+
+ systemd.services.milter_verify_from = {
+ description = "Verify from milter";
+ after = [ "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+
+ serviceConfig = {
+ Slice = "mail.slice";
+ User = "postfix";
+ Group = "postfix";
+ ExecStart = let
+ pymilter = with pkgs.python38Packages; buildPythonPackage rec {
+ pname = "pymilter";
+ version = "1.0.4";
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "1bpcvq7d72q0zi7c8h5knhasywwz9gxc23n9fxmw874n5k8hsn7k";
+ };
+ doCheck = false;
+ buildInputs = [ pkgs.libmilter ];
+ };
+ python = pkgs.python38.withPackages (p: [ pymilter ]);
+ in "${python}/bin/python ${./verify_from.py} -s /run/milter_verify_from/verify_from.sock";
+ RuntimeDirectory = "milter_verify_from";
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/flakes/private/milters/verify_from.py b/flakes/private/milters/verify_from.py
new file mode 100755
index 0000000..b75001e
--- /dev/null
+++ b/flakes/private/milters/verify_from.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python3
+import Milter
+import argparse
+from email.header import decode_header
+from email.utils import parseaddr
+
+class CheckMilter(Milter.Base):
+ def __init__(self):
+ self.envelope_from = None
+ self.header_from = None
+
+ @Milter.noreply
+ def connect(self, IPname, family, hostaddr):
+ return Milter.CONTINUE
+
+ def hello(self, heloname):
+ return Milter.CONTINUE
+
+ def envfrom(self, mailfrom, *args):
+ self.envelope_from = parseaddr(mailfrom)[1]
+ return Milter.CONTINUE
+
+ @Milter.noreply
+ def envrcpt(self, to, *str):
+ return Milter.CONTINUE
+
+ @Milter.noreply
+ def header(self, name, hval):
+ if name.lower() == "from":
+ self.header_from = parseaddr(decode_header(hval)[-1][0])[1]
+ return Milter.CONTINUE
+
+ def eoh(self):
+ if self.header_from is not None and self.header_from != "" and self.header_from != self.envelope_from:
+ self.setreply("553", xcode="5.7.1", msg="<%s>: From header rejected: not matching envelope From %s"
+ % (self.header_from, self.envelope_from))
+ return Milter.REJECT
+
+ return Milter.CONTINUE
+
+ @Milter.noreply
+ def body(self, chunk):
+ return Milter.CONTINUE
+
+ def eom(self):
+ return Milter.ACCEPT
+
+ def close(self):
+ return Milter.CONTINUE
+
+ def abort(self):
+ return Milter.CONTINUE
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--socket", "-s", type=str, help="socket to listen to")
+ config = parser.parse_args()
+
+ Milter.factory = CheckMilter
+ Milter.runmilter("check_from", config.socket, timeout=300)
diff --git a/flakes/private/monitoring/flake.lock b/flakes/private/monitoring/flake.lock
new file mode 100644
index 0000000..2e156fb
--- /dev/null
+++ b/flakes/private/monitoring/flake.lock
@@ -0,0 +1,67 @@
+{
+ "nodes": {
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "naemon": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "environment": "environment",
+ "naemon": "naemon",
+ "nixpkgs-lib": "nixpkgs-lib",
+ "secrets": "secrets"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/private/monitoring/flake.nix b/flakes/private/monitoring/flake.nix
new file mode 100644
index 0000000..b7c3997
--- /dev/null
+++ b/flakes/private/monitoring/flake.nix
@@ -0,0 +1,267 @@
+{
+ inputs = {
+ environment.url = "path:../environment";
+ secrets.url = "path:../../secrets";
+ naemon.url = "path:../../naemon";
+ nixpkgs-lib.url = "github:NixOS/nixpkgs?dir=lib";
+ };
+ outputs = { self, environment, nixpkgs-lib, secrets, naemon }: {
+ nagios-cli-config = ./nagios-cli.cfg;
+ lib = rec {
+ expandedObject = kind: object: objects:
+ if object ? "use"
+ then expandedObject kind objects.templates.${kind}.${object.use} objects // object
+ else object;
+
+ objectsCommon = import ./objects_common.nix;
+ toObjects = import ./to_objects.nix { inherit (nixpkgs-lib) lib; };
+
+ toMasterPassiveObject = svcTemplate: freshnessThresholdMultiplier: objects:
+ {
+ service = with nixpkgs-lib.lib; map (s:
+ {
+ host_name = (expandedObject "service" s objects).host_name;
+ use = svcTemplate;
+ retry_interval = "1";
+ freshness_threshold = let
+ fs = expandedObject "service" s objects;
+ in if builtins.isInt fs.check_interval
+ then builtins.ceil (freshnessThresholdMultiplier * 60 * fs.check_interval)
+ else fs.check_interval;
+ }
+ // filterAttrs (k: v: builtins.elem k ["service_description"] || builtins.substring 0 1 k == "_") s
+ // mapAttrs'
+ (n: nameValuePair (removePrefix "__passive_" n))
+ (filterAttrs (k: _: hasPrefix "__passive_" k) s)
+ ) objects.service;
+ host = objects.host;
+ };
+
+ emailCheck = allCfg: host: hostFQDN: let
+ cfg = allCfg."${host}";
+ reverseTargets = builtins.attrNames (nixpkgs-lib.lib.filterAttrs (k: v: builtins.elem host v.targets) allCfg);
+ to_email = cfg': host':
+ let sep = if nixpkgs-lib.lib.hasInfix "+" cfg'.mail_address then "_" else "+";
+ in "${cfg'.mail_address}${sep}${host'}@${cfg'.mail_domain}";
+ mails_to_send = builtins.concatStringsSep "," (map (n: to_email allCfg."${n}" host) cfg.targets);
+ mails_to_receive = builtins.concatStringsSep "," (map (n: "${to_email cfg n}:${n}") reverseTargets);
+ command = if cfg.local
+ then
+ [ "check_emails_local" "/var/lib/naemon/checks/email" mails_to_send mails_to_receive ]
+ else
+ [ "check_emails" cfg.login cfg.port mails_to_send mails_to_receive ];
+ in
+ {
+ service_description = "${hostFQDN} email service is active";
+ use = "mail-service";
+ host_name = hostFQDN;
+ servicegroups = "webstatus-email";
+ check_command = command;
+ };
+ };
+ nixosModule = self.nixosModules.monitoring;
+ nixosModules.monitoring = { config, pkgs, lib, ... }:
+ let
+ cfg = config.myServices.monitoring;
+ allPluginsConfig = import ./myplugins.nix {
+ inherit pkgs lib config;
+ sudo = "/run/wrappers/bin/sudo";
+ };
+ mypluginsConfig = lib.mapAttrs (n: v:
+ if builtins.isFunction v
+ then v (cfg.pluginsArgs."${n}" or {})
+ else v
+ ) (lib.getAttrs cfg.activatedPlugins allPluginsConfig);
+ myplugins = let
+ mypluginsChunk = builtins.concatStringsSep "\n" (lib.mapAttrsToList (k: v: v.chunk or "") mypluginsConfig);
+ in pkgs.runCommand "buildplugins" {
+ buildInputs = [ pkgs.makeWrapper pkgs.perl ];
+ } ''
+ mkdir $out
+ ${mypluginsChunk}
+ '';
+ objectsModule = with lib.types; submodule {
+ options = {
+ command = lib.mkOption {
+ type = attrsOf str;
+ default = {};
+ description = "Command definitions";
+ };
+
+ host = lib.mkOption {
+ type = attrsOf (attrsOf str);
+ default = {};
+ description = "Host definitions";
+ };
+ hostgroup = lib.mkOption {
+ type = attrsOf (attrsOf str);
+ default = {};
+ description = "Host group definitions";
+ };
+ hostdependency = lib.mkOption {
+ type = listOf (attrsOf str);
+ default = [];
+ description = "Host dependency definitions";
+ };
+
+ service = lib.mkOption {
+ type = listOf (attrsOf (oneOf [ str (listOf str) int ]));
+ # str -> string
+ # listOf str -> list to be concatenated with "!"
+ # int -> toString
+ default = [];
+ description = "Service definitions";
+ };
+ servicegroup = lib.mkOption {
+ type = attrsOf (attrsOf str);
+ default = {};
+ description = "Service group definitions";
+ };
+ servicedependency = lib.mkOption {
+ type = listOf (attrsOf str);
+ default = [];
+ description = "Service dependency definitions";
+ };
+
+ contact = lib.mkOption {
+ type = attrsOf (attrsOf str);
+ default = {};
+ description = "Contact definitions";
+ };
+ contactgroup = lib.mkOption {
+ type = attrsOf (attrsOf str);
+ default = {};
+ description = "Contact group definitions";
+ };
+
+ timeperiod = lib.mkOption {
+ type = attrsOf (attrsOf str);
+ default = {};
+ description = "Time period definitions";
+ };
+
+ templates = lib.mkOption {
+ description = "Template definitions";
+ default = {};
+ type = submodule {
+ options = {
+ service = lib.mkOption { type = attrsOf (attrsOf (either str int)); default = {}; };
+ contact = lib.mkOption { type = attrsOf (attrsOf str); default = {}; };
+ host = lib.mkOption { type = attrsOf (attrsOf str); default = {}; };
+ };
+ };
+ };
+ };
+ };
+ in
+ {
+ options = {
+ myServices.monitoring = {
+ enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = ''
+ Whether to enable monitoring.
+ '';
+ };
+ master = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = ''
+ This instance is the master instance
+ '';
+ };
+ pluginsArgs = lib.mkOption {
+ default = {};
+ description = "Arguments to pass to the naemon plugin configuration";
+ type = lib.types.attrsOf (lib.types.attrsOf lib.types.unspecified);
+ };
+ activatedPlugins = lib.mkOption {
+ default = [];
+ description = "List of naemon plugins to activate";
+ type = lib.types.listOf (lib.types.enum (builtins.attrNames allPluginsConfig));
+ };
+ fromMasterActivatedPlugins = lib.mkOption {
+ default = [];
+ description = "List of naemon plugins to activate from master";
+ type = lib.types.listOf (lib.types.str);
+ };
+ resources = lib.mkOption {
+ default = {};
+ description = "List of additionnal resources elements";
+ type = lib.types.attrsOf (lib.types.str);
+ };
+ objects = lib.mkOption {
+ default = {};
+ description = "Object definitions";
+ type = objectsModule;
+ };
+ fromMasterObjects = lib.mkOption {
+ default = {};
+ description = "Object definitions of checks that should be executed from master";
+ type = objectsModule;
+ };
+ };
+ };
+
+ imports = [
+ environment.nixosModule
+ secrets.nixosModule
+ naemon.nixosModule
+ ];
+ config = lib.mkIf cfg.enable {
+ myServices.monitoring.objects.command =
+ lib.foldr (v: o: o // (v.commands or {})) {} (builtins.attrValues mypluginsConfig);
+
+ security.sudo.extraRules = let
+ pluginsSudo = lib.lists.remove null (lib.mapAttrsToList (k: v:
+ if (v ? sudo)
+ then ({ users = [ "naemon" ]; } // (v.sudo myplugins))
+ else null) mypluginsConfig);
+ in pluginsSudo;
+
+ environment.etc.cnagios.source = "${pkgs.cnagios}/share/doc/cnagios";
+ environment.systemPackages = let
+ nagios-cli = pkgs.writeScriptBin "nagios-cli" ''
+ #!${pkgs.stdenv.shell}
+ sudo -u naemon ${pkgs.nagios-cli}/bin/nagios-cli -c ${self.nagios-cli-config}
+ '';
+ in [
+ pkgs.cnagios
+ nagios-cli
+ ];
+ secrets.keys = {
+ "naemon/id_rsa" = {
+ user = "naemon";
+ group = "naemon";
+ permissions = "0400";
+ text = config.myEnv.monitoring.ssh_secret_key;
+ };
+ "naemon/resources.cfg".keyDependencies = [ myplugins ];
+ };
+ services.naemon = {
+ enable = true;
+ extraConfig = ''
+ use_syslog=1
+ log_initial_states=1
+ date_format=iso8601
+ admin_email=${config.myEnv.monitoring.email}
+ '' + lib.optionalString (!cfg.master) ''
+ obsess_over_services=1
+ ocsp_command=notify-master
+ '';
+ extraResource = let
+ resources = [cfg.resources or {}] ++ (lib.mapAttrsToList (k: v: v.resources or {}) mypluginsConfig);
+ joined = lib.zipAttrsWith (n: v: if builtins.length (lib.unique v) == 1 then builtins.head v else abort "Non-unique resources names") resources;
+ joinedStr = builtins.concatStringsSep "\n" (lib.mapAttrsToList (k: v: "$" + "${k}$=${v}") joined);
+ in ''
+ $USER2$=${myplugins}
+ ${joinedStr}
+ '';
+ objectDefs =
+ self.lib.toObjects cfg.objects;
+ };
+ };
+ };
+ };
+}
diff --git a/flakes/private/monitoring/myplugins.nix b/flakes/private/monitoring/myplugins.nix
new file mode 100644
index 0000000..35730bb
--- /dev/null
+++ b/flakes/private/monitoring/myplugins.nix
@@ -0,0 +1,400 @@
+{ sudo, pkgs, lib, config }:
+let
+ cfg = config.myServices.monitoring;
+in
+{
+ notify-secondary = {
+ resources = {
+ USER200 = config.myEnv.monitoring.status_url;
+ USER201 = config.myEnv.monitoring.status_token;
+ };
+ commands = {
+ notify-master = "$USER2$/send_nrdp.sh -u \"$USER200$\" -t \"$USER201$\" -H \"$HOSTADDRESS$\" -s \"$SERVICEDESC$\" -S \"$SERVICESTATEID$\" -o \"$SERVICEOUTPUT$ | $SERVICEPERFDATA$\"";
+ };
+ chunk = ''
+ cp ${./plugins}/send_nrdp.sh $out
+ patchShebangs $out/send_nrdp.sh
+ wrapProgram $out/send_nrdp.sh --prefix PATH : ${lib.makeBinPath [
+ pkgs.curl pkgs.jq
+ ]}
+ '';
+ };
+ notify-primary = {
+ resources = {
+ USER210 = config.myEnv.monitoring.apprise_urls;
+ };
+ commands = {
+ # $OVE is to force naemon to run via shell instead of execve which fails here
+ notify-host-by-email = "ADMINEMAIL=\"$ADMINEMAIL$\" SERVICENOTIFICATIONID=\"$SERVICENOTIFICATIONID$\" HOSTSTATE=\"$HOSTSTATE$\" HOSTOUTPUT=\"$HOSTOUTPUT$\" $USER2$/notify_by_email host \"$NOTIFICATIONTYPE$\" \"$HOSTALIAS$\" \"$LONGDATETIME$\" \"$CONTACTEMAIL$\" $OVE";
+ # $OVE is to force naemon to run via shell instead of execve which fails here
+ notify-service-by-email = "ADMINEMAIL=\"$ADMINEMAIL$\" SERVICENOTIFICATIONID=\"$SERVICENOTIFICATIONID$\" SERVICEDESC=\"$SERVICEDESC$\" SERVICESTATE=\"$SERVICESTATE$\" SERVICEOUTPUT=\"$SERVICEOUTPUT$\" $USER2$/notify_by_email service \"$NOTIFICATIONTYPE$\" \"$HOSTALIAS$\" \"$LONGDATETIME$\" \"$CONTACTEMAIL$\" $OVE";
+ notify-host-by-apprise = "HOST=\"$HOSTALIAS$\" NOTIFICATIONTYPE=\"$NOTIFICATIONTYPE$\" HOSTSTATE=\"$HOSTSTATE$\" HOSTOUTPUT=\"$HOSTOUTPUT$\" $USER2$/notify_by_apprise host \"$ARG1$\"";
+ notify-service-by-apprise = "HOST=\"$HOSTALIAS$\" NOTIFICATIONTYPE=\"$NOTIFICATIONTYPE$\" SERVICESTATE=\"$SERVICESTATE$\" SERVICEDESC=\"$SERVICEDESC$\" SERVICEOUTPUT=\"$SERVICEOUTPUT$\" $USER2$/notify_by_apprise service \"$ARG1$\"";
+ };
+ chunk = ''
+ cp ${./plugins}/{notify_by_email,notify_by_apprise} $out
+ patchShebangs $out/{notify_by_email,notify_by_apprise}
+ wrapProgram $out/notify_by_email --prefix PATH : ${lib.makeBinPath [
+ pkgs.mailutils
+ ]}
+ wrapProgram $out/notify_by_apprise --prefix PATH : ${lib.makeBinPath [
+ pkgs.apprise
+ ]}
+ '';
+ };
+ bandwidth = {
+ commands = {
+ check_local_bandwidth = "$USER2$/check_bandwidth -i=$ARG1$ -w $ARG2$ -c $ARG3$";
+ };
+ chunk = ''
+ cp ${./plugins}/check_bandwidth $out/
+ patchShebangs $out/check_bandwidth
+ wrapProgram $out/check_bandwidth --prefix PATH : ${lib.makeBinPath [
+ pkgs.iproute pkgs.bc
+ ]}
+ '';
+ };
+ command = {
+ commands = {
+ check_command_match = "$USER2$/check_command -c \"$ARG1$\" -C \"$ARG2$\" $ARG3$";
+ check_command_output = "$USER2$/check_command -c \"$ARG1$\" -s 0 -o \"$ARG2$\" $ARG3$";
+ check_command_status = "$USER2$/check_command -c \"$ARG1$\" -s \"$ARG2$\" $ARG3$";
+ };
+ chunk = ''
+ cp ${./plugins}/check_command $out/
+ patchShebangs $out/check_command
+ wrapProgram $out/check_command --prefix PATH : ${config.security.wrapperDir}
+ '';
+ };
+ dns = {
+ commands = {
+ check_dns = "$USER1$/check_dns -H $ARG1$ -s $HOSTADDRESS$ $ARG2$";
+ check_external_dns = "$USER1$/check_dns -H $ARG2$ -s $ARG1$ $ARG3$";
+ };
+ };
+ mdadm = {
+ commands = {
+ check_mdadm = "$USER2$/check_command -c \"${pkgs.mdadm}/bin/mdadm --monitor --scan -1\" -s 0 -o \"^$\" -r root";
+ };
+ sudo = _: {
+ commands = [
+ { command = "${pkgs.mdadm}/bin/mdadm --monitor --scan -1"; options = [ "NOPASSWD" ]; }
+ ];
+ runAs = "root";
+ };
+ };
+ postfix = {
+ commands = {
+ check_mailq = "$USER1$/check_mailq -s -w 1 -c 2";
+ };
+ sudo = _: {
+ commands = [
+ { command = "${pkgs.postfix}/bin/mailq"; options = [ "NOPASSWD" ]; }
+ ];
+ runAs = "root";
+ };
+ };
+ emails = {
+ resources = {
+ USER203 = config.secrets.fullPaths."naemon/id_rsa";
+ };
+ commands = {
+ check_emails = "$USER2$/check_emails -H $HOSTADDRESS$ -i $USER203$ -l $ARG1$ -p $ARG2$ -s $ARG3$ -f $ARG4$";
+ check_emails_local = "$USER2$/check_emails -H $HOSTADDRESS$ -n $ARG1$ -r $ADMINEMAIL$ -s $ARG2$ -f $ARG3$";
+ };
+ chunk = let
+ send_mails = pkgs.runCommand "send_mails" {
+ buildInputs = [ pkgs.makeWrapper ];
+ } ''
+ mkdir -p $out/bin
+ cp ${./send_mails} $out/bin/send_mails
+ patchShebangs $out
+ wrapProgram $out/bin/send_mails --prefix PATH : ${lib.makeBinPath [
+ pkgs.mailutils
+ ]}
+ '';
+ in ''
+ cp ${./plugins}/check_emails $out/
+ patchShebangs $out/check_emails
+ wrapProgram $out/check_emails --prefix PATH : ${lib.makeBinPath [
+ pkgs.openssh send_mails
+ ]} --prefix PERL5LIB : ${pkgs.perlPackages.makePerlPath [
+ pkgs.perlPackages.TimeDate
+ ]}
+ '';
+ };
+ eriomem = {
+ resources = {
+ USER208 = builtins.concatStringsSep "," (map (builtins.concatStringsSep ":") config.myEnv.monitoring.eriomem_keys);
+ };
+ commands = {
+ check_backup_eriomem = "$USER2$/check_eriomem $USER208$";
+ check_backup_eriomem_age = "$USER2$/check_backup_eriomem_age $ARG1$";
+ };
+ chunk = ''
+ cp ${./plugins}/check_eriomem $out/
+ patchShebangs $out/check_eriomem
+ wrapProgram $out/check_eriomem --prefix PATH : ${lib.makeBinPath [
+ pkgs.s3cmd pkgs.python38
+ ]}
+ cp ${./plugins}/check_backup_age $out/check_backup_eriomem_age
+ patchShebangs $out/check_backup_eriomem_age
+ wrapProgram $out/check_backup_eriomem_age --prefix PATH : ${lib.makeBinPath [
+ pkgs.duplicity
+ ]} --set SECRETS_PATH ${lib.optionalString cfg.master config.secrets.fullPaths."eriomem_access_key"}
+ '';
+ };
+ file_date = {
+ commands = {
+ check_last_file_date = "${sudo} -u \"$ARG3$\" $USER2$/check_last_file_date \"$ARG1$\" \"$ARG2$\"";
+ };
+ chunk = ''
+ cp ${./plugins}/check_last_file_date $out/
+ patchShebangs $out/check_last_file_date
+ '';
+ sudo = myplugins: {
+ commands = [
+ { command = "${myplugins}/check_last_file_date /backup2/*"; options = [ "NOPASSWD" ]; }
+ ];
+ runAs = "ALL";
+ };
+ };
+ ftp = {
+ commands = {
+ check_ftp_database = "$USER2$/check_ftp_database";
+ };
+ chunk = ''
+ cp ${./plugins}/check_ftp_database $out/
+ patchShebangs $out/check_ftp_database
+ wrapProgram $out/check_ftp_database --prefix PATH : ${lib.makeBinPath [
+ pkgs.lftp
+ ]}
+ '';
+ };
+ git = {
+ resources = {
+ USER203 = config.secrets.fullPaths."naemon/id_rsa";
+ };
+ commands = {
+ check_git = "$USER2$/check_git $USER203$";
+ };
+ chunk = ''
+ cp ${./plugins}/check_git $out/
+ patchShebangs $out/check_git
+ wrapProgram $out/check_git --prefix PATH : ${lib.makeBinPath [
+ pkgs.git pkgs.openssh
+ ]}
+ '';
+ };
+ http = {
+ resources = {
+ USER202 = config.myEnv.monitoring.http_user_password;
+ };
+ commands = {
+ check_http = "$USER1$/check_http --sni -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
+ check_https = "$USER1$/check_http --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
+ check_https_4 = "$USER1$/check_http -4 --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
+ check_https_6 = "$USER1$/check_http -6 --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
+ check_https_auth = "$USER1$/check_http --sni --ssl -a \"$USER202$\" -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
+ check_https_certificate = "$USER1$/check_http --sni --ssl -H \"$ARG1$\" -C 21,15";
+ check_https_code = "$USER1$/check_http --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -e \"$ARG3$\" -r \"$ARG4$\"";
+ };
+ };
+ imap = {
+ resources = {
+ USER204 = config.myEnv.monitoring.imap_login;
+ USER205 = config.myEnv.monitoring.imap_password;
+ };
+ commands = {
+ check_imap_connection = "$USER2$/check_imap_connection -u \"$USER204$\" -p \"$USER205$\" -H \"imap.immae.eu:143\"";
+ };
+ chunk = ''
+ cp ${./plugins}/check_imap_connection $out/
+ patchShebangs $out/check_imap_connection
+ wrapProgram $out/check_imap_connection --prefix PATH : ${lib.makeBinPath [
+ pkgs.openssl
+ ]}
+ '';
+ };
+ megaraid = let
+ megacli = pkgs.megacli.overrideAttrs(old: { meta = old.meta // { license = null; }; });
+ in {
+ commands = {
+ check_megaraid = "$USER2$/check_megaraid_sas --sudo";
+ };
+ chunk = let
+ megaCliPlugin = pkgs.runCommand "megaCliPlugin" {
+ plugin = pkgs.fetchurl {
+ name = "check_megaraid_sas";
+ url = "https://exchange.nagios.org/components/com_mtree/attachment.php?link_id=6381&cf_id=24";
+ sha256 = "0yf60p4c0hb4q3fng9fc14qc89bqm0f1sijayzygadaqcl44jx4p";
+ };
+ } ''
+ mkdir $out
+ cp $plugin $out/check_megaraid_sas
+ chmod +x $out/check_megaraid_sas
+ patchShebangs $out
+ substituteInPlace $out/check_megaraid_sas --replace /usr/sbin/MegaCli ${megacli}/bin/MegaCli64
+ substituteInPlace $out/check_megaraid_sas --replace 'sudo $megacli' '${sudo} $megacli'
+ sed -i -e "s/use utils qw(%ERRORS);/my %ERRORS = ('OK' => 0, 'WARNING' => 1, 'CRITICAL' => 2, 'UNKNOWN' => 3);/" $out/check_megaraid_sas
+ '';
+ in ''
+ cp ${megaCliPlugin}/check_megaraid_sas $out/
+ patchShebangs $out/check_megaraid_sas
+ '';
+ sudo = _: {
+ commands = [
+ { command = "${megacli}/bin/MegaCli64"; options = [ "NOPASSWD" ]; }
+ ];
+ runAs = "root";
+ };
+ };
+ memory = {
+ commands = {
+ check_memory = "$USER2$/check_mem.sh -w $ARG1$ -c $ARG2$";
+ };
+ chunk = ''
+ cp ${./plugins}/check_mem.sh $out/
+ patchShebangs $out/check_mem.sh
+ wrapProgram $out/check_mem.sh --prefix PATH : ${lib.makeBinPath [
+ pkgs.gnugrep pkgs.gawk pkgs.procps
+ ]}
+ '';
+ };
+ mysql = {
+ commands = {
+ check_mysql_replication = "${sudo} -u mysql $USER2$/check_mysql_replication \"$ARG1$\" \"$ARG2$\"";
+ };
+ chunk = ''
+ cp ${./plugins}/check_mysql_replication $out/
+ patchShebangs $out/check_mysql_replication
+ wrapProgram $out/check_mysql_replication --prefix PATH : ${lib.makeBinPath [
+ pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.mariadb
+ ]}
+ '';
+ sudo = myplugins: {
+ commands = [
+ { command = "${myplugins}/check_mysql_replication *"; options = [ "NOPASSWD" ]; }
+ ];
+ runAs = "mysql";
+ };
+ };
+ openldap = {
+ commands = {
+ check_openldap_replication = "${sudo} -u openldap $USER2$/check_openldap_replication \"$ARG1$\" \"$ARG2$\" \"$ARG3$\" \"$ARG4$\" \"$ARG5$\"";
+ };
+ chunk = ''
+ cp ${./plugins}/check_openldap_replication $out/
+ patchShebangs $out/check_openldap_replication
+ wrapProgram $out/check_openldap_replication --prefix PATH : ${lib.makeBinPath [
+ pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.openldap
+ ]}
+ '';
+ sudo = myplugins: {
+ commands = [
+ { command = "${myplugins}/check_openldap_replication *"; options = [ "NOPASSWD" ]; }
+ ];
+ runAs = "openldap";
+ };
+ };
+ ovh = {
+ resources = {
+ USER209 = builtins.concatStringsSep "," [
+ config.myEnv.monitoring.ovh_sms.endpoint
+ config.myEnv.monitoring.ovh_sms.application_key
+ config.myEnv.monitoring.ovh_sms.application_secret
+ config.myEnv.monitoring.ovh_sms.consumer_key
+ config.myEnv.monitoring.ovh_sms.account
+ ];
+ };
+ commands = {
+ check_backup_ovh_age = "$USER2$/check_backup_ovh_age $ARG1$";
+ check_ovh_sms = "$USER2$/check_ovh_sms \"$USER209$\"";
+ };
+ chunk = ''
+ cp ${./plugins}/check_backup_age $out/check_backup_ovh_age
+ patchShebangs $out/check_backup_ovh_age
+ wrapProgram $out/check_backup_ovh_age --prefix PATH : ${lib.makeBinPath [
+ pkgs.duplicity
+ ]} --set SECRETS_PATH ${lib.optionalString cfg.master config.secrets.fullPaths."ovh_access_key"}
+ cp ${./plugins}/check_ovh_sms $out/
+ patchShebangs $out/check_ovh_sms
+ wrapProgram $out/check_ovh_sms --prefix PATH : ${lib.makeBinPath [
+ (pkgs.python38.withPackages (ps: [ps.ovh]))
+ ]}
+ '';
+ };
+ postgresql = { package }: {
+ commands = {
+ check_postgresql_replication = "${sudo} -u postgres $USER2$/check_postgres_replication \"$ARG1$\" \"$ARG2$\" \"$ARG3$\"";
+ check_postgresql_database_count = "$USER2$/check_postgres_database_count \"$ARG1$\" \"$ARG2$\" \"$ARG3$\"";
+ };
+ chunk = ''
+ cp ${./plugins}/check_postgres_replication $out/
+ patchShebangs $out/check_postgres_replication
+ wrapProgram $out/check_postgres_replication --prefix PATH : ${lib.makeBinPath [
+ package
+ ]}
+ cp ${./plugins}/check_postgres_database_count $out/
+ patchShebangs $out/check_postgres_database_count
+ wrapProgram $out/check_postgres_database_count --prefix PATH : ${lib.makeBinPath [
+ package
+ ]}
+ '';
+
+ sudo = myplugins: {
+ commands = [
+ { command = "${myplugins}/check_postgres_replication *"; options = [ "NOPASSWD" ]; }
+ ];
+ runAs = "postgres";
+ };
+ };
+ redis = {
+ commands = {
+ check_redis_replication = "${sudo} -u redis $USER2$/check_redis_replication \"$ARG1$\"";
+ };
+ chunk = ''
+ cp ${./plugins}/check_redis_replication $out/
+ patchShebangs $out/check_redis_replication
+ wrapProgram $out/check_redis_replication --prefix PATH : ${lib.makeBinPath [
+ pkgs.gnugrep pkgs.coreutils pkgs.redis
+ ]}
+ '';
+ sudo = myplugins: {
+ commands = [
+ { command = "${myplugins}/check_redis_replication *"; options = [ "NOPASSWD" ]; }
+ ];
+ runAs = "redis";
+ };
+ };
+ tcp = {
+ commands = {
+ check_tcp = "$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -e \"$ARG2$\" -Mcrit";
+ check_tcp_ssl = "$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -S -D 21,15";
+ };
+ };
+ zfs = {
+ commands = {
+ check_zfs = "$USER2$/check_zpool.sh -p ALL -w 80 -c 90";
+ check_zfs_snapshot = "$USER2$/check_zfs_snapshot -d $ARG1$ -c 18000 -w 14400";
+ };
+ chunk = let
+ zfsPlugin = pkgs.fetchurl {
+ url = "https://www.claudiokuenzler.com/monitoring-plugins/check_zpools.sh";
+ sha256 = "0p9ms9340in80jkds4kfspw62xnzsv5s7ni9m28kxyd0bnzkbzhf";
+ };
+ in ''
+ cp ${zfsPlugin} $out/check_zpool.sh
+ chmod +x $out/check_zpool.sh
+ patchShebangs $out/check_zpool.sh
+ wrapProgram $out/check_zpool.sh --prefix PATH : ${lib.makeBinPath [
+ pkgs.which pkgs.zfs pkgs.gawk
+ ]}
+ cp ${./plugins}/check_zfs_snapshot $out
+ patchShebangs $out/check_zfs_snapshot
+ wrapProgram $out/check_zfs_snapshot --prefix PATH : ${lib.makeBinPath [
+ pkgs.zfs pkgs.coreutils pkgs.gawk pkgs.gnugrep
+ ]}
+ '';
+ };
+}
diff --git a/flakes/private/monitoring/nagios-cli.cfg b/flakes/private/monitoring/nagios-cli.cfg
new file mode 100644
index 0000000..7bd30cb
--- /dev/null
+++ b/flakes/private/monitoring/nagios-cli.cfg
@@ -0,0 +1,68 @@
+# -*- coding: utf-8; -*-
+
+[cli]
+history = /var/lib/naemon/nagios_cli_history
+
+[ui]
+color = 1
+prompt = naemon %s>
+prompt_separator = " → "
+
+[nagios]
+log = /var/log/naemon
+command_file = /run/naemon/naemon.cmd
+log_file = %(log)s/naemon.log
+object_cache_file = /var/lib/naemon/objects.cache
+status_file = /var/lib/naemon/status.dat
+
+[object]
+host.status =
+ host_name
+ current_state
+ plugin_output
+ is_flapping
+ last_check
+ last_time_down
+ last_state_change
+ check_period
+ notification_period
+ current_attempt
+ max_attempts
+service.status =
+ host_name
+ service_description
+ current_state
+ is_flapping
+ plugin_output
+ last_time_down
+ last_state_change
+ last_check
+ next_check
+ check_interval
+ check_latency
+ check_period
+ notification_period
+ current_attempt
+ max_attempts
+
+[string]
+level.ok = ↑ OK
+level.warning = ! WARNING
+level.critical = ↓ CRITICAL
+level.unknown = ↕ UNKNOWN
+
+[color]
+error = bold_red
+
+prompt = normal
+prompt.object = bold
+
+host.host_name = bold
+host.plugin_output = bold
+service.plugin_output = bold
+
+level.ok = bold_green
+level.warning = bold_yellow
+level.critical = bold_red
+level.unknown = bold_magenta
+
diff --git a/flakes/private/monitoring/objects_common.nix b/flakes/private/monitoring/objects_common.nix
new file mode 100644
index 0000000..1da7764
--- /dev/null
+++ b/flakes/private/monitoring/objects_common.nix
@@ -0,0 +1,227 @@
+{ hostFQDN
+, hostName
+, interface ? "eth0"
+, processWarn ? "250"
+, processAlert ? "400"
+, loadWarn ? "0.9"
+, load5Warn ? loadWarn
+, load15Warn ? load5Warn
+, loadAlert ? "1.0"
+, load5Alert ? loadAlert
+, load15Alert ? load5Alert
+, master
+, ...
+}:
+{
+ host = {
+ "${hostFQDN}" = {
+ alias = hostFQDN;
+ address = hostFQDN;
+ use = "linux-server";
+ hostgroups = "webstatus-hosts";
+ _webstatus_name = hostName;
+ _webstatus_vhost = "status.immae.eu";
+ };
+ };
+ service = [
+ {
+ service_description = "Size on root partition";
+ use = "local-service";
+ check_command = ["check_local_disk" "20%" "10%" "/"];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ {
+ service_description = "Total number of process";
+ use = "local-service";
+ check_command = [
+ "check_local_procs"
+ processWarn
+ processAlert
+ "RSZDT"
+ ];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ {
+ service_description = "Network bandwidth";
+ use = "local-service";
+ check_interval = 2;
+ max_check_attempts = "20";
+ retry_interval = "2";
+ check_command = [
+ "check_local_bandwidth"
+ interface
+ "20480" # kb/s
+ "51200" # kb/s
+ ];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ {
+ service_description = "Average load";
+ use = "local-service";
+ check_command = [
+ "check_local_load"
+ "${loadWarn},${load5Warn},${load15Warn}"
+ "${loadAlert},${load5Alert},${load15Alert}"
+ ];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ {
+ service_description = "Swap usage";
+ use = "local-service";
+ check_command = ["check_local_swap" "20" "10"];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ {
+ service_description = "Memory usage";
+ use = "local-service";
+ check_command = ["check_memory" "80" "90"];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ {
+ service_description = "NTP is activated and working";
+ use = "local-service";
+ check_command = ["check_ntp"];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ ];
+ command = {
+ check_local_disk = "$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$";
+ check_local_procs = "$USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$";
+ check_local_load = "$USER1$/check_load -r -w $ARG1$ -c $ARG2$";
+ check_local_swap = "$USER1$/check_swap -n ok -w $ARG1$ -c $ARG2$";
+ check_ntp = "$USER1$/check_ntp_time -t 30 -q -H 0.arch.pool.ntp.org";
+ check_smtp = "$USER1$/check_smtp -H $HOSTADDRESS$ -p 25 -S -D 21,15";
+
+ check_host_alive = "$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5";
+ check_ok = "$USER1$/check_dummy 0 \"Dummy OK\"";
+ check_critical = "$USER1$/check_dummy 2 \"Dummy CRITICAL\"";
+ };
+ timeperiod = {
+ "24x7" = {
+ alias = "24 Hours A Day, 7 Days A Week";
+ monday = "00:00-24:00";
+ tuesday = "00:00-24:00";
+ wednesday = "00:00-24:00";
+ thursday = "00:00-24:00";
+ friday = "00:00-24:00";
+ saturday = "00:00-24:00";
+ sunday = "00:00-24:00";
+ };
+ };
+ servicegroup = {
+ webstatus-webapps = { alias = "Web applications"; };
+ webstatus-websites = { alias = "Personal websites"; };
+ webstatus-ssl = { alias = "SSL certificates"; };
+ webstatus-dns = { alias = "DNS resolution"; };
+ webstatus-remote-services = { alias = "Other remote services"; };
+ webstatus-local-services = { alias = "Other local services"; };
+ webstatus-email = { alias = "E-mail services"; };
+ webstatus-resources = { alias = "Local resources"; };
+ webstatus-databases = { alias = "Databases resources"; };
+ webstatus-backup = { alias = "Backup resources"; };
+ };
+ hostgroup = {
+ webstatus-hosts = { alias = "Hosts"; };
+ };
+ contactgroup = {
+ admins = { alias = "Naemon Administrators"; };
+ };
+ templates = {
+ service = {
+ generic-service = {
+ active_checks_enabled = "1";
+ check_freshness = "0";
+ check_interval = 10;
+ check_period = "24x7";
+ contact_groups = "admins";
+ event_handler_enabled = "1";
+ flap_detection_enabled = "1";
+ is_volatile = "0";
+ max_check_attempts = "3";
+ notification_interval = "60";
+ notification_options = "w,u,c,r,f,s";
+ notification_period = "24x7";
+ notifications_enabled = if master then "1" else "0";
+ obsess_over_service = "1";
+ passive_checks_enabled = "1";
+ process_perf_data = "1";
+ retain_nonstatus_information = "1";
+ retain_status_information = "1";
+ retry_interval = "2";
+ _webstatus_namespace = "immae";
+ };
+ local-service = {
+ use = "generic-service";
+ host_name = hostFQDN;
+ check_interval = 5;
+ max_check_attempts = "4";
+ retry_interval = "1";
+ servicegroups = "webstatus-resources";
+ };
+ external-service = {
+ use = "generic-service";
+ check_interval = 5;
+ max_check_attempts = "4";
+ retry_interval = "1";
+ };
+ web-service = {
+ use = "generic-service";
+ check_interval = 20;
+ max_check_attempts = "2";
+ retry_interval = "1";
+ };
+ external-web-service = {
+ use = "generic-service";
+ check_interval = 20;
+ max_check_attempts = "2";
+ retry_interval = "1";
+ };
+ mail-service = {
+ use = "generic-service";
+ check_interval = 15;
+ max_check_attempts = "1";
+ retry_interval = "1";
+ };
+ dns-service = {
+ use = "generic-service";
+ check_interval = 120;
+ notification_interval = "120";
+ max_check_attempts = "5";
+ retry_interval = "5";
+ };
+ };
+ # No contact, we go through master
+ contact = {
+ generic-contact = {
+ host_notification_commands = "notify-host-by-email";
+ host_notification_options = "d,u,r,f,s";
+ host_notification_period = "24x7";
+ service_notification_commands = "notify-service-by-email";
+ service_notification_options = "w,u,c,r,f,s";
+ service_notification_period = "24x7";
+ };
+ };
+ host = {
+ generic-host = {
+ event_handler_enabled = "1";
+ flap_detection_enabled = "1";
+ notification_period = "24x7";
+ notifications_enabled = "1";
+ process_perf_data = "1";
+ retain_nonstatus_information = "1";
+ retain_status_information = "1";
+ };
+ linux-server = {
+ check_command = "check_host_alive";
+ check_interval = "5";
+ check_period = "24x7";
+ contact_groups = "admins";
+ max_check_attempts = "10";
+ notification_interval = "120";
+ notification_options = "d,u,r,f";
+ retry_interval = "1";
+ _webstatus_namespace = "immae";
+ };
+ };
+ };
+}
diff --git a/flakes/private/monitoring/plugins/check_backup_age b/flakes/private/monitoring/plugins/check_backup_age
new file mode 100755
index 0000000..d873bdc
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_backup_age
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+source $SECRETS_PATH
+export HOME=$(mktemp -d)
+
+trap "rm -rf $HOME" EXIT
+folder=$1
+
+parse_date() {
+ d=$1
+ echo $d | sed -e "s/^\(....\)\(..\)\(..\)T\(..\)\(..\)\(..\)/\1-\2-\3T\4:\5:\6/"
+}
+
+output=$(duplicity collection-status --log-fd 2 "$BASE_URL$folder" 2>&1 > /dev/null)
+
+output=$(echo "$output" | grep -v "^\.")
+
+last_full=$(parse_date "$(echo "$output" | grep "^ full " | cut -d' ' -f3 | sort | tail -n1)")
+last_bkp=$(parse_date "$(echo "$output" | grep -E "^ (full|inc) " | cut -d' ' -f3 | sort | tail -n1)")
+orphaned_sets=$(echo "$output" | grep "^orphaned-sets-num" | cut -d' ' -f2)
+incomplete_sets=$(echo "$output" | grep "^incomplete-sets-num" | cut -d' ' -f2)
+
+if [[ -z "$last_full" || -z "$last_bkp" || -z "$orphaned_sets" || -z "$incomplete_sets" ]]; then
+ echo "duply-backup $folder UNKNOWN - impossible to parse result"
+ exit 3
+fi
+
+last_full_age=$(( ($(date "+%s") - $(date -d "$last_full" "+%s")) / (60*60*24) ))
+last_bkp_age=$(( ($(date "+%s") - $(date -d "$last_bkp" "+%s")) / (60*60) ))
+
+PERFS="orphan=$orphaned_sets;1;;0; incomplete=$incomplete_sets;1;;0; age=${last_bkp_age}h;30;48;0; full_age=${last_full_age}d;35;45;0;"
+
+
+WARNINGS=""
+ERRORS=""
+if [[ "$incomplete_sets" -gt 0 ]]; then
+ WARNINGS="$WARNINGS - Incomplete sets is $incomplete_sets"
+fi
+
+if [[ "$orphaned_sets" -gt 0 ]]; then
+ WARNINGS="$WARNINGS - Orphaned sets is $orphaned_sets"
+fi
+
+if [[ "$last_full_age" -gt 45 ]]; then
+ ERRORS="$ERRORS - Last full backup is too old $last_full"
+elif [[ "$last_full_age" -gt 35 ]]; then
+ WARNINGS="$WARNINGS - Last full backup is getting old $last_full"
+fi
+
+if [[ "$last_bkp_age" -gt 48 ]]; then
+ ERRORS="$ERRORS - Last backup is too old $last_bkp"
+elif [[ "$last_bkp_age" -gt 30 ]]; then
+ WARNINGS="$WARNINGS - Last backup is getting old $last_bkp"
+fi
+
+if [[ -n "$ERRORS" ]]; then
+ echo "duply-backup $folder CRITICAL$ERRORS$WARNINGS | $PERFS"
+ exit 2
+elif [[ -n "$WARNINGS" ]]; then
+ echo "duply-backup $folder WARNING$WARNINGS | $PERFS"
+ exit 1
+else
+ echo "duply-backup $folder OK | $PERFS"
+fi
diff --git a/flakes/private/monitoring/plugins/check_bandwidth b/flakes/private/monitoring/plugins/check_bandwidth
new file mode 100755
index 0000000..21d01f5
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_bandwidth
@@ -0,0 +1,122 @@
+#!/bin/bash
+
+# ============================== SUMMARY =====================================
+#Author : Ken Roulamellah
+#Date : 19/07/2018
+#Version : 1.0
+# Licence : GPL
+# ===================== INFORMATION ABOUT THIS PLUGIN ========================
+#
+# This plugin checks the average RX and TX bandwidth utilisation. It use
+# kbytes as measure unite.
+#
+# ========================== START OF PROGRAM CODE ===========================
+
+STATE_OK=0
+STATE_WARNING=1
+STATE_CRITICAL=2
+STATE_UNKNOWN=3
+
+interface=$( ip route | grep default | awk '{print $5}' | head -n1)
+function print_usage()
+{
+ echo "Usage :"
+ echo "$0 [ -i=INTERFACE] [ -ct=COUNT ] -w WARNING -c CRITICAL"
+ echo "This script calculate the average bandwith usage."
+ echo "Default values | interface: ${interface}, counter: 10"
+}
+
+counter=10
+warning=-1
+critical=-1
+
+sum_rx=0
+sum_tx=0
+avg_rx=
+avg_tx=
+i=
+
+
+if [[ $# -lt 4 ]];
+then
+ echo "Error: Arguments are missing"
+ print_usage
+ exit $STATE_UNKNOWN
+fi
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ -i=*)
+ interface="$(cut -d'=' -f2 <<<"$1")"
+ shift
+ ;;
+ -ct=*)
+ counter="$(cut -d'=' -f2 <<<"$1")"
+ shift
+ ;;
+ -w)
+ warning=$2
+ shift 2
+ ;;
+ -c)
+ critical=$2
+ shift 2
+ ;;
+ *)
+ printf "\nError: Invalid option '$1'"
+ print_usage
+ exit $STATE_UNKNOWN
+ ;;
+ esac
+done
+
+if [ $warning -lt 0 ] || [ $critical -lt 0 ];
+then
+ echo "Error: You need to specify a warning and critical treshold"
+ print_usage
+ exit $STATE_UNKNOWN
+fi
+
+grep -q "up" /sys/class/net/$interface/operstate || exec echo "$interface: no such device or down"
+
+read rx <"/sys/class/net/$interface/statistics/rx_bytes"
+read tx <"/sys/class/net/$interface/statistics/tx_bytes"
+
+i=$counter
+while [ $i -gt 0 ]; do
+ sleep 1
+ read newrx <"/sys/class/net/$interface/statistics/rx_bytes"
+ read newtx <"/sys/class/net/$interface/statistics/tx_bytes"
+
+ #echo "old rx :$rx"
+ #echo "new rx :$newrx"
+ rx_cal=$(bc <<< "scale=2; ($newrx-$rx) / 1000")
+ tx_cal=$(bc <<< "scale=2; ($newtx-$tx) / 1000")
+
+ sum_rx=$(bc <<< "scale=2;$sum_rx+$rx_cal")
+ sum_tx=$(bc <<< "scale=2;$sum_tx+$tx_cal")
+
+ #echo "$interface {rx: $rx_cal ko/s, tx: $tx_cal ko/s}"
+ rx=$newrx
+ tx=$newtx
+ ((i --))
+done
+
+avg_rx=$(bc <<< "scale=2;$sum_rx/$counter")
+avg_tx=$(bc <<< "scale=2;$sum_tx/$counter")
+
+#echo "$avg_rx"
+#echo "$avg_tx"
+
+
+if [ $(bc <<< "$avg_rx > $critical || $avg_tx > $critical") -eq 1 ]; then
+ echo "$interface CRITICAL - AVG_RX: $avg_rx kb/s, AVG_TX: $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;"
+ exit $STATE_CRITICAL
+elif [ $(bc <<< "$avg_rx > $warning || $avg_tx > $warning") -eq 1 ]; then
+ echo "$interface WARNING - AVG_RX: $avg_rx kb/s, AVG_TX: $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;"
+ exit $STATE_WARNING
+else
+ echo "$interface - OK AVG_RX: $avg_rx kb/s, AVG_TX: $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;"
+ exit $STATE_OK
+fi
+exit 3
diff --git a/flakes/private/monitoring/plugins/check_command b/flakes/private/monitoring/plugins/check_command
new file mode 100755
index 0000000..2b546c1
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_command
@@ -0,0 +1,113 @@
+#!/usr/bin/env perl
+
+use strict;
+use Getopt::Std;
+$| = 1;
+
+my %opts;
+getopts('hr:C:c:s:o:', \%opts);
+
+my $STATE_OK = 0;
+my $STATE_WARNING = 1;
+my $STATE_CRITICAL = 2;
+my $STATE_UNKNOWN = 3;
+
+if ($opts{'h'} || scalar(%opts) == 0) {
+ &print_help();
+ exit($STATE_OK);
+}
+
+my $command = $opts{'c'};
+if ($command eq '') {
+ print "You must provide a command to check.\n";
+ exit($STATE_UNKNOWN);
+}
+
+my $expected_output = $opts{'o'};
+my $expected_status = $opts{'s'};
+my $other_command = $opts{'C'};
+
+if ($other_command eq '' and $expected_status eq '' and $expected_output eq '') {
+ $expected_status = 0;
+}
+
+my $cmd = $command . ' 2>&1';
+my $other_cmd;
+if ($other_command ne '') {
+ $other_cmd = $other_command . ' 2>&1';
+}
+
+my $run_as;
+if ($opts{'r'}) {
+ $run_as = $opts{'r'};
+ $cmd = "sudo -u $run_as -n $cmd";
+
+ if ($other_command ne '') {
+ $other_cmd = "sudo -u $run_as -n $other_cmd";
+ }
+
+}
+
+my $cmd_result = `$cmd`;
+my $other_cmd_result;
+if ($other_command ne '') {
+ $other_cmd_result = `$other_cmd`;
+ chomp($other_cmd_result);
+}
+
+chomp($cmd_result);
+if ($cmd_result =~ /sudo/i) {
+ print "$command CRITICAL - No sudo right to run the command | result=1;;;;\n";
+ exit($STATE_UNKNOWN);
+} elsif ($expected_status ne '') {
+ if ($? != $expected_status) {
+ print "$command CRITICAL - Response status $? | result=1;;;;\n";
+ exit($STATE_CRITICAL);
+ } else {
+ print "$command OK - Response status $? | result=0;;;;\n";
+ exit($STATE_OK);
+ }
+} elsif ($other_command ne '') {
+ if ($cmd_result ne $other_cmd_result) {
+ print "$command CRITICAL - Expected output not matching other command output | result=1;;;;\n";
+ exit($STATE_CRITICAL);
+ } else {
+ print "$command OK - Expected output matching other command output | result=0;;;;\n";
+ exit($STATE_OK);
+ }
+} else {
+ if ($cmd_result !~ /$expected_output/) {
+ print "$command CRITICAL - Expected output not matching | result=1;;;;\n";
+ exit($STATE_CRITICAL);
+ } else {
+ print "$command OK - Expected output matching | result=0;;;;\n";
+ exit($STATE_OK);
+ }
+}
+
+sub print_help() {
+ print << "EOF";
+Check whether the given command responds as expected. One of -o -C or -s must be selected.
+
+Options:
+-h
+ Print detailed help screen
+
+-c
+ command to run (required)
+
+-C
+ other command to compare output
+
+-r user
+ Run as user via sudo.
+
+-s
+ status code to check
+
+-o
+ output to check
+
+EOF
+}
+
diff --git a/flakes/private/monitoring/plugins/check_emails b/flakes/private/monitoring/plugins/check_emails
new file mode 100755
index 0000000..534e5a5
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_emails
@@ -0,0 +1,121 @@
+#!/usr/bin/env perl
+
+use strict;
+use Getopt::Std;
+use File::Basename;
+use Date::Parse;
+use POSIX qw(strftime);
+
+$| = 1;
+
+my %opts;
+getopts('hH:l:s:p:f:i:n:r:', \%opts);
+
+my $STATE_OK = 0;
+my $STATE_WARNING = 1;
+my $STATE_CRITICAL = 2;
+my $STATE_UNKNOWN = 3;
+
+if ($opts{'h'} || scalar(%opts) == 0) {
+ &print_help();
+ exit($STATE_OK);
+}
+
+my $port = $opts{'p'};
+my $host = $opts{'H'};
+my $login = $opts{'l'};
+if ($login ne '') {
+ $login = "$login@";
+}
+
+my $identity = $opts{'i'};
+my $local_directory = $opts{'n'};
+my $return_path = $opts{'r'};
+
+my @emails_to_send = split(/,/, $opts{'s'});
+my @emails_to_expect = split(/,/, $opts{'f'});
+
+my $cmd_result;
+if ($local_directory ne '') {
+ if (@emails_to_expect and ! -d $local_directory) {
+ print "Emails $host UNKNOWN - Could not find local directory";
+ exit($STATE_UNKNOWN);
+ }
+ $cmd_result = `send_mails $local_directory $return_path @emails_to_send 2>&1`;
+} else {
+ $cmd_result = `ssh -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -p $port -i $identity $login$host send_mails @emails_to_send 2>&1`;
+
+ if ($cmd_result =~ /Host key verification failed./) {
+ print "Emails $host UNKNOWN - Could not connect to host with ssh key\n";
+ exit($STATE_UNKNOWN);
+ }
+}
+
+my @lines = split(/\n/, $cmd_result);
+
+my %found_emails;
+
+foreach my $line (@lines) {
+ my @split_line = split(/;/, $line, 2);
+ $found_emails{$split_line[0]} = $split_line[1];
+}
+
+my $output = "";
+my $old = 0;
+foreach my $email_from (@emails_to_expect) {
+ my @email_split = split(/:/, $email_from);
+ my $email = $email_split[0];
+ my $from = $email_split[1];
+
+ if ( exists $found_emails{$email} ) {
+ my $email_date = str2time($found_emails{$email});
+ my $current_date = strftime "%s", localtime;
+
+ if ($current_date - $email_date > 60*30) {
+ $output = "$output$email ($found_emails{$email} from $from) ";
+ }
+ $old = ($current_date - $email_date) > $old ? ($current_date - $email_date) : $old;
+ } else {
+ $output = "$output$email (missing) "
+ }
+}
+
+if ($output ne '') {
+ print "Emails $host CRITICAL - expecting emails: $output | timestamp=${old}s;;;;\n";
+ exit($STATE_CRITICAL);
+} else {
+ print "Emails $host OK | timestamp=${old}s;;;;\n";
+ exit($STATE_OK);
+}
+
+sub print_help() {
+ print << "EOF";
+Check sent emails
+
+Options:
+-h
+ Print detailed help screen
+
+-H
+ Host to check
+
+-l
+ Login
+
+-i
+ Identity file
+
+-n
+ Don’t use ssh, pass that directory to script
+
+-r
+ Return path for local e-mails
+
+-s
+ Comma separated list of emails to send from the host.
+
+-f
+ Comma separated list of emails to expect on the host.
+EOF
+}
+
diff --git a/flakes/private/monitoring/plugins/check_eriomem b/flakes/private/monitoring/plugins/check_eriomem
new file mode 100755
index 0000000..880b88a
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_eriomem
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+import os
+import sys
+import getopt
+import signal
+from subprocess import Popen, PIPE
+
+STATE_OK = 0
+STATE_WARNING = 1
+STATE_CRITICAL = 2
+STATE_UNKNOWN = 3
+
+keys = sys.argv[1].split(",")
+
+def to_args(k):
+ access, secret = k.split(":", 1)
+ return [
+ "s3cmd",
+ '-c=/dev/null',
+ '--no-check-certificate',
+ '--access_key={}'.format(access),
+ '--secret_key={}'.format(secret),
+ '--host=e.eriomem.net',
+ '--host-bucket=%(bucket)s.e.eriomem.net',
+ 'du'
+ ]
+
+max_size = 1024*1024*1024*1024
+warning_percent = 99.75
+critical_percent = 99.95
+
+def output(code, msg):
+ print(msg)
+ sys.exit(code)
+
+def main():
+ def handler(signum, frame):
+ raise IOError
+ signal.signal(signal.SIGALRM, handler)
+ signal.alarm(60)
+
+ try:
+ ps = [Popen(to_args(a), stdout=PIPE, stderr=PIPE) for a in keys]
+ outs = [p.communicate() for p in ps]
+ rets = [p.wait() for p in ps]
+ except IOError:
+ for p in ps:
+ os.kill(p.pid, signal.SIGTERM)
+ output(STATE_UNKNOWN,
+ "Eriomem UNKNOWN - Command timeout after 60 seconds!")
+
+ signal.alarm(0)
+
+ if sum(rets) == 0:
+ usages = [int(out[0].decode().split("\n")[-2].split()[0]) for out in outs]
+ usage = sum(usages)
+ use_percent = 100 * usage / max_size
+ if use_percent > critical_percent:
+ output(STATE_CRITICAL,
+ "Eriomem CRITICAL - bucket usage: %s (%s%%);| size=%s;;;;" %
+ (sizeof_fmt(usage), use_percent, sizeof_fmt(usage)))
+ elif use_percent > warning_percent:
+ output(STATE_WARNING,
+ "Eriomem WARNING - bucket usage: %s (%s%%);| size=%s;;;;" %
+ (sizeof_fmt(usage), use_percent, sizeof_fmt(usage)))
+ else:
+ output(STATE_OK,
+ "Eriomem OK - bucket usage: %s (%d%%);| size=%s;;;;" %
+ (sizeof_fmt(usage), use_percent, sizeof_fmt(usage)))
+ else:
+ messages = "\n".join([out[0].decode() + out[1].decode() for out in outs])
+ output(STATE_UNKNOWN,
+ "Eriomem UNKNOWN - Error in command")
+
+def sizeof_fmt(num):
+ for unit in ['','ko','Mo','Go','To','Po','Eo','Zo']:
+ if abs(num) < 1024.0:
+ return "%3.1f%s" % (num, unit)
+ num /= 1024.0
+ return "%.1f%s%s" % (num, 'Yo')
+
+if __name__ == '__main__':
+ main()
diff --git a/flakes/private/monitoring/plugins/check_ftp_database b/flakes/private/monitoring/plugins/check_ftp_database
new file mode 100755
index 0000000..f9cf579
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_ftp_database
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+OUT=$(echo "ls" | lftp -u test_ftp,test_ftp eldiron.immae.eu | grep it_works | wc -l)
+
+if [ "$OUT" -eq 1 ]; then
+ echo "ftp connection OK - access to ftp is working | ftp=1;;;;"
+ exit 0
+else
+ echo "ftp connection CRITICAL - no access to ftp | ftp=0;;;;"
+ exit 2
+fi
diff --git a/flakes/private/monitoring/plugins/check_git b/flakes/private/monitoring/plugins/check_git
new file mode 100755
index 0000000..e8fbb29
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_git
@@ -0,0 +1,81 @@
+#!/usr/bin/env bash
+
+SSH_KEY="$1"
+
+TMPDIR=$(mktemp -d)
+
+if [ ! -d "$TMPDIR" ]; then
+ echo "gitolite UNKNOWN - impossible to create temp dir"
+ exit 3
+fi
+
+trap "rm -rf $TMPDIR" EXIT
+
+ERRORS=""
+OUTPUT=""
+PERFS=""
+
+cd "$TMPDIR"
+OUT=$(git clone -q git://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1)
+ERR=$?
+if [ -n "$OUT" ]; then
+OUTPUT="$OUTPUT
+$OUT"
+fi
+if [ "$ERR" != 0 ]; then
+ PERFS="$PERFS git=0;;;;"
+ ERRORS="$ERRORS git://"
+else
+ PERFS="$PERFS git=1;;;;"
+fi
+rm -rf Monitor
+
+OUT=$(git clone -q http://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1)
+ERR=$?
+if [ -n "$OUT" ]; then
+OUTPUT="$OUTPUT
+$OUT"
+fi
+if [ "$ERR" != 0 ]; then
+ ERRORS="$ERRORS http://"
+ PERFS="$PERFS http=0;;;;"
+else
+ PERFS="$PERFS http=1;;;;"
+fi
+rm -rf Monitor
+
+OUT=$(git clone -q https://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1)
+ERR=$?
+if [ -n "$OUT" ]; then
+OUTPUT="$OUTPUT
+$OUT"
+fi
+if [ "$ERR" != 0 ]; then
+ ERRORS="$ERRORS https://"
+ PERFS="$PERFS https=0;;;;"
+else
+ PERFS="$PERFS https=1;;;;"
+fi
+rm -rf Monitor
+
+OUT=$(GIT_SSH_COMMAND="ssh -i $SSH_KEY -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no" git clone -q gitolite@git.immae.eu:perso/Immae/Projets/Ruby/Monitor 2>&1)
+ERR=$?
+if [ -n "$OUT" ]; then
+OUTPUT="$OUTPUT
+$OUT"
+fi
+if [ "$ERR" != 0 ]; then
+ ERRORS="$ERRORS ssh"
+ PERFS="$PERFS ssh=0;;;;"
+else
+ PERFS="$PERFS ssh=1;;;;"
+fi
+rm -rf Monitor
+
+if [ -n "$ERRORS" ]; then
+ echo "gitolite CRITICAL - impossible to clone via$ERRORS | $PERFS"
+ exit 2
+else
+ echo "gitolite OK - ssh, git, http and https work | $PERFS"
+ exit 0
+fi
diff --git a/flakes/private/monitoring/plugins/check_imap_connection b/flakes/private/monitoring/plugins/check_imap_connection
new file mode 100755
index 0000000..c1ab0dd
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_imap_connection
@@ -0,0 +1,52 @@
+#!/usr/bin/env perl
+
+use strict;
+use Getopt::Std;
+$| = 1;
+
+my %opts;
+getopts('h:u:p:H:', \%opts);
+
+my $STATE_OK = 0;
+my $STATE_WARNING = 1;
+my $STATE_CRITICAL = 2;
+my $STATE_UNKNOWN = 3;
+
+if ($opts{'h'} || !$opts{'u'} || !$opts{'p'} || !$opts{'H'}) {
+ &print_help();
+ exit($STATE_UNKNOWN);
+}
+
+my $user = $opts{'u'};
+my $password = $opts{'p'};
+my $host = $opts{'H'};
+
+my $cmd_result = `(echo "a login $user $password"; echo "b logout") | openssl s_client -quiet -ign_eof -connect $host -starttls imap 2>&1`;
+my $expected_result = "a OK Logged in";
+
+chomp($cmd_result);
+if ($cmd_result !~ /$expected_result/) {
+ print "IMAP CRITICAL - Unable to connect via imaps | imap=0;;;;\n";
+ exit($STATE_CRITICAL);
+} else {
+ print "IMAP OK - imaps connected successfully | imap=1;;;;\n";
+ exit($STATE_OK);
+}
+
+sub print_help() {
+ print << "EOF";
+Check whether imap works via ssl and is able to connect its database.
+
+Options:
+-h
+ Print detailed help screen
+-u
+ User to log in as
+-p
+ Password to log in
+-H
+ Host to log in to
+
+EOF
+}
+
diff --git a/flakes/private/monitoring/plugins/check_last_file_date b/flakes/private/monitoring/plugins/check_last_file_date
new file mode 100755
index 0000000..f51a258
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_last_file_date
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+STATE_OK=0
+STATE_WARNING=1
+STATE_CRITICAL=2
+STATE_UNKNOWN=3
+
+base_path=$1
+hours=$2
+
+last_date=$(find $base_path -mindepth 1 -maxdepth 1 -printf "%T@\n" 2>/dev/null | sort | tail -n 1)
+
+if [ -z "$last_date" ]; then
+ echo "UNKNOWN: Could not read folder"
+ exit $STATE_UNKNOWN
+else
+ LC_ALL=C last_date=$(printf "%.*f" 0 $last_date)
+ LC_ALL=C age=$(( $(date "+%s") - $last_date))
+ max_age=$(( $hours * 60 * 60 ))
+ min_date=$(date -d "$hours hours ago" "+%s")
+ if [ "$min_date" -lt "$last_date" ]; then
+ echo "OK: Last file $(date -d @$last_date) | age=${age}s;;$max_age;;"
+ exit $STATE_OK
+ else
+ echo "CRITICAL: Last file $(date -d @$last_date) | age=${age}s;;$max_age;;"
+ exit $STATE_CRITICAL
+ fi
+fi
diff --git a/flakes/private/monitoring/plugins/check_mem.sh b/flakes/private/monitoring/plugins/check_mem.sh
new file mode 100755
index 0000000..3a29040
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_mem.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+if [ "$1" = "-w" ] && [ "$2" -gt "0" ] && [ "$3" = "-c" ] && [ "$4" -gt "0" ]; then
+ FreeM=`free -m -w`
+ memTotal_m=`echo "$FreeM" |grep Mem |awk '{print $2}'`
+ memUsed_m=`echo "$FreeM" |grep Mem |awk '{print $3}'`
+ memFree_m=`echo "$FreeM" |grep Mem |awk '{print $4}'`
+ memShared_m=`echo "$FreeM" |grep Mem |awk '{print $5}'`
+ memBuffer_m=`echo "$FreeM" |grep Mem |awk '{print $6}'`
+ memCache_m=`echo "$FreeM" |grep Mem |awk '{print $7}'`
+ memAvailable_m=`echo "$FreeM" |grep Mem |awk '{print $8}'`
+ memUsedPrc=`echo $((($memUsed_m-$memBuffer_m-$memCache_m)*100/$memTotal_m))||cut -d. -f1`
+ if [ "$memUsedPrc" -ge "$4" ]; then
+ echo "Memory: CRITICAL Total: $memTotal_m MB - Used/Buffer/Cache: $memUsed_m MB - $memUsedPrc% used!|TOTAL=$memTotal_m;;;; USED=$memUsed_m;;;; SHARED=$memShared_m;;;; CACHE=$memCache_m;;;; AVAILABLE=$memAvailable_m;;;; BUFFER=$memBuffer_m;;;;"
+ exit 2
+ elif [ "$memUsedPrc" -ge "$2" ]; then
+ echo "Memory: WARNING Total: $memTotal_m MB - Used/Buffer/Cache: $memUsed_m MB - $memUsedPrc% used!|TOTAL=$memTotal_m;;;; USED=$memUsed_m;;;; SHARED=$memShared_m;;;; CACHE=$memCache_m;;;; AVAILABLE=$memAvailable_m;;;; BUFFER=$memBuffer_m;;;;"
+ exit 1
+ else
+ echo "Memory: OK Total: $memTotal_m MB - Used/Buffer/Cache: $memUsed_m MB - $memUsedPrc% used|TOTAL=$memTotal_m;;;; USED=$memUsed_m;;;; SHARED=$memShared_m;;;; CACHE=$memCache_m;;;; AVAILABLE=$memAvailable_m;;;; BUFFER=$memBuffer_m;;;;"
+ exit 0
+ fi
+else # If inputs are not as expected, print help.
+ sName="`echo $0|awk -F '/' '{print $NF}'`"
+ echo -e "\n\n\t\t### $sName Version 2.0###\n"
+ echo -e "# Usage:\t$sName -w -c "
+ echo -e "\t\t= warnlevel and critlevel is percentage value without %\n"
+ echo "# EXAMPLE:\t/usr/lib64/nagios/plugins/$sName -w 80 -c 90"
+ echo -e "\nCopyright (C) 2012 Lukasz Gogolin (lukasz.gogolin@gmail.com), improved by Nestor 2015\n\n"
+ exit
+fi
diff --git a/flakes/private/monitoring/plugins/check_mysql_replication b/flakes/private/monitoring/plugins/check_mysql_replication
new file mode 100755
index 0000000..1ee5de1
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_mysql_replication
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+STATE_OK=0
+STATE_WARNING=1
+STATE_CRITICAL=2
+STATE_UNKNOWN=3
+
+socket=$1
+config_file=$2
+info=$(mysql --defaults-file=${config_file} -S $socket -e "show slave status" --vertical)
+exit_code=$?
+
+lag=$(echo "$info" | grep "\bSeconds_Behind_Master\b" | cut -d':' -f2 | sed -e "s/\s//g")
+
+IO_running=$(echo "$info" | grep "\bSlave_IO_Running\b" | cut -d':' -f2 | sed -e "s/\s//g")
+SQL_running=$(echo "$info" | grep "\bSlave_SQL_Running\b" | cut -d':' -f2 | sed -e "s/\s//g")
+
+if [[ $exit_code -ne 0 ]]; then
+ echo "UNKNOWN - Impossible to run mysql command"
+ exit $STATE_UNKNOWN
+elif [[ -z "$lag" ]]; then
+ echo "UNKNOWN - No replication found for mysql"
+ exit $STATE_UNKNOWN
+elif [[ "$IO_running" != "Yes" || "$SQL_running" != "Yes" ]]; then
+ echo "UNKNOWN - Replication is not running"
+ exit $STATE_UNKNOWN
+else
+ output="Replication lag for mysql is ${lag}s"
+ LC_ALL=C lag=$(printf "%.*f" 0 $lag)
+
+ if [[ $lag -lt 5 ]]; then
+ echo "OK - $output | time=${lag}s;5;10;;"
+ exit $STATE_OK
+ elif [[ $lag -lt 10 ]]; then
+ echo "WARNING - $output | time=${lag}s;5;10;;"
+ exit $STATE_WARNING
+ else
+ echo "CRITICAL - $output | time=${lag}s;5;10;;"
+ exit $STATE_CRITICAL
+ fi
+fi
diff --git a/flakes/private/monitoring/plugins/check_openldap_replication b/flakes/private/monitoring/plugins/check_openldap_replication
new file mode 100755
index 0000000..7136ad5
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_openldap_replication
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+STATE_OK=0
+STATE_WARNING=1
+STATE_CRITICAL=2
+STATE_UNKNOWN=3
+
+distant_host="$1"
+replication_dn="$2"
+replication_pw="$3"
+base="$4"
+config="$5"
+
+to_date() {
+ i="$1"
+ i=$(echo "$i" | grep contextCSN | cut -d":" -f2 | sed -e "s/\s//g")
+ i=$(echo "$i" | cut -d"#" -f1)
+ i=$(echo "$i" | cut -d"." -f1)
+ echo "$i"
+}
+
+# ldap
+remote_ldap=$(ldapsearch -H $distant_host -D "$replication_dn" -y "$replication_pw" -b "$base" -s base -LLL contextCSN )
+exit_code_remote=$?
+remote_ldap=$(to_date "$remote_ldap")
+
+# slapcat
+local_ldap=$(slapcat -b "$base" -f "$config" -a "(entryDN=$base)")
+exit_code_local=$?
+local_ldap=$(to_date "$local_ldap")
+
+offset=$(($remote_ldap - $local_ldap))
+
+if [[ $exit_code_remote -ne 0 || $exit_code_local -ne 0 ]]; then
+ echo "UNKNOWN - Impossible to run ldap command"
+ exit $STATE_UNKNOWN
+elif [[ -z "$offset" ]]; then
+ echo "UNKNOWN - No replication found"
+ exit $STATE_UNKNOWN
+else
+ output="Replication lag for openldap is ${offset}s"
+ LC_ALL=C lag=$(printf "%.*f" 0 $lag)
+
+ if [[ $offset -lt 5 ]]; then
+ echo "OK - $output | time=${offset}s;5;10;;"
+ exit $STATE_OK
+ elif [[ $offset -lt 10 ]]; then
+ echo "WARNING - $output | time=${offset}s;5;10;;"
+ exit $STATE_WARNING
+ else
+ echo "CRITICAL - $output | time=${offset}s;5;10;;"
+ exit $STATE_CRITICAL
+ fi
+fi
diff --git a/flakes/private/monitoring/plugins/check_ovh_sms b/flakes/private/monitoring/plugins/check_ovh_sms
new file mode 100755
index 0000000..caf279c
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_ovh_sms
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+
+import sys
+try:
+ import ovh
+
+ [endpoint, application_key, application_secret, consumer_key, account] = sys.argv[1].split(",")
+ client = ovh.Client(
+ endpoint=endpoint,
+ application_key=application_key,
+ application_secret=application_secret,
+ consumer_key=consumer_key,
+ )
+
+ result = client.get('/sms/{}'.format(account))["creditsLeft"]
+
+ if result < 20:
+ print("SMS OVH Critical - Not enough sms left ({})|SMS={};;;;".format(result, result))
+ sys.exit(2)
+ else:
+ print("SMS OVH Ok - Enough sms left ({})|SMS={};;;;".format(result, result))
+ sys.exit(0)
+except Exception:
+ print("SMS OVH UNKNOWN - Error during script")
+ sys.exit(3)
diff --git a/flakes/private/monitoring/plugins/check_postgres_database_count b/flakes/private/monitoring/plugins/check_postgres_database_count
new file mode 100755
index 0000000..43bdd8c
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_postgres_database_count
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+STATE_OK=0
+STATE_WARNING=1
+STATE_CRITICAL=2
+STATE_UNKNOWN=3
+
+host=$1
+port=$2
+min=$3
+
+count=$(psql -h $host -p $port -A -q -c '\t' -c 'select count(datname) from pg_catalog.pg_database' postgres 2>&1)
+exit_code=$?
+
+if [[ $exit_code -ne 0 ]]; then
+ echo "UNKNOWN - Impossible to run psql command: $count"
+ exit $STATE_UNKNOWN
+elif [[ -z "$count" ]]; then
+ echo "UNKNOWN - No database found"
+ exit $STATE_UNKNOWN
+else
+ output="Database count is $count"
+ LC_ALL=C count=$(printf "%.*f" 0 $count)
+
+ if [[ $count -gt $min ]]; then
+ echo "OK - $output | count=${count};$min;$min;0;"
+ exit $STATE_OK
+ else
+ echo "CRITICAL - $output | count=${count};$min;$min;0;"
+ exit $STATE_CRITICAL
+ fi
+fi
diff --git a/flakes/private/monitoring/plugins/check_postgres_replication b/flakes/private/monitoring/plugins/check_postgres_replication
new file mode 100755
index 0000000..ff257a3
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_postgres_replication
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+STATE_OK=0
+STATE_WARNING=1
+STATE_CRITICAL=2
+STATE_UNKNOWN=3
+
+user=$1
+host=$2
+port=$3
+
+lag=$(psql -h $host -p $port -A -t -c "SELECT COALESCE(EXTRACT(EPOCH FROM replay_lag),0) FROM pg_stat_replication WHERE usename='$user'" 2>/dev/null)
+exit_code=$?
+
+if [[ $exit_code -ne 0 ]]; then
+ echo "UNKNOWN - Impossible to run psql command"
+ exit $STATE_UNKNOWN
+elif [[ -z "$lag" ]]; then
+ echo "UNKNOWN - No replication found for $user"
+ exit $STATE_UNKNOWN
+else
+ output="Replication lag for $user is ${lag}s"
+ LC_ALL=C lag=$(printf "%.*f" 0 $lag)
+
+ if [[ $lag -lt 5 ]]; then
+ echo "OK - $output | time=${lag}s;5;10;0;"
+ exit $STATE_OK
+ elif [[ $lag -lt 10 ]]; then
+ echo "WARNING - $output | time=${lag}s;5;10;0;"
+ exit $STATE_WARNING
+ else
+ echo "CRITICAL - $output | time=${lag}s;5;10;0;"
+ exit $STATE_CRITICAL
+ fi
+fi
diff --git a/flakes/private/monitoring/plugins/check_redis_replication b/flakes/private/monitoring/plugins/check_redis_replication
new file mode 100755
index 0000000..6dbe4c4
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_redis_replication
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+STATE_OK=0
+STATE_WARNING=1
+STATE_CRITICAL=2
+STATE_UNKNOWN=3
+
+socket=$1
+
+info=$(redis-cli -s $socket info replication)
+lag=$(echo "$info" | grep master_last_io_seconds_ago | cut -d":" -f2 | sed -e "s/\s//g")
+slave_offset=$(echo "$info" | grep slave_repl_offset | cut -d":" -f2 | sed -e "s/\s//g")
+master_offset=$(echo "$info" | grep master_repl_offset | cut -d":" -f2 | sed -e "s/\s//g")
+offset=$(($master_offset - $slave_offset))
+
+exit_code=$?
+
+if [[ $exit_code -ne 0 ]]; then
+ echo "UNKNOWN - Impossible to run redis command"
+ exit $STATE_UNKNOWN
+elif [[ -z "$lag" ]]; then
+ echo "UNKNOWN - No replication found"
+ exit $STATE_UNKNOWN
+else
+ output="Replication lag for redis is ${lag}s and offset is ${offset}"
+ LC_ALL=C lag=$(printf "%.*f" 0 $lag)
+
+ if [[ $lag -lt 5 && $offset -lt 5 ]]; then
+ echo "OK - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;"
+ exit $STATE_OK
+ elif [[ $lag -lt 10 && $offset -lt 10 ]]; then
+ echo "WARNING - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;"
+ exit $STATE_WARNING
+ else
+ echo "CRITICAL - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;"
+ exit $STATE_CRITICAL
+ fi
+fi
diff --git a/flakes/private/monitoring/plugins/check_zfs_snapshot b/flakes/private/monitoring/plugins/check_zfs_snapshot
new file mode 100755
index 0000000..56f8c4f
--- /dev/null
+++ b/flakes/private/monitoring/plugins/check_zfs_snapshot
@@ -0,0 +1,325 @@
+#! /bin/sh
+
+OS=$(uname)
+
+# MIT License
+#
+# Copyright (c) 2016 Josef Friedrich
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+########################################################################
+# Date functions
+########################################################################
+
+# This date function must be placed on the top of this file because
+# they are used in some global variables.
+
+# to_year ###
+
+##
+# Get the four digit year integer from now.
+#
+# Return:
+# The current 4 digit year.
+##
+_now_to_year() {
+ date +%Y
+}
+
+##
+# Convert a date in the format YYYY-MM-DD to a four digit year integer.
+#
+# Parameters:
+# a date in the format YYYY-MM-DD
+#
+# Return:
+# four digit year integer
+##
+_date_to_year() {
+ local OPTIONS
+ if [ "$OS" = 'Linux' ]; then
+ OPTIONS="--date $1"
+ # FreeBSD, Darwin
+ else
+ OPTIONS="-j -f %Y-%m-%d $1"
+ fi
+ date $OPTIONS +%Y
+}
+
+# to_datetime ###
+
+##
+# Convert a UNIX timestamp to a datetime string.
+#
+# Parameters:
+# UNIX timestamp
+#
+# Return:
+# %Y-%m-%d.%H:%M:%S
+##
+_timestamp_to_datetime() {
+ local OPTIONS
+ if [ "$OS" = 'Linux' ]; then
+ OPTIONS="--date @$1"
+ # FreeBSD, Darwin
+ else
+ OPTIONS="-j -f %s $1"
+ fi
+ date $OPTIONS +%Y-%m-%d.%H:%M:%S
+}
+
+# to_timestamp ###
+
+##
+# Get the current UNIX timestamp.
+#
+# Return:
+# %current UNIX timestamp
+##
+_now_to_timestamp() {
+ date +%s
+}
+
+PROJECT_PAGES='https://github.com/Josef-Friedrich/check_zfs_snapshot
+https://exchange.icinga.com/joseffriedrich/check_zfs_snapshot
+https://exchange.nagios.org/directory/Plugins/System-Metrics/File-System/check_zfs_snapshot/details'
+
+VERSION=1.2
+FIRST_RELEASE=2016-09-08
+SHORT_DESCRIPTION="Monitoring plugin to check how long ago the last \
+snapshot of a ZFS dataset was created."
+USAGE="check_zfs_snapshot v$VERSION
+Copyright (c) $(_date_to_year $FIRST_RELEASE)-$(_now_to_year) \
+Josef Friedrich
+
+$SHORT_DESCRIPTION
+
+
+Usage: check_zfs_snapshot
+
+Options:
+ -c, --critical=OPT_CRITICAL
+ Interval in seconds for critical state.
+ -d, --dataset=OPT_DATASET
+ The ZFS dataset to check.
+ -h, --help
+ Show this help.
+ -s, --short-description
+ Show a short description of the command.
+ -v, --version
+ Show the version number.
+ -w, --warning=OPT_WARNING
+ Interval in seconds for warning state. Must be lower than -c
+
+Performance data:
+ - last_ago
+ Time interval in seconds for last snapshot.
+ - warning
+ Interval in seconds.
+ - critical
+ Interval in seconds.
+ - snapshot_count
+ How many snapshot exists in the given dataset and all child
+ datasets exists.
+"
+
+# Exit codes
+STATE_OK=0
+STATE_WARNING=1
+STATE_CRITICAL=2
+STATE_UNKNOWN=3
+
+_get_last_snapshot() {
+ zfs get creation -Hpr -t snapshot "$1" | \
+ awk 'BEGIN {max = 0} {if ($3>max) max=$3} END {print max}'
+}
+
+_getopts() {
+ while getopts ':c:d:hsvw:-:' OPT ; do
+ case $OPT in
+
+ c)
+ OPT_CRITICAL=$OPTARG
+ ;;
+
+ d)
+ OPT_DATASET="$OPTARG"
+ ;;
+
+ h)
+ echo "$USAGE"
+ exit 0
+ ;;
+
+ s)
+ echo "$SHORT_DESCRIPTION"
+ exit 0
+ ;;
+
+ v)
+ echo "$VERSION"
+ exit 0
+ ;;
+
+ w)
+ OPT_WARNING=$OPTARG
+ ;;
+
+ \?)
+ echo "Invalid option “-$OPTARG”!" >&2
+ exit 2
+ ;;
+
+ :)
+ echo "Option “-$OPTARG” requires an argument!" >&2
+ exit 3
+ ;;
+
+ -)
+ LONG_OPTARG="${OPTARG#*=}"
+
+ case $OPTARG in
+
+ critical=?*)
+ OPT_CRITICAL=$LONG_OPTARG
+ ;;
+
+ dataset=?*)
+ OPT_DATASET="$LONG_OPTARG"
+ ;;
+
+ help)
+ echo "$USAGE"
+ exit 0
+ ;;
+
+ short-description)
+ echo "$SHORT_DESCRIPTION"
+ exit 0
+ ;;
+
+ version)
+ echo "$VERSION"
+ exit 0
+ ;;
+
+ warning=?*)
+ OPT_WARNING=$LONG_OPTARG
+ ;;
+
+ critical*|dataset*|warning*)
+ echo "Option “--$OPTARG” requires an argument!" >&2
+ exit 3
+ ;;
+
+ help*|short-description*|version*)
+ echo "No argument allowed for the option “--$OPTARG”!" >&2
+ exit 4
+ ;;
+
+ '') # "--" terminates argument processing
+ break
+ ;;
+
+ *)
+ echo "Invalid option “--$OPTARG”!" >&2
+ exit 2
+ ;;
+
+ esac
+ ;;
+
+ esac
+ done
+}
+
+_snapshot_count() {
+ # FreeBSD wc adds some whitespaces before the number!
+ # cat $HOME/debug | wc -l
+ # 7
+ local COUNT
+ COUNT="$(zfs list -t snapshot | grep "$1" | wc -l)"
+ echo $COUNT
+}
+
+_performance_data() {
+ echo "| \
+last_ago=${DIFF}s;$OPT_WARNING;$OPT_CRITICAL;0 \
+count=$(_snapshot_count "$OPT_DATASET");;;0\
+"
+}
+
+## This SEPARATOR is required for test purposes. Please don’t remove! ##
+
+_getopts $@
+
+if [ -z "$OPT_WARNING" ]; then
+ # 1 day
+ OPT_WARNING=86400
+fi
+
+if [ -z "$OPT_CRITICAL" ]; then
+ # 3 day
+ OPT_CRITICAL=259200
+fi
+
+if [ -z "$OPT_DATASET" ]; then
+ echo "Dataset has to be set! Use option -d " >&2
+ echo "$USAGE" >&2
+ exit $STATE_UNKNOWN
+fi
+
+if ! zfs list "$OPT_DATASET" > /dev/null 2>&1; then
+ echo "'$OPT_DATASET' is no ZFS dataset!" >&2
+ echo "$USAGE" >&2
+ exit $STATE_UNKNOWN
+fi
+
+NOW=$(_now_to_timestamp)
+
+CREATION_DATE=$(_get_last_snapshot "$OPT_DATASET")
+
+DIFF=$((NOW - CREATION_DATE))
+
+if [ "$OPT_WARNING" -gt "$OPT_CRITICAL" ]; then
+ echo '-w OPT_WARNING must be smaller than -c OPT_CRITICAL'
+ _usage >&2
+ exit $STATE_UNKNOWN
+fi
+
+RETURN=STATE_UNKNOWN
+
+if [ "$DIFF" -gt "$OPT_CRITICAL" ]; then
+ RETURN=$STATE_CRITICAL
+ MESSAGE="CRITICAL:"
+elif [ "$DIFF" -gt "$OPT_WARNING" ]; then
+ RETURN=$STATE_WARNING
+ MESSAGE="WARNING:"
+else
+ RETURN=$STATE_OK
+ MESSAGE="OK:"
+fi
+
+DATE="$(_timestamp_to_datetime "$CREATION_DATE")"
+
+echo "$MESSAGE Last snapshot for dataset '$OPT_DATASET' was created on $DATE $(_performance_data)"
+
+exit $RETURN
diff --git a/flakes/private/monitoring/plugins/notify_by_apprise b/flakes/private/monitoring/plugins/notify_by_apprise
new file mode 100755
index 0000000..82bc5a3
--- /dev/null
+++ b/flakes/private/monitoring/plugins/notify_by_apprise
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+APPRISE_USERNAME="Naemon"
+APPRISE_USERICON="https://assets.immae.eu/monitoring.png"
+APPRISE_URLS=$(echo "$2" | sed -e "s/{username}/$APPRISE_USERNAME/g" -e "s@{image_url}@$APPRISE_USERICON@g")
+
+if [ "$SERVICESTATE" = "CRITICAL" ]; then
+ ICON="❗"
+elif [ "$SERVICESTATE" = "WARNING" ]; then
+ ICON="⚠️:"
+elif [ "$SERVICESTATE" = "OK" ]; then
+ ICON="✅"
+elif [ "$SERVICESTATE" = "UNKNOWN" ]; then
+ ICON="❓"
+elif [ "$HOSTSTATE" = "UP" ]; then
+ ICON="✅"
+elif [ "$HOSTSTATE" = "DOWN" ]; then
+ ICON="❗"
+elif [ "$HOSTSTATE" = "UNKNOWN" ]; then
+ ICON="❓"
+elif [ "$HOSTSTATE" = "UNREACHABLE" ]; then
+ ICON="❓"
+else
+ ICON="◻"
+fi
+
+if [ "$1" = "host" ]; then
+ apprise --title "${ICON} ${NOTIFICATIONTYPE} ${HOST} is ${HOSTSTATE}" --body "$HOSTOUTPUT" $APPRISE_URLS
+else
+ apprise --title "${ICON} ${NOTIFICATIONTYPE} ${SERVICEDESC} on ${HOST} is ${SERVICESTATE}" --body "$SERVICEOUTPUT" $APPRISE_URLS
+fi
diff --git a/flakes/private/monitoring/plugins/notify_by_email b/flakes/private/monitoring/plugins/notify_by_email
new file mode 100755
index 0000000..959db26
--- /dev/null
+++ b/flakes/private/monitoring/plugins/notify_by_email
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+# $1 = service/host
+
+# $2 = type (PROBLEM RECOVERY ACKNOWLEDGEMENT FLAPPINGSTART FLAPPINGSTOP FLAPPINGDISABLED DOWNTIMESTART DOWNTIMESTOP DOWNTIMECANCELLED)
+# http://www.naemon.org/documentation/usersguide/macrolist.html#notificationtype
+
+# $3 = host alias
+
+# $4 = date (YYYY-MM-DDTHH:MM:SS)
+
+# $5 = E-mail
+
+NOTIFICATION_TYPE="$2"
+HOST_ALIAS="$3"
+DATE="$4"
+CONTACT="$5"
+
+message=""
+
+if [ "$1" = "host" ]; then
+ message=$(printf "%b" "***** Naemon *****\n\nNotification Type: $NOTIFICATION_TYPE\n\nHost: $HOST_ALIAS\nState: $HOSTSTATE\nInfo: $HOSTOUTPUT\n\nDate/Time: $DATE\n")
+ subject="** $NOTIFICATION_TYPE Host Alert: $HOST_ALIAS is $HOSTSTATE **"
+else
+ message=$(printf "%b" "***** Naemon *****\n\nNotification Type: $NOTIFICATION_TYPE\n\nService: $SERVICEDESC\nHost: $HOST_ALIAS\nState: $SERVICESTATE\n\nDate/Time: $DATE\n\nAdditional Info:\n\n$SERVICEOUTPUT\n")
+ subject="** $NOTIFICATION_TYPE Service Alert: $HOST_ALIAS/$SERVICEDESC is $SERVICESTATE **"
+fi
+
+echo "$message" | MAILRC=/dev/null mail -r "$ADMINEMAIL" -n -s "$subject" "$CONTACT"
diff --git a/flakes/private/monitoring/plugins/notify_by_slack b/flakes/private/monitoring/plugins/notify_by_slack
new file mode 100755
index 0000000..1b16a0d
--- /dev/null
+++ b/flakes/private/monitoring/plugins/notify_by_slack
@@ -0,0 +1,46 @@
+#!/usr/bin/env bash
+
+SLACK_CHANNEL="$1"
+SLACK_USERNAME="Naemon"
+SLACK_URL="$2"
+SLACK_USERICON="https://assets.immae.eu/monitoring.png"
+
+if [ "$SERVICESTATE" = "CRITICAL" ]; then
+ ICON=":exclamation:"
+ COLOR="#DA0505"
+elif [ "$SERVICESTATE" = "WARNING" ]; then
+ ICON=":warning:"
+ COLOR="#F1E903"
+elif [ "$SERVICESTATE" = "OK" ]; then
+ ICON=":white_check_mark:"
+ COLOR="#36a64f"
+elif [ "$SERVICESTATE" = "UNKNOWN" ]; then
+ ICON=":question:"
+ COLOR="#000000"
+else
+ ICON=":white_medium_square:"
+ COLOR="#ffffff"
+fi
+
+payload=$(echo "{}" | jq -r \
+ --arg "icon_url" "$SLACK_USERICON" \
+ --arg "channel" "$SLACK_CHANNEL" \
+ --arg "username" "$SLACK_USERNAME" \
+ --arg "text" "${ICON} ${SERVICEDESC} on ${HOST} is ${SERVICESTATE}" \
+ --arg "color" "$COLOR" \
+ --arg "host" "$HOST" \
+ --arg "desc" "$SERVICEDESC" \
+ --arg "state" "$SERVICESTATE" \
+ --arg "output" "$SERVICEOUTPUT" \
+ '.icon_url = $icon_url |
+ .channel = $channel |
+ .username = $username |
+ .text = $text |
+ .attachments = [{fallback:"", color:$color,fields: [{},{},{},{}]}] |
+ .attachments[0].fields[0] = {title:"Host",value:$host,short:true} |
+ .attachments[0].fields[1] = {title:"Service description",value:$desc,short:true} |
+ .attachments[0].fields[2] = {title:"Status",value:$state,short:true} |
+ .attachments[0].fields[3] = {title:"Message",value:$output,short:false}
+ ')
+
+curl -X POST --data "payload=$payload" $SLACK_URL
diff --git a/flakes/private/monitoring/plugins/send_nrdp.sh b/flakes/private/monitoring/plugins/send_nrdp.sh
new file mode 100755
index 0000000..c83c8cb
--- /dev/null
+++ b/flakes/private/monitoring/plugins/send_nrdp.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+TEMPLATE='{
+ "cmd": "submitcheck",
+ "token": $token,
+ "checkresult": [{
+ "hostname": $hostname,
+ "state": $state,
+ "output": $output,
+ "type": $type,
+ "servicename": $servicename
+ }]
+}'
+
+while getopts "u:t:H:s:S:o:" option
+do
+ case $option in
+ u) url=$OPTARG ;;
+ t) token=$OPTARG ;;
+ H) hostname=$OPTARG ;;
+ s) servicename=$OPTARG ;;
+ S) state=$OPTARG ;;
+ o) output=$OPTARG ;;
+ esac
+done
+
+if [ -n "$servicename" ]; then
+ checktype="service"
+else
+ checktype="host"
+fi
+
+payload=$(jq -n \
+ --arg type "$checktype" \
+ --arg hostname "$hostname" \
+ --arg servicename "$servicename" \
+ --arg output "$output" \
+ --arg token "$token" \
+ --arg state "$state" \
+ "$TEMPLATE")
+
+rslt=$(curl -f --silent --insecure -d "$payload" -H "Content-Type: application/json" "$url")
+ret=$?
+
+if [ $ret != 0 ];then
+ echo "ERROR: could not connect to NRDP server at $url"
+ exit 1
+fi
+
+status=$(echo "$rslt" | jq -r .status)
+message=$(echo "$rslt" | jq -r .message)
+
+if [ "$status" != "ok" ];then
+ echo "ERROR: The NRDP Server said $message"
+ exit 2
+fi
+echo "Sent 1 checks to $url"
diff --git a/flakes/private/monitoring/send_mails b/flakes/private/monitoring/send_mails
new file mode 100755
index 0000000..105c505
--- /dev/null
+++ b/flakes/private/monitoring/send_mails
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+
+CHECK_DIR=$1
+shift
+RETURN_PATH=$1
+shift
+
+for mail in "$@"; do
+ echo "Test Mail" | MAILRC=/dev/null mail -n -r "$RETURN_PATH" -s "TestMailImmae " "$mail"
+done
+
+if [ -d "$CHECK_DIR" ]; then
+ cd $CHECK_DIR
+ stat -c '%n;%y' *
+fi
diff --git a/flakes/private/monitoring/to_objects.nix b/flakes/private/monitoring/to_objects.nix
new file mode 100644
index 0000000..57a71ad
--- /dev/null
+++ b/flakes/private/monitoring/to_objects.nix
@@ -0,0 +1,77 @@
+{ lib }:
+ with lib.attrsets;
+ with lib.strings;
+ with lib.lists;
+ with lib.trivial;
+let
+ pad = width: str: let
+ padWidth = width - stringLength str;
+ padding = concatStrings (genList (const " ") padWidth);
+ in str + optionalString (padWidth > 0) padding;
+ toStr = k: v:
+ if k == "check_command" && builtins.isList v
+ then builtins.concatStringsSep "!" v
+ else builtins.toString v;
+
+ toService = service: ''
+ define service {
+ ${builtins.concatStringsSep "\n" (mapAttrsToList (k: v:
+ " ${pad 30 k} ${toStr k v}"
+ ) (filterAttrs (k: v: ! hasPrefix "__passive_" k) service))}
+ }
+ '';
+ toServices = services: builtins.concatStringsSep "\n" (map toService services);
+
+ toCommand = k: v: ''
+ define command {
+ ${pad 30 "command_name"} ${k}
+ ${pad 30 "command_line"} ${v}
+ }
+ '';
+ toCommands = a: builtins.concatStringsSep "\n" (mapAttrsToList toCommand a);
+
+ toOther = keyname: k: v: ''
+ define ${keyname} {
+ ${pad 30 "${keyname}_name"} ${k}
+ ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv:
+ " ${pad 30 kk} ${vv}"
+ ) v)}
+ }
+ '';
+ toOtherNoName = keyname: v: ''
+ define ${keyname} {
+ ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv:
+ " ${pad 30 kk} ${vv}"
+ ) v)}
+ }
+ '';
+ toOthers = keyname: a: builtins.concatStringsSep "\n" (mapAttrsToList (toOther keyname) a);
+ toOthersArray = keyname: a: builtins.concatStringsSep "\n" (map (toOtherNoName keyname) a);
+
+ toTemplate = keyname: k: v: ''
+ define ${keyname} {
+ ${pad 30 "name"} ${k}
+ ${pad 30 "register"} 0
+ ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv:
+ " ${pad 30 kk} ${builtins.toString vv}"
+ ) v)}
+ }
+ '';
+ toTemplates' = keyname: a: builtins.concatStringsSep "\n" (mapAttrsToList (toTemplate keyname) a);
+ toTemplates = v: builtins.concatStringsSep "\n" (mapAttrsToList toTemplates' v);
+
+ toObjects' = keyname: v:
+ if keyname == "service"
+ then toServices v
+ else if keyname == "command"
+ then toCommands v
+ else if keyname == "templates"
+ then toTemplates v
+ else if builtins.elem keyname ["hostgroup" "host" "contactgroup" "contact" "timeperiod" "servicegroup"]
+ then toOthers keyname v
+ else if builtins.elem keyname ["servicedependency" "hostdependency"]
+ then toOthersArray keyname v
+ else builtins.trace ("Warning: unknown object type " + keyname) "";
+ toObjects = v: builtins.concatStringsSep "\n" (mapAttrsToList toObjects' v);
+in
+ toObjects
diff --git a/flakes/private/openarc/flake.lock b/flakes/private/openarc/flake.lock
index be75993..60b0fdf 100644
--- a/flakes/private/openarc/flake.lock
+++ b/flakes/private/openarc/flake.lock
@@ -2,7 +2,8 @@
"nodes": {
"files-watcher": {
"locked": {
- "narHash": "sha256-6urOJuzXsu4HJHyVmrZHd40SMzzTeHiOiDOM40q53Y0=",
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
"path": "../../files-watcher",
"type": "path"
},
@@ -26,68 +27,19 @@
"type": "github"
}
},
- "my-lib": {
- "inputs": {
- "nixpkgs": "nixpkgs"
- },
+ "myuids": {
"locked": {
- "narHash": "sha256-HGNP1eH7b42BxViYx/F3ZPO9CM1X+5qfA9JoP2ArN+s=",
- "path": "../../lib",
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
"type": "path"
},
"original": {
- "path": "../../lib",
+ "path": "../myuids",
"type": "path"
}
},
- "myuids": {
- "locked": {
- "dir": "flakes/myuids",
- "lastModified": 1628207001,
- "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=",
- "ref": "master",
- "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
- "revCount": 865,
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
- },
- "original": {
- "dir": "flakes/myuids",
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
- }
- },
- "nix-lib": {
- "locked": {
- "lastModified": 1633008342,
- "narHash": "sha256-wZV5YidnsqV/iufDIhaZip3LzwUGeIt8wtdiGS5+cXc=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "6eae8a116011f4db0aa5146f364820024411d6bb",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
"nixpkgs": {
- "locked": {
- "lastModified": 1631570365,
- "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_2": {
"locked": {
"lastModified": 1597943282,
"narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
@@ -106,11 +58,12 @@
"inputs": {
"flake-utils": "flake-utils",
"myuids": "myuids",
- "nixpkgs": "nixpkgs_2",
+ "nixpkgs": "nixpkgs",
"openarc": "openarc_2"
},
"locked": {
- "narHash": "sha256-ilrfNs6jpi1OceDE3y1atkovECx6PKNWubwLc0Sjx+s=",
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
"path": "../../openarc",
"type": "path"
},
@@ -138,15 +91,14 @@
"root": {
"inputs": {
"files-watcher": "files-watcher",
- "my-lib": "my-lib",
- "nix-lib": "nix-lib",
"openarc": "openarc",
"secrets": "secrets"
}
},
"secrets": {
"locked": {
- "narHash": "sha256-w3u1bMEJHCg9SqErJ5Qi0sTX2xx7mk+HrHZXzpjQd1w=",
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
"path": "../../secrets",
"type": "path"
},
diff --git a/flakes/private/openarc/flake.nix b/flakes/private/openarc/flake.nix
index b4ab4c8..56c3a1a 100644
--- a/flakes/private/openarc/flake.nix
+++ b/flakes/private/openarc/flake.nix
@@ -1,63 +1,47 @@
{
- inputs.openarc = {
- path = "../../openarc";
- type = "path";
- };
- inputs.secrets = {
- path = "../../secrets";
- type = "path";
- };
- inputs.files-watcher = {
- path = "../../files-watcher";
- type = "path";
- };
- inputs.my-lib = {
- path = "../../lib";
- type = "path";
- };
- inputs.nix-lib.url = "github:NixOS/nixpkgs";
+ inputs.openarc.url = "path:../../openarc";
+ inputs.secrets.url = "path:../../secrets";
+ inputs.files-watcher.url = "path:../../files-watcher";
description = "Private configuration for openarc";
- outputs = { self, nix-lib, my-lib, files-watcher, openarc, secrets }:
- let
- cfg = name': { config, lib, pkgs, name, ... }: {
- imports = [
- (my-lib.lib.withNarKey files-watcher "nixosModule")
- (my-lib.lib.withNarKey openarc "nixosModule")
- (my-lib.lib.withNarKey secrets "nixosModule")
- ];
- config = lib.mkIf (name == name') {
- services.openarc = {
- enable = true;
- user = "opendkim";
- socket = "/run/openarc/openarc.sock";
- group = config.services.postfix.group;
- configFile = pkgs.writeText "openarc.conf" ''
- AuthservID mail.immae.eu
- Domain mail.immae.eu
- KeyFile ${config.secrets.fullPaths."opendkim/eldiron.private"}
- Mode sv
- Selector eldiron
- SoftwareHeader yes
- Syslog Yes
- '';
- };
- systemd.services.openarc.serviceConfig.Slice = "mail.slice";
- systemd.services.openarc.postStart = ''
- while [ ! -S ${config.services.openarc.socket} ]; do
- sleep 0.5
- done
- chmod g+w ${config.services.openarc.socket}
+ outputs = { self, files-watcher, openarc, secrets }: {
+ nixosModule = self.nixosModules.openarc;
+ nixosModules.openarc = { config, pkgs, ... }: {
+ imports = [
+ files-watcher.nixosModule
+ openarc.nixosModule
+ secrets.nixosModule
+ ];
+ config = {
+ services.openarc = {
+ enable = true;
+ user = "opendkim";
+ socket = "/run/openarc/openarc.sock";
+ group = config.services.postfix.group;
+ configFile = pkgs.writeText "openarc.conf" ''
+ AuthservID mail.immae.eu
+ Domain mail.immae.eu
+ KeyFile ${config.secrets.fullPaths."opendkim/eldiron.private"}
+ Mode sv
+ Selector eldiron
+ SoftwareHeader yes
+ Syslog Yes
'';
- services.filesWatcher.openarc = {
- restart = true;
- paths = [
- config.secrets.fullPaths."opendkim/eldiron.private"
- ];
- };
+ };
+ systemd.services.openarc.serviceConfig.Slice = "mail.slice";
+ systemd.services.openarc.postStart = ''
+ while [ ! -S ${config.services.openarc.socket} ]; do
+ sleep 0.5
+ done
+ chmod g+w ${config.services.openarc.socket}
+ '';
+ services.filesWatcher.openarc = {
+ restart = true;
+ paths = [
+ config.secrets.fullPaths."opendkim/eldiron.private"
+ ];
};
};
- in
- openarc.outputs //
- { nixosModules = openarc.nixosModules or {} // nix-lib.lib.genAttrs ["eldiron" "backup-2"] cfg; };
+ };
+ };
}
diff --git a/flakes/private/opendmarc/flake.lock b/flakes/private/opendmarc/flake.lock
index f40e1a9..fdd4d64 100644
--- a/flakes/private/opendmarc/flake.lock
+++ b/flakes/private/opendmarc/flake.lock
@@ -1,8 +1,21 @@
{
"nodes": {
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
"files-watcher": {
"locked": {
- "narHash": "sha256-6urOJuzXsu4HJHyVmrZHd40SMzzTeHiOiDOM40q53Y0=",
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
"path": "../../files-watcher",
"type": "path"
},
@@ -26,68 +39,19 @@
"type": "github"
}
},
- "my-lib": {
- "inputs": {
- "nixpkgs": "nixpkgs"
- },
+ "myuids": {
"locked": {
- "narHash": "sha256-HGNP1eH7b42BxViYx/F3ZPO9CM1X+5qfA9JoP2ArN+s=",
- "path": "../../lib",
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
"type": "path"
},
"original": {
- "path": "../../lib",
+ "path": "../myuids",
"type": "path"
}
},
- "myuids": {
- "locked": {
- "dir": "flakes/myuids",
- "lastModified": 1628207001,
- "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=",
- "ref": "master",
- "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
- "revCount": 865,
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
- },
- "original": {
- "dir": "flakes/myuids",
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
- }
- },
- "nix-lib": {
- "locked": {
- "lastModified": 1633008342,
- "narHash": "sha256-wZV5YidnsqV/iufDIhaZip3LzwUGeIt8wtdiGS5+cXc=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "6eae8a116011f4db0aa5146f364820024411d6bb",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
"nixpkgs": {
- "locked": {
- "lastModified": 1631570365,
- "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_2": {
"locked": {
"lastModified": 1597943282,
"narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
@@ -106,10 +70,11 @@
"inputs": {
"flake-utils": "flake-utils",
"myuids": "myuids",
- "nixpkgs": "nixpkgs_2"
+ "nixpkgs": "nixpkgs"
},
"locked": {
- "narHash": "sha256-7jup/d3+WXXWsNMB7Sp5Py4rJQV30Z5+PJITBISbQ9o=",
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
"path": "../../opendmarc",
"type": "path"
},
@@ -120,16 +85,16 @@
},
"root": {
"inputs": {
+ "environment": "environment",
"files-watcher": "files-watcher",
- "my-lib": "my-lib",
- "nix-lib": "nix-lib",
"opendmarc": "opendmarc",
"secrets": "secrets"
}
},
"secrets": {
"locked": {
- "narHash": "sha256-w3u1bMEJHCg9SqErJ5Qi0sTX2xx7mk+HrHZXzpjQd1w=",
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
"path": "../../secrets",
"type": "path"
},
diff --git a/flakes/private/opendmarc/flake.nix b/flakes/private/opendmarc/flake.nix
index e2575e7..7e9e8eb 100644
--- a/flakes/private/opendmarc/flake.nix
+++ b/flakes/private/opendmarc/flake.nix
@@ -1,77 +1,62 @@
{
- inputs.opendmarc = {
- path = "../../opendmarc";
- type = "path";
- };
- inputs.secrets = {
- path = "../../secrets";
- type = "path";
- };
- inputs.files-watcher = {
- path = "../../files-watcher";
- type = "path";
- };
- inputs.my-lib = {
- path = "../../lib";
- type = "path";
- };
- inputs.nix-lib.url = "github:NixOS/nixpkgs";
+ inputs.opendmarc.url = "path:../../opendmarc";
+ inputs.environment.url = "path:../environment";
+ inputs.secrets.url = "path:../../secrets";
+ inputs.files-watcher.url = "path:../../files-watcher";
description = "Private configuration for opendmarc";
- outputs = { self, nix-lib, opendmarc, my-lib, files-watcher, secrets }:
- let
- cfg = name': { config, lib, pkgs, name, ... }: {
- imports = [
- (my-lib.lib.withNarKey files-watcher "nixosModule")
- (my-lib.lib.withNarKey opendmarc "nixosModule")
- (my-lib.lib.withNarKey secrets "nixosModule")
- ];
- config = lib.mkIf (name == name') {
- users.users."${config.services.opendmarc.user}".extraGroups = [ "keys" ];
- systemd.services.opendmarc.serviceConfig.Slice = "mail.slice";
- services.opendmarc = {
- enable = true;
- socket = "/run/opendmarc/opendmarc.sock";
- configFile = pkgs.writeText "opendmarc.conf" ''
- AuthservID HOSTNAME
- FailureReports false
- FailureReportsBcc postmaster@immae.eu
- FailureReportsOnNone true
- FailureReportsSentBy postmaster@immae.eu
- IgnoreAuthenticatedClients true
- IgnoreHosts ${config.secrets.fullPaths."opendmarc/ignore.hosts"}
- SoftwareHeader true
- SPFIgnoreResults true
- SPFSelfValidate true
- UMask 002
- '';
- group = config.services.postfix.group;
- };
- services.filesWatcher.opendmarc = {
- restart = true;
- paths = [
- config.secrets.fullPaths."opendmarc/ignore.hosts"
- ];
- };
- secrets.keys = {
- "opendmarc/ignore.hosts" = {
- user = config.services.opendmarc.user;
- group = config.services.opendmarc.group;
- permissions = "0400";
- text = let
- mxes = lib.attrsets.filterAttrs
- (n: v: v.mx.enable)
- config.myEnv.servers;
- in
- builtins.concatStringsSep "\n" ([
- config.myEnv.mail.dmarc.ignore_hosts
- ] ++ lib.mapAttrsToList (n: v: v.fqdn) mxes);
- };
+ outputs = { self, environment, opendmarc, files-watcher, secrets }: {
+ nixosModule = self.nixosModules.opendmarc;
+ nixosModules.opendmarc = { config, lib, pkgs, ... }: {
+ imports = [
+ environment.nixosModule
+ files-watcher.nixosModule
+ opendmarc.nixosModule
+ secrets.nixosModule
+ ];
+ config = {
+ users.users."${config.services.opendmarc.user}".extraGroups = [ "keys" ];
+ systemd.services.opendmarc.serviceConfig.Slice = "mail.slice";
+ services.opendmarc = {
+ enable = true;
+ socket = "/run/opendmarc/opendmarc.sock";
+ configFile = pkgs.writeText "opendmarc.conf" ''
+ AuthservID HOSTNAME
+ FailureReports false
+ FailureReportsBcc postmaster@immae.eu
+ FailureReportsOnNone true
+ FailureReportsSentBy postmaster@immae.eu
+ IgnoreAuthenticatedClients true
+ IgnoreHosts ${config.secrets.fullPaths."opendmarc/ignore.hosts"}
+ SoftwareHeader true
+ SPFIgnoreResults true
+ SPFSelfValidate true
+ UMask 002
+ '';
+ group = config.services.postfix.group;
+ };
+ services.filesWatcher.opendmarc = {
+ restart = true;
+ paths = [
+ config.secrets.fullPaths."opendmarc/ignore.hosts"
+ ];
+ };
+ secrets.keys = {
+ "opendmarc/ignore.hosts" = {
+ user = config.services.opendmarc.user;
+ group = config.services.opendmarc.group;
+ permissions = "0400";
+ text = let
+ mxes = lib.attrsets.filterAttrs
+ (n: v: v.mx.enable)
+ config.myEnv.servers;
+ in
+ builtins.concatStringsSep "\n" ([
+ config.myEnv.mail.dmarc.ignore_hosts
+ ] ++ lib.mapAttrsToList (n: v: v.fqdn) mxes);
};
};
};
- in
- opendmarc.outputs //
- { nixosModules = opendmarc.nixosModules or {} // nix-lib.lib.genAttrs ["eldiron" "backup-2"] cfg; };
+ };
+ };
}
-
diff --git a/flakes/private/openldap/flake.nix b/flakes/private/openldap/flake.nix
new file mode 100644
index 0000000..130312d
--- /dev/null
+++ b/flakes/private/openldap/flake.nix
@@ -0,0 +1,6 @@
+{
+ outputs = { self }: {
+ immae-schema = ./immae.schema;
+ immae-ldif = ./immae.ldif;
+ };
+}
diff --git a/flakes/private/openldap/immae.ldif b/flakes/private/openldap/immae.ldif
new file mode 100644
index 0000000..f1b4cb7
--- /dev/null
+++ b/flakes/private/openldap/immae.ldif
@@ -0,0 +1,83 @@
+# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
+# CRC32 22130f5f
+dn: cn=immae,cn=schema,cn=config
+objectClass: olcSchemaConfig
+cn: immae
+olcObjectIdentifier: {0}Immaeroot 1.3.6.1.4.1.50071
+olcObjectIdentifier: {1}Immae Immaeroot:2
+olcObjectIdentifier: {2}ImmaeattributeType Immae:3
+olcObjectIdentifier: {3}ImmaeobjectClass Immae:4
+olcAttributeTypes: {0}( ImmaeattributeType:1 NAME 'immaeTtrssLogin' DESC 'lo
+ gin for TTRSS' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SY
+ NTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+olcAttributeTypes: {1}( ImmaeattributeType:2 NAME 'immaeFtpDirectory' DESC '
+ home directory for ftp' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.
+ 115.121.1.26 )
+olcAttributeTypes: {2}( ImmaeattributeType:3 NAME 'immaeFtpUid' DESC 'user i
+ d for ftp' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+olcAttributeTypes: {3}( ImmaeattributeType:4 NAME 'immaeFtpGid' DESC 'group
+ id for ftp' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+olcAttributeTypes: {4}( ImmaeattributeType:5 NAME 'immaeSshKey' DESC 'OpenSS
+ H Public key' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.4
+ 0 )
+olcAttributeTypes: {5}( ImmaeattributeType:6 NAME 'immaeAccessDn' EQUALITY d
+ istinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+olcAttributeTypes: {6}( ImmaeattributeType:17 NAME 'immaeAccessWriteDn' EQUA
+ LITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+olcAttributeTypes: {7}( ImmaeattributeType:18 NAME 'immaeAccessReadSubtree'
+ EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+olcAttributeTypes: {8}( ImmaeattributeType:7 NAME 'immaeXmppUid' DESC 'user
+ part for Xmpp' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SY
+ NTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+olcAttributeTypes: {9}( ImmaeattributeType:8 NAME 'immaePostfixAddress' DESC
+ 'the dovecot address to match as username' EQUALITY caseIgnoreIA5Match SUB
+ STR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
+ )
+olcAttributeTypes: {10}( ImmaeattributeType:9 NAME 'immaePostfixHome' DESC '
+ the postfix home directory' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1
+ 466.115.121.1.26 SINGLE-VALUE )
+olcAttributeTypes: {11}( ImmaeattributeType:10 NAME 'immaePostfixMail' DESC
+ 'the dovecot mail location' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1
+ 466.115.121.1.26 SINGLE-VALUE )
+olcAttributeTypes: {12}( ImmaeattributeType:11 NAME 'immaePostfixUid' DESC '
+ the dovecot uid' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121
+ .1.26 SINGLE-VALUE )
+olcAttributeTypes: {13}( ImmaeattributeType:12 NAME 'immaePostfixGid' DESC '
+ the dovecot gid' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121
+ .1.26 SINGLE-VALUE )
+olcAttributeTypes: {14}( ImmaeattributeType:16 NAME 'immaePuppetJson' DESC '
+ Puppet hiera json' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.12
+ 1.1.40 )
+olcAttributeTypes: {15}( ImmaeattributeType:19 NAME 'immaeTaskId' DESC 'Task
+ warrior server Org:Name:Key' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubs
+ tringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+olcAttributeTypes: {16}( ImmaeattributeType:20 NAME 'immaePeertubeId' DESC '
+ login for Peertube' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMat
+ ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+olcObjectClasses: {0}( ImmaeobjectClass:1 NAME 'immaeTtrssClass' DESC 'Expan
+ sion of the existing object classes for ttrss' SUP top AUXILIARY MUST immae
+ TtrssLogin )
+olcObjectClasses: {1}( ImmaeobjectClass:2 NAME 'immaeFtpClass' DESC 'Expansi
+ on of the existing object classes for ftp' SUP top AUXILIARY MUST ( immaeFt
+ pDirectory $ immaeFtpGid $ immaeFtpUid ) )
+olcObjectClasses: {2}( ImmaeobjectClass:3 NAME 'immaeSshClass' DESC 'OpenSSH
+ class' SUP top AUXILIARY MAY immaeSSHKey )
+olcObjectClasses: {3}( ImmaeobjectClass:4 NAME 'immaeAccessClass' DESC 'Acce
+ ss class' SUP top AUXILIARY MAY ( immaeAccessDn $ immaeAccessWriteDn $ imma
+ eAccessReadSubtree ) )
+olcObjectClasses: {4}( ImmaeobjectClass:5 NAME 'immaeXmppClass' DESC 'Expans
+ ion of the existing object classes for XMPP' SUP top AUXILIARY MUST immaeXm
+ ppUid )
+olcObjectClasses: {5}( ImmaeobjectClass:6 NAME 'immaePostfixClass' DESC 'Exp
+ ansion of the existing object classes for Postfix' SUP top AUXILIARY MAY (
+ immaePostfixHome $ immaePostfixMail $ immaePostfixUid $ immaePostfixGid ) M
+ UST ( immaePostfixAddress ) )
+olcObjectClasses: {6}( ImmaeobjectClass:8 NAME 'immaePuppetClass' DESC 'Expa
+ nsion of the existing object classes for Puppet' SUP top AUXILIARY MUST imm
+ aePuppetJson )
+olcObjectClasses: {7}( ImmaeobjectClass:9 NAME 'immaeTaskClass' DESC 'Expans
+ ion of the existing object classes for Task' SUP top AUXILIARY MUST immaeTa
+ skId )
+olcObjectClasses: {8}( ImmaeobjectClass:10 NAME 'immaePeertubeClass' DESC 'E
+ xpansion of the existing object classes for peertube' SUP top AUXILIARY MUS
+ T immaePeertubeId )
diff --git a/flakes/private/openldap/immae.schema b/flakes/private/openldap/immae.schema
new file mode 100644
index 0000000..7b3b587
--- /dev/null
+++ b/flakes/private/openldap/immae.schema
@@ -0,0 +1,179 @@
+# vim: set filetype=slapd:
+objectIdentifier Immaeroot 1.3.6.1.4.1.50071
+
+objectIdentifier Immae Immaeroot:2
+objectIdentifier ImmaeattributeType Immae:3
+objectIdentifier ImmaeobjectClass Immae:4
+
+# TT-RSS
+attributetype ( ImmaeattributeType:1 NAME 'immaeTtrssLogin'
+ DESC 'login for TTRSS'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+objectclass ( ImmaeobjectClass:1 NAME 'immaeTtrssClass'
+ DESC 'Expansion of the existing object classes for ttrss'
+ SUP top AUXILIARY
+ MUST ( immaeTtrssLogin ) )
+
+# FTP
+attributetype ( ImmaeattributeType:2 NAME 'immaeFtpDirectory'
+ DESC 'home directory for ftp'
+ EQUALITY caseExactIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( ImmaeattributeType:3 NAME 'immaeFtpUid'
+ DESC 'user id for ftp'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+attributetype ( ImmaeattributeType:4 NAME 'immaeFtpGid'
+ DESC 'group id for ftp'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+objectclass ( ImmaeobjectClass:2 NAME 'immaeFtpClass'
+ DESC 'Expansion of the existing object classes for ftp'
+ SUP top AUXILIARY
+ MUST ( immaeFtpDirectory $ immaeFtpGid $ immaeFtpUid ) )
+
+
+# SSH keys
+attributetype ( ImmaeattributeType:5 NAME 'immaeSshKey'
+ DESC 'OpenSSH Public key'
+ EQUALITY octetStringMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
+
+objectClass ( ImmaeobjectClass:3 NAME 'immaeSshClass'
+ DESC 'OpenSSH class'
+ SUP top AUXILIARY
+ MAy ( immaeSSHKey ) )
+
+# Specific access
+attributetype (ImmaeattributeType:6 NAME 'immaeAccessDn'
+ EQUALITY distinguishedNameMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+
+attributetype (ImmaeattributeType:17 NAME 'immaeAccessWriteDn'
+ EQUALITY distinguishedNameMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+
+attributetype (ImmaeattributeType:18 NAME 'immaeAccessReadSubtree'
+ EQUALITY distinguishedNameMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+
+objectClass ( ImmaeobjectClass:4 NAME 'immaeAccessClass'
+ DESC 'Access class'
+ SUP top AUXILIARY
+ MAY ( immaeAccessDn $ immaeAccessWriteDn $ immaeAccessReadSubtree ) )
+
+# Xmpp uid
+attributetype ( ImmaeattributeType:7 NAME 'immaeXmppUid'
+ DESC 'user part for Xmpp'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+objectclass ( ImmaeobjectClass:5 NAME 'immaeXmppClass'
+ DESC 'Expansion of the existing object classes for XMPP'
+ SUP top AUXILIARY
+ MUST ( immaeXmppUid ) )
+
+# Postfix accounts
+attributetype ( ImmaeattributeType:8 NAME 'immaePostfixAddress'
+ DESC 'the dovecot address to match as username'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+
+attributetype ( ImmaeattributeType:9 NAME 'immaePostfixHome'
+ DESC 'the postfix home directory'
+ EQUALITY caseExactIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
+
+attributetype ( ImmaeattributeType:10 NAME 'immaePostfixMail'
+ DESC 'the dovecot mail location'
+ EQUALITY caseExactIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
+
+attributetype ( ImmaeattributeType:11 NAME 'immaePostfixUid'
+ DESC 'the dovecot uid'
+ EQUALITY caseExactIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
+
+attributetype ( ImmaeattributeType:12 NAME 'immaePostfixGid'
+ DESC 'the dovecot gid'
+ EQUALITY caseExactIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
+
+objectclass ( ImmaeobjectClass:6 NAME 'immaePostfixClass'
+ DESC 'Expansion of the existing object classes for Postfix'
+ SUP top AUXILIARY
+ MAY ( immaePostfixHome $ immaePostfixMail $ immaePostfixUid $ immaePostfixGid )
+ MUST ( immaePostfixAddress )
+ )
+
+# Tinc informations
+# Domaine = une classe a part ou une partie du dn ?
+# attributetype ( ImmaeattributeType:13 NAME 'immaeTincIpSegment'
+# DESC 'the internal ip segment in tinc'
+# EQUALITY caseIgnoreIA5Match
+# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+#
+# attributetype ( ImmaeattributeType:14 NAME 'immaeTincSubdomain'
+# DESC 'the host subdomain'
+# EQUALITY caseIgnoreIA5Match
+# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+#
+# attributetype ( ImmaeattributeType:15 NAME 'immaeTincHostname'
+# DESC 'the host name'
+# EQUALITY caseIgnoreIA5Match
+# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+#
+# objectclass ( ImmaeobjectClass:7 NAME 'immaeTincHostClass'
+# DESC 'Expansion of the existing object classes for Tinc'
+# SUP top AUXILIARY
+# MUST ( immaeTincInternalIp $ immaeTincSubdomain $
+# immaeTincHostname )
+# )
+
+attributetype (ImmaeattributeType:16 NAME 'immaePuppetJson'
+ DESC 'Puppet hiera json'
+ EQUALITY octetStringMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
+
+objectclass ( ImmaeobjectClass:8 NAME 'immaePuppetClass'
+ DESC 'Expansion of the existing object classes for Puppet'
+ SUP top AUXILIARY
+ MUST ( immaePuppetJson )
+ )
+
+attributetype (ImmaeattributeType:19 NAME 'immaeTaskId'
+ DESC 'Taskwarrior server Org:Name:Key'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+objectclass ( ImmaeobjectClass:9 NAME 'immaeTaskClass'
+ DESC 'Expansion of the existing object classes for Task'
+ SUP top AUXILIARY
+ MUST ( immaeTaskId )
+ )
+
+# Peertube uid
+attributetype ( ImmaeattributeType:20 NAME 'immaePeertubeId'
+ DESC 'login for Peertube'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+objectclass ( ImmaeobjectClass:10 NAME 'immaePeertubeClass'
+ DESC 'Expansion of the existing object classes for peertube'
+ SUP top AUXILIARY
+ MUST ( immaePeertubeId ) )
+
+
+# Last:
+# attributetype ( ImmaeattributeType:20 NAME 'immaePeertubeId'
+# objectclass ( ImmaeobjectClass:10 NAME 'immaePeertubeClass'
diff --git a/flakes/private/paste/flake.lock b/flakes/private/paste/flake.lock
index 6ad428c..e81b9ee 100644
--- a/flakes/private/paste/flake.lock
+++ b/flakes/private/paste/flake.lock
@@ -15,35 +15,6 @@
"type": "github"
}
},
- "my-lib": {
- "inputs": {
- "nixpkgs": "nixpkgs"
- },
- "locked": {
- "narHash": "sha256-HGNP1eH7b42BxViYx/F3ZPO9CM1X+5qfA9JoP2ArN+s=",
- "path": "../../lib",
- "type": "path"
- },
- "original": {
- "path": "../../lib",
- "type": "path"
- }
- },
- "nix-lib": {
- "locked": {
- "lastModified": 1632955135,
- "narHash": "sha256-MyOBftnLv5UcPCL4AzvlyNEDwGD2cGGM9HMEOno/MZw=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "a4d96cd808f13d924988938ecf9a46b2a2787fa3",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
"nixpkgs": {
"locked": {
"lastModified": 1631570365,
@@ -59,28 +30,14 @@
"type": "github"
}
},
- "nixpkgs_2": {
- "locked": {
- "lastModified": 1631570365,
- "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
"paste": {
"inputs": {
"flake-utils": "flake-utils",
- "nixpkgs": "nixpkgs_2"
+ "nixpkgs": "nixpkgs"
},
"locked": {
- "narHash": "sha256-2ylI42ZHfzW6oCsxfFyHf5zVnDsPMwvJCACtcdErtPg=",
+ "lastModified": 1,
+ "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
"path": "../../paste",
"type": "path"
},
@@ -91,8 +48,6 @@
},
"root": {
"inputs": {
- "my-lib": "my-lib",
- "nix-lib": "nix-lib",
"paste": "paste"
}
}
diff --git a/flakes/private/paste/flake.nix b/flakes/private/paste/flake.nix
index 23f8cd3..97853ea 100644
--- a/flakes/private/paste/flake.nix
+++ b/flakes/private/paste/flake.nix
@@ -1,30 +1,20 @@
{
- inputs.paste = {
- path = "../../paste";
- type = "path";
- };
- inputs.my-lib = {
- path = "../../lib";
- type = "path";
- };
- inputs.nix-lib.url = "github:NixOS/nixpkgs";
+ inputs.paste.url = "path:../../paste";
description = "Private configuration for paste";
- outputs = { self, my-lib, nix-lib, paste }:
- let
- cfg = name': { config, lib, pkgs, name, ... }: {
- imports = [
- (my-lib.lib.withNarKey paste "nixosModule")
- ];
- config = lib.mkIf (name == name') {
- services.paste = {
- enable = true;
- webDirectory = "/paste";
- };
+ outputs = { self, paste }: {
+ nixosModule = self.nixosModules.paste;
+ nixosModules.paste = { ... }: {
+ imports = [
+ paste.nixosModule
+ ];
+ config = {
+ services.paste = {
+ enable = true;
+ webDirectory = "/paste";
};
};
- in
- paste.outputs //
- { nixosModules = paste.nixosModules or {} // nix-lib.lib.genAttrs ["eldiron"] cfg; };
+ };
+ };
}
diff --git a/flakes/private/peertube/flake.lock b/flakes/private/peertube/flake.lock
index 4944da7..0ecec47 100644
--- a/flakes/private/peertube/flake.lock
+++ b/flakes/private/peertube/flake.lock
@@ -32,36 +32,26 @@
},
"myuids": {
"locked": {
- "dir": "flakes/myuids",
- "lastModified": 1628207001,
- "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=",
- "ref": "master",
- "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
- "revCount": 865,
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
},
"original": {
- "dir": "flakes/myuids",
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
+ "path": "../myuids",
+ "type": "path"
}
},
"myuids_2": {
"locked": {
- "dir": "flakes/myuids",
- "lastModified": 1628207001,
- "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=",
- "ref": "master",
- "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
- "revCount": 865,
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
},
"original": {
- "dir": "flakes/myuids",
- "type": "git",
- "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
+ "path": "../myuids",
+ "type": "path"
}
},
"nixpkgs": {
@@ -97,12 +87,13 @@
"peertube": {
"flake": false,
"locked": {
- "lastModified": 1610436329,
- "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
- "owner": "Chocobozzz",
- "repo": "PeerTube",
- "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
- "type": "github"
+ "lastModified": 1611184594,
+ "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=",
+ "ref": "gitolite_local/open_instance",
+ "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3",
+ "revCount": 6316,
+ "type": "git",
+ "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
},
"original": {
"owner": "Chocobozzz",
@@ -114,21 +105,21 @@
"peertube_2": {
"flake": false,
"locked": {
- "lastModified": 1611184594,
- "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=",
- "ref": "gitolite_local/syden",
- "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3",
- "revCount": 6316,
- "type": "git",
- "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
},
"original": {
- "ref": "gitolite_local/syden",
- "type": "git",
- "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
}
},
- "peertube_origin": {
+ "peertube_open_instance": {
"inputs": {
"flake-utils": "flake-utils",
"myuids": "myuids",
@@ -136,16 +127,17 @@
"peertube": "peertube"
},
"locked": {
- "narHash": "sha256-ESrcCrx7QmNk8MHgws9KrPEZqIxKNQ6bcshbUPj9u88=",
- "path": "../../peertube",
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
"type": "path"
},
"original": {
- "path": "../../peertube",
+ "path": "./../../peertube",
"type": "path"
}
},
- "peertube_syden": {
+ "peertube_origin": {
"inputs": {
"flake-utils": "flake-utils_2",
"myuids": "myuids_2",
@@ -153,19 +145,20 @@
"peertube": "peertube_2"
},
"locked": {
- "narHash": "sha256-ESrcCrx7QmNk8MHgws9KrPEZqIxKNQ6bcshbUPj9u88=",
- "path": "../../peertube",
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
"type": "path"
},
"original": {
- "path": "../../peertube",
+ "path": "./../../peertube",
"type": "path"
}
},
"root": {
"inputs": {
- "peertube_origin": "peertube_origin",
- "peertube_syden": "peertube_syden"
+ "peertube_open_instance": "peertube_open_instance",
+ "peertube_origin": "peertube_origin"
}
}
},
diff --git a/flakes/private/peertube/flake.nix b/flakes/private/peertube/flake.nix
index e0e0d54..8eb81e9 100644
--- a/flakes/private/peertube/flake.nix
+++ b/flakes/private/peertube/flake.nix
@@ -1,27 +1,25 @@
{
description = "Patched peertube";
inputs.peertube_origin = {
- path = "../../peertube";
- type = "path";
+ url = "path:./../../peertube";
};
- inputs.peertube_syden = {
- path = "../../peertube";
- type = "path";
+ inputs.peertube_open_instance = {
+ url = "path:./../../peertube";
inputs.peertube = {
url = "https://git.immae.eu/github/Chocobozzz/PeerTube.git";
- ref = "gitolite_local/syden";
+ ref = "gitolite_local/open_instance";
flake = false;
type = "git";
};
};
- outputs = { self, peertube_origin, peertube_syden }: {
+ outputs = { self, peertube_origin, peertube_open_instance }: {
overlays = {
- peertube_syden = final: prev: { peertube_syden = peertube_syden.defaultPackage."${final.system}"; };
+ peertube_open_instance = final: prev: { peertube_open_instance = peertube_open_instance.defaultPackage."${final.system}"; };
peertube_origin = final: prev: { peertube_origin = peertube_origin.defaultPackage."${final.system}"; };
};
packages.x86_64-linux.peertube = peertube_origin.packages.x86_64-linux.peertube;
- packages.x86_64-linux.peertube_syden = peertube_syden.packages.x86_64-linux.peertube;
+ packages.x86_64-linux.peertube_open_instance = peertube_open_instance.packages.x86_64-linux.peertube;
defaultPackage.x86_64-linux = peertube_origin.defaultPackage.x86_64-linux;
nixosModule = peertube_origin.nixosModule;
};
diff --git a/flakes/private/php/flake.lock b/flakes/private/php/flake.lock
new file mode 100644
index 0000000..c9af933
--- /dev/null
+++ b/flakes/private/php/flake.lock
@@ -0,0 +1,62 @@
+{
+ "nodes": {
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs",
+ "nixpkgs-4": "nixpkgs-4"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/private/php/flake.nix b/flakes/private/php/flake.nix
new file mode 100644
index 0000000..a730b68
--- /dev/null
+++ b/flakes/private/php/flake.nix
@@ -0,0 +1,40 @@
+{
+ description = "Php old versions";
+ inputs.flake-utils.url = "github:numtide/flake-utils";
+ inputs.nixpkgs = {
+ url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
+ flake = false;
+ };
+ inputs.nixpkgs-4 = {
+ url = "github:NixOS/nixpkgs/062a0c5437b68f950b081bbfc8a699d57a4ee026";
+ flake = false;
+ };
+ outputs = { self, nixpkgs, nixpkgs-4, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
+ let
+ pkgs = import nixpkgs { inherit system; overlays = []; };
+ in rec {
+ packages = {
+ php72 = pkgs.php72;
+ php73 = pkgs.php73;
+ php74 = (import nixpkgs-4 { inherit system; overlays = []; }).php74;
+ cryptpad = (import nixpkgs-4 { inherit system; overlays = []; }).cryptpad;
+ python37 = (import nixpkgs-4 { inherit system; overlays = []; }).python37;
+ python37Packages = (import nixpkgs-4 { inherit system; overlays = []; }).python37Packages;
+ telegram-purple = (import nixpkgs-4 { inherit system; overlays = []; }).telegram-purple;
+ };
+ defaultPackage = packages.php73;
+ legacyPackages = packages;
+ }) // rec {
+ overlays = {
+ php = final: prev: {
+ php72 = self.packages."${final.system}".php72;
+ php73 = self.packages."${final.system}".php73;
+ php74 = self.packages."${final.system}".php74;
+ cryptpad = self.packages."${final.system}".cryptpad;
+ python37 = self.packages."${final.system}".python37;
+ telegram-purple = self.packages."${final.system}".telegram-purple;
+ };
+ };
+ overlay = overlays.php;
+ };
+}
diff --git a/flakes/private/ssh/flake.lock b/flakes/private/ssh/flake.lock
new file mode 100644
index 0000000..bbb2011
--- /dev/null
+++ b/flakes/private/ssh/flake.lock
@@ -0,0 +1,36 @@
+{
+ "nodes": {
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "environment": "environment",
+ "secrets": "secrets"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/private/ssh/flake.nix b/flakes/private/ssh/flake.nix
new file mode 100644
index 0000000..0ca6d67
--- /dev/null
+++ b/flakes/private/ssh/flake.nix
@@ -0,0 +1,107 @@
+{
+ inputs.environment.url = "path:../environment";
+ inputs.secrets.url = "path:../../secrets";
+ outputs = { self, environment, secrets }: {
+ nixosModule = self.nixosModules.ssh;
+ nixosModules.ssh = { lib, pkgs, config, ... }:
+ let
+ cfg = config.myServices.ssh;
+ in
+ {
+ imports = [
+ environment.nixosModule
+ secrets.nixosModule
+ ];
+ options.myServices.ssh = let
+ module = lib.types.submodule {
+ options = {
+ vars = lib.mkOption {
+ type = lib.types.attrsOf lib.types.lines;
+ default = {};
+ description = ''
+ variables to interpolate in the script. A `name_` prefix will be prepended
+ '';
+ };
+ snippet = lib.mkOption {
+ type = lib.types.lines;
+ description = ''
+ Snippet to use
+ '';
+ };
+ dependencies = lib.mkOption {
+ type = lib.types.listOf lib.types.package;
+ default = [];
+ description = ''
+ Dependencies of the package
+ '';
+ };
+ };
+ };
+ in {
+ modules = lib.mkOption {
+ type = lib.types.attrsOf module;
+ default = {};
+ description = ''
+ List of modules to enable
+ '';
+ };
+ };
+ config = lib.mkIf (builtins.length (builtins.attrValues cfg.modules) > 0) {
+
+ services.openssh.extraConfig = ''
+ AuthorizedKeysCommand /etc/ssh/ldap_authorized_keys
+ AuthorizedKeysCommandUser nobody
+ '';
+
+ secrets.keys."ssh-ldap" = {
+ user = "nobody";
+ group = "nogroup";
+ permissions = "0400";
+ text = config.myEnv.sshd.ldap.password;
+ };
+ secrets.keys."ssh-psql" = {
+ user = "nobody";
+ group = "nogroup";
+ permissions = "0400";
+ text = config.myEnv.sshd.psql.password;
+ };
+ system.activationScripts.sshd = {
+ deps = [ "secrets" ];
+ text = ''
+ install -Dm400 -o nobody -g nogroup -T ${config.secrets.fullPaths."ssh-ldap"} /etc/ssh/ldap_password
+ install -Dm400 -o nobody -g nogroup -T ${config.secrets.fullPaths."ssh-psql"} /etc/ssh/psql_password
+ '';
+ };
+ # ssh is strict about parent directory having correct rights, don't
+ # move it in the nix store.
+ environment.etc."ssh/ldap_authorized_keys" = let
+ deps = lib.lists.unique (
+ [ pkgs.which pkgs.openldap pkgs.stdenv.shellPackage pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.postgresql ]
+ ++ lib.flatten (map (v: v.dependencies) (builtins.attrValues cfg.modules))
+ );
+ vars = lib.concatMapAttrs (n: v: (
+ lib.mapAttrs' (n': lib.nameValuePair "${n}_${n'}") v.vars
+ )) cfg.modules;
+ fullScript = pkgs.runCommand "ldap_authorized_keys" (vars // {
+ snippets = builtins.concatStringsSep "\n" (map (v: v.snippet) (builtins.attrValues cfg.modules));
+ }) ''
+ substituteAll ${./ldap_authorized_keys.sh} $out
+ # Second call for the included snippets
+ substituteAllInPlace $out
+ chmod a+x $out
+ '';
+ ldap_authorized_keys = pkgs.runCommand "ldap_authorized_keys" {
+ buildInputs = [ pkgs.makeWrapper ];
+ } ''
+ makeWrapper "${fullScript}" "$out" --prefix PATH : ${lib.makeBinPath deps}
+ '';
+ in {
+ enable = true;
+ mode = "0755";
+ user = "root";
+ source = ldap_authorized_keys;
+ };
+ };
+ };
+ };
+}
diff --git a/flakes/private/ssh/ldap_authorized_keys.sh b/flakes/private/ssh/ldap_authorized_keys.sh
new file mode 100755
index 0000000..f4395be
--- /dev/null
+++ b/flakes/private/ssh/ldap_authorized_keys.sh
@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+
+LDAPSEARCH=ldapsearch
+KEY="immaeSshKey"
+LDAP_BIND="cn=ssh,ou=services,dc=immae,dc=eu"
+LDAP_PASS=$(cat /etc/ssh/ldap_password)
+LDAP_HOST="ldap://ldap.immae.eu"
+LDAP_BASE="dc=immae,dc=eu"
+USER_LDAP_BASE="ou=users,dc=immae,dc=eu"
+
+PSQL_BASE="immae"
+PSQL_HOST="localhost"
+PSQL_USER="immae_auth_read"
+PSQL_PASS=$(cat /etc/ssh/psql_password)
+
+suitable_for() {
+ type_for="$1"
+ key="$2"
+
+ if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
+ echo "$key"
+ else
+ key_type=$(cut -d " " -f 1 <<< "$key")
+
+ if grep -q "\b-$type_for\b" <<< "$key_type"; then
+ echo ""
+ elif grep -q "\b$type_for\b" <<< "$key_type"; then
+ echo $(sed -e "s/^[^ ]* //g" <<< "$key")
+ else
+ echo ""
+ fi
+ fi
+}
+
+clean_key_line() {
+ type_for="$1"
+ line="$2"
+
+ if [[ "$line" == $KEY::* ]]; then
+ # base64 keys should't happen, unless wrong copy-pasting
+ key=""
+ else
+ key=$(sed -e "s/^$KEY: *//" -e "s/ *$//" <<< "$line")
+ fi
+
+ suitable_for "$type_for" "$key"
+}
+
+ldap_search() {
+ $LDAPSEARCH -H $LDAP_HOST -ZZ -b $LDAP_BASE -D $LDAP_BIND -w "$LDAP_PASS" -x -o ldif-wrap=no -LLL "$@"
+}
+
+psql_search() {
+ PGPASSWORD="$PSQL_PASS" psql -U "$PSQL_USER" -h "$PSQL_HOST" -X -A -t -d "$PSQL_BASE" -c "$@"
+}
+
+ldap_keys() {
+ user=$1;
+ @snippets@
+}
+
+ldap_keys $@
diff --git a/flakes/private/system/flake.lock b/flakes/private/system/flake.lock
new file mode 100644
index 0000000..3602f00
--- /dev/null
+++ b/flakes/private/system/flake.lock
@@ -0,0 +1,185 @@
+{
+ "nodes": {
+ "backports": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts",
+ "nixpkgs": "nixpkgs_2",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "backports": "backports",
+ "environment": "environment",
+ "mypackages": "mypackages",
+ "myuids": "myuids",
+ "secrets-public": "secrets-public"
+ }
+ },
+ "secrets-public": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/private/system/flake.nix b/flakes/private/system/flake.nix
new file mode 100644
index 0000000..04ebbc7
--- /dev/null
+++ b/flakes/private/system/flake.nix
@@ -0,0 +1,168 @@
+{
+ inputs.environment.url = "path:../environment";
+ inputs.secrets-public.url = "path:../../secrets";
+ inputs.mypackages.url = "path:../../mypackages";
+ inputs.myuids.url = "path:../../myuids";
+ inputs.backports.url = "path:../../backports";
+ outputs = { self, secrets-public, mypackages, backports, environment, myuids }: {
+ nixosModule = self.nixosModules.system;
+ nixosModules.system = { pkgs, lib, config, name, nodes, secrets, options, ... }:
+ {
+ imports = [
+ secrets.nixosModules.users-config-common
+ environment.nixosModule
+ secrets-public.nixosModule
+ ];
+ config = {
+ myEnv = import secrets.environment-file;
+ networking.hostName = name;
+ deployment.keys."vars.yml" = {
+ keyCommand = [ pkgs.stdenv.shell "-c" "cat ${secrets.vars-file}" ];
+ user = "root";
+ group = "root";
+ permissions = "0400";
+ };
+
+ networking.extraHosts = builtins.concatStringsSep "\n"
+ (lib.mapAttrsToList (n: v: "${lib.head v.config.hostEnv.ips.main.ip4} ${n}") nodes);
+
+ users.extraUsers.root.openssh.authorizedKeys.keys = [ config.myEnv.sshd.rootKeys.nix_repository ];
+ secrets.deleteSecretsVars = true;
+ secrets.gpgKeys = [
+ ./public_keys/Immae.pub
+ ];
+ secrets.secretsVars = "/run/keys/vars.yml";
+
+ services.openssh.enable = true;
+
+ nixpkgs.overlays =
+ builtins.attrValues mypackages.overlays ++
+ builtins.attrValues backports.overlays ++
+ [
+ (self: super: {
+ postgresql = self.postgresql_pam;
+ mariadb = self.mariadb_106.overrideAttrs(old: {
+ passthru = old.passthru // { mysqlVersion = "5.7"; };
+ });
+ }) # don’t put them as generic overlay because of home-manager
+ ];
+
+ services.journald.extraConfig = ''
+ #Should be "warning" but disabled for now, it prevents anything from being stored
+ MaxLevelStore=info
+ MaxRetentionSec=1year
+ '';
+
+ users.groups.acme.gid = myuids.lib.gids.acme;
+ users.users =
+ builtins.listToAttrs (map (x: lib.attrsets.nameValuePair x.name ({
+ isNormalUser = true;
+ home = "/home/${x.name}";
+ createHome = true;
+ linger = true;
+ # Enable in latest unstable homeMode = "755";
+ } // x)) (config.hostEnv.users pkgs))
+ // {
+ acme.uid = myuids.lib.uids.acme;
+ };
+ environment.systemPackages = [
+ pkgs.inetutils
+ pkgs.htop
+ pkgs.iftop
+ pkgs.bind.dnsutils
+ pkgs.httpie
+ pkgs.iotop
+ pkgs.whois
+ pkgs.ngrep
+ pkgs.tcpdump
+ pkgs.wireshark-cli
+ pkgs.tcpflow
+ pkgs.mitmproxy
+ pkgs.nmap
+ pkgs.p0f
+ pkgs.socat
+ pkgs.lsof
+ pkgs.psmisc
+ pkgs.openssl
+ pkgs.wget
+
+ pkgs.pv
+ pkgs.smartmontools
+
+ pkgs.git
+ pkgs.vim
+ pkgs.rsync
+ pkgs.strace
+ pkgs.sqlite
+
+ pkgs.jq
+ pkgs.yq
+ ];
+
+ users.mutableUsers = lib.mkDefault false;
+
+ systemd.services."vars.yml-key".enable = lib.mkForce false;
+ systemd.targets.maintenance = {
+ description = "Maintenance target with only sshd";
+ after = [ "network-online.target" "sshd.service" ];
+ requires = [ "network-online.target" "sshd.service" ];
+ unitConfig.AllowIsolate = "yes";
+ };
+
+ security.acme.acceptTerms = true;
+ security.acme.preliminarySelfsigned = true;
+
+ security.acme.certs = {
+ "${name}" = {
+ domain = config.hostEnv.fqdn;
+ };
+ };
+ security.acme.defaults = {
+ email = "ismael@bouya.org";
+ webroot = "/var/lib/acme/acme-challenges";
+ postRun = builtins.concatStringsSep "\n" [
+ (lib.optionalString config.services.nginx.enable "systemctl reload nginx.service")
+ ];
+ extraLegoRenewFlags = [ "--reuse-key" ];
+ keyType = lib.mkDefault "ec256"; # https://github.com/NixOS/nixpkgs/pull/83121
+ #extraLegoRunFlags = [ "--reuse-key" "--preferred-chain" "ISRG Root X1"];
+ #extraLegoRenewFlags = ["--preferred-chain" "ISRG Root X1"];
+ };
+
+ services.nginx = {
+ recommendedTlsSettings = true;
+ virtualHosts = {
+ "${config.hostEnv.fqdn}" = {
+ acmeRoot = config.security.acme.defaults.webroot;
+ useACMEHost = name;
+ forceSSL = true;
+ };
+ };
+ };
+
+ services.fail2ban.jails.DEFAULT = {
+ settings.bantime = "12h";
+ settings.findtime = "12h";
+ };
+ services.fail2ban = {
+ enable = true;
+ #findtime = "12h";
+ #bantime = "12h";
+ bantime-increment = {
+ enable = true; # Enable increment of bantime after each violation
+ formula = "ban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)";
+ #multipliers = "1 2 4 8 16 32 64";
+ maxtime = "168h"; # Do not ban for more than 1 week
+ overalljails = true; # Calculate the bantime based on all the violations
+ };
+ maxretry = 10;
+ ignoreIP = let
+ ip4s = lib.flatten (lib.mapAttrsToList (n: v: (lib.mapAttrsToList (n: v: v.ip4 or []) v.ips)) (config.myEnv.servers));
+ ip6s = lib.flatten (lib.mapAttrsToList (n: v: (lib.mapAttrsToList (n: v: v.ip6 or []) v.ips)) (config.myEnv.servers));
+ in
+ ip4s ++ ip6s;
+ };
+ };
+ };
+ };
+}
diff --git a/flakes/private/system/public_keys/Immae.pub b/flakes/private/system/public_keys/Immae.pub
new file mode 100644
index 0000000..dd42b04
--- /dev/null
+++ b/flakes/private/system/public_keys/Immae.pub
@@ -0,0 +1,322 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFvwA+gBEADlchQGPyI2M9RNRUsk8wsL9XLc8qAFWTYlVp5p7177ucxTQf6S
+rny9yRCF69UqtE0ugwt+432sAAsDPi7BRA/JE95bIRBiewOiY1jYiivccP5dR6Jr
+58HJ3QOHYPekqZIQhxzCWjdD2nRhhCbbxeWFJsJyaG8idGBiLkgNKxEEmqE5LIat
+tzMpQFwOpL2FoYZ7+e4ZTMc+x+yqpOnGcQD1qwouqx68okSCjrVBWo5S2tK5AzzU
+X8esBLNpgkhpUEZVltiNc4bmj7GZPdy4+mvS33/HQTed8YpatCFVWzcK+/uK0SYE
+P8Hj1mguT9idBhAf+kv7qbTycrFkTBliP3oDNUoARWDmfQdV4nlxqW03QxUY18mL
+KPByduK3hEXAZnD+/8QfVzbNVVP+70/jdSB+ckF88Li2g4bv/9uqjaObKVJB9ocG
+EWslm1h7tvdCLBRgIl8b2+Zl0fComRAMuwUr+LYlWLnfygAi8Uy9hl7UcRWAAj99
+PG4ba0+y8eD8k1J2IE8HpeIzMzRwYTLtvLyJBvrKiQHJb1PGM5cS8iry81wjUPZm
+dO5p5rbC8z99w7UNMaiz6iqAFAaDyLLsBZ5gWD+1ps9XxCA0zf28Z/Tc/Gj4QKAf
+kpMd7lQ+gprsFyRtzcRD4WhsOL2ogKYFHYi4LE0GYduspGdQPlK/YfrKQwARAQAB
+tB9Jc21hZWwgQm91eWEgPGlzbWFlbEBib3V5YS5vcmc+iQJRBBMBCAA7AhsDBQsJ
+CAcCBhUKCQgLAgQWAgMBAh4BAheAFiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvw
+BU4CGQEACgkQyfztbKa3lFR/kA//cHVrb/RRTLQZy514vMkOBKgAk+dj+j0lrgvJ
+yR0JK1KjodduSoccPq7qRFAU+KVa3FsXMn8yY/lWaCXYJoF0DT5iEHsEuzJRc7Cn
+N4aq2h42DD7z8dJCXZvtvJs+vZ7G/rlLl322TjLb2OyIybBEoPOmJl0dVG0wKBFC
+r7EJmOKl3ytUWUpEbuxs1U/pP4GKrPT2CK3QcLF8JHKIPkEO347RorseeHcHhMxs
+Bz5JXojts1NyLJh7lErT42atgEdTGzSmkkGm8OifZVIH2rgmnRsPHnCqrXYsa7dE
+yPsC01Ns3DPYk4C5FtbpfiNvATbnkOicEwb2U55OpYUZLsFCKo7Bl+duJVY0nPRN
+WiLCALPcdJL+a6hbh1hSuqHt5eNGxyrDtRPowXRTS1D4nTCgAh6+wpH47xXWEwXZ
+mEnkXqHLIjsW4CSIz2gc+Bza40+wkWz6NQDEb3ncytDZu9vKK1CYwl7RGW4RFkAO
+j3FWZvZp8ETPLNRVy64BhZzHY3uOxbYreE+T6JfiIZux8X+Bh4cPJHizfhSMLLS5
+kwABzalaTD33XnjKn5wQ/DfGJ+fGbF54fMlGFjne5VTNwY1ju2ieXTgVrUyzfKPF
+96zcvnxo/MWwqcQ8+dXFCZjldP76puo1eVATEBeOCQs8Vj7eL9eN/eo+BfzhS3S8
+CfFFYWeIXQQQEQIAHRYhBNw4R0hwnSYZ/yhnIW0Mr/3bHP6QBQJb8AgDAAoJEG0M
+r/3bHP6Q/TsAnA6vTjmrX4nY3QnevNrKefWaQvf3AJ0TALTqXhTcVYVLxfzRt/Qd
+u5W2/rQvSXNtYWVsIEJvdXlhIChXb3JrKSA8aXNtYWVsLmJvdXlhQGZyZXRsaW5r
+LmNvbT6JAk4EEwEIADgWIQT4KAb9ob9bmhswFOfJ/O1spreUVAUCW/AFCwIbAwUL
+CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ/O1spreUVKlBD/sE/eDbJtL8UKc6
+CN7zmA038RSjxlcJrMRoBoThCFKOFtBsYLPebnIkzCDiUwQJaIMYe2RNBHKKz0p+
+2Kvzf7q+xq8W1e72aK1DRhsBTL8/LA1kQkvh3GwMS8z3SOcbXLWqKQuQ7ztYReQG
+wsT2/S8reVM96eV67K9vMHKMDF3NyYZewahX0I44YIbQJfLVG5elCkBrfHjGSeIt
+tSAv56BhN8J8ky+9nGx5jwWmxc/4Oquyfe9Lf0NMTCjw1xess7UoHlzSMp57yF3T
+AaqDcqD2Jdgr2meN9Yo4/Yb9dEvHFy34ppXYanX1nrHGev7YaaQWLoKLVZc3f6gR
++D7sEJUJm3IxO041CR7DBwQ1CQkx3sa66mcHxe+wchOoXBZdsqyl5Ds+zqh6eMyO
+UiixDcXDxZuimEY0/+7XjlFjtzhGVNKsjV/Azh+Hx3GZnGHMVpTw73qQFHkWeDrX
+FPUbinjtEVTxw0fS9PkDZB5ysgAWlXs2cqoNDMcbdyJn2xszbV5+vjlmcofsQZTr
+PiX+hB6P5RQP5ogtnotvbkPDSfPfqdUk5HjGFrGX08FoP4rCromHvSL6Un2lP4I2
+mJbbQzBU/bQUGzfz6U6VEbUHtOL+7woGuXuzTYsRZ/O7/fKohyi/+qsmOozQpLFN
+k5xocbF1PgpFphrKYpHaSkf6DS2/F4hdBBARAgAdFiEE3DhHSHCdJhn/KGchbQyv
+/dsc/pAFAlvwCAQACgkQbQyv/dsc/pDXWACeKMbL/Dtifpd466TqQP8isfWedtIA
+n2xbEmlpxG8yk0w4HQ4djwgY4RbutCpJc21hZWwgQm91eWEgPGlzbWFlbC5ib3V5
+YUBub3JtYWxlc3VwLm9yZz6JAk4EEwEIADgWIQT4KAb9ob9bmhswFOfJ/O1spreU
+VAUCW/AEawIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ/O1spreUVMGJ
+EAC5hKt5NCanRxEl13nQUu4+n05tdRl9C3sTczR8EUZ30zhpBV4chKgeJSD0r1VA
+zBSQHMNzroGawaQn38qxFtbcSmkGRDd+0y798x1HFHp+UFiYOdQDQJVsyDuwjq4k
+RF7zV+FBj0ffjn5JBy6R3wLmWCFxz1mPmkImdyyS8GEeifwTftC+SSotqfg1lh0K
+C+DSQGYtPk0jLvxVPRllnjltDOSPUt9xRE785I6E9oyYrCa5Om51e0eEMzwpkl4e
+QschAYILb6SNrVyEMRD5E3lJHD2r6dPvIPFNcLxIQuK/Kdco2jNq7dCL6ukdGI40
+j/oZi7XRrlFCQW321BuipJZ/7t9JWOXOrrEndQv+hOb6PeWkwF1rigjbQq+IipdJ
+DUXGBfiIzlpJM5tLhs7BGfLxYNn09rOpkotXrdBzRO62lYyRdQepKpD33v96bQV2
+0w64U44+CxuicjGDw/6no54LY4J7bM1lLGwqvHSeqgYoc+Zs9WH95TNNSmaAHGSf
+An4LpzW5nOXbq2rsWVbZpvsVHz3VmC9qmpsYl5tT/ninkLta3tN6TrYUFHXcDWz9
+K+HW+/oARzEmN8eg3iMmWtOnV59YEr/x2vvOHndguUL0tUpRjwuTunH9KOGZE0Kb
+uI3ovgLLO2kCSGk4SdXlntu/eLq9FPYqlOpjM9CtLf9JdIhdBBARAgAdFiEE3DhH
+SHCdJhn/KGchbQyv/dsc/pAFAlvwCAQACgkQbQyv/dsc/pCHCQCfdPdGx0FmknAs
+rPvjuUmuCj9Q8xUAn32dsgQYTlgfTdwLSxWGj4mTD2h6tClJc21hZWwgQm91eWEg
+PGJvdXlhQHBoYXJlLm5vcm1hbGVzdXAub3JnPokCTgQTAQgAOBYhBPgoBv2hv1ua
+GzAU58n87Wymt5RUBQJb8ASdAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ
+EMn87Wymt5RU58QQALMGlOJzcQj/arHezum5H/PiYIpZ1yY+QMCzpSgPdwupwawW
+VN88aQRfU6k9xwmsU+Ghjreja09AuqYi/D2+61TM/Tmqi/9HdU6NRYw0hvaZnwFc
+vudFBII2XrxmU5k9PnSR6Sq4uLUGkXmvhJddV0q+cjtif+vDi5pl9mqbWBQY8d9S
+5Q6ZFZPeEeASUK7Xt/tSq9iXpb1tQsmEJ94Czl5G+gNFJcqj7nlHQ1/c9XeNsvJT
+GZVLGM/cAZNzB6AC8Kz+iWUypFuXifC2PYGpJDJ8klqTmDQikGQtM1HMHda6rnwU
+L7JIfbuwGbMk65CtG2YE8QqB+/GIfkzWySenmIrldn9Vp5EKB0DD529TyOwQWgzz
++HuVP/4QfkNRxNquWxlAPXmcNfV1SV+/Xn1KwSspb7QlAjiXXOL13J2dwYFpV+21
+vsSW5XqJXfWUU8d4YVOdq1kUTwLjWnWyxwtt8j68KSuTOT4JTA8oNXg87r0B4Fzr
+6AoxCM8ePywm5IW55gNAwViTKWBAcNrcwRTP647oNOM5+8D7NZIBpnKffNc/S2S5
+iI1tmaM0yXavmCm0Hb7lkFIsxM2Y2lxwHexPck2ftPXIrjhPYLcFVBdLVx2V2yXe
+cFW2vMGZiasVobFqqp1g8htmAlTkN0cTDY7l96wDuirC6OeCbVomEgxQEd0MiF0E
+EBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/92xz+kHsv
+AJ4+zdfjTdO1FUWb42bWdPQfiFe9nACeMIRp1Iu3tNVJkfS9CGGqhrChpfu0LUlz
+bWFlbCBCb3V5YSA8aXNtYWVsLmJvdXlhLjA2QG5vcm1hbGVzdXAub3JnPokCTgQT
+AQgAOBYhBPgoBv2hv1uaGzAU58n87Wymt5RUBQJb8ASsAhsDBQsJCAcCBhUKCQgL
+AgQWAgMBAh4BAheAAAoJEMn87Wymt5RUxa8P/i7zdQ9i5BfWITbdyCgXNoQYIcE3
+J6lIa15eLUcfDcL707zOrUSbhSkthLjeqZoNRCalqjeDOdgCQC1PNoISdkMGd9PO
+VOwS3G7Pjt4FSjPVHyw9+Su57pwTcLXBhEyBAkv+tx/QrB/UBCFzPUnsl71QH51y
+T8+bNdOiBxssdgn/9IrObn7tu8xDf+d/yGsA493x+mxalai+fhd/t0yzQcdcTrvD
+EKRxAaU8wXe8oSwcW5cRmXIi+N4aEnLRO/so9YDGf4z2FQVSL0ktoZYMqZ1ZvIb0
+MNCNl2NgNXThhrAPk9Rhs+S5nRzazJ+tS+D2S728EPpRHpUE43+vewtCdu5c5NWd
+Lz88o/jxLwcNwQa2iJoFMyqr15lHt+vM7OyD9X650IJwQw24n4tF6TijzH5GhWcN
+SnB7RpLSkftQldpK/zK+tmFH4vVpv+bI3JKAfzRga+5Fu42kB5uHVzXF3qMwYgEO
+sRNL5d4xV4SATce1mb8vFpsQmGOWnZAcCaQYhLKfMl7zR5ukytTjf3hRMRH0GAjh
+06QAoBMJZhWosYehPi1odjTngIf6hFOqA5prz8Cu/AFe/8aftp9UorJOekAj2io0
+CENRv21qrN8R4bNo04aTMD6WrY+mBL8MteR0ooD3ENQEAZ6UUyZwTzUJk2UUl+5M
+ch/HgJ+rQozmRGYeiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AI
+BAAKCRBtDK/92xz+kPsmAJ4wGQ0Hly2eTVzsU8Ht4609Q5kf2wCdHGuu863a0GHv
+uUdEokzQEsumYPG0OElzbWFlbCBCb3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVy
+ZSkgPGlfYm91eWFAeWFob28uZnI+iQJOBBMBCAA4FiEE+CgG/aG/W5obMBTnyfzt
+bKa3lFQFAlvwBMkCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQyfztbKa3
+lFQTlxAAjbuDy3prdEBNMYfi/870MO5eeDOCMtiDJDae4fQjj2NANjeuDGNP659B
+/k9uS7o5nrWB7E6rdG4a1J+Qzj5I775xTP/zVbrNSchcLwSoHMMXBm2IdbIanCX0
+JX+dRg2YX6yX+6ZmL8UaWRVICQ84ZxGtYHZ8o8hMCFOuxFklNjYFEPciO9M9m+rv
+fUEihQgcBF7+x9KVntlxad61Aa9AzUJLULgY3snaZK687tHUq3yYwXpF9s1CuJ81
+SfZxH32dKqy+2cpJqwQ38BZrTUwjBxxIMR5TRC7h/O9aRIBKQZKlpLcmxWPv18i7
+DwWlrJVb2Sd2WUh+TwPNa7VQc3NjlGtu74SfZqmirE0FyuB86fnsQaF8zhJnRsqE
+lagnLoW24PCvc8A9TK95tj+0JO8DIeM49Gg+Br/NBtRB8q5q/ICJOREber6Ke+/I
+p90q5VkZafIgeuO+EkyQ6Dq+58NRqC2qEs209xnKOd6exxT+2tEzx6Hy0PKwaay3
+h8WzUamJOTqRv1WG4GmlCeRUQGx8BtdIAEMdww26cN8rmxh5Foh5CH+V75bcybkv
+yH+FBDoKFYSpEPg0axHM/e13/nujgLNnSTHuMf7ILvpwoNkkIcQwSpH17B5hZdgl
+y0xD7aIS5XU9OoP9mKs1unzUKerWQWY6CxgYOqpssyDTUG+fohuIXQQQEQIAHRYh
+BNw4R0hwnSYZ/yhnIW0Mr/3bHP6QBQJb8AgEAAoJEG0Mr/3bHP6QFPAAn3DbFqHo
+hjznqQvg15QjlGFaPJaaAJ4ps0+VWG9BN7UBQPG+fcCRwqLaVLQ0SXNtYWVsIEJv
+dXlhIChEb24ndCBjb250YWN0IG1lIHRoZXJlKSA8Ym91eWFAa3RoLnNlPokCTgQT
+AQgAOBYhBPgoBv2hv1uaGzAU58n87Wymt5RUBQJb8ATfAhsDBQsJCAcCBhUKCQgL
+AgQWAgMBAh4BAheAAAoJEMn87Wymt5RU2vAP/12b6S0yJdZ1rgNLj+ZohY36PhCm
+30/amkGPQp7HCBylYIRv+y5m4IdiqynzJoap547cFMWNsCyfyU2VKbcy1Uy44FCI
+PCUcBME95jD1JWviINDKqLhglciKlJnWUhupiolqFcr2ro+rJVc/fBMWJoBjM5fJ
+9eq1ge2LxuYKbu9cpSEtopk7ZBeo69khhrFACdZEqfJtW4qp0hEC0pAKLjN8LhpQ
+EEVcq4zejksB+1e1qkuJ6be3/Q2Sj+1ijaJBElJIVJ8qyYs9XSlTlUA1USfy3Yqu
+jOkFrIaycxYgKooFgwYfYXCniuqXWZ2geCm2IE90lanQC2w7ZDN/JGwwVuAFVi4H
+Mrx6x/yEreqy2AUMesB1eGxqQQG9cgssMLoMAN2IDDJ6FS+e0imWTTMZ6r3ou9W8
++pFzSIT8LMnBNwp+RxrW3QzBs8sXDw5mS6WroiZMRlfJdA1sUPsrW0GV4/AFuEaK
+PhCUvIvoh6zxYR0lA/gYqtszCHGzHeNLoczOhytUZM+KQpOtO3TSING/+o59HHuM
+niD6k3mWcyk6MkSgIXquJRGUVGVFeLGlXXf7aWEkIOrXeqjBZpBchZUIxZfkg100
+xxmEgNVGG4vxB/UIGeVqV2S4JscJmCyDGs130nRp7Qp5YGfkaTLKyOdutssrqatP
+m5Zcjl2VGr4Xt4uXiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AI
+BAAKCRBtDK/92xz+kEViAJ9zBTPNNTYIxPxt8BEvb3pUDeZkiQCffsDGKi7kdlTj
+oZ26K7yxdjexaYS0OUlzbWFlbCBCb3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVy
+ZSkgPGJvdXlhQG1lY2gua3RoLnNlPokCTgQTAQgAOBYhBPgoBv2hv1uaGzAU58n8
+7Wymt5RUBQJb8ATwAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEMn87Wym
+t5RUIzgP/0/7+y7UOgj4Yja6Lwa+Lm7ESRZnbVmR1ERSAa9RKKr8BbPT4KhgwN2R
+x8c3CedFupS02sG1G57u+4qQbEeZylaMu6rusf/XyQ+esh06cRXfR7Vb2d14yFQg
+xun9PgPR7jL0RiU2fsgvF6O+u9KwnGRmABZXILDBxzGZBXKBIkmqBM8+rBkXFVWc
+gezZqD106KcuGewciuWM7bfyLj+2yV9GhvX8iRyptgkx9/CNEdOqQzKYEbXVTSkh
+tUW4QUmNnIiTnD/pZ4kr3UsQV6y0GC1kf9G5EeQHbD+kVROFM0/sX6qGn99IeC+j
+96MflMnKuXJeXjlxNFZIYPoolBAC7CvpRfdky5q0KB2xWh+x2jQbn3fPpa6lVZdQ
+De14guXdcEsj1QVUMRL3wFCDwHIsi3gqOpCHdy5GmunFRNqUWmoGU+uHt3Kk031w
+DJdQY4YP+8tFWLPG3vKoPSf5EcG2Mf0hZiWiiIAX8sVw13W+oDlAQ0HKah/uxV77
+gM2ScBiiiOr92JIf3ftq2AjMuzrGhpKME/wG2DdcOqmq7U+tcVbambSc7SVa5nTM
+JXm8ZPOSH0Fax1PULPd3pyLLhfF0rnPiDLcVa6UzG1MaSJiGBurIf3D3OCHRjQQ6
+kVpF9VtXhWeziV8wkyt66HNcuqUs6HDBNkpxPTNacKcZmW8J/FlaiF0EEBECAB0W
+IQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/92xz+kKOiAJ4shO9b
+nZ2Nx9XzBBg4C0nUl05LyQCbBpk7t2NIPMKaNtjsPb+RV5HbiQa0O0lzbWFlbCBC
+b3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVyZSkgPGlzbWFlbC5ib3V5YUBlbnMu
+ZnI+iQJOBBMBCAA4FiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvwBZYCGwMFCwkI
+BwIGFQoJCAsCBBYCAwECHgECF4AACgkQyfztbKa3lFRK1w//cqsweiuXGPepyn0t
+AL/S/scM6r9IwcjD3HrZqmUNSDAqU6PJ0FFialOPuSQIyEvrpY1GL+TiVtnYyAit
+sbotxNxNQFwiBvqchg6xd1ftpjJihuo7RysNdSNAnlOxFlEz9X+EGkRqq8rCTpoS
+GA9+4uFyFKzfv9CDg7YUVX5GVsE3bsPWymfCW1boW0TQyL7xNrDPfzKpVRHFu7hi
+5OghiTbHbifmIolj5Mo0hGuXxz26gFzrufCjgxK9ycW7LnHEnnK0zX8Qfueir8RV
+EisuAXtKILgS5mmOj0ywsrva4Qtf5JW5SKymhgsKCWskfz0lq6S6ceIKaYBr4Syk
+0MLI82M0zDfGlLuRP6yQ3DTiTC4lWfXHdjyd0w4SwcuAQPCWz34gtUEGfMTyrd6O
+le6pYreL1NPzd/NakYsR1H1fsXVJkgpESktoDIkzooLmBV6Pjr+PEt4DvPZYqgKl
+AyD+aZeZ5HlTZCLbN9O38nDttWdAvsGjq82qvNI8A/d2Vvz4L1ND6NT71+wtC2QT
+a95epSBD64l/JtK99SW/HjLjyvV9O+Nu2p8ESTOEaQhyIudnWYU+er+Vwy7YtLvY
+y8L9/Xu9KvlBMjHBXAAV047KwkIQNrNyoTla5yQFSpv57hFYbx5CKTprpsl9Ic4v
+uPjC/GMgkAJ3yTwIgxa47hgUAtKIXQQQEQIAHRYhBNw4R0hwnSYZ/yhnIW0Mr/3b
+HP6QBQJb8AgEAAoJEG0Mr/3bHP6QyCcAnRuTQIMOpwxbyzjj+t0C9GdNJYmGAJ9v
+5c5kvNCFiJAFCbUD4OxJBNA28rQ9SXNtYWVsIEJvdXlhIChEb24ndCBjb250YWN0
+IG1lIHRoZXJlKSA8Ym91eWFAbWF0aC5qdXNzaWV1LmZyPokCTgQTAQgAOBYhBPgo
+Bv2hv1uaGzAU58n87Wymt5RUBQJb8AW0AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4B
+AheAAAoJEMn87Wymt5RUaT8P/2OvKAfgqu0zQX0JhKu/wd9AATVmLa8C48JPQMUn
+5Z9dQyDcFyKKfKbGCz9B5jTOrzHNX0VJfpDujOTiPIk6ci0KqAJ3Fz0gdpxIcEoW
+B2zg0nwDtGHsGMX8togpcbVgKqblp0XSsMAFV2FN5PsAnxkqdXPDmZ5iZSgs9roi
+9nxHPavbcr1cSAjsiRoFxFudzo7Q0Z/KLRlTuTSAX6B+vRAeyRB4NcXThKYZlAi6
+cr+xXTvPFddiQZgVBT+ICZRQY0gwgHpQcj70fNx1w6tTHfThlxInojKGlreOZov9
+A4TVeex/QagVTsjRAQuZ9yLMkx7JxakAxBPZ/OHuv7/K1Qdx90AJ8zQZ6uOXpUNl
+c2MDEBoTI/nbsgMeHI/Mj4ndxCBUMperZ1oCITl+AhaqEZ+LxTKyne41YJedlqjc
+5xnUVigz4ajmZPYmbO6eRDxisx4fMG7hI2HnNWak2xBDVOp1z2aqZY0xsG7o697d
+I9BeR9JxbIusx0Szq6GabwI5beEI1xLlT333Fe3XDtT0NIQQvW9byuYuyfp7H6Xm
+hFj2ut7jVI9xG932sJ8ioRJGCK1UcGYEL0ei4YZRv+mVysEJFjki2nlxspnG4C/V
+Q20jXnLAXOpKLiStkNJ15WsnzeoL4eq0AUOYMMmYKAquXXgpVs+xUDv6XathWA2v
+oZkAiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/9
+2xz+kEBpAJ4x7hASmdnDcyFGTyuRHj6NwsDtNwCfRVfqoiRcGmvDRA8U25cPk5XT
+ZYTRzlXOUwEQAAEBAAAAAAAAAAAAAAAA/9j/4AAQSkZJRgABAQEASABIAAD/2wBD
+AAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcp
+LDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACMAG4D
+AREAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAABgcEBQACAwEI/8QAQhAAAQIE
+BAIGBgYIBwEAAAAAAQIDAAQFEQYSITFBURMUImFxsQcjMoGRwUJDUmJjchUlNTaC
+odHwFiYzc4OS4bL/xAAZAQADAQEBAAAAAAAAAAAAAAAAAQIDBAX/xAAgEQEBAAID
+AQEBAQEBAAAAAAAAAQIRAyExQRJREyIy/9oADAMBAAIRAxEAPwB2JHaECEjiPGA4
+6GA3kMMgDy8AZAGQAp8XD/Nc5+VP/wAiJT9GeBv3e/5VQ4cEu8M3sAZAGQBFT7Qh
+JSOUBt4DZYww8O0AeQB5cc4AgzNXk5dfRh1Dj1r9Ghab/wAzpE3KQFdiSotTGIph
+4trQFpAFyDwtwjO8mqqYbHeByDQNCD61R0jTGyzcTrQmigyAMsYAyxgCtTNt5hqI
+SUnrKOYgN06yjnCVtnWUc4BtyenmWGVuurSlttJUpR2AGpMGyKbEHpZm3ulapLSW
+GTcIdWm6yOZ1sIj92q0Cf8UVp2Y6b9IOIVtZkkD366xOzkjujFc83mROKZcCjc9M
+kE/1hbV+Yq1VhC3TkUEKvcWNxE6UY3o4xKpueVIuKGRaSoWO5GsXhdXSM59Nhucb
+cbStJFlAEeEa7Q26yj7UPdJ71pv7Qhboedab+0Iexsu2p2ZuD0sJltZom5gkEuaQ
+jldxMPkZuk0gW2E05cetgIvfSJihZY/RcvODKpXr0NntKA4HkCeHdEWrkLBc67fK
+EoF+Khc/CEuMYZn5tYyMFwX0KQRbwtCtkXMbUk4eqBKgpC9eYN4n9xf+Vczh+fYv
+maUoDUHlD/cF47EmlTz0hPtFalsrQsdoGxtx1hs7DpolaTO5JZl7sdHmZPNKbAjx
+Fx7jFY34ys+rcl4/XGL0jbVQmODpgsG2JD/F1UVIVqmRKgcT8YbNcy8qOrqO/ZiL
+6uRLTKAU8WGloF/A3WpgUqjTc8gjOy0Si+2bYQr1C9pAzM469NOuKdUpxxRN766x
+LUXYWw6mYbEw+m9zpeMc8/kdPHh/THp9LaYQAlCR4CMvXRNLASSCbqSOUGha0ekW
+ym2QW8INBRVbCkjUJJ1BbCHCLpcA1SeBiscrEZ4ygLD1XmaFXUNzCypcutSSgnTX
+Q2jbf2OTLH5TvkHGpuVbfTey0hWpvvHRjdxzWdrJiXSraHRi1cZQlVjDhUFGqNgX
+zDaCxAtpjgepRcHFMQvHxaNIzUoG30YF/Cl9JM0sYVW2nNZb6EqI5an5ROXgw9LX
+DEiieniVpBCNLGMuTLUdPHNmzTpdEu2lKUgJHARzW9uqToQy1iBDhpRtaKJ4bFO0
+A+oTygLxKiXxS2WMSqWNFGyzaN8L/wAuXlnY9whWn2qX0SyS2k3bJ5co14/45uXX
+pjYYnOvpcUdcpt/KNazxaVWotys8W1HWwMBX0s0yM8sWyDbTtCK2z0ZNBys0INPO
+thwIsRmEQ0x8XLEzLimhBfazBNvaEJfwtMeU0PYXnCVIOSzicqrm4MK+Fj6XeBmg
+3LuuH2s9o5+V2cRgsz7DashKlHiEi8YadMqwYr9NS4lourSs8FIMVoerxDzTiLg7
+xW4WkWZqkhK9mYm2m1HYKO8IIipyXmFXYeQsDkYiztW+iwxmwheJAyDYrQlV78yY
+34/HNy+jOkUZCqQyEzLbRCbZSNY6OOfXHyW0Y4TXK0lp1ExNt3Uq4+EXU49K3Eja
+ahVS/LTSMmQJhwspuhRc20nUz7dvGIDZmYbWq6ZtKtDteAK1AeW0XElwoG6glRA9
+8JfTkp7MhSOnGoI3MTlLpWNm44YdkhKiYlr3UHLE8zaObO7jswx1dLadROyqkplz
+kSsi6xwiJZb231Z4i081l0zJnnAgIUOg49IL8deWusVlMNdFj/pvsZ0guO0txbg9
+Yi4FuNoz1dKvoPrM1WOtN9Tlm3hm7YNiUjgf75ReEx13U5/rf/MWtPdmzNOMvNhS
+Uq7DgTa45wrZL0NWzsP4ukutYokg3bpFNpzC17gE8PCNuPxy8vq1ammGWg31lQt9
+wxvjLI5rd1IYdMySJdb7pG/RsqV8orsumrs0GHC286+2sbpUyoHygLcQQhpSkHKk
+gnlFMqaOHZdkUI2Zb9k/RETV4+L2ntNijpSEJtk2AhxfwAzbTIdc9UjQn6IgjOg8
+ASlaW1fTQ352J1jhynseljd2X+ixltuYbGZIULcYjTqk6Y9KtMsKUEITpuBBelad
+6SvNT1FI02EOeM/XPqMu+c/RpUR3awo0+OqZZtkWQkCFpNnSfhuiSk3PzFYdZSp6
+XXkaWe5JGngSfjHXwzp53PQfOPFM1Mg7dKoD4x0uQZejxZWzM34OfKFVYIGMr/pw
+AH6seZhxOXoClnCpSQf71gSbmHf2D/CYmrx8XdO/Y6b75YIv4AZ0WcdP3j5xTOl7
+UOtMYkPS3U0U5m1HdQO49x090cvLjJt18Wdup/BfSpglsDhHNvT0ML0ytTWVlCm5
+hKXG1ZshTmze6FO7s8spEalVqeZQ+2uUzIOqFIQRvwsdovxHqdKz6lqz5wHL9pGX
+KbRF3LtpLPE1+ZyIzngLxU7RnlqC7CssZfDDeY3W6OkV4nWO3jx1HmZ5fqlhU05a
+g+k8XFecbRz0aejtIS3M2+2PKFkrBExgi9bB/DHmYIWfpdygs4k+ECThw5rQP4TC
+q8fF1TtaQm/2YS/gAqH+o9+Y+cUyoWxNklaVIzJSi/WVoJ2Psgxjyzrpvw3vtrSZ
+4XzZzkWNDyMcWUehhk7Lpk7Jzhf6wtTLlipIAKx/FBLNaaY49rlpMsWdVzpNtgtO
+/wAItprP+xBNPmUTInFzDnQJUAlpdlFPffv5RGV+M8vfXs9N5gWxYlZypHO8XxY7
+sjDlz1jaaVDFsPsDk2PKO5wTwqKwgmpPH8Q+cWxo09HySG5m/wBseULJeCNjAE1Z
+On0PmYIMi8ZFn0i0NmbeGz+oB+U+cTWmPi6p6gqlAjbLCXPC2xDPJpsnOTa05g1m
+OUfSN9BDt0zk3dF+1XprF9BmGX5Zlhlp3MwpBJUVW1uT7o5+XPVjq4uP1UyFWXIu
+dXfAQ6g+0rYjmIzuP67jWZfnqmXR6tIz8olsrvbTX+sYXCyujDOWLhFNkmLv5la8
+OkNoeulb0HazX2ULLSVZGxcbjwiphazyzkQKMtycfdnHgRlA6FJ5Hj746+HCTtwc
+/JbdHNQ1ZqAyfwx5RpU4+FnUtZ5/T6xXnF7ZaGGBT6t8Wt2h5Qsl4oWK1XrOX8MH
++ZggsLmUN3UlXdDZG5hz9hC3IxFaY+Leln9Tp/LAv4RnpEqahUxIJPqkErcAO5US
+Nfd5wqWE+oWFZNtmTYlEG6bE35m+scXLv9Xbv4pNPK9hhbt1JbVobpUOELDPR54b
+DDTlTo7pBbK0g7jjGu8cmWssVpMY3qEzLpl0srFhYgA3I+EKYRV5MrHeh0KerlVQ
+/UG1NSvtKSrQqHL3w8spjOk443K9iOj1aVqU3PBgpSQuyUfdT2QR3aCOnj6mnLyz
+vZyUD93mf9sRVGPhbz6gZ18X+tV5xWmWxfgdeZDwtqFfKFkvFVYxWUV5JHFr5wQZ
+eoLHo+m21AmbR/1/9hbT+aNqVTHKdTjLqWFGxFwIVVjNRS1fGdOwpTTJqUJufCbB
+hs6A/ePDw3hKkIGqzj9QemZ15RW46orUfE/KBUTqDVxITjZevkvfSMuTj/U6bcef
+5vZryjrM3LocQpK0LFwRqDHJZ/XXL9jSYpjDuvRI8csJSKaWhBu20gHnYQi1GPI6
+tJulBAWoGyu+KhXwmqa9N0esKbKih9lw5rbf2fIx3Y3fccOWPyvqHB861UsKyr7S
+hZaMqkj6KhoR/fdFbZya6QH8DtPPrdM04CtRVaw4xX6R+FrQ6EmilwJeU4Fm/agt
+2cx0gV3DT1WqImEzCUAIy2y34wbFxBLWO6iUlSsgA3JhaR+rVZW/SJVJ1gyss6WE
+EWWtGi1DlfgPCE0k/oEecU4sklVz3wKQ7WcUyq2VYJT8x84DaS4DjRaX7aNP/YAJ
+sK4lVRpoSk8SZN09le/Rq5+HMRjycf67nrbj5Pz1fDWllNzDCXEKStChdKkm4UOY
+jm18rp3/AB4tnXQQtK2qag2S6G+65gKlJWQhzFs84kdkry+8C0dfF/5cvJ6JMO4w
+qeHWnGpZ31CiFKbUnMkm1r24HbaNWFgrlPSS/NKQkvNt3PaJJ0hzSLL8HWHKoupv
+qzPBxNgRlMOyQsbbe0bEdZnqbUQ1LrbyFN+2qx3hyDLLVJWamweyDoNkxC5jpXrW
+V7QG4lRO1r84DR5hpbqUqSrK4ghST3/0gPTmhwOuIeQLH2VjlASUUh1JSRfXUQGn
+UrGUzhR9ptbinZZau00o3FufcfD+cRlhMl48lxNuk12RrcqJiTdC08Qd0+Mc2WNl
+1XVjlMpuK/EU+mlyz02QCVdlNzbW0TMbbpWVkm6S70+/1t0hpokqvmNySd47ccZJ
+pw223bnKTU4mdbadc6Rp0ELSRsddRDSnq6RhwkXAuFAwGJsLYvn8NzqX2CHWFH1j
+K9ljuPA98BWbG9dqTGJ52Vnqcq7a2LqSrQoObVJ74ueMMuqVSlG+u8Q6HNSiIA8J
+SdYA8NucAQVlUrNlxKFKbXbOEi5B52hBKXMC3qknMRuRDCKqX6W/SDPffNxgDrTl
+zNImumkHXGuYQsix7v6QrJfTls8XFYxBO10s9YASptOWw0BPFXjE44TGqz5LlNVT
+mXGc+MWh6ZZKilRSCU8YA7FG45jSAMaJSgDkbQBd0SsPUxbuUZkKHsnnzh70jLHa
+qHHxiVtV6JvDDjt8YA3ygI4wBrlGf3QBsEjLtAbLDlAG6QIQcrdpR5GGTpYWvAGx
+FlECAPLa35QBooBPSW4C8ASZXVRvyhlX/9mJAk4EEwEIADgWIQT4KAb9ob9bmhsw
+FOfJ/O1spreUVAUCW/AHrgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ
+/O1spreUVJ4nD/9tGS8cg2eUSwd0ExCl0dWsJRdM0mUYh17mXyVNLcvbglIkSdma
+v/Ty3ke533izRN/SkkU8vNthjKAohZmmXlaXrruEyHq2vfXcDg4+C7FJQ+O3PT2B
+S5ft3Ht2GmRpD2lWpeUlJ9BXF2EF5pSnHPOrlTHRUfjBCDU4uuSeKgioSyoc2iWb
+BBaSXyeQAUR+ppM1AYKUlCDxpLbe3nVCOUc+JgJzv+47EqwMyVODwzk7oFO4GMRm
+KTKlctb1ym75oV1tiZi2fL/KA2uAab/RMO0rfxa9HVWnJGvUEDMPlTfs7222zuLB
+55Fzllfx5rQlou+MLBQIV978HRZrDxZesQOOJ4/BwTPgQ42GREf+uf5/SG4Fn3Qh
+NZsvoaePMLN/QQEjM7eqOUzRJRVcdJfRH+LinIFrAqcmbbcp1bvq8LV5lbmlFJLF
+gimvW/shf/6Zu1YsfBhvLWInUCyoOPFa1tASF6qqi1hEOd8tQgNE/H/FSIehmTHT
+74kYPNRm+DzlvrW2JPVl24Nf/SWbOG/IzGBY/pDActTwYqnpXKR7eUt/YcPpmrPi
+kyIKX32U2vTBCE3yvCm0KRzrcSbTJGfVgmlxxqIuOtbeaBtf96m+o5z/xw9ro7Ek
+VZbsx6fPuWuLY/MqeLXl1EuiU6X1sr+skDY8lJeeiRt+Uq5mCZuEgWdM1IhdBBAR
+AgAdFiEE3DhHSHCdJhn/KGchbQyv/dsc/pAFAlvwCAQACgkQbQyv/dsc/pABQACf
+YaUOqzlafrzeGdwHwDleootu0UcAn2adbaKJ79QBtDVPkR77zV801JlXuQINBFvw
+A+gBEACt8AiUTMcyNXwN6kiOLPd+85IPlLwEVyofz8p2QBAxJsqKozlXXpnK7ahC
+RSiHt02EK39WiyZpeY1/2dGmdvyI1vc7ld3814Dveh4nf1GRSpDZ427cxayaclh+
+wRQ8nDWFOQUsMB3He/Z+aO6l/ZNvdVdzRUHda1XvN41nwXUL9FQUn/TLYgHbxa7P
+Yy18ZnNzH/xGSwDgRrqPEAZ8KOpbHEbNyYuYuv6IM8Xmbp8Q6bl2RyBNnrlphksJ
+kLvO6RLHUvvw5uX5bt+u3umoZ+yHUkP13NtQHTyZ8VTCQimkB6OisisOTnV8OjLG
+xtLEF/TjeGFAAoEnc8bQAPvrtONQL19rPkMB0gXYXPBbGw7eWYr3QpuOujUXcz9U
+0JSSEov7cUepdTY8LEYFw8U5WimKY6f/uJUVx/ukNPtuAljJji0cjIGEOX2XGlBV
+Ix/U3vywLBfUFW5hT+75z7UB3yG3Zexo0WSaQxxZ5PHxyPYBK1PvVkH0LvkbxJcr
+rouJJQ66chjRglUbv4lf85/cG1ZLu3Ds0UbuD0gE9sAEwXtfdgDmp/HB7mxwJr1O
+BRbTRv0Okx/lovWXkxt+hX+DXZ1u1qdZUW3zjmge8W7xag3epD21jIjFDODgUfDT
+fgJi2FQq+szpagfPN5j5aIQKHCZf0DLbBD+ZWYQdld5JZs2V5QARAQABiQI2BBgB
+CAAgFiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvwA+gCGwwACgkQyfztbKa3lFTa
+yxAAxQo/9dvOO74J+9XznCYb5iO1B1ksnVegSGVuId45JKXkCkuWvDOkcU8+ma38
+wo3MBoPLpSMCXc/mKQ0p0ntO1tD/Wf4nBBCvseWcsR6RR5Su5jYorm0qZ89IOEPN
+K2W2Z41X6DHyteB1dAyIyexOYoLKD7iWcQzga4/EoUPEwcr8BWWgGLBfRhXsYySz
+F3fQPS7KaemDLGbJfTDZCSqmsZPnlksSvGxEBwUwfCjfY+QHxzWPRFPkuQJJR6YW
+tiZ3z7jBRdRk/R5v2CJZJuGHcPPYQy6j2TYGONojm+ifaq1hz+A0aoy4P9qRW5Nl
+mm6yiqEoJe07DrMLxn3H3ucuOo7DiNWmkkjW8DfhFSd+3pFMSvKGujOJWN27UDEp
+ERWFX50gE15Sq4aPbMPNRejFQ1n75B4jfFQXg6WuwF3kwgHK3Y5T5vTEkbPgce9c
+SyyFWU7EA4DJGnt7/FoaPDTKOWI9WSkmjOSABTBNSaUiMSFA3Wg/T0aS5pETpkv2
+S/GVVX022orAGK8zEY1vr2a24itOAKpQwFRuMjqDCBVgKAsMtlPu8jv3Zm/AMcYM
+sRRnDWJh2TO8bqXXUG/o783fcTE3d1Ff7s4BfmBqpGHigZeehNvu+FshRDYaDrDN
+IS0fTqbsX/JjaCXwU/o2E6G4aE79Ut/IMsCYzItTDh2UmcS5Ag0EW/G8wgEQALBi
+2/A7Ev/92mYi4Gm//IJEKjm2Vc3NcX5LdSyPwdSLlHSRwvzZz7M0VeflcTYqssto
+VPVf4maDtLGbQJn43CLqjvIW/C6jzjfvoZf0gbHpNfKY1ENs5xgE0wd3ZdsqpQC6
+W9Pu+kN31QS9+RUKwiG2bNBIREChL/omqiLhNu3hDbZnB+uSByOk901XVrNmKa8G
+NzXSfJSCt0gP7XU6VpMqjxppA8Y2Vo7jnylbrgVJriTt6jtjDylBBQqmHSOXMT+q
+9kIWDSocKhSFHBMO6LYnAwbMef2kqio5zaKzZAuwis0zjOqKHwW54xL2T7djFav9
+VlgcAYN105iMLUiIl39HLeZnS5pUESOXRUv/qLwiQRvBlWBPIep3+ycM2eK8r5a1
+5EwCgN2nSl3KYjzTOisCmK1nQs+gQ1RMraeBGYEG0uIUvDxfoONTuYkM3dhWq2Xx
+V/OO6yUkfyOlBGUREe1PXAOsP0LtAFJha7kbh7Eg6GGU7gRYh2dG2Ln6Vmx1ldbS
+F3woFYPGNMsQmgEKxwyjKaq0Qhd/sKHrTpPz8PXfGP4dHegExKegS7Yof1VrKBB+
+L8Q8o1Oi8JPCjRp47iga5OYS1Vn3h5a07ajzSAxPsmF0lmF4tYk2MFxSs403ShiE
+BTjN4t6rjmnoQV/b+CuhpmvzxaYr736/jkY7s0I5ABEBAAGJBGwEGAEIACAWIQT4
+KAb9ob9bmhswFOfJ/O1spreUVAUCW/G8wgIbAgJACRDJ/O1spreUVMF0IAQZAQgA
+HRYhBB2wOl45wX3kd77c+/0dTvV/qVkCBQJb8bzCAAoJEP0dTvV/qVkC3tUP/2rR
+VDaSPj9+UYJtHGDfQmYCEqxROm5wGCJbNrUQspLeL8+XrsaUDh1ldNAQtoDqGjRp
+kwjJAS0OZfvCv7pI052NK/KVGaK5Tj2+0lxTAcGbAKoH8E2HWPlERpU9CRLvzvDE
+4GGxw2nw7aobNGbf9d98c9RpZuAul92BOClnpGEU4VzjKUk9IsSjZQVJnggQujxL
+qWWiwfGwVsj2PdgPao/P48cYNl5CACBgY19AAh7WzgJVz/6je/5NLdAAV+E31qSE
+EaZsvTBqrMOtH6iTn1GpJ73FsJ0BYVt9X99bRT0Vi0iWulBuhYfZG4PdCY6fv6uC
+d+6pAC+Y/M9npaLbBHscSlJheTyvfuB7bzYBY+Q87VHSOMuNni7U08FuiILFoF+e
+/ESU/v0Hde44ghiXKSaFO8djxc874KM9UlGWvw9UbmI8Z2uM0kDcrPZ/8tcjXOhp
+PEBib54ab4tKCUCtOmsF9ZiT0hOqYdP9bXW+6OGfCignJ7ABhPpANfx2Sn/28L9l
+PbF1nA5CkHdyo/ku1Z/lNq44yvrB8r0Ljq6s3KS69dUZqqrADeogOdi0/TrghtKU
+DERWGmQagYSzMIvsXoAI56MxXFLriSObmpFLTWq7cr/+Ju3AcaSkrpDSYi3U6vLL
+8NuXPhul1S/+yPwvX6Mk1Zkip9/Wg4SQeiT2R7xj8zMP/RJ8uKbnKpOftY89Kv0Y
+FZ4hE3FeBR3UJvkuPdQYNLQRluzh63Bzc4ClSxB9Ma7fmAEiuFtgEi4HLTMBDOHO
+uVMuWYcgubu9VBlAGLJ++gnKxCAJXEntuB49il8MjMsy+uv/cFCjPG9z/1pmWYrE
+XBNA+vcaOrNTS2IykAbqybcPYbBcN47bm+A4i5yqiahk0q++j4LOW/nf88xXO7xI
+V/4vQgemh7RHgHJOkKfzOPw/Kx3UjV1jA9gEUrusHE4R3Upxh0ZeQW19hUnVlao1
+TxxKEUryrRzckuRfc5ziMWNyJaZsPMkeBEhyY/CizDFPrsSXIAijfu8KFnxCsnaM
+ylFBWOu5FwsKMDXxu0QdwqpL2CM8p+q12z1VruNjpIc8bAc0/YMndjYnxzsqQEMV
+GQIDKWqh/m6v7sqbn65ZQcVAzSAriGcQxCOIoT/TA/J+/4BSk5c8TKlqT8NBT77B
+Z70vMr41mZus1A/ciI8AxgbYwlhuvTehdm74k/c7NSzTxeG3OumTlBR1I18C4AIi
+y4iM3O4H4jvEssWBUzpm3VJG0NvcN/M4YVZHX5yxWQuIFcghzb7sLYddmRvR9B0M
+Xowot//r/sgn43xv54sIvwe9MkCCU6j7ePYUlOUnn+vQ5i7rFN/UPub3V3toI2gg
+DRuKdymWEii1jA9KlmheLTFr
+=r9L+
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/flakes/rsync_backup/flake.nix b/flakes/rsync_backup/flake.nix
index 6d359e5..d81d176 100644
--- a/flakes/rsync_backup/flake.nix
+++ b/flakes/rsync_backup/flake.nix
@@ -183,7 +183,7 @@
if [ "$skip" != "$DEST" ]; then
'';
backup_profile_tail = name: profile: ''
- ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -i ${ssh_key} -p $PORT $DEST sh -c "date > .cache/last_backup"
+ ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -i ${ssh_key} -p $PORT $DEST sh -c "date > .cache/last_backup" || true
fi # [ "$skip" != "$DEST" ]
##### End ${name} #####
'';
@@ -228,7 +228,7 @@
];
programs.ssh.knownHosts = lib.attrsets.mapAttrs' (name: profile: lib.attrsets.nameValuePair name {
- hostNames = [ profile.host ];
+ extraHostNames = [ profile.host ];
publicKey = "${profile.host_key_type} ${profile.host_key}";
}) cfg.profiles;
diff --git a/flakes/secrets/flake.nix b/flakes/secrets/flake.nix
index ef74a30..7bf04a4 100644
--- a/flakes/secrets/flake.nix
+++ b/flakes/secrets/flake.nix
@@ -3,6 +3,8 @@
outputs = { self }: {
nixosModule = { config, lib, pkgs, ... }: {
+ # Necessary for situations where flake gets included multiple times
+ key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
options.secrets = with lib; {
keys = mkOption {
type = types.attrsOf (types.submodule {
@@ -36,11 +38,38 @@
type = types.str;
description = "Content of the entry";
};
+ keyDependencies = mkOption {
+ default = [];
+ type = types.listOf (types.either types.path types.package);
+ description = ''
+ (public) system dependencies that needs to be
+ uploaded with the key.
+
+ keyDependencies + ignoredKeyDependencies should
+ contain the exhaustive list of the text context.
+
+ A warning will be thrown if there are remaning
+ dependencies from the text.
+ '';
+ };
+ ignoredKeyDependencies = mkOption {
+ default = [];
+ type = types.listOf (types.either types.path types.package);
+ description = ''
+ dependencies that must not be sent along with the key.
+
+ keyDependencies + ignoredKeyDependencies should
+ contain the exhaustive list of the text context.
+
+ A warning will be thrown if there are remaning
+ dependencies from the text.
+ '';
+ };
};
});
default = {};
description = "Keys attrs to upload to the server";
- apply = lib.mapAttrsToList (dest: v: v // { inherit dest; });
+ apply = builtins.mapAttrs (dest: v: v // { inherit dest; });
};
gpgKeys = mkOption {
type = types.listOf types.path;
@@ -74,8 +103,8 @@
# Read-only variables
fullPaths = mkOption {
type = types.attrsOf types.path;
- default = builtins.listToAttrs
- (map (v: { name = v.dest; value = "${config.secrets.location}/${v.dest}"; }) config.secrets.keys);
+ default = builtins.mapAttrs
+ (n: v: "${config.secrets.location}/${n}") config.secrets.keys;
readOnly = true;
description = "set of full paths to secrets";
};
@@ -83,7 +112,7 @@
config = let
location = config.secrets.location;
- keys = config.secrets.keys;
+ keys = builtins.attrValues config.secrets.keys;
empty = pkgs.runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out && touch $out/done";
fpath = v: "secrets/${v.dest}${lib.optionalString v.isTemplated ".gucci.tpl"}";
dumpKey = v:
@@ -125,7 +154,24 @@
exclPath = builtins.concatStringsSep " -o " (map (d: " -path $TMP/${d.dest}") dirs);
in
lib.optionalString (builtins.length dirs > 0) " -not \\( ${exclPath} \\) ";
+
+ checkKeyDependencies = key:
+ let
+ allDeps = builtins.map (n: if builtins.isPath n then "${n}" else n.drvPath) (key.keyDependencies ++ key.ignoredKeyDependencies);
+ context = builtins.attrNames (builtins.getContext key.text);
+ missing = builtins.foldl' (o: n: lib.remove n o) context allDeps;
+ in
+ lib.optional (!key.isDir && builtins.length missing > 0)
+ ''
+ Key ${key.dest} has non declared dependencies in its context: ${builtins.concatStringsSep " " missing}
+ Add them to ignoredKeyDependencies to ignore
+ '';
in lib.mkIf (builtins.length keys > 0) {
+ warnings = lib.concatMap checkKeyDependencies keys;
+ # FIXME: Use lib.concatMap (k: k.keyDependencies) keys in latest nixpkgs
+ system.extraDependencies = lib.concatMap (k: builtins.map (dep:
+ if builtins.isPath dep then pkgs.writeText "extra-dep" "${dep}" else dep
+ ) k.keyDependencies) keys;
system.activationScripts.secrets = {
deps = [ "users" "wrappers" ];
text = ''
@@ -133,13 +179,11 @@
TMP=$(${pkgs.coreutils}/bin/mktemp -d)
TMPWORK=$(${pkgs.coreutils}/bin/mktemp -d)
chmod go-rwx $TMPWORK
- if [ -n "$TMP" -a -n "$TMPWORK" ]; then
+ if [ -n "$TMP" -a -n "$TMPWORK" -a -f ${config.secrets.secretsVars} ]; then
install -m0750 -o root -g keys -d $TMP
${pkgs.ssh-to-age}/bin/ssh-to-age -private-key -i ${config.secrets.decryptKey} -o $TMPWORK/keys.txt
SOPS_AGE_KEY_FILE=$TMPWORK/keys.txt ${pkgs.sops}/bin/sops -d ${secrets} | ${pkgs.gnutar}/bin/tar --strip-components 1 -C $TMP -x
- if [ -f ${config.secrets.secretsVars} ]; then
- SOPS_AGE_KEY_FILE=$TMPWORK/keys.txt ${pkgs.sops}/bin/sops -d ${config.secrets.secretsVars} > $TMPWORK/vars.yml
- fi
+ SOPS_AGE_KEY_FILE=$TMPWORK/keys.txt ${pkgs.sops}/bin/sops -d ${config.secrets.secretsVars} > $TMPWORK/vars.yml
if [ -f $TMPWORK/vars.yml ]; then
find $TMP -name "*.gucci.tpl" -exec \
/bin/sh -c 'f="{}"; ${pkgs.gucci}/bin/gucci -f '$TMPWORK'/vars.yml "$f" > "''${f%.gucci.tpl}"; touch --reference "$f" ''${f%.gucci.tpl} ; chmod --reference="$f" ''${f%.gucci.tpl} ; chown --reference="$f" ''${f%.gucci.tpl}' \;
diff --git a/flakes/surfer/default.nix b/flakes/surfer/default.nix
new file mode 100644
index 0000000..7a25199
--- /dev/null
+++ b/flakes/surfer/default.nix
@@ -0,0 +1,12 @@
+{ callPackage, nodeEnv, src }:
+# built using node2nix -l package-lock.json
+# and changing "./." to "src"
+(callPackage ./node-packages.nix {
+ inherit src;
+ nodeEnv = callPackage nodeEnv {};
+}).package.overrideAttrs(old: {
+ postInstall = ''
+ mkdir -p $out/bin
+ ln -s ../cloudron-surfer/server.js $out/lib/node_modules/.bin/surfer-server
+ '';
+})
diff --git a/flakes/surfer/flake.lock b/flakes/surfer/flake.lock
new file mode 100644
index 0000000..66bea60
--- /dev/null
+++ b/flakes/surfer/flake.lock
@@ -0,0 +1,149 @@
+{
+ "nodes": {
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts",
+ "nixpkgs": "nixpkgs",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "mypackages": "mypackages",
+ "nixpkgs": "nixpkgs_2",
+ "surfer": "surfer"
+ }
+ },
+ "surfer": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1588637864,
+ "narHash": "sha256-B1Sbu1YSHj+ONSoT5v6bVlAHJWtceUV4O5huGhc8b0U=",
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "revCount": 318,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ },
+ "original": {
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/surfer/flake.nix b/flakes/surfer/flake.nix
new file mode 100644
index 0000000..996104c
--- /dev/null
+++ b/flakes/surfer/flake.nix
@@ -0,0 +1,36 @@
+{
+ description = "Surfer is a Simple static file server";
+ inputs.flake-utils.url = "github:numtide/flake-utils";
+ inputs.nixpkgs = {
+ url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
+ flake = false;
+ };
+ inputs.surfer = {
+ url = "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git";
+ type = "git";
+ rev = "476177380452c9c7c5b1624805feedc824c5995e";
+ flake = false;
+ };
+ inputs.mypackages.url = "path:../mypackages";
+ outputs = { self, nixpkgs, surfer, flake-utils, mypackages }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
+ let
+ pkgs = import nixpkgs { inherit system; overlays = []; };
+ nodeEnv = mypackages.mylibs.nodeEnv;
+ inherit (pkgs) callPackage;
+ in rec {
+ packages.surfer = callPackage ./. { inherit nodeEnv; src = surfer; };
+ defaultPackage = packages.surfer;
+ legacyPackages.surfer = packages.surfer;
+ checks = {
+ build = defaultPackage;
+ };
+ }
+ ) // rec {
+ overlays = {
+ surfer = final: prev: {
+ surfer = self.defaultPackage."${final.system}";
+ };
+ };
+ overlay = overlays.surfer;
+ };
+}
diff --git a/flakes/surfer/node-packages.nix b/flakes/surfer/node-packages.nix
new file mode 100644
index 0000000..a1fb5ba
--- /dev/null
+++ b/flakes/surfer/node-packages.nix
@@ -0,0 +1,2437 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, src, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+ sources = {
+ "accepts-1.3.4" = {
+ name = "accepts";
+ packageName = "accepts";
+ version = "1.3.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz";
+ sha1 = "86246758c7dd6d21a6474ff084a4740ec05eb21f";
+ };
+ };
+ "ajv-5.5.2" = {
+ name = "ajv";
+ packageName = "ajv";
+ version = "5.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz";
+ sha1 = "73b5eeca3fab653e3d3f9422b341ad42205dc965";
+ };
+ };
+ "archiver-4.0.1" = {
+ name = "archiver";
+ packageName = "archiver";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/archiver/-/archiver-4.0.1.tgz";
+ sha512 = "/YV1pU4Nhpf/rJArM23W6GTUjT0l++VbjykrCRua1TSXrn+yM8Qs7XvtwSiRse0iCe49EPNf7ktXnPsWuSb91Q==";
+ };
+ };
+ "archiver-utils-2.1.0" = {
+ name = "archiver-utils";
+ packageName = "archiver-utils";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz";
+ sha512 = "bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==";
+ };
+ };
+ "array-flatten-1.1.1" = {
+ name = "array-flatten";
+ packageName = "array-flatten";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz";
+ sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
+ };
+ };
+ "array-union-1.0.2" = {
+ name = "array-union";
+ packageName = "array-union";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz";
+ sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
+ };
+ };
+ "array-uniq-1.0.3" = {
+ name = "array-uniq";
+ packageName = "array-uniq";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz";
+ sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
+ };
+ };
+ "arrify-1.0.1" = {
+ name = "arrify";
+ packageName = "arrify";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz";
+ sha1 = "898508da2226f380df904728456849c1501a4b0d";
+ };
+ };
+ "asn1-0.2.3" = {
+ name = "asn1";
+ packageName = "asn1";
+ version = "0.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
+ sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
+ };
+ };
+ "assert-plus-0.1.5" = {
+ name = "assert-plus";
+ packageName = "assert-plus";
+ version = "0.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz";
+ sha1 = "ee74009413002d84cec7219c6ac811812e723160";
+ };
+ };
+ "assert-plus-1.0.0" = {
+ name = "assert-plus";
+ packageName = "assert-plus";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
+ sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+ };
+ };
+ "async-1.5.2" = {
+ name = "async";
+ packageName = "async";
+ version = "1.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/async/-/async-1.5.2.tgz";
+ sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
+ };
+ };
+ "async-2.6.3" = {
+ name = "async";
+ packageName = "async";
+ version = "2.6.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/async/-/async-2.6.3.tgz";
+ sha512 = "zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==";
+ };
+ };
+ "asynckit-0.4.0" = {
+ name = "asynckit";
+ packageName = "asynckit";
+ version = "0.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
+ sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+ };
+ };
+ "aws-sign2-0.7.0" = {
+ name = "aws-sign2";
+ packageName = "aws-sign2";
+ version = "0.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
+ sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+ };
+ };
+ "aws4-1.6.0" = {
+ name = "aws4";
+ packageName = "aws4";
+ version = "1.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz";
+ sha1 = "83ef5ca860b2b32e4a0deedee8c771b9db57471e";
+ };
+ };
+ "backoff-2.5.0" = {
+ name = "backoff";
+ packageName = "backoff";
+ version = "2.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz";
+ sha1 = "f616eda9d3e4b66b8ca7fca79f695722c5f8e26f";
+ };
+ };
+ "balanced-match-1.0.0" = {
+ name = "balanced-match";
+ packageName = "balanced-match";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
+ sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+ };
+ };
+ "base64-js-1.3.1" = {
+ name = "base64-js";
+ packageName = "base64-js";
+ version = "1.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz";
+ sha512 = "mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==";
+ };
+ };
+ "basic-auth-2.0.1" = {
+ name = "basic-auth";
+ packageName = "basic-auth";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz";
+ sha512 = "NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==";
+ };
+ };
+ "batch-0.6.1" = {
+ name = "batch";
+ packageName = "batch";
+ version = "0.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz";
+ sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
+ };
+ };
+ "bcrypt-pbkdf-1.0.1" = {
+ name = "bcrypt-pbkdf";
+ packageName = "bcrypt-pbkdf";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz";
+ sha1 = "63bc5dcb61331b92bc05fd528953c33462a06f8d";
+ };
+ };
+ "bcryptjs-2.4.3" = {
+ name = "bcryptjs";
+ packageName = "bcryptjs";
+ version = "2.4.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz";
+ sha1 = "9ab5627b93e60621ff7cdac5da9733027df1d0cb";
+ };
+ };
+ "bl-4.0.2" = {
+ name = "bl";
+ packageName = "bl";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz";
+ sha512 = "j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==";
+ };
+ };
+ "body-parser-1.18.2" = {
+ name = "body-parser";
+ packageName = "body-parser";
+ version = "1.18.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz";
+ sha1 = "87678a19d84b47d859b83199bd59bce222b10454";
+ };
+ };
+ "boom-4.3.1" = {
+ name = "boom";
+ packageName = "boom";
+ version = "4.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz";
+ sha1 = "4f8a3005cb4a7e3889f749030fd25b96e01d2e31";
+ };
+ };
+ "boom-5.2.0" = {
+ name = "boom";
+ packageName = "boom";
+ version = "5.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz";
+ sha512 = "Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==";
+ };
+ };
+ "brace-expansion-1.1.8" = {
+ name = "brace-expansion";
+ packageName = "brace-expansion";
+ version = "1.1.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz";
+ sha1 = "c07b211c7c952ec1f8efd51a77ef0d1d3990a292";
+ };
+ };
+ "buffer-5.6.0" = {
+ name = "buffer";
+ packageName = "buffer";
+ version = "5.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz";
+ sha512 = "/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==";
+ };
+ };
+ "buffer-crc32-0.2.13" = {
+ name = "buffer-crc32";
+ packageName = "buffer-crc32";
+ version = "0.2.13";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz";
+ sha1 = "0d333e3f00eac50aa1454abd30ef8c2a5d9a7242";
+ };
+ };
+ "bunyan-1.8.12" = {
+ name = "bunyan";
+ packageName = "bunyan";
+ version = "1.8.12";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz";
+ sha1 = "f150f0f6748abdd72aeae84f04403be2ef113797";
+ };
+ };
+ "bytes-3.0.0" = {
+ name = "bytes";
+ packageName = "bytes";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz";
+ sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
+ };
+ };
+ "caseless-0.12.0" = {
+ name = "caseless";
+ packageName = "caseless";
+ version = "0.12.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
+ sha1 = "1b681c21ff84033c826543090689420d187151dc";
+ };
+ };
+ "co-4.6.0" = {
+ name = "co";
+ packageName = "co";
+ version = "4.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
+ sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
+ };
+ };
+ "colors-1.1.2" = {
+ name = "colors";
+ packageName = "colors";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz";
+ sha1 = "168a4701756b6a7f51a12ce0c97bfa28c084ed63";
+ };
+ };
+ "combined-stream-1.0.5" = {
+ name = "combined-stream";
+ packageName = "combined-stream";
+ version = "1.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz";
+ sha1 = "938370a57b4a51dea2c77c15d5c5fdf895164009";
+ };
+ };
+ "combined-stream-1.0.6" = {
+ name = "combined-stream";
+ packageName = "combined-stream";
+ version = "1.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz";
+ sha1 = "723e7df6e801ac5613113a7e445a9b69cb632818";
+ };
+ };
+ "combined-stream-1.0.8" = {
+ name = "combined-stream";
+ packageName = "combined-stream";
+ version = "1.0.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
+ sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
+ };
+ };
+ "commander-2.14.1" = {
+ name = "commander";
+ packageName = "commander";
+ version = "2.14.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz";
+ sha512 = "+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==";
+ };
+ };
+ "component-emitter-1.3.0" = {
+ name = "component-emitter";
+ packageName = "component-emitter";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz";
+ sha512 = "Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==";
+ };
+ };
+ "compress-commons-3.0.0" = {
+ name = "compress-commons";
+ packageName = "compress-commons";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/compress-commons/-/compress-commons-3.0.0.tgz";
+ sha512 = "FyDqr8TKX5/X0qo+aVfaZ+PVmNJHJeckFBlq8jZGSJOgnynhfifoyl24qaqdUdDIBe0EVTHByN6NAkqYvE/2Xg==";
+ };
+ };
+ "compressible-2.0.13" = {
+ name = "compressible";
+ packageName = "compressible";
+ version = "2.0.13";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz";
+ sha1 = "0d1020ab924b2fdb4d6279875c7d6daba6baa7a9";
+ };
+ };
+ "compression-1.7.2" = {
+ name = "compression";
+ packageName = "compression";
+ version = "1.7.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/compression/-/compression-1.7.2.tgz";
+ sha1 = "aaffbcd6aaf854b44ebb280353d5ad1651f59a69";
+ };
+ };
+ "concat-map-0.0.1" = {
+ name = "concat-map";
+ packageName = "concat-map";
+ version = "0.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+ sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+ };
+ };
+ "connect-lastmile-1.2.2" = {
+ name = "connect-lastmile";
+ packageName = "connect-lastmile";
+ version = "1.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/connect-lastmile/-/connect-lastmile-1.2.2.tgz";
+ sha512 = "laKBrYAoYNuUYAsJQVUdmCqzi825A0GJ7YuiT8zWP0wU6s0Cv9h1eSdHvXh0DgxaVe0dQaYFufcL1htzPCJIpQ==";
+ };
+ };
+ "connect-timeout-1.9.0" = {
+ name = "connect-timeout";
+ packageName = "connect-timeout";
+ version = "1.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.9.0.tgz";
+ sha1 = "bc27326b122103714bebfa0d958bab33f6522e3a";
+ };
+ };
+ "content-disposition-0.5.2" = {
+ name = "content-disposition";
+ packageName = "content-disposition";
+ version = "0.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz";
+ sha1 = "0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4";
+ };
+ };
+ "content-type-1.0.4" = {
+ name = "content-type";
+ packageName = "content-type";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
+ sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
+ };
+ };
+ "cookie-0.3.1" = {
+ name = "cookie";
+ packageName = "cookie";
+ version = "0.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz";
+ sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
+ };
+ };
+ "cookie-parser-1.4.3" = {
+ name = "cookie-parser";
+ packageName = "cookie-parser";
+ version = "1.4.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz";
+ sha1 = "0fe31fa19d000b95f4aadf1f53fdc2b8a203baa5";
+ };
+ };
+ "cookie-signature-1.0.6" = {
+ name = "cookie-signature";
+ packageName = "cookie-signature";
+ version = "1.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
+ sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
+ };
+ };
+ "cookiejar-2.1.2" = {
+ name = "cookiejar";
+ packageName = "cookiejar";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz";
+ sha512 = "Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==";
+ };
+ };
+ "core-util-is-1.0.2" = {
+ name = "core-util-is";
+ packageName = "core-util-is";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+ sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+ };
+ };
+ "crc-3.4.4" = {
+ name = "crc";
+ packageName = "crc";
+ version = "3.4.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz";
+ sha1 = "9da1e980e3bd44fc5c93bf5ab3da3378d85e466b";
+ };
+ };
+ "crc32-stream-3.0.1" = {
+ name = "crc32-stream";
+ packageName = "crc32-stream";
+ version = "3.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz";
+ sha512 = "mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==";
+ };
+ };
+ "cryptiles-3.1.2" = {
+ name = "cryptiles";
+ packageName = "cryptiles";
+ version = "3.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz";
+ sha1 = "a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe";
+ };
+ };
+ "dashdash-1.14.1" = {
+ name = "dashdash";
+ packageName = "dashdash";
+ version = "1.14.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
+ sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+ };
+ };
+ "debug-2.6.9" = {
+ name = "debug";
+ packageName = "debug";
+ version = "2.6.9";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
+ sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
+ };
+ };
+ "debug-4.1.1" = {
+ name = "debug";
+ packageName = "debug";
+ version = "4.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz";
+ sha512 = "pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==";
+ };
+ };
+ "del-2.2.2" = {
+ name = "del";
+ packageName = "del";
+ version = "2.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/del/-/del-2.2.2.tgz";
+ sha1 = "c12c981d067846c84bcaf862cff930d907ffd1a8";
+ };
+ };
+ "delayed-stream-1.0.0" = {
+ name = "delayed-stream";
+ packageName = "delayed-stream";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
+ sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+ };
+ };
+ "depd-1.1.0" = {
+ name = "depd";
+ packageName = "depd";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz";
+ sha1 = "e1bd82c6aab6ced965b97b88b17ed3e528ca18c3";
+ };
+ };
+ "depd-1.1.1" = {
+ name = "depd";
+ packageName = "depd";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz";
+ sha1 = "5783b4e1c459f06fa5ca27f991f3d06e7a310359";
+ };
+ };
+ "depd-1.1.2" = {
+ name = "depd";
+ packageName = "depd";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
+ sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
+ };
+ };
+ "destroy-1.0.4" = {
+ name = "destroy";
+ packageName = "destroy";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
+ sha1 = "978857442c44749e4206613e37946205826abd80";
+ };
+ };
+ "dtrace-provider-0.8.7" = {
+ name = "dtrace-provider";
+ packageName = "dtrace-provider";
+ version = "0.8.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz";
+ sha1 = "dc939b4d3e0620cfe0c1cd803d0d2d7ed04ffd04";
+ };
+ };
+ "ecc-jsbn-0.1.1" = {
+ name = "ecc-jsbn";
+ packageName = "ecc-jsbn";
+ version = "0.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz";
+ sha1 = "0fc73a9ed5f0d53c38193398523ef7e543777505";
+ };
+ };
+ "ee-first-1.1.1" = {
+ name = "ee-first";
+ packageName = "ee-first";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
+ sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+ };
+ };
+ "encodeurl-1.0.2" = {
+ name = "encodeurl";
+ packageName = "encodeurl";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
+ sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+ };
+ };
+ "end-of-stream-1.4.4" = {
+ name = "end-of-stream";
+ packageName = "end-of-stream";
+ version = "1.4.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz";
+ sha512 = "+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==";
+ };
+ };
+ "escape-html-1.0.3" = {
+ name = "escape-html";
+ packageName = "escape-html";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
+ sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+ };
+ };
+ "etag-1.8.1" = {
+ name = "etag";
+ packageName = "etag";
+ version = "1.8.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
+ sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
+ };
+ };
+ "express-4.16.2" = {
+ name = "express";
+ packageName = "express";
+ version = "4.16.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/express/-/express-4.16.2.tgz";
+ sha1 = "e35c6dfe2d64b7dca0a5cd4f21781be3299e076c";
+ };
+ };
+ "express-session-1.15.6" = {
+ name = "express-session";
+ packageName = "express-session";
+ version = "1.15.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/express-session/-/express-session-1.15.6.tgz";
+ sha512 = "r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==";
+ };
+ };
+ "extend-3.0.2" = {
+ name = "extend";
+ packageName = "extend";
+ version = "3.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
+ sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
+ };
+ };
+ "extsprintf-1.2.0" = {
+ name = "extsprintf";
+ packageName = "extsprintf";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz";
+ sha1 = "5ad946c22f5b32ba7f8cd7426711c6e8a3fc2529";
+ };
+ };
+ "extsprintf-1.3.0" = {
+ name = "extsprintf";
+ packageName = "extsprintf";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
+ sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+ };
+ };
+ "fast-deep-equal-1.0.0" = {
+ name = "fast-deep-equal";
+ packageName = "fast-deep-equal";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz";
+ sha1 = "96256a3bc975595eb36d82e9929d060d893439ff";
+ };
+ };
+ "fast-json-stable-stringify-2.0.0" = {
+ name = "fast-json-stable-stringify";
+ packageName = "fast-json-stable-stringify";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
+ sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
+ };
+ };
+ "fast-safe-stringify-2.0.7" = {
+ name = "fast-safe-stringify";
+ packageName = "fast-safe-stringify";
+ version = "2.0.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz";
+ sha512 = "Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==";
+ };
+ };
+ "fd-slicer-1.0.1" = {
+ name = "fd-slicer";
+ packageName = "fd-slicer";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz";
+ sha1 = "8b5bcbd9ec327c5041bf9ab023fd6750f1177e65";
+ };
+ };
+ "finalhandler-1.1.0" = {
+ name = "finalhandler";
+ packageName = "finalhandler";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz";
+ sha1 = "ce0b6855b45853e791b2fcc680046d88253dd7f5";
+ };
+ };
+ "forever-agent-0.6.1" = {
+ name = "forever-agent";
+ packageName = "forever-agent";
+ version = "0.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
+ sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+ };
+ };
+ "form-data-2.3.2" = {
+ name = "form-data";
+ packageName = "form-data";
+ version = "2.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz";
+ sha1 = "4970498be604c20c005d4f5c23aecd21d6b49099";
+ };
+ };
+ "form-data-3.0.0" = {
+ name = "form-data";
+ packageName = "form-data";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz";
+ sha512 = "CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==";
+ };
+ };
+ "formidable-1.2.1" = {
+ name = "formidable";
+ packageName = "formidable";
+ version = "1.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz";
+ sha512 = "Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==";
+ };
+ };
+ "forwarded-0.1.2" = {
+ name = "forwarded";
+ packageName = "forwarded";
+ version = "0.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz";
+ sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
+ };
+ };
+ "fresh-0.5.2" = {
+ name = "fresh";
+ packageName = "fresh";
+ version = "0.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
+ sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
+ };
+ };
+ "fs-constants-1.0.0" = {
+ name = "fs-constants";
+ packageName = "fs-constants";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz";
+ sha512 = "y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==";
+ };
+ };
+ "fs.realpath-1.0.0" = {
+ name = "fs.realpath";
+ packageName = "fs.realpath";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
+ sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+ };
+ };
+ "getpass-0.1.7" = {
+ name = "getpass";
+ packageName = "getpass";
+ version = "0.1.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
+ sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+ };
+ };
+ "glob-6.0.4" = {
+ name = "glob";
+ packageName = "glob";
+ version = "6.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz";
+ sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
+ };
+ };
+ "glob-7.1.2" = {
+ name = "glob";
+ packageName = "glob";
+ version = "7.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
+ sha1 = "c19c9df9a028702d678612384a6552404c636d15";
+ };
+ };
+ "glob-7.1.6" = {
+ name = "glob";
+ packageName = "glob";
+ version = "7.1.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
+ sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==";
+ };
+ };
+ "globby-5.0.0" = {
+ name = "globby";
+ packageName = "globby";
+ version = "5.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz";
+ sha1 = "ebd84667ca0dbb330b99bcfc68eac2bc54370e0d";
+ };
+ };
+ "graceful-fs-4.2.4" = {
+ name = "graceful-fs";
+ packageName = "graceful-fs";
+ version = "4.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz";
+ sha512 = "WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==";
+ };
+ };
+ "har-schema-2.0.0" = {
+ name = "har-schema";
+ packageName = "har-schema";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
+ sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+ };
+ };
+ "har-validator-5.0.3" = {
+ name = "har-validator";
+ packageName = "har-validator";
+ version = "5.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz";
+ sha1 = "ba402c266194f15956ef15e0fcf242993f6a7dfd";
+ };
+ };
+ "hawk-6.0.2" = {
+ name = "hawk";
+ packageName = "hawk";
+ version = "6.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz";
+ sha512 = "miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==";
+ };
+ };
+ "hoek-4.2.1" = {
+ name = "hoek";
+ packageName = "hoek";
+ version = "4.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz";
+ sha512 = "QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==";
+ };
+ };
+ "http-errors-1.6.1" = {
+ name = "http-errors";
+ packageName = "http-errors";
+ version = "1.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz";
+ sha1 = "5f8b8ed98aca545656bf572997387f904a722257";
+ };
+ };
+ "http-errors-1.6.2" = {
+ name = "http-errors";
+ packageName = "http-errors";
+ version = "1.6.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz";
+ sha1 = "0a002cc85707192a7e7946ceedc11155f60ec736";
+ };
+ };
+ "http-errors-1.6.3" = {
+ name = "http-errors";
+ packageName = "http-errors";
+ version = "1.6.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz";
+ sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
+ };
+ };
+ "http-signature-1.2.0" = {
+ name = "http-signature";
+ packageName = "http-signature";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
+ sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+ };
+ };
+ "iconv-lite-0.4.19" = {
+ name = "iconv-lite";
+ packageName = "iconv-lite";
+ version = "0.4.19";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz";
+ sha512 = "oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==";
+ };
+ };
+ "ieee754-1.1.13" = {
+ name = "ieee754";
+ packageName = "ieee754";
+ version = "1.1.13";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz";
+ sha512 = "4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==";
+ };
+ };
+ "inflight-1.0.6" = {
+ name = "inflight";
+ packageName = "inflight";
+ version = "1.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
+ sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+ };
+ };
+ "inherits-2.0.3" = {
+ name = "inherits";
+ packageName = "inherits";
+ version = "2.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
+ sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+ };
+ };
+ "inherits-2.0.4" = {
+ name = "inherits";
+ packageName = "inherits";
+ version = "2.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
+ sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
+ };
+ };
+ "ipaddr.js-1.5.2" = {
+ name = "ipaddr.js";
+ packageName = "ipaddr.js";
+ version = "1.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz";
+ sha1 = "d4b505bde9946987ccf0fc58d9010ff9607e3fa0";
+ };
+ };
+ "is-path-cwd-1.0.0" = {
+ name = "is-path-cwd";
+ packageName = "is-path-cwd";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz";
+ sha1 = "d225ec23132e89edd38fda767472e62e65f1106d";
+ };
+ };
+ "is-path-in-cwd-1.0.0" = {
+ name = "is-path-in-cwd";
+ packageName = "is-path-in-cwd";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz";
+ sha1 = "6477582b8214d602346094567003be8a9eac04dc";
+ };
+ };
+ "is-path-inside-1.0.0" = {
+ name = "is-path-inside";
+ packageName = "is-path-inside";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz";
+ sha1 = "fc06e5a1683fbda13de667aff717bbc10a48f37f";
+ };
+ };
+ "is-typedarray-1.0.0" = {
+ name = "is-typedarray";
+ packageName = "is-typedarray";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
+ sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+ };
+ };
+ "isarray-1.0.0" = {
+ name = "isarray";
+ packageName = "isarray";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
+ sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+ };
+ };
+ "isstream-0.1.2" = {
+ name = "isstream";
+ packageName = "isstream";
+ version = "0.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
+ sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+ };
+ };
+ "jsbn-0.1.1" = {
+ name = "jsbn";
+ packageName = "jsbn";
+ version = "0.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
+ sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+ };
+ };
+ "json-schema-0.2.3" = {
+ name = "json-schema";
+ packageName = "json-schema";
+ version = "0.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
+ sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+ };
+ };
+ "json-schema-traverse-0.3.1" = {
+ name = "json-schema-traverse";
+ packageName = "json-schema-traverse";
+ version = "0.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz";
+ sha1 = "349a6d44c53a51de89b40805c5d5e59b417d3340";
+ };
+ };
+ "json-stringify-safe-5.0.1" = {
+ name = "json-stringify-safe";
+ packageName = "json-stringify-safe";
+ version = "5.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+ sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+ };
+ };
+ "jsprim-1.4.1" = {
+ name = "jsprim";
+ packageName = "jsprim";
+ version = "1.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
+ sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+ };
+ };
+ "lazystream-1.0.0" = {
+ name = "lazystream";
+ packageName = "lazystream";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz";
+ sha1 = "f6995fe0f820392f61396be89462407bb77168e4";
+ };
+ };
+ "ldap-filter-0.2.2" = {
+ name = "ldap-filter";
+ packageName = "ldap-filter";
+ version = "0.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz";
+ sha1 = "f2b842be0b86da3352798505b31ebcae590d77d0";
+ };
+ };
+ "ldapjs-1.0.2" = {
+ name = "ldapjs";
+ packageName = "ldapjs";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.2.tgz";
+ sha1 = "544ff7032b7b83c68f0701328d9297aa694340f9";
+ };
+ };
+ "lodash-4.17.15" = {
+ name = "lodash";
+ packageName = "lodash";
+ version = "4.17.15";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz";
+ sha512 = "8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==";
+ };
+ };
+ "lodash.defaults-4.2.0" = {
+ name = "lodash.defaults";
+ packageName = "lodash.defaults";
+ version = "4.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
+ sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
+ };
+ };
+ "lodash.difference-4.5.0" = {
+ name = "lodash.difference";
+ packageName = "lodash.difference";
+ version = "4.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz";
+ sha1 = "9ccb4e505d486b91651345772885a2df27fd017c";
+ };
+ };
+ "lodash.flatten-4.4.0" = {
+ name = "lodash.flatten";
+ packageName = "lodash.flatten";
+ version = "4.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz";
+ sha1 = "f31c22225a9632d2bbf8e4addbef240aa765a61f";
+ };
+ };
+ "lodash.isplainobject-4.0.6" = {
+ name = "lodash.isplainobject";
+ packageName = "lodash.isplainobject";
+ version = "4.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz";
+ sha1 = "7c526a52d89b45c45cc690b88163be0497f550cb";
+ };
+ };
+ "lodash.union-4.6.0" = {
+ name = "lodash.union";
+ packageName = "lodash.union";
+ version = "4.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz";
+ sha1 = "48bb5088409f16f1821666641c44dd1aaae3cd88";
+ };
+ };
+ "media-typer-0.3.0" = {
+ name = "media-typer";
+ packageName = "media-typer";
+ version = "0.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
+ sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+ };
+ };
+ "merge-descriptors-1.0.1" = {
+ name = "merge-descriptors";
+ packageName = "merge-descriptors";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
+ sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
+ };
+ };
+ "methods-1.1.2" = {
+ name = "methods";
+ packageName = "methods";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
+ sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
+ };
+ };
+ "mime-1.4.1" = {
+ name = "mime";
+ packageName = "mime";
+ version = "1.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz";
+ sha512 = "KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==";
+ };
+ };
+ "mime-2.4.4" = {
+ name = "mime";
+ packageName = "mime";
+ version = "2.4.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz";
+ sha512 = "LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==";
+ };
+ };
+ "mime-db-1.27.0" = {
+ name = "mime-db";
+ packageName = "mime-db";
+ version = "1.27.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz";
+ sha1 = "820f572296bbd20ec25ed55e5b5de869e5436eb1";
+ };
+ };
+ "mime-db-1.33.0" = {
+ name = "mime-db";
+ packageName = "mime-db";
+ version = "1.33.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz";
+ sha512 = "BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==";
+ };
+ };
+ "mime-db-1.38.0" = {
+ name = "mime-db";
+ packageName = "mime-db";
+ version = "1.38.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz";
+ sha512 = "bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==";
+ };
+ };
+ "mime-db-1.44.0" = {
+ name = "mime-db";
+ packageName = "mime-db";
+ version = "1.44.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz";
+ sha512 = "/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==";
+ };
+ };
+ "mime-types-2.1.15" = {
+ name = "mime-types";
+ packageName = "mime-types";
+ version = "2.1.15";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz";
+ sha1 = "a4ebf5064094569237b8cf70046776d09fc92aed";
+ };
+ };
+ "mime-types-2.1.18" = {
+ name = "mime-types";
+ packageName = "mime-types";
+ version = "2.1.18";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz";
+ sha512 = "lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==";
+ };
+ };
+ "mime-types-2.1.22" = {
+ name = "mime-types";
+ packageName = "mime-types";
+ version = "2.1.22";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz";
+ sha512 = "aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==";
+ };
+ };
+ "mime-types-2.1.27" = {
+ name = "mime-types";
+ packageName = "mime-types";
+ version = "2.1.27";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz";
+ sha512 = "JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==";
+ };
+ };
+ "minimatch-3.0.4" = {
+ name = "minimatch";
+ packageName = "minimatch";
+ version = "3.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
+ sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
+ };
+ };
+ "minimist-0.0.8" = {
+ name = "minimist";
+ packageName = "minimist";
+ version = "0.0.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
+ sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
+ };
+ };
+ "mkdirp-0.5.1" = {
+ name = "mkdirp";
+ packageName = "mkdirp";
+ version = "0.5.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
+ sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+ };
+ };
+ "moment-2.24.0" = {
+ name = "moment";
+ packageName = "moment";
+ version = "2.24.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
+ sha512 = "bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==";
+ };
+ };
+ "morgan-1.9.1" = {
+ name = "morgan";
+ packageName = "morgan";
+ version = "1.9.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz";
+ sha512 = "HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==";
+ };
+ };
+ "ms-2.0.0" = {
+ name = "ms";
+ packageName = "ms";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
+ sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+ };
+ };
+ "ms-2.1.2" = {
+ name = "ms";
+ packageName = "ms";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+ sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
+ };
+ };
+ "multiparty-4.1.3" = {
+ name = "multiparty";
+ packageName = "multiparty";
+ version = "4.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/multiparty/-/multiparty-4.1.3.tgz";
+ sha1 = "3c43c7fcb1896e17460436a9dd0b6ef1668e4f94";
+ };
+ };
+ "mv-2.1.1" = {
+ name = "mv";
+ packageName = "mv";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz";
+ sha1 = "ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2";
+ };
+ };
+ "nan-2.12.1" = {
+ name = "nan";
+ packageName = "nan";
+ version = "2.12.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz";
+ sha512 = "JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==";
+ };
+ };
+ "ncp-2.0.0" = {
+ name = "ncp";
+ packageName = "ncp";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz";
+ sha1 = "195a21d6c46e361d2fb1281ba38b91e9df7bdbb3";
+ };
+ };
+ "negotiator-0.6.1" = {
+ name = "negotiator";
+ packageName = "negotiator";
+ version = "0.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz";
+ sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
+ };
+ };
+ "normalize-path-3.0.0" = {
+ name = "normalize-path";
+ packageName = "normalize-path";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";
+ sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==";
+ };
+ };
+ "oauth-sign-0.8.2" = {
+ name = "oauth-sign";
+ packageName = "oauth-sign";
+ version = "0.8.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz";
+ sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
+ };
+ };
+ "object-assign-4.1.1" = {
+ name = "object-assign";
+ packageName = "object-assign";
+ version = "4.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
+ sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+ };
+ };
+ "on-finished-2.3.0" = {
+ name = "on-finished";
+ packageName = "on-finished";
+ version = "2.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
+ sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+ };
+ };
+ "on-headers-1.0.1" = {
+ name = "on-headers";
+ packageName = "on-headers";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz";
+ sha1 = "928f5d0f470d49342651ea6794b0857c100693f7";
+ };
+ };
+ "once-1.4.0" = {
+ name = "once";
+ packageName = "once";
+ version = "1.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+ sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+ };
+ };
+ "parseurl-1.3.2" = {
+ name = "parseurl";
+ packageName = "parseurl";
+ version = "1.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz";
+ sha1 = "fc289d4ed8993119460c156253262cdc8de65bf3";
+ };
+ };
+ "path-is-absolute-1.0.1" = {
+ name = "path-is-absolute";
+ packageName = "path-is-absolute";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+ sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+ };
+ };
+ "path-is-inside-1.0.2" = {
+ name = "path-is-inside";
+ packageName = "path-is-inside";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz";
+ sha1 = "365417dede44430d1c11af61027facf074bdfc53";
+ };
+ };
+ "path-to-regexp-0.1.7" = {
+ name = "path-to-regexp";
+ packageName = "path-to-regexp";
+ version = "0.1.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
+ sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
+ };
+ };
+ "pend-1.2.0" = {
+ name = "pend";
+ packageName = "pend";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz";
+ sha1 = "7a57eb550a6783f9115331fcf4663d5c8e007a50";
+ };
+ };
+ "performance-now-2.1.0" = {
+ name = "performance-now";
+ packageName = "performance-now";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
+ sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+ };
+ };
+ "pify-2.3.0" = {
+ name = "pify";
+ packageName = "pify";
+ version = "2.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz";
+ sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
+ };
+ };
+ "pinkie-2.0.4" = {
+ name = "pinkie";
+ packageName = "pinkie";
+ version = "2.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
+ sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
+ };
+ };
+ "pinkie-promise-2.0.1" = {
+ name = "pinkie-promise";
+ packageName = "pinkie-promise";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
+ sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
+ };
+ };
+ "precond-0.2.3" = {
+ name = "precond";
+ packageName = "precond";
+ version = "0.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz";
+ sha1 = "aa9591bcaa24923f1e0f4849d240f47efc1075ac";
+ };
+ };
+ "process-nextick-args-2.0.1" = {
+ name = "process-nextick-args";
+ packageName = "process-nextick-args";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
+ sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
+ };
+ };
+ "proxy-addr-2.0.2" = {
+ name = "proxy-addr";
+ packageName = "proxy-addr";
+ version = "2.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz";
+ sha1 = "6571504f47bb988ec8180253f85dd7e14952bdec";
+ };
+ };
+ "punycode-1.4.1" = {
+ name = "punycode";
+ packageName = "punycode";
+ version = "1.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
+ sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
+ };
+ };
+ "qs-6.5.1" = {
+ name = "qs";
+ packageName = "qs";
+ version = "6.5.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz";
+ sha512 = "eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==";
+ };
+ };
+ "qs-6.9.1" = {
+ name = "qs";
+ packageName = "qs";
+ version = "6.9.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz";
+ sha512 = "Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==";
+ };
+ };
+ "random-bytes-1.0.0" = {
+ name = "random-bytes";
+ packageName = "random-bytes";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz";
+ sha1 = "4f68a1dc0ae58bd3fb95848c30324db75d64360b";
+ };
+ };
+ "range-parser-1.2.0" = {
+ name = "range-parser";
+ packageName = "range-parser";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz";
+ sha1 = "f49be6b487894ddc40dcc94a322f611092e00d5e";
+ };
+ };
+ "raw-body-2.3.2" = {
+ name = "raw-body";
+ packageName = "raw-body";
+ version = "2.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz";
+ sha1 = "bcd60c77d3eb93cde0050295c3f379389bc88f89";
+ };
+ };
+ "readable-stream-2.3.7" = {
+ name = "readable-stream";
+ packageName = "readable-stream";
+ version = "2.3.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
+ sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
+ };
+ };
+ "readable-stream-3.4.0" = {
+ name = "readable-stream";
+ packageName = "readable-stream";
+ version = "3.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz";
+ sha512 = "jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==";
+ };
+ };
+ "readable-stream-3.6.0" = {
+ name = "readable-stream";
+ packageName = "readable-stream";
+ version = "3.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
+ sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
+ };
+ };
+ "readline-sync-1.4.9" = {
+ name = "readline-sync";
+ packageName = "readline-sync";
+ version = "1.4.9";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.9.tgz";
+ sha1 = "3eda8e65f23cd2a17e61301b1f0003396af5ecda";
+ };
+ };
+ "request-2.83.0" = {
+ name = "request";
+ packageName = "request";
+ version = "2.83.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/request/-/request-2.83.0.tgz";
+ sha512 = "lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==";
+ };
+ };
+ "rimraf-2.4.5" = {
+ name = "rimraf";
+ packageName = "rimraf";
+ version = "2.4.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz";
+ sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
+ };
+ };
+ "rimraf-2.6.1" = {
+ name = "rimraf";
+ packageName = "rimraf";
+ version = "2.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz";
+ sha1 = "c2338ec643df7a1b7fe5c54fa86f57428a55f33d";
+ };
+ };
+ "safe-buffer-5.1.1" = {
+ name = "safe-buffer";
+ packageName = "safe-buffer";
+ version = "5.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz";
+ sha512 = "kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==";
+ };
+ };
+ "safe-buffer-5.1.2" = {
+ name = "safe-buffer";
+ packageName = "safe-buffer";
+ version = "5.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
+ sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
+ };
+ };
+ "safe-buffer-5.2.0" = {
+ name = "safe-buffer";
+ packageName = "safe-buffer";
+ version = "5.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz";
+ sha512 = "fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==";
+ };
+ };
+ "safe-json-stringify-1.2.0" = {
+ name = "safe-json-stringify";
+ packageName = "safe-json-stringify";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz";
+ sha512 = "gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==";
+ };
+ };
+ "safer-buffer-2.1.2" = {
+ name = "safer-buffer";
+ packageName = "safer-buffer";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
+ sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
+ };
+ };
+ "safetydance-0.1.1" = {
+ name = "safetydance";
+ packageName = "safetydance";
+ version = "0.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safetydance/-/safetydance-0.1.1.tgz";
+ sha1 = "1588c69133a7c69cddfd6a2d1d334381d0b7b2f7";
+ };
+ };
+ "sax-1.2.4" = {
+ name = "sax";
+ packageName = "sax";
+ version = "1.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
+ sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
+ };
+ };
+ "semver-6.3.0" = {
+ name = "semver";
+ packageName = "semver";
+ version = "6.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz";
+ sha512 = "b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==";
+ };
+ };
+ "send-0.16.1" = {
+ name = "send";
+ packageName = "send";
+ version = "0.16.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/send/-/send-0.16.1.tgz";
+ sha512 = "ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==";
+ };
+ };
+ "serve-index-1.9.1" = {
+ name = "serve-index";
+ packageName = "serve-index";
+ version = "1.9.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz";
+ sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
+ };
+ };
+ "serve-static-1.13.1" = {
+ name = "serve-static";
+ packageName = "serve-static";
+ version = "1.13.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz";
+ sha512 = "hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==";
+ };
+ };
+ "setprototypeof-1.0.3" = {
+ name = "setprototypeof";
+ packageName = "setprototypeof";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz";
+ sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
+ };
+ };
+ "setprototypeof-1.1.0" = {
+ name = "setprototypeof";
+ packageName = "setprototypeof";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz";
+ sha512 = "BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==";
+ };
+ };
+ "sntp-2.1.0" = {
+ name = "sntp";
+ packageName = "sntp";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz";
+ sha512 = "FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==";
+ };
+ };
+ "sshpk-1.16.1" = {
+ name = "sshpk";
+ packageName = "sshpk";
+ version = "1.16.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
+ sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
+ };
+ };
+ "statuses-1.3.1" = {
+ name = "statuses";
+ packageName = "statuses";
+ version = "1.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz";
+ sha1 = "faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e";
+ };
+ };
+ "statuses-1.5.0" = {
+ name = "statuses";
+ packageName = "statuses";
+ version = "1.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
+ sha1 = "161c7dac177659fd9811f43771fa99381478628c";
+ };
+ };
+ "string_decoder-1.1.1" = {
+ name = "string_decoder";
+ packageName = "string_decoder";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
+ sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
+ };
+ };
+ "string_decoder-1.3.0" = {
+ name = "string_decoder";
+ packageName = "string_decoder";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz";
+ sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==";
+ };
+ };
+ "stringstream-0.0.6" = {
+ name = "stringstream";
+ packageName = "stringstream";
+ version = "0.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz";
+ sha512 = "87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==";
+ };
+ };
+ "superagent-5.1.3" = {
+ name = "superagent";
+ packageName = "superagent";
+ version = "5.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/superagent/-/superagent-5.1.3.tgz";
+ sha512 = "2bno1Nb4uvZPECTJ7NDYlae6Q8LLQoZZZ9Vumd346jU1UGVkNC/lQI42jHwtrqVoepyt0QxNKFty01IRKgD4CA==";
+ };
+ };
+ "tar-stream-2.1.2" = {
+ name = "tar-stream";
+ packageName = "tar-stream";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz";
+ sha512 = "UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==";
+ };
+ };
+ "tough-cookie-2.3.3" = {
+ name = "tough-cookie";
+ packageName = "tough-cookie";
+ version = "2.3.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz";
+ sha1 = "0b618a5565b6dea90bf3425d04d55edc475a7561";
+ };
+ };
+ "tunnel-agent-0.6.0" = {
+ name = "tunnel-agent";
+ packageName = "tunnel-agent";
+ version = "0.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+ sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+ };
+ };
+ "tweetnacl-0.14.5" = {
+ name = "tweetnacl";
+ packageName = "tweetnacl";
+ version = "0.14.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
+ sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+ };
+ };
+ "type-is-1.6.16" = {
+ name = "type-is";
+ packageName = "type-is";
+ version = "1.6.16";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz";
+ sha512 = "HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==";
+ };
+ };
+ "uid-safe-2.1.5" = {
+ name = "uid-safe";
+ packageName = "uid-safe";
+ version = "2.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz";
+ sha512 = "KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==";
+ };
+ };
+ "underscore-1.8.3" = {
+ name = "underscore";
+ packageName = "underscore";
+ version = "1.8.3";
+ src = fetchurl {
+ url = "http://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz";
+ sha1 = "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022";
+ };
+ };
+ "underscore-1.9.1" = {
+ name = "underscore";
+ packageName = "underscore";
+ version = "1.9.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz";
+ sha512 = "5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==";
+ };
+ };
+ "unpipe-1.0.0" = {
+ name = "unpipe";
+ packageName = "unpipe";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
+ sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+ };
+ };
+ "util-deprecate-1.0.2" = {
+ name = "util-deprecate";
+ packageName = "util-deprecate";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
+ sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+ };
+ };
+ "utils-merge-1.0.1" = {
+ name = "utils-merge";
+ packageName = "utils-merge";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz";
+ sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
+ };
+ };
+ "uuid-3.2.1" = {
+ name = "uuid";
+ packageName = "uuid";
+ version = "3.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz";
+ sha512 = "jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==";
+ };
+ };
+ "vary-1.1.2" = {
+ name = "vary";
+ packageName = "vary";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz";
+ sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
+ };
+ };
+ "vasync-1.6.4" = {
+ name = "vasync";
+ packageName = "vasync";
+ version = "1.6.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz";
+ sha1 = "dfe93616ad0e7ae801b332a9d88bfc5cdc8e1d1f";
+ };
+ };
+ "verror-1.10.0" = {
+ name = "verror";
+ packageName = "verror";
+ version = "1.10.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
+ sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+ };
+ };
+ "verror-1.6.0" = {
+ name = "verror";
+ packageName = "verror";
+ version = "1.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz";
+ sha1 = "7d13b27b1facc2e2da90405eb5ea6e5bdd252ea5";
+ };
+ };
+ "webdav-server-2.4.6" = {
+ name = "webdav-server";
+ packageName = "webdav-server";
+ version = "2.4.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/webdav-server/-/webdav-server-2.4.6.tgz";
+ sha512 = "YhqjqlQdD4H55UEnRgk99a9epTuulKMW05m6KBTtG6fBXcc4/2H87F2DRJHH7a33PibNn3jWv8u9AgcMHLGUrw==";
+ };
+ };
+ "wrappy-1.0.2" = {
+ name = "wrappy";
+ packageName = "wrappy";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+ sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+ };
+ };
+ "xml-js-1.6.11" = {
+ name = "xml-js";
+ packageName = "xml-js";
+ version = "1.6.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz";
+ sha512 = "7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==";
+ };
+ };
+ "xml-js-builder-1.0.3" = {
+ name = "xml-js-builder";
+ packageName = "xml-js-builder";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/xml-js-builder/-/xml-js-builder-1.0.3.tgz";
+ sha512 = "BoLgG/glT45M0jK5PGh9h+iGrQxa8jJk9ofR63GroRifl2tbGB3/yYiVY3wQWHrZgWWfl9+7fhEB/VoD9mWnSg==";
+ };
+ };
+ "zip-stream-3.0.1" = {
+ name = "zip-stream";
+ packageName = "zip-stream";
+ version = "3.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/zip-stream/-/zip-stream-3.0.1.tgz";
+ sha512 = "r+JdDipt93ttDjsOVPU5zaq5bAyY+3H19bDrThkvuVxC0xMQzU1PJcS6D+KrP3u96gH9XLomcHPb+2skoDjulQ==";
+ };
+ };
+ };
+ args = {
+ name = "cloudron-surfer";
+ packageName = "cloudron-surfer";
+ version = "5.10.0";
+ inherit src;
+ dependencies = [
+ (sources."accepts-1.3.4" // {
+ dependencies = [
+ sources."mime-db-1.33.0"
+ sources."mime-types-2.1.18"
+ ];
+ })
+ sources."ajv-5.5.2"
+ (sources."archiver-4.0.1" // {
+ dependencies = [
+ sources."async-2.6.3"
+ sources."glob-7.1.6"
+ sources."readable-stream-3.6.0"
+ ];
+ })
+ (sources."archiver-utils-2.1.0" // {
+ dependencies = [
+ sources."glob-7.1.6"
+ sources."readable-stream-2.3.7"
+ sources."string_decoder-1.1.1"
+ ];
+ })
+ sources."array-flatten-1.1.1"
+ sources."array-union-1.0.2"
+ sources."array-uniq-1.0.3"
+ sources."arrify-1.0.1"
+ sources."asn1-0.2.3"
+ sources."assert-plus-1.0.0"
+ sources."async-1.5.2"
+ sources."asynckit-0.4.0"
+ sources."aws-sign2-0.7.0"
+ sources."aws4-1.6.0"
+ sources."backoff-2.5.0"
+ sources."balanced-match-1.0.0"
+ sources."base64-js-1.3.1"
+ (sources."basic-auth-2.0.1" // {
+ dependencies = [
+ sources."safe-buffer-5.1.2"
+ ];
+ })
+ sources."batch-0.6.1"
+ sources."bcrypt-pbkdf-1.0.1"
+ sources."bcryptjs-2.4.3"
+ (sources."bl-4.0.2" // {
+ dependencies = [
+ sources."inherits-2.0.4"
+ ];
+ })
+ (sources."body-parser-1.18.2" // {
+ dependencies = [
+ sources."depd-1.1.2"
+ (sources."http-errors-1.6.2" // {
+ dependencies = [
+ sources."depd-1.1.1"
+ ];
+ })
+ ];
+ })
+ sources."boom-4.3.1"
+ sources."brace-expansion-1.1.8"
+ sources."buffer-5.6.0"
+ sources."buffer-crc32-0.2.13"
+ sources."bunyan-1.8.12"
+ sources."bytes-3.0.0"
+ sources."caseless-0.12.0"
+ sources."co-4.6.0"
+ sources."colors-1.1.2"
+ sources."combined-stream-1.0.5"
+ sources."commander-2.14.1"
+ sources."component-emitter-1.3.0"
+ (sources."compress-commons-3.0.0" // {
+ dependencies = [
+ sources."readable-stream-2.3.7"
+ sources."string_decoder-1.1.1"
+ ];
+ })
+ (sources."compressible-2.0.13" // {
+ dependencies = [
+ sources."mime-db-1.33.0"
+ ];
+ })
+ sources."compression-1.7.2"
+ sources."concat-map-0.0.1"
+ (sources."connect-lastmile-1.2.2" // {
+ dependencies = [
+ sources."debug-4.1.1"
+ sources."ms-2.1.2"
+ sources."underscore-1.9.1"
+ ];
+ })
+ sources."connect-timeout-1.9.0"
+ sources."content-disposition-0.5.2"
+ sources."content-type-1.0.4"
+ sources."cookie-0.3.1"
+ sources."cookie-parser-1.4.3"
+ sources."cookie-signature-1.0.6"
+ sources."cookiejar-2.1.2"
+ sources."core-util-is-1.0.2"
+ sources."crc-3.4.4"
+ sources."crc32-stream-3.0.1"
+ (sources."cryptiles-3.1.2" // {
+ dependencies = [
+ sources."boom-5.2.0"
+ ];
+ })
+ (sources."dashdash-1.14.1" // {
+ dependencies = [
+ sources."assert-plus-1.0.0"
+ ];
+ })
+ sources."debug-2.6.9"
+ sources."del-2.2.2"
+ sources."delayed-stream-1.0.0"
+ sources."depd-1.1.0"
+ sources."destroy-1.0.4"
+ sources."dtrace-provider-0.8.7"
+ sources."ecc-jsbn-0.1.1"
+ sources."ee-first-1.1.1"
+ sources."encodeurl-1.0.2"
+ sources."end-of-stream-1.4.4"
+ sources."escape-html-1.0.3"
+ sources."etag-1.8.1"
+ (sources."express-4.16.2" // {
+ dependencies = [
+ sources."depd-1.1.2"
+ sources."setprototypeof-1.1.0"
+ ];
+ })
+ (sources."express-session-1.15.6" // {
+ dependencies = [
+ sources."depd-1.1.2"
+ ];
+ })
+ sources."extend-3.0.2"
+ sources."extsprintf-1.2.0"
+ sources."fast-deep-equal-1.0.0"
+ sources."fast-json-stable-stringify-2.0.0"
+ sources."fast-safe-stringify-2.0.7"
+ sources."fd-slicer-1.0.1"
+ sources."finalhandler-1.1.0"
+ sources."forever-agent-0.6.1"
+ (sources."form-data-2.3.2" // {
+ dependencies = [
+ sources."combined-stream-1.0.6"
+ ];
+ })
+ sources."formidable-1.2.1"
+ sources."forwarded-0.1.2"
+ sources."fresh-0.5.2"
+ sources."fs-constants-1.0.0"
+ sources."fs.realpath-1.0.0"
+ (sources."getpass-0.1.7" // {
+ dependencies = [
+ sources."assert-plus-1.0.0"
+ ];
+ })
+ sources."glob-7.1.2"
+ sources."globby-5.0.0"
+ sources."graceful-fs-4.2.4"
+ sources."har-schema-2.0.0"
+ sources."har-validator-5.0.3"
+ sources."hawk-6.0.2"
+ sources."hoek-4.2.1"
+ sources."http-errors-1.6.1"
+ (sources."http-signature-1.2.0" // {
+ dependencies = [
+ sources."assert-plus-1.0.0"
+ sources."extsprintf-1.3.0"
+ sources."json-schema-0.2.3"
+ sources."jsprim-1.4.1"
+ sources."verror-1.10.0"
+ ];
+ })
+ sources."iconv-lite-0.4.19"
+ sources."ieee754-1.1.13"
+ sources."inflight-1.0.6"
+ sources."inherits-2.0.3"
+ sources."ipaddr.js-1.5.2"
+ sources."is-path-cwd-1.0.0"
+ sources."is-path-in-cwd-1.0.0"
+ sources."is-path-inside-1.0.0"
+ sources."is-typedarray-1.0.0"
+ sources."isarray-1.0.0"
+ sources."isstream-0.1.2"
+ sources."jsbn-0.1.1"
+ sources."json-schema-traverse-0.3.1"
+ sources."json-stringify-safe-5.0.1"
+ (sources."lazystream-1.0.0" // {
+ dependencies = [
+ sources."readable-stream-2.3.7"
+ sources."string_decoder-1.1.1"
+ ];
+ })
+ (sources."ldap-filter-0.2.2" // {
+ dependencies = [
+ sources."assert-plus-0.1.5"
+ ];
+ })
+ sources."ldapjs-1.0.2"
+ sources."lodash-4.17.15"
+ sources."lodash.defaults-4.2.0"
+ sources."lodash.difference-4.5.0"
+ sources."lodash.flatten-4.4.0"
+ sources."lodash.isplainobject-4.0.6"
+ sources."lodash.union-4.6.0"
+ sources."media-typer-0.3.0"
+ sources."merge-descriptors-1.0.1"
+ sources."methods-1.1.2"
+ sources."mime-2.4.4"
+ sources."mime-db-1.27.0"
+ sources."mime-types-2.1.15"
+ sources."minimatch-3.0.4"
+ sources."minimist-0.0.8"
+ sources."mkdirp-0.5.1"
+ sources."moment-2.24.0"
+ (sources."morgan-1.9.1" // {
+ dependencies = [
+ sources."depd-1.1.2"
+ ];
+ })
+ sources."ms-2.0.0"
+ sources."multiparty-4.1.3"
+ (sources."mv-2.1.1" // {
+ dependencies = [
+ sources."glob-6.0.4"
+ sources."rimraf-2.4.5"
+ ];
+ })
+ sources."nan-2.12.1"
+ sources."ncp-2.0.0"
+ sources."negotiator-0.6.1"
+ sources."normalize-path-3.0.0"
+ sources."oauth-sign-0.8.2"
+ sources."object-assign-4.1.1"
+ sources."on-finished-2.3.0"
+ sources."on-headers-1.0.1"
+ sources."once-1.4.0"
+ sources."parseurl-1.3.2"
+ sources."path-is-absolute-1.0.1"
+ sources."path-is-inside-1.0.2"
+ sources."path-to-regexp-0.1.7"
+ sources."pend-1.2.0"
+ sources."performance-now-2.1.0"
+ sources."pify-2.3.0"
+ sources."pinkie-2.0.4"
+ sources."pinkie-promise-2.0.1"
+ sources."precond-0.2.3"
+ sources."process-nextick-args-2.0.1"
+ sources."proxy-addr-2.0.2"
+ sources."punycode-1.4.1"
+ sources."qs-6.5.1"
+ sources."random-bytes-1.0.0"
+ sources."range-parser-1.2.0"
+ (sources."raw-body-2.3.2" // {
+ dependencies = [
+ sources."depd-1.1.1"
+ sources."http-errors-1.6.2"
+ ];
+ })
+ sources."readable-stream-3.4.0"
+ sources."readline-sync-1.4.9"
+ (sources."request-2.83.0" // {
+ dependencies = [
+ sources."mime-db-1.33.0"
+ sources."mime-types-2.1.18"
+ ];
+ })
+ sources."rimraf-2.6.1"
+ sources."safe-buffer-5.1.1"
+ sources."safe-json-stringify-1.2.0"
+ sources."safer-buffer-2.1.2"
+ sources."safetydance-0.1.1"
+ (sources."send-0.16.1" // {
+ dependencies = [
+ sources."depd-1.1.2"
+ (sources."http-errors-1.6.2" // {
+ dependencies = [
+ sources."depd-1.1.1"
+ ];
+ })
+ sources."mime-1.4.1"
+ ];
+ })
+ (sources."serve-index-1.9.1" // {
+ dependencies = [
+ sources."depd-1.1.2"
+ sources."http-errors-1.6.3"
+ sources."mime-db-1.44.0"
+ sources."mime-types-2.1.27"
+ sources."setprototypeof-1.1.0"
+ sources."statuses-1.5.0"
+ ];
+ })
+ sources."serve-static-1.13.1"
+ sources."setprototypeof-1.0.3"
+ sources."sntp-2.1.0"
+ sources."sshpk-1.16.1"
+ sources."statuses-1.3.1"
+ (sources."string_decoder-1.3.0" // {
+ dependencies = [
+ sources."safe-buffer-5.2.0"
+ ];
+ })
+ sources."stringstream-0.0.6"
+ (sources."superagent-5.1.3" // {
+ dependencies = [
+ sources."combined-stream-1.0.8"
+ sources."debug-4.1.1"
+ sources."form-data-3.0.0"
+ sources."ms-2.1.2"
+ sources."qs-6.9.1"
+ sources."semver-6.3.0"
+ ];
+ })
+ sources."tar-stream-2.1.2"
+ sources."tough-cookie-2.3.3"
+ sources."tunnel-agent-0.6.0"
+ sources."tweetnacl-0.14.5"
+ (sources."type-is-1.6.16" // {
+ dependencies = [
+ sources."mime-db-1.33.0"
+ sources."mime-types-2.1.18"
+ ];
+ })
+ sources."uid-safe-2.1.5"
+ sources."underscore-1.8.3"
+ sources."unpipe-1.0.0"
+ sources."util-deprecate-1.0.2"
+ sources."utils-merge-1.0.1"
+ sources."uuid-3.2.1"
+ sources."vary-1.1.2"
+ (sources."vasync-1.6.4" // {
+ dependencies = [
+ sources."verror-1.6.0"
+ ];
+ })
+ sources."verror-1.10.0"
+ (sources."webdav-server-2.4.6" // {
+ dependencies = [
+ sources."mime-db-1.38.0"
+ sources."mime-types-2.1.22"
+ ];
+ })
+ sources."wrappy-1.0.2"
+ (sources."xml-js-1.6.11" // {
+ dependencies = [
+ sources."sax-1.2.4"
+ ];
+ })
+ sources."xml-js-builder-1.0.3"
+ (sources."zip-stream-3.0.1" // {
+ dependencies = [
+ sources."readable-stream-3.6.0"
+ ];
+ })
+ ];
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "Simple file server";
+ license = "MIT";
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = false;
+ };
+in
+{
+ args = args;
+ sources = sources;
+ tarball = nodeEnv.buildNodeSourceDist args;
+ package = nodeEnv.buildNodePackage args;
+ shell = nodeEnv.buildNodeShell args;
+}
diff --git a/flakes/taskwarrior-web/Gemfile.lock b/flakes/taskwarrior-web/Gemfile.lock
new file mode 100644
index 0000000..1b2f5ba
--- /dev/null
+++ b/flakes/taskwarrior-web/Gemfile.lock
@@ -0,0 +1,139 @@
+PATH
+ remote: .
+ specs:
+ taskwarrior-web (1.1.12)
+ activesupport (~> 3)
+ json (~> 1.8)
+ parseconfig
+ rack-flash3
+ rinku
+ sinatra
+ sinatra-simple-navigation
+ vegas
+ versionomy
+
+GEM
+ remote: http://rubygems.org/
+ specs:
+ activesupport (3.2.22.5)
+ i18n (~> 0.6, >= 0.6.4)
+ multi_json (~> 1.0)
+ blockenspiel (0.5.0)
+ coderay (1.1.2)
+ concurrent-ruby (1.1.4)
+ daemons (1.3.1)
+ diff-lcs (1.3)
+ docile (1.3.1)
+ eventmachine (1.2.7)
+ ffi (1.10.0)
+ formatador (0.2.5)
+ growl (1.0.3)
+ guard (2.15.0)
+ formatador (>= 0.2.4)
+ listen (>= 2.7, < 4.0)
+ lumberjack (>= 1.0.12, < 2.0)
+ nenv (~> 0.1)
+ notiffany (~> 0.0)
+ pry (>= 0.9.12)
+ shellany (~> 0.0)
+ thor (>= 0.18.1)
+ guard-bundler (2.2.1)
+ bundler (>= 1.3.0, < 3)
+ guard (~> 2.2)
+ guard-compat (~> 1.1)
+ guard-compat (1.2.1)
+ guard-rspec (4.7.3)
+ guard (~> 2.1)
+ guard-compat (~> 1.1)
+ rspec (>= 2.99.0, < 4.0)
+ i18n (0.9.5)
+ concurrent-ruby (~> 1.0)
+ json (1.8.6)
+ listen (3.1.5)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ ruby_dep (~> 1.2)
+ lumberjack (1.0.13)
+ method_source (0.9.2)
+ mini_portile2 (2.4.0)
+ multi_json (1.13.1)
+ mustermann (1.0.3)
+ nenv (0.3.0)
+ nokogiri (1.10.1)
+ mini_portile2 (~> 2.4.0)
+ notiffany (0.1.1)
+ nenv (~> 0.1)
+ shellany (~> 0.0)
+ parseconfig (1.0.8)
+ pry (0.12.2)
+ coderay (~> 1.1.0)
+ method_source (~> 0.9.0)
+ rack (2.0.6)
+ rack-flash3 (1.0.5)
+ rack
+ rack-protection (2.0.5)
+ rack
+ rack-test (1.1.0)
+ rack (>= 1.0, < 3)
+ rake (10.5.0)
+ rb-fsevent (0.10.3)
+ rb-inotify (0.10.0)
+ ffi (~> 1.0)
+ rinku (2.0.5)
+ rspec (2.99.0)
+ rspec-core (~> 2.99.0)
+ rspec-expectations (~> 2.99.0)
+ rspec-mocks (~> 2.99.0)
+ rspec-core (2.99.2)
+ rspec-expectations (2.99.2)
+ diff-lcs (>= 1.1.3, < 2.0)
+ rspec-html-matchers (0.5.0)
+ nokogiri (~> 1)
+ rspec (~> 2, >= 2.11.0)
+ rspec-mocks (2.99.4)
+ ruby_dep (1.5.0)
+ shellany (0.0.1)
+ simple-navigation (4.0.5)
+ activesupport (>= 2.3.2)
+ simplecov (0.16.1)
+ docile (~> 1.1)
+ json (>= 1.8, < 3)
+ simplecov-html (~> 0.10.0)
+ simplecov-html (0.10.2)
+ sinatra (2.0.5)
+ mustermann (~> 1.0)
+ rack (~> 2.0)
+ rack-protection (= 2.0.5)
+ tilt (~> 2.0)
+ sinatra-simple-navigation (4.1.0)
+ simple-navigation (~> 4.0)
+ sinatra (>= 1.0, < 3.0)
+ thin (1.7.2)
+ daemons (~> 1.0, >= 1.0.9)
+ eventmachine (~> 1.0, >= 1.0.4)
+ rack (>= 1, < 3)
+ thor (0.20.3)
+ tilt (2.0.9)
+ vegas (0.1.11)
+ rack (>= 1.0.0)
+ versionomy (0.5.0)
+ blockenspiel (~> 0.5)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ growl
+ guard-bundler
+ guard-rspec
+ rack-test
+ rake (< 11)
+ rb-fsevent
+ rspec (~> 2)
+ rspec-html-matchers
+ simplecov
+ taskwarrior-web!
+ thin
+
+BUNDLED WITH
+ 1.16.2
diff --git a/flakes/taskwarrior-web/default.nix b/flakes/taskwarrior-web/default.nix
new file mode 100644
index 0000000..7678b3c
--- /dev/null
+++ b/flakes/taskwarrior-web/default.nix
@@ -0,0 +1,25 @@
+{ ruby_2_6, bundlerEnv, src, stdenv }:
+let
+ gems = bundlerEnv {
+ name = "taskwarrior-web-env";
+ ruby = ruby_2_6;
+ pname = "taskwarrior-web";
+ gemset = ./gemset.nix;
+ gemdir = package.out;
+ groups = [ "default" "local" "development" ];
+ };
+ package = stdenv.mkDerivation {
+ pname = "taskwarrior-web";
+ version = src.shortRev;
+ inherit src;
+ phases = [ "unpackPhase" "patchPhase" "installPhase" ];
+ patches = [ ./fixes.patch ./thin.patch ];
+ installPhase = ''
+ cp -a . $out
+ cp ${./Gemfile.lock} $out/Gemfile.lock
+ '';
+ passthru = {
+ inherit gems;
+ };
+ };
+in package
diff --git a/flakes/taskwarrior-web/fixes.patch b/flakes/taskwarrior-web/fixes.patch
new file mode 100644
index 0000000..c4cea34
--- /dev/null
+++ b/flakes/taskwarrior-web/fixes.patch
@@ -0,0 +1,113 @@
+diff --git a/lib/taskwarrior-web/helpers.rb b/lib/taskwarrior-web/helpers.rb
+index 212aed7..94c57df 100644
+--- a/lib/taskwarrior-web/helpers.rb
++++ b/lib/taskwarrior-web/helpers.rb
+@@ -1,6 +1,8 @@
+ require 'active_support/core_ext/date/calculations'
+
+ module TaskwarriorWeb::App::Helpers
++ include ERB::Util
++
+ def format_date(timestamp)
+ format = TaskwarriorWeb::Config.dateformat || '%-m/%-d/%Y'
+ Time.parse(timestamp).localtime.strftime(format)
+diff --git a/lib/taskwarrior-web/model/task.rb b/lib/taskwarrior-web/model/task.rb
+index 212aed7..94c57df 100644
+--- a/lib/taskwarrior-web/model/task.rb
++++ b/lib/taskwarrior-web/model/task.rb
+@@ -15,8 +15,14 @@
+
+ def initialize(attributes = {})
+ attributes.each do |attr, value|
++ if attr == "uuid"
++ next
++ end
+ send("#{attr}=", value) if respond_to?(attr.to_sym)
+ end
++ if attributes.has_key? "uuid"
++ send("uuid=", attributes["uuid"])
++ end
+
+ @_errors = []
+ @tags = [] if @tags.nil?
+diff --git a/lib/taskwarrior-web/services/builder/base.rb b/lib/taskwarrior-web/services/builder/base.rb
+index 58d246e..8f716ac 100644
+--- a/lib/taskwarrior-web/services/builder/base.rb
++++ b/lib/taskwarrior-web/services/builder/base.rb
+@@ -10,7 +10,7 @@ module TaskwarriorWeb::CommandBuilder::Base
+ :complete => ':id done',
+ :annotate => ':id annotate',
+ :denotate => ':id denotate',
+- :projects => '_projects',
++ :projects => '_unique project',
+ :tags => '_tags',
+ :sync => 'sync'
+ }
+@@ -21,7 +21,7 @@
+ substitute_parts if @command_string =~ /:id/
+ end
+ parse_params
+- @built = "#{@command_string}#{@params}"
++ @built = "#{@params}#{@command_string}"
+ end
+
+ def task_command
+@@ -43,23 +43,23 @@
+
+ def parse_params
+ string = ''
+- string << %( #{@params.delete(:description).shellescape}) if @params.has_key?(:description)
++ string << %(#{@params.delete(:description).shellescape} ) if @params.has_key?(:description)
+
+ if tags = @params.delete(:tags)
+ tag_indicator = TaskwarriorWeb::Config.property('tag.indicator') || '+'
+- tags.each { |tag| string << %( #{tag_indicator}#{tag.to_s.shellescape}) }
++ tags.each { |tag| string << %(#{tag_indicator}#{tag.to_s.shellescape} ) }
+ end
+
+ if tags = @params.delete(:remove_tags)
+- tags.each { |tag| string << %( -#{tag.to_s.shellescape}) }
++ tags.each { |tag| string << %(-#{tag.to_s.shellescape} ) }
+ end
+
+ @params.each do |attr, value|
+ if @command != :update or attr != :uuid
+ if value.respond_to? :each
+- value.each { |val| string << %( #{attr.to_s}:\\"#{val.to_s.shellescape}\\") }
++ value.each { |val| string << %(#{attr.to_s}:\\"#{val.to_s.shellescape}\\" ) }
+ else
+- string << %( #{attr.to_s}:\\"#{value.to_s.shellescape}\\")
++ string << %(#{attr.to_s}:\\"#{value.to_s.shellescape}\\" )
+ end
+ end
+ end
+diff --git a/lib/taskwarrior-web/views/tasks/_form.erb b/lib/taskwarrior-web/views/tasks/_form.erb
+index 789e7a1..fa08698 100644
+--- a/lib/taskwarrior-web/views/tasks/_form.erb
++++ b/lib/taskwarrior-web/views/tasks/_form.erb
+@@ -1,14 +1,14 @@
+
+
+
+
+@@ -45,7 +45,7 @@
+
diff --git a/flakes/taskwarrior-web/flake.lock b/flakes/taskwarrior-web/flake.lock
new file mode 100644
index 0000000..ce87931
--- /dev/null
+++ b/flakes/taskwarrior-web/flake.lock
@@ -0,0 +1,62 @@
+{
+ "nodes": {
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs",
+ "taskwarrior-web": "taskwarrior-web"
+ }
+ },
+ "taskwarrior-web": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546434241,
+ "narHash": "sha256-BLPBglkV1HCJECSIdyMEergChiV+rwNOClYJnzlZGQk=",
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flakes/taskwarrior-web/flake.nix b/flakes/taskwarrior-web/flake.nix
new file mode 100644
index 0000000..b08290a
--- /dev/null
+++ b/flakes/taskwarrior-web/flake.nix
@@ -0,0 +1,33 @@
+{
+ description = "A web interface for the Taskwarrior todo application. Because being a neckbeard is only fun sometimes.";
+ inputs.flake-utils.url = "github:numtide/flake-utils";
+ inputs.nixpkgs = {
+ url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
+ flake = false;
+ };
+ inputs.taskwarrior-web = {
+ url = "github:theunraveler/taskwarrior-web/a79cfe2b42791b62364118e58b21b892fff6ded8";
+ flake = false;
+ };
+
+ outputs = { self, nixpkgs, taskwarrior-web, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
+ let
+ pkgs = import nixpkgs { inherit system; overlays = []; };
+ inherit (pkgs) callPackage;
+ in rec {
+ packages.taskwarrior-web = callPackage ./. { src = taskwarrior-web; };
+ defaultPackage = packages.taskwarrior-web;
+ legacyPackages.taskwarrior-web = packages.taskwarrior-web;
+ checks = {
+ build = defaultPackage;
+ };
+ }
+ ) // rec {
+ overlays = {
+ taskwarrior-web = final: prev: {
+ taskwarrior-web = self.defaultPackage."${final.system}";
+ };
+ };
+ overlay = overlays.taskwarrior-web;
+ };
+}
diff --git a/flakes/taskwarrior-web/gemset.nix b/flakes/taskwarrior-web/gemset.nix
new file mode 100644
index 0000000..35d13c6
--- /dev/null
+++ b/flakes/taskwarrior-web/gemset.nix
@@ -0,0 +1,567 @@
+{
+ activesupport = {
+ dependencies = ["i18n" "multi_json"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0fyxqkkws4px4lzkbcqzp0bwai7nn7jk4p0bgfy0dny9cwm0qc9r";
+ type = "gem";
+ };
+ version = "3.2.22.5";
+ };
+ blockenspiel = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1h701s45n5qprvcpc7fnr45n88p56x07pznkxqnhz1dbdbhb7xx8";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+ coderay = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
+ type = "gem";
+ };
+ version = "1.1.2";
+ };
+ concurrent-ruby = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1ixcx9pfissxrga53jbdpza85qd5f6b5nq1sfqa9rnfq82qnlbp1";
+ type = "gem";
+ };
+ version = "1.1.4";
+ };
+ daemons = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0l5gai3vd4g7aqff0k1mp41j9zcsvm2rbwmqn115a325k9r7pf4w";
+ type = "gem";
+ };
+ version = "1.3.1";
+ };
+ diff-lcs = {
+ groups = ["default" "development" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
+ type = "gem";
+ };
+ version = "1.3";
+ };
+ docile = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
+ type = "gem";
+ };
+ version = "1.3.1";
+ };
+ eventmachine = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
+ type = "gem";
+ };
+ version = "1.2.7";
+ };
+ ffi = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p";
+ type = "gem";
+ };
+ version = "1.10.0";
+ };
+ formatador = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
+ type = "gem";
+ };
+ version = "0.2.5";
+ };
+ growl = {
+ groups = ["local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0s0y7maljnalpbv2q1j5j5hvb4wcc31y9af0n7x1q2l0fzxgc9n9";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
+ guard = {
+ dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
+ type = "gem";
+ };
+ version = "2.15.0";
+ };
+ guard-bundler = {
+ dependencies = ["guard" "guard-compat"];
+ groups = ["local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0lji8f8w7y4prmpr2lqmlljvkqgkgnlsiwqgwvq7b1y3sxlsvy62";
+ type = "gem";
+ };
+ version = "2.2.1";
+ };
+ guard-compat = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
+ type = "gem";
+ };
+ version = "1.2.1";
+ };
+ guard-rspec = {
+ dependencies = ["guard" "guard-compat" "rspec"];
+ groups = ["local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
+ type = "gem";
+ };
+ version = "4.7.3";
+ };
+ i18n = {
+ dependencies = ["concurrent-ruby"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "038qvz7kd3cfxk8bvagqhakx68pfbnmghpdkx7573wbf0maqp9a3";
+ type = "gem";
+ };
+ version = "0.9.5";
+ };
+ json = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0qmj7fypgb9vag723w1a49qihxrcf5shzars106ynw2zk352gbv5";
+ type = "gem";
+ };
+ version = "1.8.6";
+ };
+ listen = {
+ dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
+ type = "gem";
+ };
+ version = "3.1.5";
+ };
+ lumberjack = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
+ type = "gem";
+ };
+ version = "1.0.13";
+ };
+ method_source = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
+ type = "gem";
+ };
+ version = "0.9.2";
+ };
+ mini_portile2 = {
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
+ type = "gem";
+ };
+ version = "2.4.0";
+ };
+ multi_json = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
+ type = "gem";
+ };
+ version = "1.13.1";
+ };
+ mustermann = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
+ nenv = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
+ type = "gem";
+ };
+ version = "0.3.0";
+ };
+ nokogiri = {
+ dependencies = ["mini_portile2"];
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "09zll7c6j7xr6wyvh5mm5ncj6pkryp70ybcsxdbw1nyphx5dh184";
+ type = "gem";
+ };
+ version = "1.10.1";
+ };
+ notiffany = {
+ dependencies = ["nenv" "shellany"];
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
+ type = "gem";
+ };
+ version = "0.1.1";
+ };
+ parseconfig = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0br2g9k6zc4ygah52aa8cwvpnnkszia29bnvnr8bhpk3rdzi2vmq";
+ type = "gem";
+ };
+ version = "1.0.8";
+ };
+ pry = {
+ dependencies = ["coderay" "method_source"];
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
+ type = "gem";
+ };
+ version = "0.12.2";
+ };
+ rack = {
+ groups = ["default" "development"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
+ type = "gem";
+ };
+ version = "2.0.6";
+ };
+ rack-flash3 = {
+ dependencies = ["rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0rim9afrns6s8zc4apiymncysyvijpdg18k57kdpz66p55jf4mqz";
+ type = "gem";
+ };
+ version = "1.0.5";
+ };
+ rack-protection = {
+ dependencies = ["rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk";
+ type = "gem";
+ };
+ version = "2.0.5";
+ };
+ rack-test = {
+ dependencies = ["rack"];
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ rake = {
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0jcabbgnjc788chx31sihc5pgbqnlc1c75wakmqlbjdm8jns2m9b";
+ type = "gem";
+ };
+ version = "10.5.0";
+ };
+ rb-fsevent = {
+ groups = ["local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
+ type = "gem";
+ };
+ version = "0.10.3";
+ };
+ rb-inotify = {
+ dependencies = ["ffi"];
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1fs7hxm9g6ywv2yih83b879klhc4fs8i0p9166z795qmd77dk0a4";
+ type = "gem";
+ };
+ version = "0.10.0";
+ };
+ rinku = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1smkk299v18brk98gqbdnqrfwm3143kikl30scidqb5j3pzlbz91";
+ type = "gem";
+ };
+ version = "2.0.5";
+ };
+ rspec = {
+ dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
+ groups = ["development" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "14q3hxvngk4ks8h41yw50d5fqbf2dhzwi9rz5ccxvh5a53ak2as3";
+ type = "gem";
+ };
+ version = "2.99.0";
+ };
+ rspec-core = {
+ groups = ["default" "development" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1wwz21lcz2lwd2jcp2pvq7n1677v23acf7wxsyszp8msb47mw38i";
+ type = "gem";
+ };
+ version = "2.99.2";
+ };
+ rspec-expectations = {
+ dependencies = ["diff-lcs"];
+ groups = ["default" "development" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "11a5pph3anp4xr591dnlcy8xfkdf54qi2lvg4ykpqhxk37si1py3";
+ type = "gem";
+ };
+ version = "2.99.2";
+ };
+ rspec-html-matchers = {
+ dependencies = ["nokogiri" "rspec"];
+ groups = ["development"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "148grzvk0cvh24avhl0shjzz7ldhj138svf48pc5h1fdsb0pnqcv";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+ rspec-mocks = {
+ groups = ["default" "development" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0bzhqahbiswq41nqi6y2dka1k42n0hl14jb6bldb206zp4hikz8r";
+ type = "gem";
+ };
+ version = "2.99.4";
+ };
+ ruby_dep = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
+ type = "gem";
+ };
+ version = "1.5.0";
+ };
+ shellany = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
+ type = "gem";
+ };
+ version = "0.0.1";
+ };
+ simple-navigation = {
+ dependencies = ["activesupport"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "08a2s18an3br3xj5j86r33q0hrkai0y157xg67h1khdskb08yylk";
+ type = "gem";
+ };
+ version = "4.0.5";
+ };
+ simplecov = {
+ dependencies = ["docile" "json" "simplecov-html"];
+ groups = ["local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
+ type = "gem";
+ };
+ version = "0.16.1";
+ };
+ simplecov-html = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
+ type = "gem";
+ };
+ version = "0.10.2";
+ };
+ sinatra = {
+ dependencies = ["mustermann" "rack" "rack-protection" "tilt"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1gasgn5f15myv08k10i16p326pchxjsy37pgqfw0xm66kcc5d7ry";
+ type = "gem";
+ };
+ version = "2.0.5";
+ };
+ sinatra-simple-navigation = {
+ dependencies = ["simple-navigation" "sinatra"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1gishxd23qw6bwsk7fkagkfc7ihqyvvvb98j9bmwc6wwpsfs4prs";
+ type = "gem";
+ };
+ version = "4.1.0";
+ };
+ taskwarrior-web = {
+ dependencies = ["activesupport" "json" "parseconfig" "rack-flash3" "rinku" "sinatra" "sinatra-simple-navigation" "vegas" "versionomy"];
+ groups = ["default"];
+ platforms = [];
+ bundledByPath = true;
+ path = ./.;
+ source = {
+ path = ./.;
+ type = "path";
+ };
+ version = "1.1.12";
+ };
+ thin = {
+ dependencies = ["daemons" "eventmachine" "rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f";
+ type = "gem";
+ };
+ version = "1.7.2";
+ };
+ thor = {
+ groups = ["default" "local"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29";
+ type = "gem";
+ };
+ version = "0.20.3";
+ };
+ tilt = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz";
+ type = "gem";
+ };
+ version = "2.0.9";
+ };
+ vegas = {
+ dependencies = ["rack"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0kzv0v1zb8vvm188q4pqwahb6468bmiamn6wpsbiq6r5i69s1bs5";
+ type = "gem";
+ };
+ version = "0.1.11";
+ };
+ versionomy = {
+ dependencies = ["blockenspiel"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["http://rubygems.org"];
+ sha256 = "0i0l4pzrl1vyp4lpg2cxhgkk56spki3lld943d6h7168fj8qyv33";
+ type = "gem";
+ };
+ version = "0.5.0";
+ };
+}
diff --git a/flakes/taskwarrior-web/thin.patch b/flakes/taskwarrior-web/thin.patch
new file mode 100644
index 0000000..a7df3e3
--- /dev/null
+++ b/flakes/taskwarrior-web/thin.patch
@@ -0,0 +1,23 @@
+diff --git a/Gemfile b/Gemfile
+index 8544e15..9c4279c 100644
+--- a/Gemfile
++++ b/Gemfile
+@@ -3,6 +3,8 @@ source "http://rubygems.org"
+ # Specify your gem's dependencies in taskwarrior-web.gemspec
+ gemspec
+
++gem 'thin'
++
+ group :local do
+ gem 'rb-fsevent', :require => false
+ gem 'growl', :require => false
+diff --git a/config.ru b/config.ru
+index c3050c6..52387d8 100644
+--- a/config.ru
++++ b/config.ru
+@@ -1,5 +1,4 @@
+ require File.join(File.dirname(__FILE__), 'lib', 'taskwarrior-web')
+
+-disable :run
+ TaskwarriorWeb::App.set({ :environment => :production })
+ run TaskwarriorWeb::App
diff --git a/lib/default.nix b/lib/default.nix
deleted file mode 100644
index 7b392f1..0000000
--- a/lib/default.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ pkgs }:
-with pkgs;
-rec {
- flakeCompat = import ./flake-compat.nix;
- nodeEnv = import ./node-env.nix;
-
- fetchedGithub = path:
- let
- json = lib.importJSON path;
- in rec {
- version = json.tag;
- pname = json.meta.name;
- name = "${pname}-${version}";
- src = fetchFromGitHub json.github;
- };
-} // (if builtins.pathExists ./private then callPackage ./private {} else {})
diff --git a/lib/flake-compat-patched.nix b/lib/flake-compat-patched.nix
deleted file mode 100644
index 217a99f..0000000
--- a/lib/flake-compat-patched.nix
+++ /dev/null
@@ -1,190 +0,0 @@
-# Compatibility function to allow flakes to be used by
-# non-flake-enabled Nix versions. Given a source tree containing a
-# 'flake.nix' and 'flake.lock' file, it fetches the flake inputs and
-# calls the flake's 'outputs' function. It then returns an attrset
-# containing 'defaultNix' (to be used in 'default.nix'), 'shellNix'
-# (to be used in 'shell.nix').
-
-{ src, system ? builtins.currentSystem or "unknown-system" }:
-
-let
-
- lockFilePath = src + "/flake.lock";
-
- lockFile = builtins.fromJSON (builtins.readFile lockFilePath);
-
- fetchTree =
- info:
- if info.type == "github" then
- { outPath = fetchTarball "https://api.${info.host or "github.com"}/repos/${info.owner}/${info.repo}/tarball/${info.rev}";
- rev = info.rev;
- shortRev = builtins.substring 0 7 info.rev;
- lastModified = info.lastModified;
- lastModifiedDate = formatSecondsSinceEpoch info.lastModified;
- narHash = info.narHash;
- }
- else if info.type == "git" then
- { outPath =
- builtins.fetchGit
- ({ url = info.url; }
- // (if info ? rev then { inherit (info) rev; } else {})
- // (if info ? ref then { inherit (info) ref; } else {})
- );
- lastModified = info.lastModified;
- lastModifiedDate = formatSecondsSinceEpoch info.lastModified;
- narHash = info.narHash;
- } // (if info ? rev then {
- rev = info.rev;
- shortRev = builtins.substring 0 7 info.rev;
- } else {
- })
- else if info.type == "path" then
- { outPath = builtins.path { path =
- if builtins.substring 0 1 info.path == "."
- then builtins.toString src + "/" + info.path
- else info.path;
- };
- narHash = info.narHash;
- }
- else if info.type == "tarball" then
- { outPath = fetchTarball info.url;
- narHash = info.narHash;
- }
- else if info.type == "gitlab" then
- { inherit (info) rev narHash lastModified;
- outPath = fetchTarball "https://${info.host or "gitlab.com"}/api/v4/projects/${info.owner}%2F${info.repo}/repository/archive.tar.gz?sha=${info.rev}";
- shortRev = builtins.substring 0 7 info.rev;
- }
- else
- # FIXME: add Mercurial, tarball inputs.
- throw "flake input has unsupported input type '${info.type}'";
-
- callFlake4 = flakeSrc: locks:
- let
- flake = import (flakeSrc + "/flake.nix");
-
- inputs = builtins.mapAttrs (n: v:
- if v.flake or true
- then callFlake4 (fetchTree (v.locked // v.info)) v.inputs
- else fetchTree (v.locked // v.info)) locks;
-
- outputs = flakeSrc // (flake.outputs (inputs // {self = outputs;}));
- in
- assert flake.edition == 201909;
- outputs;
-
- callLocklessFlake = flakeSrc:
- let
- flake = import (flakeSrc + "/flake.nix");
- outputs = flakeSrc // (flake.outputs ({ self = outputs; }));
- in outputs;
-
- rootSrc = let
- # Try to clean the source tree by using fetchGit, if this source
- # tree is a valid git repository.
- tryFetchGit = src:
- if isGit && !isShallow
- then
- let res = builtins.fetchGit src;
- in if res.rev == "0000000000000000000000000000000000000000" then removeAttrs res ["rev" "shortRev"] else res
- else { outPath = src; };
- # NB git worktrees have a file for .git, so we don't check the type of .git
- isGit = builtins.pathExists (src + "/.git");
- isShallow = builtins.pathExists (src + "/.git/shallow");
-
- in
- { lastModified = 0; lastModifiedDate = formatSecondsSinceEpoch 0; }
- // (if src ? outPath then src else tryFetchGit src);
-
- # Format number of seconds in the Unix epoch as %Y%m%d%H%M%S.
- formatSecondsSinceEpoch = t:
- let
- rem = x: y: x - x / y * y;
- days = t / 86400;
- secondsInDay = rem t 86400;
- hours = secondsInDay / 3600;
- minutes = (rem secondsInDay 3600) / 60;
- seconds = rem t 60;
-
- # Courtesy of https://stackoverflow.com/a/32158604.
- z = days + 719468;
- era = (if z >= 0 then z else z - 146096) / 146097;
- doe = z - era * 146097;
- yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365;
- y = yoe + era * 400;
- doy = doe - (365 * yoe + yoe / 4 - yoe / 100);
- mp = (5 * doy + 2) / 153;
- d = doy - (153 * mp + 2) / 5 + 1;
- m = mp + (if mp < 10 then 3 else -9);
- y' = y + (if m <= 2 then 1 else 0);
-
- pad = s: if builtins.stringLength s < 2 then "0" + s else s;
- in "${toString y'}${pad (toString m)}${pad (toString d)}${pad (toString hours)}${pad (toString minutes)}${pad (toString seconds)}";
-
- allNodes =
- builtins.mapAttrs
- (key: node:
- let
- sourceInfo =
- if key == lockFile.root
- then rootSrc
- else fetchTree (node.info or {} // removeAttrs node.locked ["dir"]);
-
- subdir = if key == lockFile.root then "" else node.locked.dir or "";
-
- flake = import (sourceInfo + (if subdir != "" then "/" else "") + subdir + "/flake.nix");
-
- inputs = builtins.mapAttrs
- (inputName: inputSpec: allNodes.${resolveInput inputSpec})
- (node.inputs or {});
-
- # Resolve a input spec into a node name. An input spec is
- # either a node name, or a 'follows' path from the root
- # node.
- resolveInput = inputSpec:
- if builtins.isList inputSpec
- then getInputByPath lockFile.root inputSpec
- else inputSpec;
-
- # Follow an input path (e.g. ["dwarffs" "nixpkgs"]) from the
- # root node, returning the final node.
- getInputByPath = nodeName: path:
- if path == []
- then nodeName
- else
- getInputByPath
- # Since this could be a 'follows' input, call resolveInput.
- (resolveInput lockFile.nodes.${nodeName}.inputs.${builtins.head path})
- (builtins.tail path);
-
- outputs = flake.outputs (inputs // { self = result; });
-
- result = outputs // sourceInfo // { inherit inputs; inherit outputs; inherit sourceInfo; };
- in
- if node.flake or true then
- assert builtins.isFunction flake.outputs;
- result
- else
- sourceInfo
- )
- lockFile.nodes;
-
- result =
- if !(builtins.pathExists lockFilePath)
- then callLocklessFlake rootSrc
- else if lockFile.version == 4
- then callFlake4 rootSrc (lockFile.inputs)
- else if lockFile.version >= 5 && lockFile.version <= 7
- then allNodes.${lockFile.root}
- else throw "lock file '${lockFilePath}' has unsupported version ${toString lockFile.version}";
-
-in
- rec {
- defaultNix =
- result
- // (if result ? defaultPackage.${system} then { default = result.defaultPackage.${system}; } else {});
-
- shellNix =
- defaultNix
- // (if result ? devShell.${system} then { default = result.devShell.${system}; } else {});
- }
diff --git a/lib/flake-compat.nix b/lib/flake-compat.nix
deleted file mode 100644
index d3daa10..0000000
--- a/lib/flake-compat.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-src:
-(import ./flake-compat-patched.nix { inherit src; }).defaultNix
-# Until https://github.com/edolstra/flake-compat/pull/18 is accepted
-# (import (
-# fetchTarball {
-# url = "https://github.com/edolstra/flake-compat/archive/99f1c2157fba4bfe6211a321fd0ee43199025dbf.tar.gz";
-# sha256 = "0x2jn3vrawwv9xp15674wjz9pixwjyj3j771izayl962zziivbx2";
-# }) { inherit src; }).defaultNix
diff --git a/lib/node-env.nix b/lib/node-env.nix
deleted file mode 100644
index 720e0cc..0000000
--- a/lib/node-env.nix
+++ /dev/null
@@ -1,542 +0,0 @@
-# This file originates from node2nix
-
-{stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}:
-
-let
- python = if nodejs ? python then nodejs.python else python2;
-
- # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
- tarWrapper = runCommand "tarWrapper" {} ''
- mkdir -p $out/bin
-
- cat > $out/bin/tar <> $out/nix-support/hydra-build-products
- '';
- };
-
- includeDependencies = {dependencies}:
- stdenv.lib.optionalString (dependencies != [])
- (stdenv.lib.concatMapStrings (dependency:
- ''
- # Bundle the dependencies of the package
- mkdir -p node_modules
- cd node_modules
-
- # Only include dependencies if they don't exist. They may also be bundled in the package.
- if [ ! -e "${dependency.name}" ]
- then
- ${composePackage dependency}
- fi
-
- cd ..
- ''
- ) dependencies);
-
- # Recursively composes the dependencies of a package
- composePackage = { name, packageName, src, dependencies ? [], ... }@args:
- ''
- DIR=$(pwd)
- cd $TMPDIR
-
- unpackFile ${src}
-
- # Make the base dir in which the target dependency resides first
- mkdir -p "$(dirname "$DIR/${packageName}")"
-
- if [ -f "${src}" ]
- then
- # Figure out what directory has been unpacked
- packageDir="$(find . -maxdepth 1 -type d | tail -1)"
-
- # Restore write permissions to make building work
- find "$packageDir" -type d -print0 | xargs -0 chmod u+x
- chmod -R u+w "$packageDir"
-
- # Move the extracted tarball into the output folder
- mv "$packageDir" "$DIR/${packageName}"
- elif [ -d "${src}" ]
- then
- # Get a stripped name (without hash) of the source directory.
- # On old nixpkgs it's already set internally.
- if [ -z "$strippedName" ]
- then
- strippedName="$(stripHash ${src})"
- fi
-
- # Restore write permissions to make building work
- chmod -R u+w "$strippedName"
-
- # Move the extracted directory into the output folder
- mv "$strippedName" "$DIR/${packageName}"
- fi
-
- # Unset the stripped name to not confuse the next unpack step
- unset strippedName
-
- # Include the dependencies of the package
- cd "$DIR/${packageName}"
- ${includeDependencies { inherit dependencies; }}
- cd ..
- ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
- '';
-
- pinpointDependencies = {dependencies, production}:
- let
- pinpointDependenciesFromPackageJSON = writeTextFile {
- name = "pinpointDependencies.js";
- text = ''
- var fs = require('fs');
- var path = require('path');
-
- function resolveDependencyVersion(location, name) {
- if(location == process.env['NIX_STORE']) {
- return null;
- } else {
- var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
-
- if(fs.existsSync(dependencyPackageJSON)) {
- var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
-
- if(dependencyPackageObj.name == name) {
- return dependencyPackageObj.version;
- }
- } else {
- return resolveDependencyVersion(path.resolve(location, ".."), name);
- }
- }
- }
-
- function replaceDependencies(dependencies) {
- if(typeof dependencies == "object" && dependencies !== null) {
- for(var dependency in dependencies) {
- var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
-
- if(resolvedVersion === null) {
- process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
- } else {
- dependencies[dependency] = resolvedVersion;
- }
- }
- }
- }
-
- /* Read the package.json configuration */
- var packageObj = JSON.parse(fs.readFileSync('./package.json'));
-
- /* Pinpoint all dependencies */
- replaceDependencies(packageObj.dependencies);
- if(process.argv[2] == "development") {
- replaceDependencies(packageObj.devDependencies);
- }
- replaceDependencies(packageObj.optionalDependencies);
-
- /* Write the fixed package.json file */
- fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
- '';
- };
- in
- ''
- node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
-
- ${stdenv.lib.optionalString (dependencies != [])
- ''
- if [ -d node_modules ]
- then
- cd node_modules
- ${stdenv.lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
- cd ..
- fi
- ''}
- '';
-
- # Recursively traverses all dependencies of a package and pinpoints all
- # dependencies in the package.json file to the versions that are actually
- # being used.
-
- pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
- ''
- if [ -d "${packageName}" ]
- then
- cd "${packageName}"
- ${pinpointDependencies { inherit dependencies production; }}
- cd ..
- ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
- fi
- '';
-
- # Extract the Node.js source code which is used to compile packages with
- # native bindings
- nodeSources = runCommand "node-sources" {} ''
- tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
- mv node-* $out
- '';
-
- # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
- addIntegrityFieldsScript = writeTextFile {
- name = "addintegrityfields.js";
- text = ''
- var fs = require('fs');
- var path = require('path');
-
- function augmentDependencies(baseDir, dependencies) {
- for(var dependencyName in dependencies) {
- var dependency = dependencies[dependencyName];
-
- // Open package.json and augment metadata fields
- var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
- var packageJSONPath = path.join(packageJSONDir, "package.json");
-
- if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
- console.log("Adding metadata fields to: "+packageJSONPath);
- var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
-
- if(dependency.integrity) {
- packageObj["_integrity"] = dependency.integrity;
- } else {
- packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
- }
-
- packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
- fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
- }
-
- // Augment transitive dependencies
- if(dependency.dependencies !== undefined) {
- augmentDependencies(packageJSONDir, dependency.dependencies);
- }
- }
- }
-
- if(fs.existsSync("./package-lock.json")) {
- var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
-
- if(packageLock.lockfileVersion !== 1) {
- process.stderr.write("Sorry, I only understand lock file version 1!\n");
- process.exit(1);
- }
-
- if(packageLock.dependencies !== undefined) {
- augmentDependencies(".", packageLock.dependencies);
- }
- }
- '';
- };
-
- # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
- reconstructPackageLock = writeTextFile {
- name = "addintegrityfields.js";
- text = ''
- var fs = require('fs');
- var path = require('path');
-
- var packageObj = JSON.parse(fs.readFileSync("package.json"));
-
- var lockObj = {
- name: packageObj.name,
- version: packageObj.version,
- lockfileVersion: 1,
- requires: true,
- dependencies: {}
- };
-
- function augmentPackageJSON(filePath, dependencies) {
- var packageJSON = path.join(filePath, "package.json");
- if(fs.existsSync(packageJSON)) {
- var packageObj = JSON.parse(fs.readFileSync(packageJSON));
- dependencies[packageObj.name] = {
- version: packageObj.version,
- integrity: "sha1-000000000000000000000000000=",
- dependencies: {}
- };
- processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
- }
- }
-
- function processDependencies(dir, dependencies) {
- if(fs.existsSync(dir)) {
- var files = fs.readdirSync(dir);
-
- files.forEach(function(entry) {
- var filePath = path.join(dir, entry);
- var stats = fs.statSync(filePath);
-
- if(stats.isDirectory()) {
- if(entry.substr(0, 1) == "@") {
- // When we encounter a namespace folder, augment all packages belonging to the scope
- var pkgFiles = fs.readdirSync(filePath);
-
- pkgFiles.forEach(function(entry) {
- if(stats.isDirectory()) {
- var pkgFilePath = path.join(filePath, entry);
- augmentPackageJSON(pkgFilePath, dependencies);
- }
- });
- } else {
- augmentPackageJSON(filePath, dependencies);
- }
- }
- });
- }
- }
-
- processDependencies("node_modules", lockObj.dependencies);
-
- fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
- '';
- };
-
- # Builds and composes an NPM package including all its dependencies
- buildNodePackage =
- { name
- , packageName
- , version
- , dependencies ? []
- , buildInputs ? []
- , production ? true
- , npmFlags ? ""
- , dontNpmInstall ? false
- , bypassCache ? false
- , preRebuild ? ""
- , dontStrip ? true
- , unpackPhase ? "true"
- , buildPhase ? "true"
- , ... }@args:
-
- let
- forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
- extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
- in
- stdenv.mkDerivation ({
- name = "node-${name}-${version}";
- buildInputs = [ tarWrapper python nodejs ]
- ++ stdenv.lib.optional (stdenv.isLinux) utillinux
- ++ stdenv.lib.optional (stdenv.isDarwin) libtool
- ++ buildInputs;
-
- inherit dontStrip; # Stripping may fail a build for some package deployments
- inherit dontNpmInstall preRebuild unpackPhase buildPhase;
-
- compositionScript = composePackage args;
- pinpointDependenciesScript = pinpointDependenciesOfPackage args;
-
- passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
-
- installPhase = ''
- # Create and enter a root node_modules/ folder
- mkdir -p $out/lib/node_modules
- cd $out/lib/node_modules
-
- # Compose the package and all its dependencies
- source $compositionScriptPath
-
- # Pinpoint the versions of all dependencies to the ones that are actually being used
- echo "pinpointing versions of dependencies..."
- source $pinpointDependenciesScriptPath
-
- # Patch the shebangs of the bundled modules to prevent them from
- # calling executables outside the Nix store as much as possible
- patchShebangs .
-
- # Deploy the Node.js package by running npm install. Since the
- # dependencies have been provided already by ourselves, it should not
- # attempt to install them again, which is good, because we want to make
- # it Nix's responsibility. If it needs to install any dependencies
- # anyway (e.g. because the dependency parameters are
- # incomplete/incorrect), it fails.
- #
- # The other responsibilities of NPM are kept -- version checks, build
- # steps, postprocessing etc.
-
- export HOME=$TMPDIR
- cd "${packageName}"
- runHook preRebuild
-
- ${stdenv.lib.optionalString bypassCache ''
- if [ ! -f package-lock.json ]
- then
- echo "No package-lock.json file found, reconstructing..."
- node ${reconstructPackageLock}
- fi
-
- node ${addIntegrityFieldsScript}
- ''}
-
- npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
-
- if [ "$dontNpmInstall" != "1" ]
- then
- # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
- rm -f npm-shrinkwrap.json
-
- npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
- fi
-
- # Create symlink to the deployed executable folder, if applicable
- if [ -d "$out/lib/node_modules/.bin" ]
- then
- ln -s $out/lib/node_modules/.bin $out/bin
- fi
-
- # Create symlinks to the deployed manual page folders, if applicable
- if [ -d "$out/lib/node_modules/${packageName}/man" ]
- then
- mkdir -p $out/share
- for dir in "$out/lib/node_modules/${packageName}/man/"*
- do
- mkdir -p $out/share/man/$(basename "$dir")
- for page in "$dir"/*
- do
- ln -s $page $out/share/man/$(basename "$dir")
- done
- done
- fi
-
- # Run post install hook, if provided
- runHook postInstall
- '';
- } // extraArgs);
-
- # Builds a development shell
- buildNodeShell =
- { name
- , packageName
- , version
- , src
- , dependencies ? []
- , buildInputs ? []
- , production ? true
- , npmFlags ? ""
- , dontNpmInstall ? false
- , bypassCache ? false
- , dontStrip ? true
- , unpackPhase ? "true"
- , buildPhase ? "true"
- , ... }@args:
-
- let
- forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
-
- extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
-
- nodeDependencies = stdenv.mkDerivation ({
- name = "node-dependencies-${name}-${version}";
-
- buildInputs = [ tarWrapper python nodejs ]
- ++ stdenv.lib.optional (stdenv.isLinux) utillinux
- ++ stdenv.lib.optional (stdenv.isDarwin) libtool
- ++ buildInputs;
-
- inherit dontStrip; # Stripping may fail a build for some package deployments
- inherit dontNpmInstall unpackPhase buildPhase;
-
- includeScript = includeDependencies { inherit dependencies; };
- pinpointDependenciesScript = pinpointDependenciesOfPackage args;
-
- passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
-
- installPhase = ''
- mkdir -p $out/${packageName}
- cd $out/${packageName}
-
- source $includeScriptPath
-
- # Create fake package.json to make the npm commands work properly
- cp ${src}/package.json .
- chmod 644 package.json
- ${stdenv.lib.optionalString bypassCache ''
- if [ -f ${src}/package-lock.json ]
- then
- cp ${src}/package-lock.json .
- fi
- ''}
-
- # Pinpoint the versions of all dependencies to the ones that are actually being used
- echo "pinpointing versions of dependencies..."
- cd ..
- ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
-
- source $pinpointDependenciesScriptPath
- cd ${packageName}
-
- # Patch the shebangs of the bundled modules to prevent them from
- # calling executables outside the Nix store as much as possible
- patchShebangs .
-
- export HOME=$PWD
-
- ${stdenv.lib.optionalString bypassCache ''
- if [ ! -f package-lock.json ]
- then
- echo "No package-lock.json file found, reconstructing..."
- node ${reconstructPackageLock}
- fi
-
- node ${addIntegrityFieldsScript}
- ''}
-
- npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
-
- ${stdenv.lib.optionalString (!dontNpmInstall) ''
- # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
- rm -f npm-shrinkwrap.json
-
- npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
- ''}
-
- cd ..
- ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
-
- mv ${packageName} lib
- ln -s $out/lib/node_modules/.bin $out/bin
- '';
- } // extraArgs);
- in
- stdenv.mkDerivation {
- name = "node-shell-${name}-${version}";
-
- buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
- buildCommand = ''
- mkdir -p $out/bin
- cat > $out/bin/shell <> ${varDir}/${varName k remote}.log
- [[ $? = 0 ]] || echo -e "Error when doing backup for ${varName k remote}, see above\n---------------------------------------" >&2
- ''
- ]) v.remotes
- ) config.services.duplyBackup.profiles))}
- '';
- in
- [
- "0 2 * * * root ${backups}"
- ];
-
- };
-
- security.pki.certificateFiles = [
- (pkgs.fetchurl {
- url = "http://downloads.e.eriomem.net/eriomemca.pem";
- sha256 = "1ixx4c6j3m26j8dp9a3dkvxc80v1nr5aqgmawwgs06bskasqkvvh";
- })
- ];
- };
-}
diff --git a/modules/naemon/default.nix b/modules/naemon/default.nix
deleted file mode 100644
index 60a75b3..0000000
--- a/modules/naemon/default.nix
+++ /dev/null
@@ -1,183 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
- cfg = config.services.naemon;
-
- naemonConfig = pkgs.runCommand "naemon-config" {
- objectsFile = pkgs.writeText "naemon_objects.cfg" cfg.objectDefs;
- resourceFile = config.secrets.fullPaths."naemon/resources.cfg";
- extraConfig = pkgs.writeText "extra.cfg" cfg.extraConfig;
- inherit (cfg) logDir varDir runDir cacheDir;
- } ''
- substituteAll ${./naemon.cfg} $out
- cat $extraConfig >> $out
- '';
-in
-{
- options = {
- services.naemon = {
- enable = mkOption {
- default = false;
- description = "
- Whether to use Naemon to monitor
- your system or network.
- ";
- };
-
- objectDefs = mkOption {
- type = types.lines;
- default = "";
- description = "
- A list of Naemon object configuration that must define
- the hosts, host groups, services and contacts for the
- network that you want Naemon to monitor.
- ";
- };
-
- extraResource = mkOption {
- type = types.lines;
- default = "";
- example = ''
- # Sets $USER2$ to be the path to event handlers
- #$USER2$=/usr/lib/monitoring-plugins/eventhandlers
-
- # Store some usernames and passwords (hidden from the CGIs)
- #$USER3$=someuser
- #$USER4$=somepassword
- '';
- description = "
- Lines to add to the resource file
- # You can define $USERx$ macros in this file, which can in turn be used
- # in command definitions in your host config file(s). $USERx$ macros are
- # useful for storing sensitive information such as usernames, passwords,
- # etc. They are also handy for specifying the path to plugins and
- # event handlers - if you decide to move the plugins or event handlers to
- # a different directory in the future, you can just update one or two
- # $USERx$ macros, instead of modifying a lot of command definitions.
- #
- # Naemon supports up to 256 $USERx$ macros ($USER1$ through $USER256$)
- #
- # Resource files may also be used to store configuration directives for
- # external data sources like MySQL...
- #
- ";
- };
-
- extraConfig = mkOption {
- type = types.lines;
- default = "";
- description = "
- Extra config to append to main config
- ";
- };
-
- user = mkOption {
- type = types.str;
- default = "naemon";
- description = "User for naemon";
- };
-
- group = mkOption {
- type = types.str;
- default = "naemon";
- description = "Group for naemon";
- };
-
- varDir = mkOption {
- type = types.path;
- default = "/var/lib/naemon";
- description = "The directory where naemon stores its data";
- };
-
- cacheDir = mkOption {
- type = types.path;
- default = "/var/cache/naemon";
- description = "The directory where naemon stores its cache";
- };
-
- runDir = mkOption {
- type = types.path;
- default = "/run/naemon";
- description = "The directory where naemon stores its runtime files";
- };
-
- logDir = mkOption {
- type = types.path;
- default = "/var/log/naemon";
- description = "The directory where naemon stores its log files";
- };
-
- package = mkOption {
- type = types.package;
- default = pkgs.naemon.override {
- inherit (cfg) varDir cacheDir logDir runDir user group;
- };
- description = ''
- Naemon package to use
- '';
- };
- };
- };
-
-
- config = mkIf cfg.enable {
- secrets.keys = {
- "naemon/resources.cfg" = {
- user = cfg.user;
- group = cfg.group;
- permissions = "0400";
- text = ''
- $USER1$=${pkgs.monitoring-plugins}/libexec
- ${cfg.extraResource}
- '';
- };
- };
-
- users.users = optionalAttrs (cfg.user == "naemon") {
- naemon = {
- group = cfg.group;
- uid = config.ids.uids.nagios;
- extraGroups = [ "keys" ];
- };
- };
- users.groups = optionalAttrs (cfg.user == "naemon") {
- naemon = {
- gid = config.ids.gids.nagios;
- };
- };
-
- services.filesWatcher.naemon = {
- paths = [ config.secrets.fullPaths."naemon/resources.cfg" ];
- };
- systemd.services.naemon = {
- description = "Naemon monitoring daemon";
- path = [ cfg.package pkgs.monitoring-plugins ];
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
-
- preStart = "${cfg.package}/bin/naemon -vp ${naemonConfig}";
- script = "${cfg.package}/bin/naemon --daemon ${naemonConfig}";
- reload = "${pkgs.utillinux}/bin/kill -HUP $MAINPID";
- serviceConfig = {
- User = cfg.user;
- Restart = "always";
- RestartSec = 2;
- StandardOutput = "journal";
- StandardError = "inherit";
- PIDFile = "${cfg.runDir}/naemon.pid";
- LogsDirectory = assert lib.strings.hasPrefix "/var/log/" cfg.logDir;
- lib.strings.removePrefix "/var/log/" cfg.logDir;
- CacheDirectory = assert lib.strings.hasPrefix "/var/cache/" cfg.cacheDir;
- let unprefixed = lib.strings.removePrefix "/var/cache/" cfg.cacheDir;
- in [ unprefixed "${unprefixed}/checkresults" ];
- StateDirectory = assert lib.strings.hasPrefix "/var/lib/" cfg.varDir;
- lib.strings.removePrefix "/var/lib/" cfg.varDir;
- RuntimeDirectory = assert lib.strings.hasPrefix "/run/" cfg.runDir;
- lib.strings.removePrefix "/run/" cfg.runDir;
- };
- };
- };
-}
diff --git a/modules/naemon/naemon.cfg b/modules/naemon/naemon.cfg
deleted file mode 100644
index 792e03b..0000000
--- a/modules/naemon/naemon.cfg
+++ /dev/null
@@ -1,1059 +0,0 @@
-##############################################################################
-#
-# naemon.cfg - Sample Main Config File for Naemon 1.0.10.gc2a87305.dirty.20190703.source
-#
-# Read the documentation for more information on this configuration
-# file. I've provided some comments here, but things may not be so
-# clear without further explanation.
-#
-#
-##############################################################################
-
-
-# LOG FILE
-# This is the main log file where service and host events are logged
-# for historical purposes. This should be the first option specified
-# in the config file!!!
-
-log_file=@logDir@/naemon.log
-
-
-
-# OBJECT CONFIGURATION FILE(S)
-# These are the object configuration files in which you define hosts,
-# host groups, contacts, contact groups, services, etc.
-# You can split your object definitions across several config files
-# if you wish (as shown below), or keep them all in a single config file.
-
-# You can specify individual object config files as shown below:
-#cfg_file=/etc/naemon/objects/commands.cfg
-#cfg_file=/etc/naemon/objects/contacts.cfg
-#cfg_file=/etc/naemon/objects/timeperiods.cfg
-#cfg_file=/etc/naemon/objects/templates.cfg
-cfg_file=@objectsFile@
-
-
-# You can also tell naemon to process all config files (with a .cfg
-# extension) in a particular directory by using the cfg_dir
-# directive as shown below:
-#cfg_dir=/etc/naemon/conf.d
-
-
-
-
-# OBJECT CACHE FILE
-# This option determines where object definitions are cached when
-# naemon starts/restarts. The CGIs read object definitions from
-# this cache file (rather than looking at the object config files
-# directly) in order to prevent inconsistencies that can occur
-# when the config files are modified after naemon starts.
-
-object_cache_file=@varDir@/objects.cache
-
-
-
-# PRE-CACHED OBJECT FILE
-# This options determines the location of the precached object file.
-# If you run naemon with the -p command line option, it will preprocess
-# your object configuration file(s) and write the cached config to this
-# file. You can then start naemon with the -u option to have it read
-# object definitions from this precached file, rather than the standard
-# object configuration files (see the cfg_file and cfg_dir options above).
-# Using a precached object file can speed up the time needed to (re)start
-# the naemon process if you've got a large and/or complex configuration.
-# Read the documentation section on optimizing naemon to find our more
-# about how this feature works.
-
-precached_object_file=@varDir@/objects.precache
-
-
-
-# RESOURCE FILE
-# This is an optional resource file that contains $USERx$ macro
-# definitions. Multiple resource files can be specified by using
-# multiple resource_file definitions. The CGIs will not attempt to
-# read the contents of resource files, so information that is
-# considered to be sensitive (usernames, passwords, etc) can be
-# defined as macros in this file and restrictive permissions (600)
-# can be placed on this file.
-
-resource_file=@resourceFile@
-
-
-
-# STATUS FILE
-# This is where the current status of all monitored services and
-# hosts is stored. Its contents are read and processed by the CGIs.
-# The contents of the status file are deleted every time naemon
-# restarts.
-
-status_file=@varDir@/status.dat
-
-
-
-# STATUS FILE UPDATE INTERVAL
-# This option determines the frequency (in seconds) that
-# naemon will periodically dump program, host, and
-# service status data. Set it to 0 to disable updates.
-
-status_update_interval=10
-
-
-
-# EXTERNAL COMMAND OPTION
-# This option allows you to specify whether or not Naemon should check
-# for external commands (in the command file defined below). By default
-# Naemon will *not* check for external commands, just to be on the
-# cautious side. If you want to be able to use the CGI command interface
-# you will have to enable this.
-# Values: 0 = disable commands, 1 = enable commands
-
-check_external_commands=1
-
-
-
-# EXTERNAL COMMAND FILE
-# This is the file that Naemon checks for external command requests.
-# It is also where the command CGI will write commands that are submitted
-# by users, so it must be writeable by the user that the web server
-# is running as (usually 'nobody'). Permissions should be set at the
-# directory level instead of on the file, as the file is deleted every
-# time its contents are processed.
-
-command_file=@runDir@/naemon.cmd
-
-
-
-# QUERY HANDLER INTERFACE
-# This is the socket that is created for the Query Handler interface
-
-query_socket=@runDir@/naemon.qh
-
-
-
-# LOCK FILE
-# This is the lockfile that Naemon will use to store its PID number
-# in when it is running in daemon mode.
-
-lock_file=@runDir@/naemon.pid
-
-
-
-# TEMP FILE
-# This is a temporary file that is used as scratch space when Naemon
-# updates the status log, cleans the comment file, etc. This file
-# is created, used, and deleted throughout the time that Naemon is
-# running.
-
-temp_file=@cacheDir@/naemon.tmp
-
-
-
-# TEMP PATH
-# This is path where Naemon can create temp files for service and
-# host check results, etc.
-
-temp_path=@cacheDir@
-
-
-
-# EVENT BROKER OPTIONS
-# Controls what (if any) data gets sent to the event broker.
-# Values: 0 = Broker nothing
-# -1 = Broker everything
-# = See documentation
-
-event_broker_options=-1
-
-
-
-# EVENT BROKER MODULE(S)
-# This directive is used to specify an event broker module that should
-# be loaded by Naemon at startup. Use multiple directives if you want
-# to load more than one module. Arguments that should be passed to
-# the module at startup are seperated from the module path by a space.
-#
-# Example:
-#
-# broker_module= [moduleargs]
-
-#broker_module=/usr/lib/naemon/naemon-livestatus/livestatus.so @cacheDir@/live
-#broker_module=/somewhere/module1.o
-#broker_module=/somewhere/module2.o arg1 arg2=3 debug=0
-
-# In order to provide drop-in support for new modules, you can also make use of
-# the include_dir directive. The include_dir directive causes Naemon to parse
-# any configuration (not just object configuration, as with cfg_dir) as if the
-# contents of the files in the pointed-to directory was included on this line.
-# The path to the directory is relative to the path of the main naemon.cfg
-# file.
-#include_dir=module-conf.d
-
-# LOG ARCHIVE PATH
-# This is the directory where archived (rotated) log files are placed by the
-# logrotate daemon. It is used by out of core add-ons to discover the logfiles.
-
-log_archive_path=@logDir@/archives
-
-
-
-# LOGGING OPTIONS
-# If you want messages logged to the syslog facility, as well as the
-# Naemon log file set this option to 1. If not, set it to 0.
-
-use_syslog=0
-
-# NOTIFICATION LOGGING OPTION
-# If you don't want notifications to be logged, set this value to 0.
-# If notifications should be logged, set the value to 1.
-
-log_notifications=1
-
-# Notification suppression reason (NSR) logging causes the reason for a
-# notification suppression to be logged, when it occurs. This can potentially
-# add some noise to your log file, but is highly useful when troubleshooting
-# missing notifications.
-
-enable_notification_suppression_reason_logging=1
-
-
-# SERVICE RETRY LOGGING OPTION
-# If you don't want service check retries to be logged, set this value
-# to 0. If retries should be logged, set the value to 1.
-
-log_service_retries=1
-
-
-
-# HOST RETRY LOGGING OPTION
-# If you don't want host check retries to be logged, set this value to
-# 0. If retries should be logged, set the value to 1.
-
-log_host_retries=1
-
-
-
-# EVENT HANDLER LOGGING OPTION
-# If you don't want host and service event handlers to be logged, set
-# this value to 0. If event handlers should be logged, set the value
-# to 1.
-
-log_event_handlers=1
-
-
-
-# INITIAL STATES LOGGING OPTION
-# If you want Naemon to log all initial host and service states to
-# the main log file (the first time the service or host is checked)
-# you can enable this option by setting this value to 1. If you
-# are not using an external application that does long term state
-# statistics reporting, you do not need to enable this option. In
-# this case, set the value to 0.
-
-log_initial_states=0
-
-
-
-# CURRENT STATES LOGGING OPTION
-# If you don't want Naemon to log all current host and service states
-# after log has been rotated to the main log file, you can disable this
-# option by setting this value to 0. Default value is 1.
-
-log_current_states=1
-
-
-
-# EXTERNAL COMMANDS LOGGING OPTION
-# If you don't want Naemon to log external commands, set this value
-# to 0. If external commands should be logged, set this value to 1.
-# Note: This option does not include logging of passive service
-# checks - see the option below for controlling whether or not
-# passive checks are logged.
-
-log_external_commands=1
-
-
-
-# PASSIVE CHECKS LOGGING OPTION
-# If you don't want Naemon to log passive host and service checks, set
-# this value to 0. If passive checks should be logged, set
-# this value to 1.
-
-log_passive_checks=1
-
-
-
-# GLOBAL HOST AND SERVICE EVENT HANDLERS
-# These options allow you to specify a host and service event handler
-# command that is to be run for every host or service state change.
-# The global event handler is executed immediately prior to the event
-# handler that you have optionally specified in each host or
-# service definition. The command argument is the short name of a
-# command definition that you define in your host configuration file.
-# Read the HTML docs for more information.
-
-#global_host_event_handler=somecommand
-#global_service_event_handler=somecommand
-
-
-
-# MAXIMUM CONCURRENT SERVICE CHECKS
-# This option allows you to specify the maximum number of
-# service checks that can be run in parallel at any given time.
-# Specifying a value of 1 for this variable essentially prevents
-# any service checks from being parallelized. A value of 0
-# will not restrict the number of concurrent checks that are
-# being executed.
-
-max_concurrent_checks=0
-
-
-# CHECK RESULT PATH
-# This is directory where Naemon reads check results of host and
-# service checks to further process them.
-#
-# Note: Naemon does not require this folder internally but it still
-# can be used to pass check results to Naemon.
-
-check_result_path=@cacheDir@/checkresults
-
-
-# CACHED HOST CHECK HORIZON
-# This option determines the maximum amount of time (in seconds)
-# that the state of a previous host check is considered current.
-# Cached host states (from host checks that were performed more
-# recently that the timeframe specified by this value) can immensely
-# improve performance in regards to the host check logic.
-# Too high of a value for this option may result in inaccurate host
-# states being used by Naemon, while a lower value may result in a
-# performance hit for host checks. Use a value of 0 to disable host
-# check caching.
-
-cached_host_check_horizon=15
-
-
-
-# CACHED SERVICE CHECK HORIZON
-# This option determines the maximum amount of time (in seconds)
-# that the state of a previous service check is considered current.
-# Cached service states (from service checks that were performed more
-# recently that the timeframe specified by this value) can immensely
-# improve performance in regards to predictive dependency checks.
-# Use a value of 0 to disable service check caching.
-
-cached_service_check_horizon=15
-
-
-
-# ENABLE PREDICTIVE HOST DEPENDENCY CHECKS
-# This option determines whether or not Naemon will attempt to execute
-# checks of hosts when it predicts that future dependency logic test
-# may be needed. These predictive checks can help ensure that your
-# host dependency logic works well.
-# Values:
-# 0 = Disable predictive checks
-# 1 = Enable predictive checks (default)
-
-enable_predictive_host_dependency_checks=1
-
-
-
-# ENABLE PREDICTIVE SERVICE DEPENDENCY CHECKS
-# This option determines whether or not Naemon will attempt to execute
-# checks of service when it predicts that future dependency logic test
-# may be needed. These predictive checks can help ensure that your
-# service dependency logic works well.
-# Values:
-# 0 = Disable predictive checks
-# 1 = Enable predictive checks (default)
-
-enable_predictive_service_dependency_checks=1
-
-
-
-# SOFT STATE DEPENDENCIES
-# This option determines whether or not Naemon will use soft state
-# information when checking host and service dependencies. Normally
-# Naemon will only use the latest hard host or service state when
-# checking dependencies. If you want it to use the latest state (regardless
-# of whether its a soft or hard state type), enable this option.
-# Values:
-# 0 = Don't use soft state dependencies (default)
-# 1 = Use soft state dependencies
-
-soft_state_dependencies=0
-
-
-
-# TIME CHANGE ADJUSTMENT THRESHOLDS
-# These options determine when Naemon will react to detected changes
-# in system time (either forward or backwards).
-
-#time_change_threshold=900
-
-
-
-# TIMEOUT VALUES
-# These options control how much time Naemon will allow various
-# types of commands to execute before killing them off. Options
-# are available for controlling maximum time allotted for
-# service checks, host checks, event handlers, notifications, the
-# ocsp command, and performance data commands. All values are in
-# seconds.
-
-service_check_timeout=60
-host_check_timeout=30
-event_handler_timeout=30
-notification_timeout=30
-ocsp_timeout=5
-perfdata_timeout=5
-
-
-
-# RETAIN STATE INFORMATION
-# This setting determines whether or not Naemon will save state
-# information for services and hosts before it shuts down. Upon
-# startup Naemon will reload all saved service and host state
-# information before starting to monitor. This is useful for
-# maintaining long-term data on state statistics, etc, but will
-# slow Naemon down a bit when it (re)starts. Since its only
-# a one-time penalty, I think its well worth the additional
-# startup delay.
-
-retain_state_information=1
-
-
-
-# STATE RETENTION FILE
-# This is the file that Naemon should use to store host and
-# service state information before it shuts down. The state
-# information in this file is also read immediately prior to
-# starting to monitor the network when Naemon is restarted.
-# This file is used only if the retain_state_information
-# variable is set to 1.
-
-state_retention_file=@varDir@/retention.dat
-
-
-
-# RETENTION DATA UPDATE INTERVAL
-# This setting determines how often (in minutes) that Naemon
-# will automatically save retention data during normal operation.
-# If you set this value to 0, Naemon will not save retention
-# data at regular interval, but it will still save retention
-# data before shutting down or restarting. If you have disabled
-# state retention, this option has no effect.
-
-retention_update_interval=60
-
-
-
-# USE RETAINED PROGRAM STATE
-# This setting determines whether or not Naemon will set
-# program status variables based on the values saved in the
-# retention file. If you want to use retained program status
-# information, set this value to 1. If not, set this value
-# to 0.
-
-use_retained_program_state=1
-
-
-
-# USE RETAINED SCHEDULING INFO
-# This setting determines whether or not Naemon will retain
-# the scheduling info (next check time) for hosts and services
-# based on the values saved in the retention file. If you
-# If you want to use retained scheduling info, set this
-# value to 1. If not, set this value to 0.
-
-use_retained_scheduling_info=1
-
-
-# RETAINED_SCHEDULING_RANDOMIZE_WINDOW
-# If use_retained_scheduling info is enabled, this setting
-# sets the window (in seconds), in which checks that were
-# supposed to executed during a restart, is rescheduled.
-# That is, if set to 60 seconds, then all checks that were
-# missed due to a restart will be scheduled randomly to be
-# executed in the first 60 seconds after a restart.
-# If the retained_scheduling_randomize_window is larger than
-# the objects check_interval, the check_interval is used
-# instead.
-
-retained_scheduling_randomize_window=60
-
-
-# RETAINED ATTRIBUTE MASKS (ADVANCED FEATURE)
-# The following variables are used to specify specific host and
-# service attributes that should *not* be retained by Naemon during
-# program restarts.
-#
-# The values of the masks are bitwise ANDs of values specified
-# by the "MODATTR_" definitions found in include/common.h.
-# For example, if you do not want the current enabled/disabled state
-# of flap detection and event handlers for hosts to be retained, you
-# would use a value of 24 for the host attribute mask...
-# MODATTR_EVENT_HANDLER_ENABLED (8) + MODATTR_FLAP_DETECTION_ENABLED (16) = 24
-
-# This mask determines what host attributes are not retained
-retained_host_attribute_mask=0
-
-# This mask determines what service attributes are not retained
-retained_service_attribute_mask=0
-
-# These two masks determine what process attributes are not retained.
-# There are two masks, because some process attributes have host and service
-# options. For example, you can disable active host checks, but leave active
-# service checks enabled.
-retained_process_host_attribute_mask=0
-retained_process_service_attribute_mask=0
-
-# These two masks determine what contact attributes are not retained.
-# There are two masks, because some contact attributes have host and
-# service options. For example, you can disable host notifications for
-# a contact, but leave service notifications enabled for them.
-retained_contact_host_attribute_mask=0
-retained_contact_service_attribute_mask=0
-
-
-
-# INTERVAL LENGTH
-# This is the seconds per unit interval as used in the
-# host/contact/service configuration files. Setting this to 60 means
-# that each interval is one minute long (60 seconds). Other settings
-# have not been tested much, so your mileage is likely to vary...
-
-interval_length=60
-
-
-
-# AGGRESSIVE HOST CHECKING OPTION
-# If you don't want to turn on aggressive host checking features, set
-# this value to 0 (the default). Otherwise set this value to 1 to
-# enable the aggressive check option. Read the docs for more info
-# on what aggressive host check is or check out the source code in
-# base/checks.c
-
-use_aggressive_host_checking=0
-
-
-
-# SERVICE CHECK EXECUTION OPTION
-# This determines whether or not Naemon will actively execute
-# service checks when it initially starts. If this option is
-# disabled, checks are not actively made, but Naemon can still
-# receive and process passive check results that come in. Unless
-# you're implementing redundant hosts or have a special need for
-# disabling the execution of service checks, leave this enabled!
-# Values: 1 = enable checks, 0 = disable checks
-
-execute_service_checks=1
-
-
-
-# PASSIVE SERVICE CHECK ACCEPTANCE OPTION
-# This determines whether or not Naemon will accept passive
-# service checks results when it initially (re)starts.
-# Values: 1 = accept passive checks, 0 = reject passive checks
-
-accept_passive_service_checks=1
-
-
-
-# HOST CHECK EXECUTION OPTION
-# This determines whether or not Naemon will actively execute
-# host checks when it initially starts. If this option is
-# disabled, checks are not actively made, but Naemon can still
-# receive and process passive check results that come in. Unless
-# you're implementing redundant hosts or have a special need for
-# disabling the execution of host checks, leave this enabled!
-# Values: 1 = enable checks, 0 = disable checks
-
-execute_host_checks=1
-
-
-
-# PASSIVE HOST CHECK ACCEPTANCE OPTION
-# This determines whether or not Naemon will accept passive
-# host checks results when it initially (re)starts.
-# Values: 1 = accept passive checks, 0 = reject passive checks
-
-accept_passive_host_checks=1
-
-
-
-# NOTIFICATIONS OPTION
-# This determines whether or not Naemon will sent out any host or
-# service notifications when it is initially (re)started.
-# Values: 1 = enable notifications, 0 = disable notifications
-
-enable_notifications=1
-
-
-
-# EVENT HANDLER USE OPTION
-# This determines whether or not Naemon will run any host or
-# service event handlers when it is initially (re)started. Unless
-# you're implementing redundant hosts, leave this option enabled.
-# Values: 1 = enable event handlers, 0 = disable event handlers
-
-enable_event_handlers=1
-
-
-
-# PROCESS PERFORMANCE DATA OPTION
-# This determines whether or not Naemon will process performance
-# data returned from service and host checks. If this option is
-# enabled, host performance data will be processed using the
-# host_perfdata_command (defined below) and service performance
-# data will be processed using the service_perfdata_command (also
-# defined below). Read the HTML docs for more information on
-# performance data.
-# Values: 1 = process performance data, 0 = do not process performance data
-
-process_performance_data=0
-
-
-
-# HOST AND SERVICE PERFORMANCE DATA PROCESSING COMMANDS
-# These commands are run after every host and service check is
-# performed. These commands are executed only if the
-# enable_performance_data option (above) is set to 1. The command
-# argument is the short name of a command definition that you
-# define in your host configuration file. Read the HTML docs for
-# more information on performance data.
-
-#host_perfdata_command=process-host-perfdata
-#service_perfdata_command=process-service-perfdata
-
-
-
-# HOST AND SERVICE PERFORMANCE DATA FILES
-# These files are used to store host and service performance data.
-# Performance data is only written to these files if the
-# enable_performance_data option (above) is set to 1.
-
-#host_perfdata_file=@varDir@/host-perfdata
-#service_perfdata_file=@varDir@/service-perfdata
-
-
-
-# HOST AND SERVICE PERFORMANCE DATA FILE TEMPLATES
-# These options determine what data is written (and how) to the
-# performance data files. The templates may contain macros, special
-# characters (\t for tab, \r for carriage return, \n for newline)
-# and plain text. A newline is automatically added after each write
-# to the performance data file. Some examples of what you can do are
-# shown below.
-
-#host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$
-#service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$
-
-
-
-# HOST AND SERVICE PERFORMANCE DATA FILE MODES
-# This option determines whether or not the host and service
-# performance data files are opened in write ("w") or append ("a")
-# mode. If you want to use named pipes, you should use the special
-# pipe ("p") mode which avoid blocking at startup, otherwise you will
-# likely want the defult append ("a") mode.
-
-#host_perfdata_file_mode=a
-#service_perfdata_file_mode=a
-
-
-
-# HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING INTERVAL
-# These options determine how often (in seconds) the host and service
-# performance data files are processed using the commands defined
-# below. A value of 0 indicates the files should not be periodically
-# processed.
-
-#host_perfdata_file_processing_interval=0
-#service_perfdata_file_processing_interval=0
-
-
-
-# HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING COMMANDS
-# These commands are used to periodically process the host and
-# service performance data files. The interval at which the
-# processing occurs is determined by the options above.
-
-#host_perfdata_file_processing_command=process-host-perfdata-file
-#service_perfdata_file_processing_command=process-service-perfdata-file
-
-
-
-# HOST AND SERVICE PERFORMANCE DATA PROCESS EMPTY RESULTS
-# These options determine wether the core will process empty perfdata
-# results or not. This is needed for distributed monitoring, and intentionally
-# turned on by default.
-# If you don't require empty perfdata - saving some cpu cycles
-# on unwanted macro calculation - you can turn that off. Be careful!
-# Values: 1 = enable, 0 = disable
-
-#host_perfdata_process_empty_results=1
-#service_perfdata_process_empty_results=1
-
-
-# OBSESS OVER SERVICE CHECKS OPTION
-# This determines whether or not Naemon will obsess over service
-# checks and run the ocsp_command defined below. Unless you're
-# planning on implementing distributed monitoring, do not enable
-# this option. Read the HTML docs for more information on
-# implementing distributed monitoring.
-# Values: 1 = obsess over services, 0 = do not obsess (default)
-
-obsess_over_services=0
-
-
-
-# OBSESSIVE COMPULSIVE SERVICE PROCESSOR COMMAND
-# This is the command that is run for every service check that is
-# processed by Naemon. This command is executed only if the
-# obsess_over_services option (above) is set to 1. The command
-# argument is the short name of a command definition that you
-# define in your host configuration file. Read the HTML docs for
-# more information on implementing distributed monitoring.
-
-#ocsp_command=somecommand
-
-
-
-# OBSESS OVER HOST CHECKS OPTION
-# This determines whether or not Naemon will obsess over host
-# checks and run the ochp_command defined below. Unless you're
-# planning on implementing distributed monitoring, do not enable
-# this option. Read the HTML docs for more information on
-# implementing distributed monitoring.
-# Values: 1 = obsess over hosts, 0 = do not obsess (default)
-
-obsess_over_hosts=0
-
-
-
-# OBSESSIVE COMPULSIVE HOST PROCESSOR COMMAND
-# This is the command that is run for every host check that is
-# processed by Naemon. This command is executed only if the
-# obsess_over_hosts option (above) is set to 1. The command
-# argument is the short name of a command definition that you
-# define in your host configuration file. Read the HTML docs for
-# more information on implementing distributed monitoring.
-
-#ochp_command=somecommand
-
-
-
-# TRANSLATE PASSIVE HOST CHECKS OPTION
-# This determines whether or not Naemon will translate
-# DOWN/UNREACHABLE passive host check results into their proper
-# state for this instance of Naemon. This option is useful
-# if you have distributed or failover monitoring setup. In
-# these cases your other Naemon servers probably have a different
-# "view" of the network, with regards to the parent/child relationship
-# of hosts. If a distributed monitoring server thinks a host
-# is DOWN, it may actually be UNREACHABLE from the point of
-# this Naemon instance. Enabling this option will tell Naemon
-# to translate any DOWN or UNREACHABLE host states it receives
-# passively into the correct state from the view of this server.
-# Values: 1 = perform translation, 0 = do not translate (default)
-
-translate_passive_host_checks=0
-
-
-
-# PASSIVE HOST CHECKS ARE SOFT OPTION
-# This determines whether or not Naemon will treat passive host
-# checks as being HARD or SOFT. By default, a passive host check
-# result will put a host into a HARD state type. This can be changed
-# by enabling this option.
-# Values: 0 = passive checks are HARD, 1 = passive checks are SOFT
-
-passive_host_checks_are_soft=0
-
-
-
-# ORPHANED HOST/SERVICE CHECK OPTIONS
-# These options determine whether or not Naemon will periodically
-# check for orphaned host service checks. Since service checks are
-# not rescheduled until the results of their previous execution
-# instance are processed, there exists a possibility that some
-# checks may never get rescheduled. A similar situation exists for
-# host checks, although the exact scheduling details differ a bit
-# from service checks. Orphaned checks seem to be a rare
-# problem and should not happen under normal circumstances.
-# If you have problems with service checks never getting
-# rescheduled, make sure you have orphaned service checks enabled.
-# Values: 1 = enable checks, 0 = disable checks
-
-check_for_orphaned_services=1
-check_for_orphaned_hosts=1
-
-
-
-# SERVICE FRESHNESS CHECK OPTION
-# This option determines whether or not Naemon will periodically
-# check the "freshness" of service results. Enabling this option
-# is useful for ensuring passive checks are received in a timely
-# manner.
-# Values: 1 = enabled freshness checking, 0 = disable freshness checking
-
-check_service_freshness=1
-
-
-
-# SERVICE FRESHNESS CHECK INTERVAL
-# This setting determines how often (in seconds) Naemon will
-# check the "freshness" of service check results. If you have
-# disabled service freshness checking, this option has no effect.
-
-service_freshness_check_interval=60
-
-
-
-# SERVICE CHECK TIMEOUT STATE
-# This setting determines the state Naemon will report when a
-# service check times out - that is does not respond within
-# service_check_timeout seconds. This can be useful if a
-# machine is running at too high a load and you do not want
-# to consider a failed service check to be critical (the default).
-# Valid settings are:
-# c - Critical (default)
-# u - Unknown
-# w - Warning
-# o - OK
-
-service_check_timeout_state=c
-
-
-
-# HOST FRESHNESS CHECK OPTION
-# This option determines whether or not Naemon will periodically
-# check the "freshness" of host results. Enabling this option
-# is useful for ensuring passive checks are received in a timely
-# manner.
-# Values: 1 = enabled freshness checking, 0 = disable freshness checking
-
-check_host_freshness=0
-
-
-
-# HOST FRESHNESS CHECK INTERVAL
-# This setting determines how often (in seconds) Naemon will
-# check the "freshness" of host check results. If you have
-# disabled host freshness checking, this option has no effect.
-
-host_freshness_check_interval=60
-
-
-
-
-# ADDITIONAL FRESHNESS THRESHOLD LATENCY
-# This setting determines the number of seconds that Naemon
-# will add to any host and service freshness thresholds that
-# it calculates (those not explicitly specified by the user).
-
-additional_freshness_latency=15
-
-
-
-
-# FLAP DETECTION OPTION
-# This option determines whether or not Naemon will try
-# and detect hosts and services that are "flapping".
-# Flapping occurs when a host or service changes between
-# states too frequently. When Naemon detects that a
-# host or service is flapping, it will temporarily suppress
-# notifications for that host/service until it stops
-# flapping. Flap detection is very experimental, so read
-# the HTML documentation before enabling this feature!
-# Values: 1 = enable flap detection
-# 0 = disable flap detection (default)
-
-enable_flap_detection=1
-
-
-
-# FLAP DETECTION THRESHOLDS FOR HOSTS AND SERVICES
-# Read the HTML documentation on flap detection for
-# an explanation of what this option does. This option
-# has no effect if flap detection is disabled.
-
-low_service_flap_threshold=5.0
-high_service_flap_threshold=20.0
-low_host_flap_threshold=5.0
-high_host_flap_threshold=20.0
-
-
-
-# DATE FORMAT OPTION
-# This option determines how short dates are displayed. Valid options
-# include:
-# us (MM-DD-YYYY HH:MM:SS)
-# euro (DD-MM-YYYY HH:MM:SS)
-# iso8601 (YYYY-MM-DD HH:MM:SS)
-# strict-iso8601 (YYYY-MM-DDTHH:MM:SS)
-#
-
-date_format=us
-
-
-
-
-# TIMEZONE OFFSET
-# This option is used to override the default timezone that this
-# instance of Naemon runs in. If not specified, Naemon will use
-# the system configured timezone.
-
-#use_timezone=US/Mountain
-#use_timezone=Australia/Brisbane
-
-
-
-# ILLEGAL OBJECT NAME CHARACTERS
-# This option allows you to specify illegal characters that cannot
-# be used in host names, service descriptions, or names of other
-# object types.
-
-illegal_object_name_chars=`~!$%^&*|'"<>?,()=
-
-
-
-# ILLEGAL MACRO OUTPUT CHARACTERS
-# This option allows you to specify illegal characters that are
-# stripped from macros before being used in notifications, event
-# handlers, etc. This DOES NOT affect macros used in service or
-# host check commands.
-# The following macros are stripped of the characters you specify:
-# $HOSTOUTPUT$
-# $HOSTPERFDATA$
-# $HOSTACKAUTHOR$
-# $HOSTACKCOMMENT$
-# $SERVICEOUTPUT$
-# $SERVICEPERFDATA$
-# $SERVICEACKAUTHOR$
-# $SERVICEACKCOMMENT$
-
-illegal_macro_output_chars=`~$&|'"<>
-
-
-
-# REGULAR EXPRESSION MATCHING
-# This option controls whether or not regular expression matching
-# takes place in the object config files. Regular expression
-# matching is used to match host, hostgroup, service, and service
-# group names/descriptions in some fields of various object types.
-# Values: 1 = enable regexp matching, 0 = disable regexp matching
-
-use_regexp_matching=0
-
-
-
-# "TRUE" REGULAR EXPRESSION MATCHING
-# This option controls whether or not "true" regular expression
-# matching takes place in the object config files. This option
-# only has an effect if regular expression matching is enabled
-# (see above). If this option is DISABLED, regular expression
-# matching only occurs if a string contains wildcard characters
-# (* and ?). If the option is ENABLED, regexp matching occurs
-# all the time (which can be annoying).
-# Values: 1 = enable true matching, 0 = disable true matching
-
-use_true_regexp_matching=0
-
-
-
-# ADMINISTRATOR EMAIL/PAGER ADDRESSES
-# The email and pager address of a global administrator (likely you).
-# Naemon never uses these values itself, but you can access them by
-# using the $ADMINEMAIL$ and $ADMINPAGER$ macros in your notification
-# commands.
-
-admin_email=naemon@localhost
-admin_pager=pagenaemon@localhost
-
-
-
-# DEBUG LEVEL
-# This option determines how much (if any) debugging information will
-# be written to the debug file. OR values together to log multiple
-# types of information.
-# Values:
-# -1 = Everything
-# 0 = Nothing
-# 1 = Functions
-# 2 = Configuration
-# 4 = Process information
-# 8 = Scheduled events
-# 16 = Host/service checks
-# 32 = Notifications
-# 64 = Event broker
-# 128 = External commands
-# 256 = Commands
-# 512 = Scheduled downtime
-# 1024 = Comments
-# 2048 = Macros
-
-debug_level=0
-
-
-
-# DEBUG VERBOSITY
-# This option determines how verbose the debug log out will be.
-# Values: 0 = Brief output
-# 1 = More detailed
-# 2 = Very detailed
-
-debug_verbosity=1
-
-
-
-# DEBUG FILE
-# This option determines where Naemon should write debugging information.
-
-debug_file=@cacheDir@/naemon.debug
-
-
-
-# MAX DEBUG FILE SIZE
-# This option determines the maximum size (in bytes) of the debug file. If
-# the file grows larger than this size, it will be renamed with a .old
-# extension. If a file already exists with a .old extension it will
-# automatically be deleted. This helps ensure your disk space usage doesn't
-# get out of control when debugging Naemon.
-
-max_debug_file_size=1000000
-
-
-
-# Should we allow hostgroups to have no hosts, we default this to off since
-# that was the old behavior
-
-allow_empty_hostgroup_assignment=0
-
-
-
-# Normally worker count is dynamically allocated based on 1.5 * number of cpu's
-# with a minimum of 4 workers. This value will override the defaults
-
-#check_workers=3
-
-
-# DISABLE SERVICE CHECKS WHEN HOST DOWN
-# This option will disable all service checks if the host is not in an UP state
-#
-# While desirable in some environments, enabling this value can distort report
-# values as the expected quantity of checks will not have been performed
-
-#host_down_disable_service_checks=0
-
-
-# CIRCULAR DEPENDENCIES (EXPERIMENTAL)
-# Allow for circular dependencies in naemon's host graph.
-# Enabaling this will cause propagation the following to stop working:
-# * scheduling downtime
-# * enabling notification
-# * disabling notification
-# This feature is experimental and bugs might occur.
-
-allow_circular_dependencies=0
diff --git a/modules/private/buildbot/common/build_helpers.py b/modules/private/buildbot/common/build_helpers.py
deleted file mode 100644
index acea905..0000000
--- a/modules/private/buildbot/common/build_helpers.py
+++ /dev/null
@@ -1,277 +0,0 @@
-from buildbot.plugins import util, steps, schedulers
-from buildbot_buildslist import BuildsList
-from shutil import which
-
-__all__ = [
- "force_scheduler", "deploy_scheduler", "hook_scheduler",
- "clean_branch", "package_and_upload", "SlackStatusPush",
- "XMPPStatusPush", "NixShellCommand"
- ]
-
-# Small helpers"
-@util.renderer
-def clean_branch(props):
- if props.hasProperty("branch") and len(props["branch"]) > 0:
- return props["branch"].replace("/", "_")
- else:
- return "HEAD"
-
-def package_and_upload(package, package_dest, package_url):
- return [
- steps.ShellCommand(name="build package",
- logEnviron=False, haltOnFailure=True, workdir="source",
- command=["git", "archive", "HEAD", "-o", package]),
-
- steps.FileUpload(name="upload package", workersrc=package,
- workdir="source", masterdest=package_dest,
- url=package_url, mode=0o644),
-
- steps.ShellCommand(name="cleanup package", logEnviron=False,
- haltOnFailure=True, workdir="source", alwaysRun=True,
- command=["rm", "-f", package]),
- ]
-
-# Steps
-class NixShellCommand(steps.ShellCommand):
- def __init__(self, command=None, pure=True, nixfile=None, **kwargs):
- assert(isinstance(command, str))
- oldpath = kwargs.get("env", {}).get("PATH", None)
- if which("nix-shell", path=oldpath) is None:
- kwargs["env"] = kwargs.get("env", {})
- if isinstance(oldpath, str):
- kwargs["env"]["PATH"] = "/run/current-system/sw/bin:" + oldpath
- elif isinstance(oldpath, list):
- kwargs["env"]["PATH"] = ["/run/current-system/sw/bin"] + oldpath
- nixcommand = ["nix-shell"]
- if pure:
- nixcommand.append("--pure")
- nixcommand.append("--run")
- nixcommand.append(command)
- if nixfile is not None:
- nixcommand.append(nixfile)
- super().__init__(command=nixcommand, **kwargs)
-
-# Schedulers
-def force_scheduler(name, builders):
- return schedulers.ForceScheduler(name=name,
- label="Force build", buttonName="Force build",
- reason=util.StringParameter(name="reason", label="Reason", default="Force build"),
- codebases=[
- util.CodebaseParameter("",
- branch=util.StringParameter(
- name="branch", label="Git reference (tag, branch)", required=True),
- revision=util.FixedParameter(name="revision", default=""),
- repository=util.FixedParameter(name="repository", default=""),
- project=util.FixedParameter(name="project", default=""),
- ),
- ],
- username=util.FixedParameter(name="username", default="Web button"),
- builderNames=builders)
-
-def deploy_scheduler(name, builders):
- return schedulers.ForceScheduler(name=name,
- builderNames=builders,
- label="Deploy built package", buttonName="Deploy",
- username=util.FixedParameter(name="username", default="Web button"),
- codebases=[
- util.CodebaseParameter(codebase="",
- branch=util.FixedParameter(name="branch", default=""),
- revision=util.FixedParameter(name="revision", default=""),
- repository=util.FixedParameter(name="repository", default=""),
- project=util.FixedParameter(name="project", default=""))],
- reason=util.FixedParameter(name="reason", default="Deploy"),
- properties=[
- util.ChoiceStringParameter(label="Environment",
- name="environment", default="integration",
- choices=["integration", "production"]),
- BuildsList(label="Build to deploy", name="build"),
- ]
- )
-
-def hook_scheduler(project, timer=10):
- return schedulers.AnyBranchScheduler(
- change_filter=util.ChangeFilter(category="hooks", project=project),
- name=project, treeStableTimer=timer, builderNames=["{}_build".format(project)])
-
-# Slack/XMPP status push
-from buildbot.reporters.http import HttpStatusPushBase
-from twisted.internet import defer
-from twisted.python import log
-from buildbot.util import httpclientservice
-from buildbot.reporters import utils
-from buildbot.process import results
-from twisted.words.protocols.jabber.jid import JID
-from wokkel import client, xmppim
-from functools import partial
-
-class SlackStatusPush(HttpStatusPushBase):
- name = "SlackStatusPush"
-
- @defer.inlineCallbacks
- def reconfigService(self, serverUrl, **kwargs):
- yield HttpStatusPushBase.reconfigService(self, **kwargs)
- self._http = yield httpclientservice.HTTPClientService.getService(
- self.master, serverUrl)
-
- @defer.inlineCallbacks
- def send(self, build):
- yield utils.getDetailsForBuild(self.master, build, wantProperties=True)
- response = yield self._http.post("", json=self.format(build))
- if response.code != 200:
- log.msg("%s: unable to upload status: %s" %
- (response.code, response.content))
-
- def format(self, build):
- colors = [
- "#36A64F", # success
- "#F1E903", # warnings
- "#DA0505", # failure
- "#FFFFFF", # skipped
- "#000000", # exception
- "#FFFFFF", # retry
- "#D02CA9", # cancelled
- ]
-
- if "environment" in build["properties"]:
- msg = "{} environment".format(build["properties"]["environment"][0])
- if "build" in build["properties"]:
- msg = "of archive {} in ".format(build["properties"]["build"][0]) + msg
- elif len(build["buildset"]["sourcestamps"][0]["branch"] or []) > 0:
- msg = "revision {}".format(build["buildset"]["sourcestamps"][0]["branch"])
- else:
- msg = "build"
-
- if build["complete"]:
- timedelta = int((build["complete_at"] - build["started_at"]).total_seconds())
- hours, rest = divmod(timedelta, 3600)
- minutes, seconds = divmod(rest, 60)
- if hours > 0:
- duration = "{}h {}min {}s".format(hours, minutes, seconds)
- elif minutes > 0:
- duration = "{}min {}s".format(minutes, seconds)
- else:
- duration = "{}s".format(seconds)
-
- text = "Build <{}|{}> of {}'s {} was {} in {}.".format(
- build["url"], build["buildid"],
- build["builder"]["name"],
- msg,
- results.Results[build["results"]],
- duration,
- )
- fields = [
- {
- "title": "Build",
- "value": "<{}|{}>".format(build["url"], build["buildid"]),
- "short": True,
- },
- {
- "title": "Project",
- "value": build["builder"]["name"],
- "short": True,
- },
- {
- "title": "Build status",
- "value": results.Results[build["results"]],
- "short": True,
- },
- {
- "title": "Build duration",
- "value": duration,
- "short": True,
- },
- ]
- if "environment" in build["properties"]:
- fields.append({
- "title": "Environment",
- "value": build["properties"]["environment"][0],
- "short": True,
- })
- if "build" in build["properties"]:
- fields.append({
- "title": "Archive",
- "value": build["properties"]["build"][0],
- "short": True,
- })
- attachments = [{
- "fallback": "",
- "color": colors[build["results"]],
- "fields": fields
- }]
- else:
- text = "Build <{}|{}> of {}'s {} started.".format(
- build["url"], build["buildid"],
- build["builder"]["name"],
- msg,
- )
- attachments = []
-
- return {
- "username": "Buildbot",
- "icon_url": "http://docs.buildbot.net/current/_static/icon.png",
- "text": text,
- "attachments": attachments,
- }
-
-class XMPPStatusPush(HttpStatusPushBase):
- name = "XMPPStatusPush"
-
- @defer.inlineCallbacks
- def reconfigService(self, password, recipients, **kwargs):
- yield HttpStatusPushBase.reconfigService(self, **kwargs)
- self.password = password
- self.recipients = recipients
-
- @defer.inlineCallbacks
- def send(self, build):
- yield utils.getDetailsForBuild(self.master, build, wantProperties=True)
- body = self.format(build)
- factory = client.DeferredClientFactory(JID("notify_bot@immae.fr/buildbot"), self.password)
- d = client.clientCreator(factory)
- def send_message(recipient, stream):
- message = xmppim.Message(recipient=JID(recipient), body=body)
- message.stanzaType = 'chat'
- stream.send(message.toElement())
- # To allow chaining
- return stream
- for recipient in self.recipients:
- d.addCallback(partial(send_message, recipient))
- d.addCallback(lambda _: factory.streamManager.xmlstream.sendFooter())
- d.addErrback(log.err)
-
- def format(self, build):
- if "environment" in build["properties"]:
- msg = "{} environment".format(build["properties"]["environment"][0])
- if "build" in build["properties"]:
- msg = "of archive {} in ".format(build["properties"]["build"][0]) + msg
- elif len(build["buildset"]["sourcestamps"][0]["branch"] or []) > 0:
- msg = "revision {}".format(build["buildset"]["sourcestamps"][0]["branch"])
- else:
- msg = "build"
-
- if build["complete"]:
- timedelta = int((build["complete_at"] - build["started_at"]).total_seconds())
- hours, rest = divmod(timedelta, 3600)
- minutes, seconds = divmod(rest, 60)
- if hours > 0:
- duration = "{}h {}min {}s".format(hours, minutes, seconds)
- elif minutes > 0:
- duration = "{}min {}s".format(minutes, seconds)
- else:
- duration = "{}s".format(seconds)
-
- text = "Build {} ( {} ) of {}'s {} was {} in {}.".format(
- build["buildid"], build["url"],
- build["builder"]["name"],
- msg,
- results.Results[build["results"]],
- duration,
- )
- else:
- text = "Build {} ( {} ) of {}'s {} started.".format(
- build["buildid"], build["url"],
- build["builder"]["name"],
- msg,
- )
-
- return text
diff --git a/modules/private/buildbot/common/libvirt.py b/modules/private/buildbot/common/libvirt.py
deleted file mode 100644
index e250627..0000000
--- a/modules/private/buildbot/common/libvirt.py
+++ /dev/null
@@ -1,318 +0,0 @@
-# This file was part of Buildbot. Buildbot is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation, version 2.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Portions Copyright Buildbot Team Members
-# Portions Copyright 2010 Isotoma Limited
-
-
-import os
-
-from twisted.internet import defer
-from twisted.internet import threads
-from twisted.internet import utils
-from twisted.python import failure
-from twisted.python import log
-
-from buildbot import config
-from buildbot.util.eventual import eventually
-from buildbot.worker import AbstractLatentWorker
-
-try:
- import libvirt
-except ImportError:
- libvirt = None
-
-import random
-import string
-
-def random_string_generator():
- chars = string.ascii_letters
- return ''.join(random.choice(chars) for x in range(6))
-
-class WorkQueue:
-
- """
- I am a class that turns parallel access into serial access.
-
- I exist because we want to run libvirt access in threads as we don't
- trust calls not to block, but under load libvirt doesn't seem to like
- this kind of threaded use.
- """
-
- def __init__(self):
- self.queue = []
-
- def _process(self):
- log.msg("Looking to start a piece of work now...")
-
- # Is there anything to do?
- if not self.queue:
- log.msg("_process called when there is no work")
- return
-
- # Peek at the top of the stack - get a function to call and
- # a deferred to fire when its all over
- d, next_operation, args, kwargs = self.queue[0]
-
- # Start doing some work - expects a deferred
- try:
- d2 = next_operation(*args, **kwargs)
- except Exception:
- d2 = defer.fail()
-
- # Whenever a piece of work is done, whether it worked or not
- # call this to schedule the next piece of work
- @d2.addBoth
- def _work_done(res):
- log.msg("Completed a piece of work")
- self.queue.pop(0)
- if self.queue:
- log.msg("Preparing next piece of work")
- eventually(self._process)
- return res
-
- # When the work is done, trigger d
- d2.chainDeferred(d)
-
- def execute(self, cb, *args, **kwargs):
- kickstart_processing = not self.queue
- d = defer.Deferred()
- self.queue.append((d, cb, args, kwargs))
- if kickstart_processing:
- self._process()
- return d
-
- def executeInThread(self, cb, *args, **kwargs):
- return self.execute(threads.deferToThread, cb, *args, **kwargs)
-
-
-# A module is effectively a singleton class, so this is OK
-queue = WorkQueue()
-
-
-class Domain:
-
- """
- I am a wrapper around a libvirt Domain object
- """
-
- def __init__(self, connection, domain):
- self.connection = connection
- self.domain = domain
-
- def name(self):
- return queue.executeInThread(self.domain.name)
-
- def create(self):
- return queue.executeInThread(self.domain.create)
-
- def shutdown(self):
- return queue.executeInThread(self.domain.shutdown)
-
- def destroy(self):
- return queue.executeInThread(self.domain.destroy)
-
-class Volume:
- def __init__(self, connection, volume):
- self.connection = connection
- self.volume = volume
-
- @defer.inlineCallbacks
- def destroy(self):
- yield queue.executeInThread(self.volume.wipe)
- yield queue.executeInThread(self.volume.delete)
-
-class Pool:
- VolumeClass = Volume
- def __init__(self, connection, pool):
- self.connection = connection
- self.pool = pool
-
- @defer.inlineCallbacks
- def create_volume(self, xml):
- res = yield queue.executeInThread(self.pool.createXML, xml)
- return self.VolumeClass(self.connection, res)
-
-class Connection:
-
- """
- I am a wrapper around a libvirt Connection object.
- """
-
- DomainClass = Domain
- PoolClass = Pool
-
- def __init__(self, uri):
- self.uri = uri
- self._connection = None
-
- @property
- def connection(self):
- if self._connection is not None:
- try:
- if not self._connection.isAlive():
- self._connection = None
- except:
- self._connection = None
- if self._connection is None:
- self._connection = libvirt.open(self.uri)
- return self._connection
-
- @defer.inlineCallbacks
- def create(self, xml):
- """ I take libvirt XML and start a new VM """
- res = yield queue.executeInThread(self.connection.createXML, xml, 0)
- return self.DomainClass(self, res)
-
- @defer.inlineCallbacks
- def lookup_pool(self, name):
- res = yield queue.executeInThread(self.connection.storagePoolLookupByName, name)
- return self.PoolClass(self, res)
-
-class LibVirtWorker(AbstractLatentWorker):
-
- def __init__(self, name, password, connection, master_url, base_image=None, **kwargs):
- super().__init__(name, password, **kwargs)
- if not libvirt:
- config.error(
- "The python module 'libvirt' is needed to use a LibVirtWorker")
-
- self.master_url = master_url
- self.random_name = random_string_generator()
- self.connection = connection
- self.base_image = base_image
-
- self.domain = None
- self.domain_name = "buildbot-" + self.workername + "-" + self.random_name
- self.volume = None
- self.volume_name = "buildbot-" + self.workername + "-" + self.random_name
- self.pool_name = "buildbot-disks"
-
- def reconfigService(self, *args, **kwargs):
- if 'build_wait_timeout' not in kwargs:
- kwargs['build_wait_timeout'] = 0
- return super().reconfigService(*args, **kwargs)
-
- def canStartBuild(self):
- if self.domain and not self.isConnected():
- log.msg(
- "Not accepting builds as existing domain but worker not connected")
- return False
-
- return super().canStartBuild()
-
- @defer.inlineCallbacks
- def _prepare_image(self):
- log.msg("Creating temporary image {}".format(self.volume_name))
- pool = yield self.connection.lookup_pool(self.pool_name)
- vol_xml = """
-
- {vol_name}
- 10
-
-
-
- 0600
- 0
- 0
-
-
-
- /etc/libvirtd/base-images/buildbot.qcow2
-
-
-
- """.format(vol_name = self.volume_name)
- self.volume = yield pool.create_volume(vol_xml)
-
- @defer.inlineCallbacks
- def start_instance(self, build):
- """
- I start a new instance of a VM.
-
- If a base_image is specified, I will make a clone of that otherwise i will
- use image directly.
-
- If i'm not given libvirt domain definition XML, I will look for my name
- in the list of defined virtual machines and start that.
- """
- domain_xml = """
-
- {domain_name}
- 2
- 1
-
-
- buildbot_master_url={master_url}
- buildbot_worker_name={worker_name}
-
-
-
- hvm
-
-
-
- /run/current-system/sw/bin/qemu-system-x86_64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- """.format(volume_name = self.volume_name, master_url = self.master_url, pool_name =
- self.pool_name, domain_name = self.domain_name, worker_name = self.workername)
-
- yield self._prepare_image()
-
- try:
- self.domain = yield self.connection.create(domain_xml)
- except Exception:
- log.err(failure.Failure(),
- ("Cannot start a VM ({}), failing gracefully and triggering"
- "a new build check").format(self.workername))
- self.domain = None
- return False
-
- return [self.domain_name]
-
- def stop_instance(self, fast=False):
- """
- I attempt to stop a running VM.
- I make sure any connection to the worker is removed.
- If the VM was using a cloned image, I remove the clone
- When everything is tidied up, I ask that bbot looks for work to do
- """
-
- log.msg("Attempting to stop '{}'".format(self.workername))
- if self.domain is None:
- log.msg("I don't think that domain is even running, aborting")
- return defer.succeed(None)
-
- domain = self.domain
- self.domain = None
-
- d = domain.destroy()
- if self.volume is not None:
- self.volume.destroy()
-
- return d
diff --git a/modules/private/buildbot/common/master.cfg b/modules/private/buildbot/common/master.cfg
deleted file mode 100644
index abe08e0..0000000
--- a/modules/private/buildbot/common/master.cfg
+++ /dev/null
@@ -1,69 +0,0 @@
-# -*- python -*-
-# ex: set filetype=python:
-
-from buildbot.plugins import secrets, util, webhooks
-from buildbot.util import bytes2unicode
-import re
-import os
-from buildbot_config import E, configure
-import json
-
-class CustomBase(webhooks.base):
- def getChanges(self, request):
- try:
- content = request.content.read()
- args = json.loads(bytes2unicode(content))
- except Exception as e:
- raise ValueError("Error loading JSON: " + str(e))
-
- args.setdefault("comments", "")
- args.setdefault("repository", "")
- args.setdefault("author", args.get("who"))
-
- return ([args], None)
-
-userInfoProvider = util.LdapUserInfo(
- uri=E.LDAP_URL,
- bindUser=E.LDAP_ADMIN_USER,
- bindPw=open(E.SECRETS_FILE + "/ldap", "r").read().rstrip(),
- accountBase=E.LDAP_BASE,
- accountPattern=E.LDAP_PATTERN,
- accountFullName='cn',
- accountEmail='mail',
- avatarData="jpegPhoto",
- groupBase=E.LDAP_BASE,
- groupName="cn",
- groupMemberPattern=E.LDAP_GROUP_PATTERN,
- )
-
-c = BuildmasterConfig = {
- "title": E.TITLE,
- "titleURL": E.TITLE_URL,
- "db": {
- "db_url": "sqlite:///state.sqlite"
- },
- "protocols": { "pb": { "port": E.PB_SOCKET } },
- "workers": [],
- "change_source": [],
- "schedulers": [],
- "builders": [],
- "services": [],
- "secretsProviders": [
- secrets.SecretInAFile(E.SECRETS_FILE),
- ],
- "www": {
- "change_hook_dialects": { "base": { "custom_class": CustomBase } },
- "plugins": {
- "waterfall_view": {},
- "console_view": {},
- "grid_view": {},
- "buildslist": {},
- },
- "auth": util.RemoteUserAuth(
- header=b"X-Remote-User",
- userInfoProvider=userInfoProvider,
- headerRegex=re.compile(br"(?P[^ @]+)")),
- }
- }
-
-configure(c)
diff --git a/modules/private/buildbot/default.nix b/modules/private/buildbot/default.nix
deleted file mode 100644
index ec28b63..0000000
--- a/modules/private/buildbot/default.nix
+++ /dev/null
@@ -1,244 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- varDir = "/var/lib/buildbot";
- buildbot_common = pkgs.python3Packages.buildPythonPackage rec {
- name = "buildbot_common";
- src = ./common;
- format = "other";
- installPhase = ''
- mkdir -p $out/${pkgs.python3.pythonForBuild.sitePackages}
- cp -a $src $out/${pkgs.python3.pythonForBuild.sitePackages}/buildbot_common
- '';
- };
- buildbot = pkgs.python3Packages.buildbot-full;
-in
-{
- options = {
- myServices.buildbot.enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- description = ''
- Whether to enable buildbot.
- '';
- };
- };
-
- config = lib.mkIf config.myServices.buildbot.enable {
- ids.uids.buildbot = config.myEnv.buildbot.user.uid;
- ids.gids.buildbot = config.myEnv.buildbot.user.gid;
-
- users.groups.buildbot.gid = config.ids.gids.buildbot;
- users.users.buildbot = {
- name = "buildbot";
- uid = config.ids.uids.buildbot;
- group = "buildbot";
- description = "Buildbot user";
- home = varDir;
- extraGroups = [ "keys" ];
- };
-
- services.websites.env.tools.watchPaths = lib.attrsets.mapAttrsToList
- (k: project: config.secrets.fullPaths."buildbot/${project.name}/webhook-httpd-include")
- config.myEnv.buildbot.projects;
-
- services.websites.env.tools.vhostConfs.git.extraConfig = lib.attrsets.mapAttrsToList (k: project: ''
- RedirectMatch permanent "^/buildbot/${project.name}$" "/buildbot/${project.name}/"
- RewriteEngine On
- RewriteRule ^/buildbot/${project.name}/ws(.*)$ unix:///run/buildbot/${project.name}.sock|ws://git.immae.eu/ws$1 [P,NE,QSA,L]
- ProxyPass /buildbot/${project.name}/ unix:///run/buildbot/${project.name}.sock|http://${project.name}-git.immae.eu/
- ProxyPassReverse /buildbot/${project.name}/ unix:///run/buildbot/${project.name}.sock|http://${project.name}-git.immae.eu/
-
- Use LDAPConnect
- Require ldap-group cn=users,ou=${project.name},cn=buildbot,ou=services,dc=immae,dc=eu
-
- SetEnvIf X-Url-Scheme https HTTPS=1
- ProxyPreserveHost On
-
-
-
- Require local
- Require ldap-group cn=users,ou=${project.name},cn=buildbot,ou=services,dc=immae,dc=eu
- Include ${config.secrets.fullPaths."buildbot/${project.name}/webhook-httpd-include"}
-
-
- '') config.myEnv.buildbot.projects;
-
- system.activationScripts = lib.attrsets.mapAttrs' (k: project: lib.attrsets.nameValuePair "buildbot-${project.name}" {
- deps = [ "users" "wrappers" ];
- text = ''
- install -m 755 -o buildbot -g buildbot -d ${varDir}/${project.name}
-
- ${project.activationScript}
- '';
- }) config.myEnv.buildbot.projects;
-
- secrets.keys = lib.listToAttrs (
- lib.lists.flatten (
- lib.attrsets.mapAttrsToList (k: project:
- lib.attrsets.mapAttrsToList (k: v:
- (lib.nameValuePair "buildbot/${project.name}/${k}" {
- permissions = "0600";
- user = "buildbot";
- group = "buildbot";
- text = v;
- })
- ) project.secrets
- ++ [
- (lib.nameValuePair "buildbot/${project.name}/webhook-httpd-include" {
- permissions = "0600";
- user = "wwwrun";
- group = "wwwrun";
- text = lib.optionalString (project.webhookTokens != null) ''
- Require expr "req('Access-Key') in { ${builtins.concatStringsSep ", " (map (x: "'${x}'") project.webhookTokens)} }"
- '';
- })
- (lib.nameValuePair "buildbot/${project.name}/environment_file" {
- permissions = "0600";
- user = "buildbot";
- group = "buildbot";
- text = let
- project_env = with lib.attrsets;
- mapAttrs' (k: v: nameValuePair "BUILDBOT_${k}" v) project.environment //
- mapAttrs' (k: v: nameValuePair "BUILDBOT_PATH_${k}" (v pkgs)) (attrByPath ["builderPaths"] {} project) //
- {
- BUILDBOT_PROJECT_DIR = ./projects + "/${project.name}";
- BUILDBOT_WORKER_PORT = builtins.toString project.workerPort;
- BUILDBOT_HOST = config.hostEnv.fqdn;
- BUILDBOT_VIRT_URL = "qemu+ssh://libvirt@dilion.immae.eu/system";
- };
- in builtins.concatStringsSep "\n"
- (lib.mapAttrsToList (envK: envV: "${envK}=${envV}") project_env);
- })
- ]
- ) config.myEnv.buildbot.projects
- )
- ) // {
- "buildbot/ldap" = {
- permissions = "0600";
- user = "buildbot";
- group = "buildbot";
- text = config.myEnv.buildbot.ldap.password;
- };
- "buildbot/worker_password" = {
- permissions = "0600";
- user = "buildbot";
- group = "buildbot";
- text = config.myEnv.buildbot.workerPassword;
- };
- "buildbot/ssh_key" = {
- permissions = "0600";
- user = "buildbot";
- group = "buildbot";
- text = config.myEnv.buildbot.ssh_key.private;
- };
- };
-
- services.filesWatcher = lib.attrsets.mapAttrs' (k: project: lib.attrsets.nameValuePair "buildbot-${project.name}" {
- restart = true;
- paths = [
- config.secrets.fullPaths."buildbot/ldap"
- config.secrets.fullPaths."buildbot/worker_password"
- config.secrets.fullPaths."buildbot/ssh_key"
- config.secrets.fullPaths."buildbot/${project.name}/environment_file"
- ] ++ lib.attrsets.mapAttrsToList (k: v: config.secrets.fullPaths."buildbot/${project.name}/${k}") project.secrets;
- }) config.myEnv.buildbot.projects;
-
- systemd.slices.buildbot = {
- description = "buildbot slice";
- };
-
- networking.firewall.allowedTCPPorts = lib.attrsets.mapAttrsToList (k: v: v.workerPort) config.myEnv.buildbot.projects;
- systemd.services = lib.attrsets.mapAttrs' (k: project: lib.attrsets.nameValuePair "buildbot-${project.name}" {
- description = "Buildbot Continuous Integration Server ${project.name}.";
- after = [ "network-online.target" ];
- wantedBy = [ "multi-user.target" ];
- path = project.packages pkgs ++ (project.pythonPackages buildbot.pythonModule pkgs);
- preStart = let
- master-cfg = "${buildbot_common}/${pkgs.python3.pythonForBuild.sitePackages}/buildbot_common/master.cfg";
- tac_file = pkgs.writeText "buildbot.tac" ''
- import os
-
- from twisted.application import service
- from buildbot.master import BuildMaster
-
- basedir = '${varDir}/${project.name}'
- rotateLength = 10000000
- maxRotatedFiles = 10
- configfile = '${master-cfg}'
-
- # Default umask for server
- umask = None
-
- # if this is a relocatable tac file, get the directory containing the TAC
- if basedir == '.':
- import os
- basedir = os.path.abspath(os.path.dirname(__file__))
-
- # note: this line is matched against to check that this is a buildmaster
- # directory; do not edit it.
- application = service.Application('buildmaster')
- from twisted.python.logfile import LogFile
- from twisted.python.log import ILogObserver, FileLogObserver
- logfile = LogFile.fromFullPath(os.path.join(basedir, "twistd.log"), rotateLength=rotateLength,
- maxRotatedFiles=maxRotatedFiles)
- application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
-
- m = BuildMaster(basedir, configfile, umask)
- m.setServiceParent(application)
- m.log_rotation.rotateLength = rotateLength
- m.log_rotation.maxRotatedFiles = maxRotatedFiles
- '';
- in ''
- if [ ! -f ${varDir}/${project.name}/buildbot.tac ]; then
- ${buildbot}/bin/buildbot create-master -c "${master-cfg}" "${varDir}/${project.name}"
- rm -f ${varDir}/${project.name}/master.cfg.sample
- rm -f ${varDir}/${project.name}/buildbot.tac
- fi
- ln -sf ${tac_file} ${varDir}/${project.name}/buildbot.tac
- # different buildbots may be trying that simultaneously, add the || true to avoid complaining in case of race
- install -Dm600 -o buildbot -g buildbot -T ${config.secrets.fullPaths."buildbot/ssh_key"} ${varDir}/buildbot_key || true
- buildbot_secrets=${varDir}/${project.name}/secrets
- install -m 0700 -o buildbot -g buildbot -d $buildbot_secrets
- install -Dm600 -o buildbot -g buildbot -T ${config.secrets.fullPaths."buildbot/ldap"} $buildbot_secrets/ldap
- install -Dm600 -o buildbot -g buildbot -T ${config.secrets.fullPaths."buildbot/worker_password"} $buildbot_secrets/worker_password
- ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList
- (k: v: "install -Dm600 -o buildbot -g buildbot -T ${config.secrets.fullPaths."buildbot/${project.name}/${k}"} $buildbot_secrets/${k}") project.secrets
- )}
- ${buildbot}/bin/buildbot upgrade-master ${varDir}/${project.name}
- '';
- environment = let
- buildbot_config = pkgs.python3Packages.buildPythonPackage (rec {
- name = "buildbot_config-${project.name}";
- src = ./projects + "/${project.name}";
- format = "other";
- installPhase = ''
- mkdir -p $out/${pkgs.python3.pythonForBuild.sitePackages}
- cp -a $src $out/${pkgs.python3.pythonForBuild.sitePackages}/buildbot_config
- '';
- });
- HOME = "${varDir}/${project.name}";
- PYTHONPATH = "${buildbot.pythonModule.withPackages (self: project.pythonPackages self pkgs ++ [
- pkgs.python3Packages.libvirt
- pkgs.python3Packages.wokkel
- pkgs.python3Packages.treq pkgs.python3Packages.ldap3 buildbot
- pkgs.python3Packages.buildbot-worker
- buildbot_common buildbot_config
- ])}/${buildbot.pythonModule.sitePackages}${if project.pythonPathHome then ":${varDir}/${project.name}/.local/${pkgs.python3.pythonForBuild.sitePackages}" else ""}";
- in { inherit PYTHONPATH HOME; };
-
- serviceConfig = {
- Slice = "buildbot.slice";
- Type = "forking";
- User = "buildbot";
- Group = "buildbot";
- RuntimeDirectory = "buildbot";
- RuntimeDirectoryPreserve = "yes";
- StateDirectory = "buildbot";
- SupplementaryGroups = "keys";
- WorkingDirectory = "${varDir}/${project.name}";
- ExecStart = "${buildbot}/bin/buildbot start";
- EnvironmentFile = config.secrets.fullPaths."buildbot/${project.name}/environment_file";
- };
- }) config.myEnv.buildbot.projects;
- };
-}
diff --git a/modules/private/buildbot/projects/caldance/__init__.py b/modules/private/buildbot/projects/caldance/__init__.py
deleted file mode 100644
index 2074d9e..0000000
--- a/modules/private/buildbot/projects/caldance/__init__.py
+++ /dev/null
@@ -1,198 +0,0 @@
-from buildbot.plugins import *
-from buildbot_common.build_helpers import *
-import os
-from buildbot.util import bytes2unicode
-import json
-
-__all__ = [ "configure", "E" ]
-
-class E():
- PROJECT = "caldance"
- BUILDBOT_URL = "https://git.immae.eu/buildbot/{}/".format(PROJECT)
- SOCKET = "unix:/run/buildbot/{}.sock".format(PROJECT)
- PB_SOCKET = "unix:address=/run/buildbot/{}_pb.sock".format(PROJECT)
- RELEASE_PATH = "/var/lib/ftp/release.immae.eu/{}".format(PROJECT)
- RELEASE_URL = "https://release.immae.eu/{}".format(PROJECT)
- GIT_URL = "gitolite@git.immae.eu:perso/simon_descarpentries/www.cal-dance.com"
- SSH_KEY_PATH = "/var/lib/buildbot/buildbot_key"
- SSH_HOST_KEY = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIFbhFTl2A2RJn5L51yxJM4XfCS2ZaiSX/jo9jFSdghF"
- LDAP_HOST = "ldap.immae.eu"
- LDAP_DN = "cn=buildbot,ou=services,dc=immae,dc=eu"
- LDAP_ROLES_BASE = "ou=roles,ou=hosts,dc=immae,dc=eu"
- XMPP_RECIPIENTS = os.environ["BUILDBOT_XMPP_RECIPIENTS"].split(" ")
-
- PUPPET_HOST = {
- "integration": [ "-p8022", "root@caldance.cs.immae.dev"],
- }
-
- # master.cfg
- SECRETS_FILE = os.getcwd() + "/secrets"
- LDAP_URL = "ldaps://ldap.immae.eu:636"
- LDAP_ADMIN_USER = "cn=buildbot,ou=services,dc=immae,dc=eu"
- LDAP_BASE = "dc=immae,dc=eu"
- LDAP_PATTERN = "(uid=%(username)s)"
- LDAP_GROUP_PATTERN = "(&(memberOf=cn=groups,ou=caldance,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
- TITLE_URL = "https://caldance.cs.immae.dev"
- TITLE = "Caldance"
-
-class CustomBase(webhooks.base):
- def getChanges(self, request):
- try:
- content = request.content.read()
- args = json.loads(bytes2unicode(content))
- except Exception as e:
- raise ValueError("Error loading JSON: " + str(e))
-
- args.setdefault("comments", "")
- args.setdefault("repository", "")
- args.setdefault("author", args.get("who", "unknown"))
-
- if args["category"] == "deploy_webhook":
- args = {
- "category": "deploy_webhook",
- "comments": "",
- "repository": "",
- "author": "webhook",
- "project": "Caldance",
- "properties": {
- "environment": args.get("environment", "integration"),
- "build": "caldance_{}.tar.gz".format(args.get("build", "master"))
- }
- }
-
- return ([args], None)
-
-def deploy_hook_scheduler(project, timer=1):
- return schedulers.AnyBranchScheduler(
- change_filter=util.ChangeFilter(category="deploy_webhook", project=project),
- name="{}_deploy".format(project), treeStableTimer=timer, builderNames=["{}_deploy".format(project)])
-
-def configure(c):
- c["buildbotURL"] = E.BUILDBOT_URL
- c["www"]["port"] = E.SOCKET
-
- c["www"]["change_hook_dialects"]["base"] = {
- "custom_class": CustomBase
- }
- c['workers'].append(worker.LocalWorker("generic-worker"))
- c['workers'].append(worker.LocalWorker("deploy-worker"))
-
- db_lock = util.MasterLock("deploy_after_build")
-
- c['schedulers'].append(hook_scheduler("Caldance", timer=1))
- c['schedulers'].append(force_scheduler("force_caldance", ["Caldance_build"]))
- c['schedulers'].append(deploy_scheduler("deploy_caldance", ["Caldance_deploy"]))
- c['schedulers'].append(deploy_hook_scheduler("Caldance", timer=1))
-
- c['builders'].append(factory("caldance", locks=[db_lock.access('exclusive')]))
-
- c['builders'].append(deploy_factory("caldance", locks=[db_lock.access('exclusive')]))
-
- c['services'].append(SlackStatusPush(
- name="slack_status_caldance",
- builders=["Caldance_build", "Caldance_deploy"],
- serverUrl=open(E.SECRETS_FILE + "/slack_webhook", "r").read().rstrip()))
- c['services'].append(XMPPStatusPush(
- name="xmpp_status_caldance",
- builders=["Caldance_build", "Caldance_deploy"],
- recipients=E.XMPP_RECIPIENTS,
- password=open(E.SECRETS_FILE + "/notify_xmpp_password", "r").read().rstrip()))
-
-def factory(project, locks=[], ignore_fails=False):
- release_file = "{1}/{0}_%(kw:clean_branch)s.tar.gz"
-
- package = util.Interpolate("{0}_%(kw:clean_branch)s.tar.gz".format(project), clean_branch=clean_branch)
- package_dest = util.Interpolate(release_file.format(project, E.RELEASE_PATH), clean_branch=clean_branch)
- package_url = util.Interpolate(release_file.format(project, E.RELEASE_URL), clean_branch=clean_branch)
-
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.GIT_URL,
- sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
- sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
- factory.addSteps(package_and_upload(package, package_dest, package_url))
-
- return util.BuilderConfig(
- name="{}_build".format(project.capitalize()),
- locks=locks,
- workernames=["generic-worker"], factory=factory)
-
-def compute_build_infos(project):
- @util.renderer
- def compute(props):
- import re, hashlib
- build_file = props.getProperty("build")
- package_dest = "{1}/{0}".format(build_file, E.RELEASE_PATH)
- version = re.match(r"{0}_(.*).tar.gz".format(project), build_file).group(1)
- with open(package_dest, "rb") as f:
- sha = hashlib.sha256(f.read()).hexdigest()
- return {
- "build_version": version,
- "build_hash": sha,
- }
- return compute
-
-@util.renderer
-def puppet_ssh_command(props):
- environment = props["environment"] if props.hasProperty("environment") else "integration"
- ssh_command = [
- "ssh", "-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no", "-o", "CheckHostIP=no",
- "-i", E.SSH_KEY_PATH ]
- return ssh_command + E.PUPPET_HOST.get(environment, ["host.invalid"])
-
-def deploy_factory(project, locks=[]):
- package_dest = util.Interpolate("{0}/%(prop:build)s".format(E.RELEASE_PATH))
-
- factory = util.BuildFactory()
- factory.addStep(steps.MasterShellCommand(command=["test", "-f", package_dest]))
- factory.addStep(steps.SetProperties(properties=compute_build_infos(project)))
- factory.addStep(LdapPush(environment=util.Property("environment"),
- project=project, build_version=util.Property("build_version"),
- build_hash=util.Property("build_hash"), ldap_password=util.Secret("ldap")))
- factory.addStep(steps.MasterShellCommand(command=puppet_ssh_command))
- return util.BuilderConfig(
- name="{}_deploy".format(project.capitalize()),
- locks=locks,
- workernames=["deploy-worker"], factory=factory)
-
-from twisted.internet import defer
-from buildbot.process.buildstep import FAILURE
-from buildbot.process.buildstep import SUCCESS
-from buildbot.process.buildstep import BuildStep
-
-class LdapPush(BuildStep):
- name = "LdapPush"
- renderables = ["environment", "project", "build_version", "build_hash", "ldap_password"]
-
- def __init__(self, **kwargs):
- self.environment = kwargs.pop("environment")
- self.project = kwargs.pop("project")
- self.build_version = kwargs.pop("build_version")
- self.build_hash = kwargs.pop("build_hash")
- self.ldap_password = kwargs.pop("ldap_password")
- self.ldap_host = kwargs.pop("ldap_host", E.LDAP_HOST)
- super().__init__(**kwargs)
-
- def run(self):
- import json
- from ldap3 import Reader, Writer, Server, Connection, ObjectDef
- server = Server(self.ldap_host)
- conn = Connection(server,
- user=E.LDAP_DN,
- password=self.ldap_password)
- conn.bind()
- obj = ObjectDef("immaePuppetClass", conn)
- r = Reader(conn, obj,
- "cn=caldance.{},{}".format(self.environment, E.LDAP_ROLES_BASE))
- r.search()
- if len(r) > 0:
- w = Writer.from_cursor(r)
- for value in w[0].immaePuppetJson.values:
- config = json.loads(value)
- if "role::caldance::{}_version".format(self.project) in config:
- config["role::caldance::{}_version".format(self.project)] = self.build_version
- config["role::caldance::{}_sha256".format(self.project)] = self.build_hash
- w[0].immaePuppetJson -= value
- w[0].immaePuppetJson += json.dumps(config, indent=" ")
- w.commit()
- return defer.succeed(SUCCESS)
- return defer.succeed(FAILURE)
diff --git a/modules/private/buildbot/projects/cryptoportfolio/__init__.py b/modules/private/buildbot/projects/cryptoportfolio/__init__.py
deleted file mode 100644
index 5d70f95..0000000
--- a/modules/private/buildbot/projects/cryptoportfolio/__init__.py
+++ /dev/null
@@ -1,169 +0,0 @@
-from buildbot.plugins import *
-from buildbot_common.build_helpers import *
-import os
-
-__all__ = [ "configure", "E" ]
-
-class E():
- PROJECT = "cryptoportfolio"
- BUILDBOT_URL = "https://git.immae.eu/buildbot/{}/".format(PROJECT)
- SOCKET = "unix:/run/buildbot/{}.sock".format(PROJECT)
- PB_SOCKET = "unix:address=/run/buildbot/{}_pb.sock".format(PROJECT)
- RELEASE_PATH = "/var/lib/ftp/release.immae.eu/{}".format(PROJECT)
- RELEASE_URL = "https://release.immae.eu/{}".format(PROJECT)
- GIT_URL = "https://git.immae.eu/perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/{0}.git"
- SSH_KEY_PATH = "/var/lib/buildbot/buildbot_key"
- LDAP_HOST = "ldap.immae.eu"
- LDAP_DN = "cn=buildbot,ou=services,dc=immae,dc=eu"
- LDAP_ROLES_BASE = "ou=roles,ou=hosts,dc=immae,dc=eu"
-
- PUPPET_HOST = {
- "production": "root@cryptoportfolio.immae.eu",
- "integration": "root@cryptoportfolio-dev.immae.eu"
- }
-
- # master.cfg
- SECRETS_FILE = os.getcwd() + "/secrets"
- LDAP_URL = "ldaps://ldap.immae.eu:636"
- LDAP_ADMIN_USER = "cn=buildbot,ou=services,dc=immae,dc=eu"
- LDAP_BASE = "dc=immae,dc=eu"
- LDAP_PATTERN = "(uid=%(username)s)"
- LDAP_GROUP_PATTERN = "(&(memberOf=cn=groups,ou=cryptoportfolio,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
- TITLE_URL = "https://git.immae.eu"
- TITLE = "Cryptoportfolio"
-
-# eval .. dans .zshrc_local
-# mkdir -p $BUILD/go
-# export GOPATH=$BUILD/go
-# go get -u github.com/golang/dep/cmd/dep
-# export PATH=$PATH:$BUILD/go/bin
-# go get git.immae.eu/Cryptoportfolio/Front.git
-# cd $BUILD/go/src/git.immae.eu/Cryptoportfolio/Front.git
-# git checkout dev
-# dep ensure
-def configure(c):
- c["buildbotURL"] = E.BUILDBOT_URL
- c["www"]["port"] = E.SOCKET
-
- c['workers'].append(worker.LocalWorker("generic-worker"))
- c['workers'].append(worker.LocalWorker("deploy-worker"))
-
- c['schedulers'].append(hook_scheduler("Trader"))
- c['schedulers'].append(hook_scheduler("Front"))
- c['schedulers'].append(force_scheduler(
- "force_cryptoportfolio", ["Trader_build", "Front_build"]))
- c['schedulers'].append(deploy_scheduler("deploy_cryptoportfolio",
- ["Trader_deploy", "Front_deploy"]))
-
- c['builders'].append(factory("trader"))
- c['builders'].append(factory("front", ignore_fails=True))
-
- c['builders'].append(deploy_factory("trader"))
- c['builders'].append(deploy_factory("front"))
-
- c['services'].append(SlackStatusPush(
- name="slack_status_cryptoportfolio",
- builders=["Front_build", "Trader_build", "Front_deploy", "Trader_deploy"],
- serverUrl=open(E.SECRETS_FILE + "/slack_webhook", "r").read().rstrip()))
-
-def factory(project, ignore_fails=False):
- release_file = "{1}/{0}/{0}_%(kw:clean_branch)s.tar.gz"
-
- url = E.GIT_URL.format(project.capitalize())
-
- package = util.Interpolate("{0}_%(kw:clean_branch)s.tar.gz".format(project), clean_branch=clean_branch)
- package_dest = util.Interpolate(release_file.format(project, E.RELEASE_PATH), clean_branch=clean_branch)
- package_url = util.Interpolate(release_file.format(project, E.RELEASE_URL), clean_branch=clean_branch)
-
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=url,
- mode="full", method="copy"))
- factory.addStep(steps.ShellCommand(name="make install",
- logEnviron=False, haltOnFailure=(not ignore_fails),
- warnOnFailure=ignore_fails, flunkOnFailure=(not ignore_fails),
- command=["make", "install"]))
- factory.addStep(steps.ShellCommand(name="make test",
- logEnviron=False, haltOnFailure=(not ignore_fails),
- warnOnFailure=ignore_fails, flunkOnFailure=(not ignore_fails),
- command=["make", "test"]))
- factory.addSteps(package_and_upload(package, package_dest, package_url))
-
- return util.BuilderConfig(
- name="{}_build".format(project.capitalize()),
- workernames=["generic-worker"], factory=factory)
-
-def compute_build_infos(project):
- @util.renderer
- def compute(props):
- import re, hashlib
- build_file = props.getProperty("build")
- package_dest = "{2}/{0}/{1}".format(project, build_file, E.RELEASE_PATH)
- version = re.match(r"{0}_(.*).tar.gz".format(project), build_file).group(1)
- with open(package_dest, "rb") as f:
- sha = hashlib.sha256(f.read()).hexdigest()
- return {
- "build_version": version,
- "build_hash": sha,
- }
- return compute
-
-@util.renderer
-def puppet_host(props):
- environment = props["environment"] if props.hasProperty("environment") else "integration"
- return E.PUPPET_HOST.get(environment, "host.invalid")
-
-def deploy_factory(project):
- package_dest = util.Interpolate("{1}/{0}/%(prop:build)s".format(project, E.RELEASE_PATH))
-
- factory = util.BuildFactory()
- factory.addStep(steps.MasterShellCommand(command=["test", "-f", package_dest]))
- factory.addStep(steps.SetProperties(properties=compute_build_infos(project)))
- factory.addStep(LdapPush(environment=util.Property("environment"),
- project=project, build_version=util.Property("build_version"),
- build_hash=util.Property("build_hash"), ldap_password=util.Secret("ldap")))
- factory.addStep(steps.MasterShellCommand(command=[
- "ssh", "-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no", "-o", "CheckHostIP=no", "-i", E.SSH_KEY_PATH, puppet_host]))
- return util.BuilderConfig(name="{}_deploy".format(project.capitalize()), workernames=["deploy-worker"], factory=factory)
-
-from twisted.internet import defer
-from buildbot.process.buildstep import FAILURE
-from buildbot.process.buildstep import SUCCESS
-from buildbot.process.buildstep import BuildStep
-
-class LdapPush(BuildStep):
- name = "LdapPush"
- renderables = ["environment", "project", "build_version", "build_hash", "ldap_password"]
-
- def __init__(self, **kwargs):
- self.environment = kwargs.pop("environment")
- self.project = kwargs.pop("project")
- self.build_version = kwargs.pop("build_version")
- self.build_hash = kwargs.pop("build_hash")
- self.ldap_password = kwargs.pop("ldap_password")
- self.ldap_host = kwargs.pop("ldap_host", E.LDAP_HOST)
- super().__init__(**kwargs)
-
- def run(self):
- import json
- from ldap3 import Reader, Writer, Server, Connection, ObjectDef
- server = Server(self.ldap_host)
- conn = Connection(server,
- user=E.LDAP_DN,
- password=self.ldap_password)
- conn.bind()
- obj = ObjectDef("immaePuppetClass", conn)
- r = Reader(conn, obj,
- "cn=cryptoportfolio.{},{}".format(self.environment, E.LDAP_ROLES_BASE))
- r.search()
- if len(r) > 0:
- w = Writer.from_cursor(r)
- for value in w[0].immaePuppetJson.values:
- config = json.loads(value)
- if "role::cryptoportfolio::{}_version".format(self.project) in config:
- config["role::cryptoportfolio::{}_version".format(self.project)] = self.build_version
- config["role::cryptoportfolio::{}_sha256".format(self.project)] = self.build_hash
- w[0].immaePuppetJson -= value
- w[0].immaePuppetJson += json.dumps(config, indent=" ")
- w.commit()
- return defer.succeed(SUCCESS)
- return defer.succeed(FAILURE)
diff --git a/modules/private/buildbot/projects/denise/__init__.py b/modules/private/buildbot/projects/denise/__init__.py
deleted file mode 100644
index abeba3c..0000000
--- a/modules/private/buildbot/projects/denise/__init__.py
+++ /dev/null
@@ -1,186 +0,0 @@
-from buildbot.plugins import *
-from buildbot_common.build_helpers import *
-import os
-from buildbot.util import bytes2unicode
-import json
-
-__all__ = [ "configure", "E" ]
-
-class E():
- PROJECT = "denise"
- BUILDBOT_URL = "https://git.immae.eu/buildbot/{}/".format(PROJECT)
- SOCKET = "unix:/run/buildbot/{}.sock".format(PROJECT)
- PB_SOCKET = "unix:address=/run/buildbot/{}_pb.sock".format(PROJECT)
- SSH_KEY_PATH = "/var/lib/buildbot/buildbot_key"
- SSH_HOST_KEY = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIFbhFTl2A2RJn5L51yxJM4XfCS2ZaiSX/jo9jFSdghF"
-
- BINGO_RELEASE_PATH = "/var/lib/buildbot/outputs/denise/bingo"
- BINGO_BETA_PATH = "/var/lib/buildbot/outputs/denise/bingo_beta"
- BINGO_GIT_URL = "gitolite@git.immae.eu:perso/Denise/bingo"
-
- OMS_RELEASE_PATH = "/var/lib/buildbot/outputs/denise/oms"
- OMS_BETA_PATH = "/var/lib/buildbot/outputs/denise/oms_beta"
- OMS_GIT_URL = "gitolite@git.immae.eu:perso/Denise/oms"
-
- AVENTURIERS_RELEASE_PATH = "/var/lib/buildbot/outputs/denise/aventuriers"
- AVENTURIERS_GIT_URL = "https://git.immae.eu/perso/Denise/aventuriers.git"
-
- # master.cfg
- SECRETS_FILE = os.getcwd() + "/secrets"
- LDAP_URL = "ldaps://ldap.immae.eu:636"
- LDAP_ADMIN_USER = "cn=buildbot,ou=services,dc=immae,dc=eu"
- LDAP_BASE = "dc=immae,dc=eu"
- LDAP_PATTERN = "(uid=%(username)s)"
- LDAP_GROUP_PATTERN = "(&(memberOf=cn=groups,ou=denise,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
- TITLE_URL = "https://oms.syanni.eu"
- TITLE = "Syanni website"
-
-class CustomBase(webhooks.base):
- def getChanges(self, request):
- try:
- content = request.content.read()
- args = json.loads(bytes2unicode(content))
- except Exception as e:
- raise ValueError("Error loading JSON: " + str(e))
-
- args.setdefault("comments", "")
- args.setdefault("repository", "")
- args.setdefault("author", args.get("who", "unknown"))
-
- return ([args], None)
-
-def configure(c):
- c["buildbotURL"] = E.BUILDBOT_URL
- c["www"]["port"] = E.SOCKET
-
- c["www"]["change_hook_dialects"]["base"] = {
- "custom_class": CustomBase
- }
- c['workers'].append(worker.LocalWorker("generic-worker-denise"))
-
- c['schedulers'].append(hook_scheduler("DeniseBingo", timer=1))
- c['schedulers'].append(hook_scheduler("DeniseOMS", timer=1))
- c['schedulers'].append(hook_scheduler("DeniseAventuriers", timer=1))
- c['schedulers'].append(force_scheduler("force_denise", [
- "DeniseBingo_build", "DeniseOMS_build", "DeniseAventuriers_build"
- ]))
-
- c['builders'].append(denise_oms_factory())
- c['builders'].append(denise_bingo_factory())
- c['builders'].append(denise_aventuriers_factory())
-
-def denise_bingo_factory():
- @util.renderer
- def bingo_run_path(props):
- if props.hasProperty("branch") and len(props["branch"]) > 0 and props["branch"] == "master":
- return "/run/denise_bingo/gunicorn.pid"
- else:
- return "/run/denise_bingo_beta/gunicorn.pid"
-
- @util.renderer
- def bingo_systemd_service(props):
- if props.hasProperty("branch") and len(props["branch"]) > 0 and props["branch"] == "master":
- return "denise-bingo"
- else:
- return "denise-bingo-beta"
-
- @util.renderer
- def bingo_url(props):
- if props.hasProperty("branch") and len(props["branch"]) > 0 and props["branch"] == "master":
- return "https://bingo.syanni.eu"
- else:
- return "https://beta.bingo.syanni.eu"
-
- @util.renderer
- def bingo_path(props):
- if props.hasProperty("branch") and len(props["branch"]) > 0 and props["branch"] == "master":
- return E.BINGO_RELEASE_PATH
- else:
- return E.BINGO_BETA_PATH
-
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.BINGO_GIT_URL,
- submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
- sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
- factory.addStep(steps.MasterShellCommand(command=util.Interpolate("rm -rf %(kw:bingo_path)s", bingo_path=bingo_path)))
- factory.addStep(steps.DirectoryUpload(workersrc="../source",
- masterdest=bingo_path,
- url=bingo_url))
- factory.addStep(steps.MasterShellCommand(command=util.Interpolate("chmod -R a+rX %(kw:bingo_path)s", bingo_path=bingo_path)))
- factory.addStep(steps.MasterShellCommand(command=util.Interpolate("/run/wrappers/bin/sudo systemctl restart %(kw:bingo_service)s.service", bingo_service=bingo_systemd_service)))
-
- return util.BuilderConfig(name="DeniseBingo_build", workernames=["generic-worker-denise"], factory=factory)
-
-def denise_oms_factory():
- @util.renderer
- def oms_run_path(props):
- if props.hasProperty("branch") and len(props["branch"]) > 0 and props["branch"] == "master":
- return "/run/denise_oms/gunicorn.pid"
- else:
- return "/run/denise_oms_beta/gunicorn.pid"
-
- @util.renderer
- def oms_systemd_service(props):
- if props.hasProperty("branch") and len(props["branch"]) > 0 and props["branch"] == "master":
- return "denise-oms"
- else:
- return "denise-oms-beta"
-
- @util.renderer
- def oms_url(props):
- if props.hasProperty("branch") and len(props["branch"]) > 0 and props["branch"] == "master":
- return "https://oms.syanni.eu"
- else:
- return "https://beta.oms.syanni.eu"
-
- @util.renderer
- def oms_path(props):
- if props.hasProperty("branch") and len(props["branch"]) > 0 and props["branch"] == "master":
- return E.OMS_RELEASE_PATH
- else:
- return E.OMS_BETA_PATH
-
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.OMS_GIT_URL,
- submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
- sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
- factory.addStep(steps.MasterShellCommand(command=util.Interpolate("rm -rf %(kw:oms_path)s", oms_path=oms_path)))
- factory.addStep(steps.DirectoryUpload(workersrc="../source",
- masterdest=oms_path,
- url=oms_url))
- factory.addStep(steps.MasterShellCommand(command=util.Interpolate("chmod -R a+rX %(kw:oms_path)s", oms_path=oms_path)))
- factory.addStep(steps.MasterShellCommand(command=util.Interpolate("/run/wrappers/bin/sudo systemctl restart %(kw:oms_service)s.service", oms_service=oms_systemd_service)))
-
- return util.BuilderConfig(name="DeniseOMS_build", workernames=["generic-worker-denise"], factory=factory)
-
-def denise_aventuriers_factory():
- path_env = {
- "PATH": os.environ["BUILDBOT_PATH_Aventuriers"] + ":${PATH}",
- "TZ": "Europe/Paris",
- }
-
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.AVENTURIERS_GIT_URL,
- submodules=True, mode="full", method="fresh"))
- factory.addStep(steps.ShellCommand(name="build files",
- logEnviron=False, haltOnFailure=True, workdir="build",
- env=path_env, command=["make", "tout", "encyclo"]))
- factory.addStep(steps.MasterShellCommand(command="rm -rf {}".format(E.AVENTURIERS_RELEASE_PATH)))
- factory.addStep(steps.DirectoryUpload(workersrc="../build/html",
- masterdest=E.AVENTURIERS_RELEASE_PATH,
- url="https://aventuriers.syanni.eu"))
- factory.addStep(steps.FileUpload(name="upload epub file", workersrc="aventuriers.epub",
- workdir="build", masterdest=E.AVENTURIERS_RELEASE_PATH + "/aventuriers.epub",
- url="https://aventuriers.syanni.eu/aventuriers.epub", mode=0o644))
- factory.addStep(steps.FileUpload(name="upload mobi file", workersrc="aventuriers.mobi",
- workdir="build", masterdest=E.AVENTURIERS_RELEASE_PATH + "/aventuriers.mobi",
- url="https://aventuriers.syanni.eu/aventuriers.mobi", mode=0o644))
- factory.addStep(steps.FileUpload(name="upload pdf file", workersrc="aventuriers.pdf",
- workdir="build", masterdest=E.AVENTURIERS_RELEASE_PATH + "/aventuriers.pdf",
- url="https://aventuriers.syanni.eu/aventuriers.pdf", mode=0o644))
- factory.addStep(steps.FileUpload(name="upload encyclo pdf file", workersrc="encyclo.pdf",
- workdir="build", masterdest=E.AVENTURIERS_RELEASE_PATH + "/encyclo.pdf",
- url="https://aventuriers.syanni.eu/encyclo.pdf", mode=0o644))
- factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.AVENTURIERS_RELEASE_PATH)))
-
- return util.BuilderConfig(name="DeniseAventuriers_build", workernames=["generic-worker-denise"], factory=factory)
diff --git a/modules/private/buildbot/projects/immaeEu/__init__.py b/modules/private/buildbot/projects/immaeEu/__init__.py
deleted file mode 100644
index 83265cd..0000000
--- a/modules/private/buildbot/projects/immaeEu/__init__.py
+++ /dev/null
@@ -1,314 +0,0 @@
-from buildbot.plugins import *
-from buildbot_common.build_helpers import *
-import os
-from buildbot.util import bytes2unicode
-import json
-
-__all__ = [ "configure", "E" ]
-
-class E():
- PROJECT = "immaeEu"
- BUILDBOT_URL = "https://git.immae.eu/buildbot/{}/".format(PROJECT)
- SOCKET = "unix:/run/buildbot/{}.sock".format(PROJECT)
- PB_SOCKET = "unix:address=/run/buildbot/{}_pb.sock".format(PROJECT)
- SSH_KEY_PATH = "/var/lib/buildbot/buildbot_key"
- SSH_HOST_KEY = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIFbhFTl2A2RJn5L51yxJM4XfCS2ZaiSX/jo9jFSdghF"
- XMPP_RECIPIENTS = os.environ["BUILDBOT_XMPP_RECIPIENTS"].split(" ")
-
- BIP39_GIT_URL = "https://git.immae.eu/perso/Immae/Projets/Cryptomonnaies/BIP39.git"
- IMMAE_EU_GIT_URL = "gitolite@git.immae.eu:perso/Immae/Sites/Blog"
- HISTORY_GIT_URL = "gitolite@git.immae.eu:perso/Immae/Sites/History"
- RECETTES_GIT_URL = "gitolite@git.immae.eu:perso/Immae/Sites/Recettes"
- COURS_GIT_URL = "gitolite@git.immae.eu:perso/Immae/Sites/Cours"
- DOCS_GIT_URL = "gitolite@git.immae.eu:perso/Immae/Sites/Docs"
- NORMALESUP_GIT_URL = "gitolite@git.immae.eu:perso/Immae/Projets/Sites/Normalesup"
-
- COURS_RELEASE_PATH = "/var/lib/buildbot/outputs/immae/cours"
- COURS_TARBALL_PATH = "/var/lib/ftp/release.immae.eu/cours"
- COURS_TARBALL_URL = "https://release.immae.eu/cours"
- BIP39_RELEASE_PATH = "/var/lib/buildbot/outputs/immae/bip39"
- HISTORY_RELEASE_PATH = "/var/lib/buildbot/outputs/immae/history"
- IMMAE_EU_RELEASE_PATH = "/var/lib/buildbot/outputs/immae/blog"
- DOCS_RELEASE_PATH = "/var/lib/buildbot/outputs/immae/docs"
- RECETTES_RELEASE_PATH = "/var/lib/buildbot/outputs/immae/recettes"
- NORMALESUP_RELEASE_PATH = "/var/lib/buildbot/outputs/immae/recherche"
- GSMCELLS_RELEASE_PATH = "/var/lib/ftp/release.immae.eu/gsm_cells"
- GSMCELLS_RELEASE_URL = "https://release.immae.eu/gsm_cells"
-
- # master.cfg
- SECRETS_FILE = os.getcwd() + "/secrets"
- LDAP_URL = "ldaps://ldap.immae.eu:636"
- LDAP_ADMIN_USER = "cn=buildbot,ou=services,dc=immae,dc=eu"
- LDAP_BASE = "dc=immae,dc=eu"
- LDAP_PATTERN = "(uid=%(username)s)"
- LDAP_GROUP_PATTERN = "(&(memberOf=cn=groups,ou=immaeEu,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
- TITLE_URL = "https://www.immae.eu"
- TITLE = "Immae website"
-
-class CustomBase(webhooks.base):
- def getChanges(self, request):
- try:
- content = request.content.read()
- args = json.loads(bytes2unicode(content))
- except Exception as e:
- raise ValueError("Error loading JSON: " + str(e))
-
- args.setdefault("comments", "")
- args.setdefault("repository", "")
- args.setdefault("author", args.get("who", "unknown"))
-
- return ([args], None)
-
-def configure(c):
- c["buildbotURL"] = E.BUILDBOT_URL
- c["www"]["port"] = E.SOCKET
-
- c["www"]["change_hook_dialects"]["base"] = {
- "custom_class": CustomBase
- }
- c['workers'].append(worker.LocalWorker("generic-worker-immae-eu"))
-
- c['schedulers'].append(hook_scheduler("ImmaeEu", timer=1))
- c['schedulers'].append(hook_scheduler("Normalesup", timer=1))
- c['schedulers'].append(hook_scheduler("Cours", timer=1))
- c['schedulers'].append(hook_scheduler("Recettes", timer=1))
- c['schedulers'].append(hook_scheduler("Docs", timer=1))
- c['schedulers'].append(hook_scheduler("History", timer=1))
- c['schedulers'].append(hook_scheduler("BIP39", timer=1))
- c['schedulers'].append(schedulers.Nightly(name="GSMCells-weekly",
- builderNames=["GSMCells_build"], dayOfWeek=6, hour=3))
- c['schedulers'].append(force_scheduler("force_immae_eu", [
- "ImmaeEu_build", "Normalesup_build", "Cours_build", "Docs_build",
- "Recettes_build", "History_build", "BIP39_build"
- ]))
- c['schedulers'].append(schedulers.ForceScheduler(
- name="GSMCells-force", label="Force build",
- buttonName="Force build",
- reason=util.StringParameter(name="reason", label="Reason", default="Force build"),
- codebases=[
- util.CodebaseParameter("",
- branch=util.FixedParameter(name="branch", default=""),
- revision=util.FixedParameter(name="revision", default=""),
- repository=util.FixedParameter(name="repository", default=""),
- project=util.FixedParameter(name="project", default=""),
- ),
- ],
- username=util.FixedParameter(name="username", default="Web button"),
- builderNames=["GSMCells_build"]
- ))
-
- c['builders'].append(immae_eu_factory())
- c['builders'].append(normalesup_factory())
- c['builders'].append(cours_factory())
- c['builders'].append(gsm_cells_factory())
- c['builders'].append(recettes_factory())
- c['builders'].append(docs_factory())
- c['builders'].append(history_factory())
- c['builders'].append(bip39_factory())
-
- c['services'].append(SlackStatusPush(
- name="slack_status_immae_eu_project",
- builders=[
- "ImmaeEu_build", "Normalesup_build", "Cours_build", "Docs_build",
- "GSMCells_build", "Recettes_build", "History_build",
- "BIP39_build"
- ],
- serverUrl=open(E.SECRETS_FILE + "/slack_webhook", "r").read().rstrip()))
- c['services'].append(XMPPStatusPush(
- name="xmpp_status_immae_eu_project",
- builders=[
- "ImmaeEu_build", "Normalesup_build", "Cours_build", "Docs_build",
- "GSMCells_build", "Recettes_build", "History_build",
- "BIP39_build"
- ],
- recipients=E.XMPP_RECIPIENTS,
- password=open(E.SECRETS_FILE + "/notify_xmpp_password", "r").read().rstrip()))
-
-def history_factory():
- path_env = {
- "PATH": os.environ["BUILDBOT_PATH_History"] + ":${PATH}"
- }
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.HISTORY_GIT_URL,
- submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
- sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
- factory.addStep(steps.ShellCommand(name="build website",
- logEnviron=False, haltOnFailure=True, workdir="source",
- env=path_env, command=["jekyll", "build"]))
- factory.addStep(steps.MasterShellCommand(command="rm -rf {}".format(E.HISTORY_RELEASE_PATH)))
- factory.addStep(steps.DirectoryUpload(workersrc="../source/_site",
- masterdest=E.HISTORY_RELEASE_PATH,
- url="https://www.immae.eu/history"))
- factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.HISTORY_RELEASE_PATH)))
-
- return util.BuilderConfig(name="History_build", workernames=["generic-worker-immae-eu"], factory=factory)
-
-def docs_factory():
- path_env = {
- "PATH": os.environ["BUILDBOT_PATH_Docs"] + ":${PATH}"
- }
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.DOCS_GIT_URL,
- submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
- sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
- factory.addStep(steps.ShellCommand(name="build website",
- logEnviron=False, haltOnFailure=True, workdir="source",
- env=path_env, command=["make", "clean", "html"]))
- factory.addStep(steps.MasterShellCommand(command="rm -rf {}".format(E.DOCS_RELEASE_PATH)))
- factory.addStep(steps.DirectoryUpload(workersrc="../source/_build/html",
- masterdest=E.DOCS_RELEASE_PATH,
- url="https://www.immae.eu/docs"))
- factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.DOCS_RELEASE_PATH)))
-
- return util.BuilderConfig(name="Docs_build", workernames=["generic-worker-immae-eu"], factory=factory)
-
-def recettes_factory():
- path_env = {
- "PATH": os.environ["BUILDBOT_PATH_Recettes"] + ":${PATH}"
- }
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.RECETTES_GIT_URL,
- submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
- sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
- factory.addStep(NixShellCommand(name="build website",
- logEnviron=False, haltOnFailure=True, workdir="source",
- env=path_env, command="jekyll build --trace --baseurl /recettes"))
- factory.addStep(steps.MasterShellCommand(command="rm -rf {}".format(E.RECETTES_RELEASE_PATH)))
- factory.addStep(steps.DirectoryUpload(workersrc="../source/_site",
- masterdest=E.RECETTES_RELEASE_PATH,
- url="https://www.immae.eu/recettes"))
- factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.RECETTES_RELEASE_PATH)))
-
- return util.BuilderConfig(name="Recettes_build", workernames=["generic-worker-immae-eu"], factory=factory)
-
-def bip39_factory():
- path_env = {
- "PATH": os.environ["BUILDBOT_PATH_BIP39"] + ":${PATH}"
- }
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.BIP39_GIT_URL,
- submodules=True, mode="full", method="copy"))
- factory.addStep(steps.ShellCommand(name="build file",
- logEnviron=False, haltOnFailure=True, workdir="source",
- env=path_env, command=["python", "compile.py"]))
- factory.addStep(steps.FileUpload(name="upload file", workersrc="bip39-standalone.html",
- workdir="source", masterdest=E.BIP39_RELEASE_PATH + "/index.html",
- url="https://tools.immae.eu/BIP39", mode=0o644))
- factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.BIP39_RELEASE_PATH)))
-
- return util.BuilderConfig(name="BIP39_build", workernames=["generic-worker-immae-eu"], factory=factory)
-
-def immae_eu_factory():
- path_env = {
- "PATH": os.environ["BUILDBOT_PATH_ImmaeEu"] + ":${PATH}"
- }
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.IMMAE_EU_GIT_URL,
- submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
- sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
- factory.addStep(steps.ShellCommand(name="build website",
- logEnviron=False, haltOnFailure=True, workdir="source",
- env=path_env, command=["make", "html"]))
- factory.addStep(steps.MasterShellCommand(command="rm -rf {}".format(E.IMMAE_EU_RELEASE_PATH)))
- factory.addStep(steps.DirectoryUpload(workersrc="../source/output",
- masterdest=E.IMMAE_EU_RELEASE_PATH,
- url="https://www.immae.eu"))
- factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.IMMAE_EU_RELEASE_PATH)))
-
- return util.BuilderConfig(name="ImmaeEu_build", workernames=["generic-worker-immae-eu"], factory=factory)
-
-def cours_factory():
- path_env = {
- "PATH": os.environ["BUILDBOT_PATH_Cours"] + ":${PATH}",
- "CI": "yes"
- }
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.COURS_GIT_URL,
- submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
- sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
- factory.addStep(steps.ShellCommand(name="build website",
- logEnviron=False, haltOnFailure=True, workdir="source",
- command=["make", "build"], env=path_env))
- factory.addStep(steps.MasterShellCommand(command="rm -rf {}".format(E.COURS_RELEASE_PATH)))
- factory.addStep(steps.DirectoryUpload(workersrc="../source/build",
- masterdest=E.COURS_RELEASE_PATH,
- url="https://www.immae.eu/cours"))
- factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.COURS_RELEASE_PATH)))
-
- factory.addStep(steps.ShellCommand(name="build pdfs",
- logEnviron=False, haltOnFailure=True, workdir="source",
- command=["make", "pdfs"], env=path_env))
-
- package = util.Interpolate("cours_%(kw:clean_branch)s.tar.gz", clean_branch=clean_branch)
- release_file = "{0}/cours_%(kw:clean_branch)s.tar.gz"
- package_dest = util.Interpolate(release_file.format(E.COURS_TARBALL_PATH), clean_branch=clean_branch)
- package_url = util.Interpolate(release_file.format(E.COURS_TARBALL_URL), clean_branch=clean_branch)
- factory.addStep(steps.ShellCommand(name="build pdf tarball",
- logEnviron=False, haltOnFailure=True, workdir="source",
- command=["tar", "-cvf", package, "-C", "pdfs", "mp", "mpsi"], env=path_env))
- factory.addStep(steps.FileUpload(name="upload package", workersrc=package,
- workdir="source", masterdest=package_dest,
- url=package_url, mode=0o644))
-
- return util.BuilderConfig(name="Cours_build", workernames=["generic-worker-immae-eu"], factory=factory)
-
-def normalesup_factory():
- path_env = {
- "PATH": os.environ["BUILDBOT_PATH_Normalesup"] + ":${PATH}"
- }
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False, repourl=E.NORMALESUP_GIT_URL,
- submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
- sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
- factory.addStep(steps.ShellCommand(name="build website",
- logEnviron=False, haltOnFailure=True, workdir="source",
- command=["make", "build"], env=path_env))
- factory.addStep(steps.ShellCommand(name="give read access to all files",
- logEnviron=False, haltOnFailure=True, workdir="source",
- command="chmod -R a+rX build", env=path_env))
- factory.addStep(steps.ShellCommand(name="synchronize with phare",
- logEnviron=False, haltOnFailure=True, workdir="source",
- env=path_env, command=[
- "rsync", "-av", "--delete",
- "-e", "ssh -i {} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=no".format(E.SSH_KEY_PATH),
- "build/",
- os.environ["BUILDBOT_NORMALESUP_HOST"]
- ]))
- factory.addStep(steps.MasterShellCommand(command="rm -rf {}".format(E.NORMALESUP_RELEASE_PATH)))
- factory.addStep(steps.DirectoryUpload(workersrc="../source/build", masterdest=E.NORMALESUP_RELEASE_PATH,
- url="https://www.immae.eu/recherche"))
- factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.NORMALESUP_RELEASE_PATH)))
-
- return util.BuilderConfig(name="Normalesup_build", workernames=["generic-worker-immae-eu"], factory=factory)
-
-def gsm_cells_factory():
- path_env = {
- "PATH": os.environ["BUILDBOT_PATH_GSMCells"] + ":${PATH}",
- "IN_BUILDBOT": "yes",
- }
- master_env = {
- "HTACCESS": '''
- Options +FollowSymLinks
- IndexIgnore *
- '''
- }
- for k, v in os.environ.items():
- if k.startswith("BUILDBOT_GSM_CELLS_"):
- path_env[k[len("BUILDBOT_GSM_CELLS_"):]] = v
-
- script = os.environ["BUILDBOT_PROJECT_DIR"] + "/scripts/lacells_download"
- factory = util.BuildFactory()
- factory.addStep(steps.ShellCommand(name="download files",
- logEnviron=False, haltOnFailure=True, command=[script], env=path_env))
- factory.addStep(steps.ShellCommand(name="give read access to all files",
- logEnviron=False, haltOnFailure=True,
- command="chmod a+r lacells.db", env=path_env))
- factory.addStep(steps.FileUpload(workersrc="lacells.db",
- masterdest=(E.GSMCELLS_RELEASE_PATH+"/lacells.db"), url=(E.GSMCELLS_RELEASE_URL+"/lacells.db")))
- factory.addStep(steps.MasterShellCommand(command="touch {}/.duplicity-ignore".format(E.GSMCELLS_RELEASE_PATH)))
- factory.addStep(steps.MasterShellCommand(command='echo "$HTACCESS" > {}/.htaccess'.format(E.GSMCELLS_RELEASE_PATH),
- env=master_env))
- factory.addStep(steps.MasterShellCommand(command="ln -sf lacells.db {}/lacells.db.new".format(E.GSMCELLS_RELEASE_PATH)))
- factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.GSMCELLS_RELEASE_PATH)))
-
- return util.BuilderConfig(name="GSMCells_build", workernames=["generic-worker-immae-eu"], factory=factory)
diff --git a/modules/private/buildbot/projects/immaeEu/scripts/lacells_download b/modules/private/buildbot/projects/immaeEu/scripts/lacells_download
deleted file mode 100755
index 1193cf3..0000000
--- a/modules/private/buildbot/projects/immaeEu/scripts/lacells_download
+++ /dev/null
@@ -1,163 +0,0 @@
-#!/usr/bin/env bash
-
-# FLG - Fast Lacells.db Generator
-#
-# Simple script to quickly download and generate lacells.db for LocalGSMBackend by n76
-# https://github.com/n76/Local-GSM-Backend
-# Uses Mozilla Location Service, OpenCellID and radiocells.org databases as source
-# Based on lacells-creator by wvengen and n76
-#
-# Licensed under GPLv3 or later
-# (C)2016 Sebastian Obrusiewicz
-# sobrus@o2.pl
-
-if [ -z "$IN_BUILDBOT" ]; then
-#DEFAULT_CONFIG_BEGIN
-ENABLE_OCI=1 #enable OpenCellID data source
-ENABLE_MOZ=1 #enable Mozilla Location Services (MLS) data source
-ENABLE_RCO=0 #enable radiocells.org data source (it can be quite slow)
-
-# See https://en.wikipedia.org/wiki/Mobile_country_code
-# 208 France
-MCC="" #contry codes separated with "|", for example "260|262". Leave dot+asterisk ".*" for all countries
-RCO_SRC_FILE="fr.sqlite" #radiocells.org source database file, set "openbmap.sqlite" for entire world database, see https://radiocells.org/downloads for smaller country specific files, for example "pl.sqlite" for Poland
-RADIO="" #you can remove LTE if your phone does not support it
-TOKEN="" #your OCID token, required to download from OpenCellID. Get your free token at https://opencellid.org/
-fi
-TMPDIR='.' #for temporary files only, use disk if you don't have enough RAM, AND remember to have enough disk space in /var/tmp for sqlite temporary files
-KEEP_FILES=1 #whether to keep (1) or delete (0) the CSV files after processing
-
-#do not edit following variables, unless you know what you're doing
-EMPTY=',,,,,,,,,,,,,' #dummy empty file for disabled sources
-OCI_FILE=$TMPDIR"/ocid.csv" #opencellid temporary file
-MOZ_FILE=$TMPDIR"/mozilla.csv" #mozilla temporary file
-RCO_FILE=$TMPDIR"/rco.csv" #radiocells.org temporary file
-#DEFAULT_CONFIG_END
-
-#USER_CONFIG_BEGIN
-BINDIR=$( dirname "$(readlink -f "$0")" ) #"
-if [[ -f "${BINDIR}/config" ]]; then
- . "${BINDIR}/config"
-fi
-#USER_CONFIG_END
-
-function manage_backup
-{
- file=$1
- if [ -s $file ]
- then
- if [ $KEEP_FILES == "1" ]
- then
- gzip -kf $file
- fi
- elif [ -s $file".gz" ] && [ "${file##*.}" == "csv" ]
- then
- echo "Using" $file".gz backup file"
- gzip -dkf $file".gz"
- fi
-}
-
-
-function download_ocid
-{
- URL="https://opencellid.org/ocid/downloads?token=${TOKEN}&type=full&file=cell_towers.csv.gz"
- if [ $ENABLE_OCI == "1" ]
- then
- wget -qO- "$URL" | gunzip | egrep "^($RADIO),($MCC)," > $OCI_FILE
- manage_backup $OCI_FILE
- else
- echo $EMPTY > $OCI_FILE
- fi
-}
-
-function download_mozilla
-{
- if [ $ENABLE_MOZ == "1" ]
- then
- NW=`date -u "+%Y-%m-%d"`
- wget -qO- "https://d17pt8qph6ncyq.cloudfront.net/export/MLS-full-cell-export-${NW}T000000.csv.gz" | gunzip | egrep "^($RADIO),($MCC)," > $MOZ_FILE
- manage_backup $MOZ_FILE
- else
- echo $EMPTY > $MOZ_FILE
- fi
-}
-
-function download_radiocells
-{
- if [ $ENABLE_RCO == "1" ]
- then
- RCO_SELECT="SELECT technology, mcc, mnc, area, cid, NULL, longitude, latitude, 1000 accuracy, measurements, NULL, NULL, NULL, NULL FROM cell_zone;"
- wget -qO- "https://cdn.radiocells.org/"$RCO_SRC_FILE > $TMPDIR"/"$RCO_SRC_FILE
- sqlite3 -header -csv $TMPDIR"/"$RCO_SRC_FILE "$RCO_SELECT" | egrep "^($RADIO),($MCC)," > $RCO_FILE
- rm $TMPDIR"/"$RCO_SRC_FILE
- manage_backup $RCO_FILE
- else
- echo $EMPTY > $RCO_FILE
- fi
-}
-
-echo "Downloading data"
-
-download_ocid &
-OP=$!
-download_mozilla &
-MO=$!
-download_radiocells &
-RO=$!
-
-wait $OP
-wait $MO
-wait $RO
-
-if [ -s $MOZ_FILE ] && [ -s $OCI_FILE ] && [ -s $RCO_FILE ]
-then
-
-manage_backup lacells.db
-rm lacells.db
-
-echo "Generating database"
-
-sqlite3 lacells.db <<-SQL
-PRAGMA synchronous = OFF;
-PRAGMA journal_mode = OFF;
-
-CREATE TEMP TABLE cells_import (radio TEXT,mcc INTEGER,mnc INTEGER,lac INTEGER,cid INTEGER,unit STRING,longitude NUMERIC,latitude NUMERIC,accuracy INTEGER,samples INTEGER,changeable BOOLEAN,created INTEGER,updated INTEGER, avgSignal INTEGER);
-CREATE TABLE cells (mcc INTEGER,mnc INTEGER,lac INTEGER,cid INTEGER,longitude REAL,latitude REAL,altitude REAL,accuracy REAL,samples INTEGER);
-
-.header on
-.mode csv
-
-.import "$OCI_FILE" cells_import
-.import "$MOZ_FILE" cells_import
-.import "$RCO_FILE" cells_import
-
-UPDATE cells_import SET samples=1 WHERE samples IS NULL OR samples < 1;
-
-INSERT INTO cells
-SELECT mcc, mnc, lac, cid,
- sum(longitude * samples) / sum(samples) as longitude,
- sum(latitude * samples) / sum(samples) as latitude,
- -1 as altitude,
- sum(accuracy * samples) / sum(samples) as accuracy,
- sum(samples) as samples
-FROM cells_import
-GROUP BY mcc, mnc, lac, cid;
-
-DROP TABLE cells_import;
-
-UPDATE cells SET accuracy=500 WHERE accuracy < 500;
-UPDATE cells SET accuracy=100000 WHERE accuracy > 100000;
-
-CREATE INDEX _idx1 ON cells (mcc, mnc, lac, cid);
-CREATE INDEX _idx2 ON cells (lac, cid);
-
-VACUUM;
-SQL
-
-else
- echo "Download error"
-fi
-
-rm $OCI_FILE
-rm $MOZ_FILE
-rm $RCO_FILE
diff --git a/modules/private/buildbot/projects/test/__init__.py b/modules/private/buildbot/projects/test/__init__.py
deleted file mode 100644
index e2f6f82..0000000
--- a/modules/private/buildbot/projects/test/__init__.py
+++ /dev/null
@@ -1,197 +0,0 @@
-from buildbot.plugins import *
-from buildbot_common.build_helpers import *
-import buildbot_common.libvirt as ilibvirt
-import os
-from buildbot.util import bytes2unicode
-import json
-
-__all__ = [ "configure", "E" ]
-
-class E():
- PROJECT = "test"
- BUILDBOT_URL = "https://git.immae.eu/buildbot/{}/".format(PROJECT)
- SOCKET = "unix:/run/buildbot/{}.sock".format(PROJECT)
- PB_SOCKET = os.environ["BUILDBOT_WORKER_PORT"]
- WORKER_HOST = "{}:{}".format(os.environ["BUILDBOT_HOST"], PB_SOCKET)
- RELEASE_PATH = "/var/lib/ftp/release.immae.eu/{}".format(PROJECT)
- RELEASE_URL = "https://release.immae.eu/{}".format(PROJECT)
- GIT_URL = "https://git.immae.eu/perso/Immae/TestProject.git"
- SSH_KEY_PATH = "/var/lib/buildbot/buildbot_key"
- LIBVIRT_URL = os.environ["BUILDBOT_VIRT_URL"] + "?keyfile=" + SSH_KEY_PATH
- PUPPET_HOST = "root@backup-1.v.immae.eu"
- LDAP_HOST = "ldap.immae.eu"
- LDAP_DN = "cn=buildbot,ou=services,dc=immae,dc=eu"
- LDAP_ROLES_BASE = "ou=roles,ou=hosts,dc=immae,dc=eu"
- XMPP_RECIPIENTS = os.environ["BUILDBOT_XMPP_RECIPIENTS"].split(" ")
-
- # master.cfg
- SECRETS_FILE = os.getcwd() + "/secrets"
- LDAP_URL = "ldaps://ldap.immae.eu:636"
- LDAP_ADMIN_USER = "cn=buildbot,ou=services,dc=immae,dc=eu"
- LDAP_BASE = "dc=immae,dc=eu"
- LDAP_PATTERN = "(uid=%(username)s)"
- LDAP_GROUP_PATTERN = "(&(memberOf=cn=groups,ou=test,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
- TITLE_URL = "https://git.immae.eu/?p=perso/Immae/TestProject.git;a=summary"
- TITLE = "Test project"
-
-class CustomBase(webhooks.base):
- def getChanges(self, request):
- try:
- content = request.content.read()
- args = json.loads(bytes2unicode(content))
- except Exception as e:
- raise ValueError("Error loading JSON: " + str(e))
-
- args.setdefault("comments", "")
- args.setdefault("repository", "")
- args.setdefault("author", args.get("who", "unknown"))
-
- if args["category"] == "deploy_webhook":
- args = {
- "category": "deploy_webhook",
- "comments": "",
- "repository": "",
- "author": "unknown",
- "project": "TestProject",
- "properties": {
- "environment": args.get("environment", "integration"),
- "build": "test_{}.tar.gz".format(args.get("branch", "master"))
- }
- }
-
- return ([args], None)
-
-def deploy_hook_scheduler(project, timer=1):
- return schedulers.AnyBranchScheduler(
- change_filter=util.ChangeFilter(category="deploy_webhook", project=project),
- name="{}_deploy".format(project), treeStableTimer=timer, builderNames=["{}_deploy".format(project)])
-
-def configure(c):
- c["buildbotURL"] = E.BUILDBOT_URL
- c["www"]["port"] = E.SOCKET
-
- c["www"]["change_hook_dialects"]["base"] = {
- "custom_class": CustomBase
- }
- c['workers'].append(ilibvirt.LibVirtWorker("test-build",
- open(E.SECRETS_FILE + "/worker_password", "r").read().rstrip(),
- ilibvirt.Connection(E.LIBVIRT_URL),
- E.WORKER_HOST))
- c['workers'].append(ilibvirt.LibVirtWorker("test-deploy",
- open(E.SECRETS_FILE + "/worker_password", "r").read().rstrip(),
- ilibvirt.Connection(E.LIBVIRT_URL),
- E.WORKER_HOST))
-
- c['schedulers'].append(hook_scheduler("TestProject", timer=1))
- c['schedulers'].append(force_scheduler("force_test", ["TestProject_build"]))
- c['schedulers'].append(deploy_scheduler("deploy_test", ["TestProject_deploy"]))
- c['schedulers'].append(deploy_hook_scheduler("TestProject", timer=1))
-
- c['builders'].append(factory())
- c['builders'].append(deploy_factory())
-
- c['services'].append(SlackStatusPush(
- name="slack_status_test_project",
- builders=["TestProject_build", "TestProject_deploy"],
- serverUrl=open(E.SECRETS_FILE + "/slack_webhook", "r").read().rstrip()))
- c['services'].append(XMPPStatusPush(
- name="xmpp_status_test_project",
- builders=["TestProject_build", "TestProject_deploy"],
- recipients=E.XMPP_RECIPIENTS,
- password=open(E.SECRETS_FILE + "/notify_xmpp_password", "r").read().rstrip()))
-
-def factory():
- package = util.Interpolate("test_%(kw:clean_branch)s.tar.gz", clean_branch=clean_branch)
- package_dest = util.Interpolate("{}/test_%(kw:clean_branch)s.tar.gz".format(E.RELEASE_PATH), clean_branch=clean_branch)
- package_url = util.Interpolate("{}/test_%(kw:clean_branch)s.tar.gz".format(E.RELEASE_URL), clean_branch=clean_branch)
-
- factory = util.BuildFactory()
- factory.addStep(steps.Git(logEnviron=False,
- repourl=E.GIT_URL, mode="full", method="copy"))
- factory.addStep(steps.ShellCommand(name="env",
- logEnviron=False, command=["env"]))
- factory.addStep(steps.ShellCommand(name="pwd",
- logEnviron=False, command=["pwd"]))
- factory.addStep(steps.ShellCommand(name="true",
- logEnviron=False, command=["true"]))
- factory.addStep(steps.ShellCommand(name="echo",
- logEnviron=False, command=["echo", package]))
- factory.addSteps(package_and_upload(package, package_dest, package_url))
-
- return util.BuilderConfig(name="TestProject_build", workernames=["test-build"], factory=factory)
-
-
-def compute_build_infos():
- @util.renderer
- def compute(props):
- import re, hashlib
- build_file = props.getProperty("build")
- package_dest = "{}/{}".format(E.RELEASE_PATH, build_file)
- version = re.match(r"{0}_(.*).tar.gz".format("test"), build_file).group(1)
- with open(package_dest, "rb") as f:
- sha = hashlib.sha256(f.read()).hexdigest()
- return {
- "build_version": version,
- "build_hash": sha,
- }
- return compute
-
-@util.renderer
-def puppet_host(props):
- return E.PUPPET_HOST
-
-def deploy_factory():
- package_dest = util.Interpolate("{}/%(prop:build)s".format(E.RELEASE_PATH))
-
- factory = util.BuildFactory()
- factory.addStep(steps.MasterShellCommand(command=["test", "-f", package_dest]))
- factory.addStep(steps.SetProperties(properties=compute_build_infos()))
- factory.addStep(LdapPush(environment=util.Property("environment"),
- build_version=util.Property("build_version"),
- build_hash=util.Property("build_hash"),
- ldap_password=util.Secret("ldap")))
- factory.addStep(steps.MasterShellCommand(command=[
- "ssh", "-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no", "-o", "CheckHostIP=no", "-i", E.SSH_KEY_PATH, puppet_host]))
- return util.BuilderConfig(name="TestProject_deploy", workernames=["test-deploy"], factory=factory)
-
-from twisted.internet import defer
-from buildbot.process.buildstep import FAILURE
-from buildbot.process.buildstep import SUCCESS
-from buildbot.process.buildstep import BuildStep
-
-class LdapPush(BuildStep):
- name = "LdapPush"
- renderables = ["environment", "build_version", "build_hash", "ldap_password"]
-
- def __init__(self, **kwargs):
- self.environment = kwargs.pop("environment")
- self.build_version = kwargs.pop("build_version")
- self.build_hash = kwargs.pop("build_hash")
- self.ldap_password = kwargs.pop("ldap_password")
- self.ldap_host = kwargs.pop("ldap_host", E.LDAP_HOST)
- super().__init__(**kwargs)
-
- def run(self):
- import json
- from ldap3 import Reader, Writer, Server, Connection, ObjectDef
- server = Server(self.ldap_host)
- conn = Connection(server,
- user=E.LDAP_DN,
- password=self.ldap_password)
- conn.bind()
- obj = ObjectDef("immaePuppetClass", conn)
- r = Reader(conn, obj,
- "cn=test.{},{}".format(self.environment, E.LDAP_ROLES_BASE))
- r.search()
- if len(r) > 0:
- w = Writer.from_cursor(r)
- for value in w[0].immaePuppetJson.values:
- config = json.loads(value)
- if "test_version" in config:
- config["test_version"] = self.build_version
- config["test_sha256"] = self.build_hash
- w[0].immaePuppetJson -= value
- w[0].immaePuppetJson += json.dumps(config, indent=" ")
- w.commit()
- return defer.succeed(SUCCESS)
- return defer.succeed(FAILURE)
diff --git a/modules/private/certificates.nix b/modules/private/certificates.nix
deleted file mode 100644
index 9879946..0000000
--- a/modules/private/certificates.nix
+++ /dev/null
@@ -1,199 +0,0 @@
-{ lib, pkgs, config, name, ... }:
-{
- options.myServices.certificates = {
- enable = lib.mkEnableOption "enable certificates";
- webroot = lib.mkOption {
- readOnly = true;
- default = "/var/lib/acme/acme-challenges";
- };
- certConfig = lib.mkOption {
- default = {
- webroot = lib.mkForce null; # avoids creation of tmpfiles
- email = "ismael@bouya.org";
- postRun = builtins.concatStringsSep "\n" [
- (lib.optionalString config.services.httpd.Prod.enable "systemctl reload httpdProd.service")
- (lib.optionalString config.services.httpd.Tools.enable "systemctl reload httpdTools.service")
- (lib.optionalString config.services.httpd.Inte.enable "systemctl reload httpdInte.service")
- (lib.optionalString config.services.nginx.enable "systemctl reload nginx.service")
- ];
- extraLegoRenewFlags = [ "--reuse-key" ];
- keyType = lib.mkDefault "ec256"; # https://github.com/NixOS/nixpkgs/pull/83121
- };
- description = "Default configuration for certificates";
- };
- };
-
- config = lib.mkIf config.myServices.certificates.enable {
- services.nginx = {
- recommendedTlsSettings = true;
- virtualHosts = {
- "${config.hostEnv.fqdn}" = {
- acmeRoot = config.myServices.certificates.webroot;
- useACMEHost = name;
- forceSSL = true;
- };
- };
- };
- services.websites.certs = config.myServices.certificates.certConfig;
- myServices.databasesCerts = config.myServices.certificates.certConfig;
- myServices.ircCerts = config.myServices.certificates.certConfig;
-
- security.acme.acceptTerms = true;
- security.acme.preliminarySelfsigned = true;
-
- security.acme.certs = {
- "${name}" = config.myServices.certificates.certConfig // {
- domain = config.hostEnv.fqdn;
- };
- };
-
- users.users.acme = {
- uid = config.ids.uids.acme;
- group = "acme";
- description = "Acme user";
- };
- users.groups.acme = {
- gid = config.ids.gids.acme;
- };
-
- systemd.services = lib.attrsets.mapAttrs' (k: v:
- lib.attrsets.nameValuePair "acme-selfsigned-${k}" {
- wantedBy = [ "acme-selfsigned-certificates.target" ];
- script = lib.mkAfter ''
- cp $workdir/server.crt ${config.security.acme.certs."${k}".directory}/cert.pem
- chown '${v.user}:${v.group}' ${config.security.acme.certs."${k}".directory}/cert.pem
- chmod ${if v.allowKeysForGroup then "750" else "700"} ${config.security.acme.certs."${k}".directory}/cert.pem
-
- cp $workdir/ca.crt ${config.security.acme.certs."${k}".directory}/chain.pem
- chown '${v.user}:${v.group}' ${config.security.acme.certs."${k}".directory}/chain.pem
- chmod ${if v.allowKeysForGroup then "750" else "700"} ${config.security.acme.certs."${k}".directory}/chain.pem
- '';
- }
- ) config.security.acme.certs //
- lib.attrsets.mapAttrs' (k: data:
- lib.attrsets.nameValuePair "acme-${k}" {
- after = lib.mkAfter [ "bind.service" ];
- serviceConfig =
- let
- cfg = config.security.acme;
- hashOptions = let
- domains = builtins.concatStringsSep "," (
- [ data.domain ] ++ (builtins.attrNames data.extraDomains)
- );
- certOptions = builtins.concatStringsSep "," [
- (if data.ocspMustStaple then "must-staple" else "no-must-staple")
- ];
- in
- builtins.hashString "sha256" (builtins.concatStringsSep ";" [ data.keyType domains certOptions ]);
- accountsDir = "accounts-${data.keyType}";
- lpath = "acme/${k}";
- apath = "/var/lib/${lpath}";
- spath = "/var/lib/acme/.lego/${k}";
- fileMode = if data.allowKeysForGroup then "640" else "600";
- dirFileMode = if data.allowKeysForGroup then "750" else "700";
- globalOpts = [ "-d" data.domain "--email" data.email "--path" "." "--key-type" data.keyType ]
- ++ lib.optionals (cfg.acceptTerms) [ "--accept-tos" ]
- ++ lib.optionals (data.dnsProvider != null && !data.dnsPropagationCheck) [ "--dns.disable-cp" ]
- ++ lib.concatLists (lib.mapAttrsToList (name: root: [ "-d" name ]) data.extraDomains)
- ++ (if data.dnsProvider != null then [ "--dns" data.dnsProvider ] else [ "--http" "--http.webroot" config.myServices.certificates.webroot ])
- ++ lib.optionals (cfg.server != null || data.server != null) ["--server" (if data.server == null then cfg.server else data.server)];
- certOpts = lib.optionals data.ocspMustStaple [ "--must-staple" ];
- runOpts = lib.escapeShellArgs (globalOpts ++ [ "run" ] ++ certOpts);
- renewOpts = lib.escapeShellArgs (globalOpts ++
- [ "renew" "--days" (builtins.toString cfg.validMinDays) ] ++
- certOpts ++ data.extraLegoRenewFlags);
- forceRenewOpts = lib.escapeShellArgs (globalOpts ++
- [ "renew" "--days" "999" ] ++
- certOpts ++ data.extraLegoRenewFlags);
- keyName = builtins.replaceStrings ["*"] ["_"] data.domain;
- in {
- User = lib.mkForce "acme";
- Group = lib.mkForce "acme";
- WorkingDirectory = lib.mkForce spath;
- StateDirectory = lib.mkForce "acme/.lego/${k} acme/.lego/${accountsDir}";
- ExecStartPre =
- let
- script = pkgs.writeScript "acme-prestart" ''
- #!${pkgs.runtimeShell} -e
- install -m 0755 -o acme -g acme -d ${config.myServices.certificates.webroot}
- '';
- in
- lib.mkForce "+${script}";
- ExecStart = lib.mkForce (pkgs.writeScript "acme-start" ''
- #!${pkgs.runtimeShell} -e
- # lego doesn't check key type after initial creation, we
- # need to check for him
- if [ -L ${spath}/accounts -o -d ${spath}/accounts ]; then
- if [ -L ${spath}/accounts -a "$(readlink ${spath}/accounts)" != ../${accountsDir} ]; then
- ln -sfn ../${accountsDir} ${spath}/accounts
- mv -f ${spath}/certificates/${keyName}.key ${spath}/certificates/${keyName}.key.old
- fi
- else
- ln -s ../${accountsDir} ${spath}/accounts
- fi
- # check if domain changed: lego doesn't check by itself
- if [ ! -e ${spath}/certificates/${keyName}.crt -o ! -e ${spath}/certificates/${keyName}.key -o ! -e "${spath}/accounts/acme-v02.api.letsencrypt.org/${data.email}/account.json" ]; then
- ${pkgs.lego}/bin/lego ${runOpts}
- elif [ ! -f ${spath}/currentDomains -o "$(cat ${spath}/currentDomains)" != "${hashOptions}" ]; then
- ${pkgs.lego}/bin/lego ${forceRenewOpts}
- else
- ${pkgs.lego}/bin/lego ${renewOpts}
- fi
- '');
- ExecStartPost =
- let
- ISRG_Root_X1 = pkgs.fetchurl {
- url = "https://letsencrypt.org/certs/isrgrootx1.pem";
- sha256 = "1la36n2f31j9s03v847ig6ny9lr875q3g7smnq33dcsmf2i5gd92";
- };
- fix_ISRG_Root_X1 = pkgs.writeScript "fix-pem" ''
- for file in chain fullchain full; do
- if grep -q MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA "$file.pem"; then
- cat ${ISRG_Root_X1} | grep -v " CERTIFICATE" | \
- sed -i.bak -ne "/MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/ {r /dev/stdin" -e ":a; n; /Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5/ { b }; ba };p" $file.pem
- fi
- done
- '';
- script = pkgs.writeScript "acme-post-start" ''
- #!${pkgs.runtimeShell} -e
- install -m 0755 -o root -g root -d /var/lib/acme
- install -m 0${dirFileMode} -o ${data.user} -g ${data.group} -d /var/lib/acme/${k}
- cd /var/lib/acme/${k}
-
- # Test that existing cert is older than new cert
- KEY=${spath}/certificates/${keyName}.key
- KEY_CHANGED=no
- if [ -e $KEY -a $KEY -nt key.pem ]; then
- KEY_CHANGED=yes
- cp -p ${spath}/certificates/${keyName}.key key.pem
- cp -p ${spath}/certificates/${keyName}.crt fullchain.pem
- cp -p ${spath}/certificates/${keyName}.issuer.crt chain.pem
- ln -sf fullchain.pem cert.pem
- cat key.pem fullchain.pem > full.pem
- echo -n "${hashOptions}" > ${spath}/currentDomains
- fi
-
- ${fix_ISRG_Root_X1}
- chmod ${fileMode} *.pem
- chown '${data.user}:${data.group}' *.pem
-
- if [ "$KEY_CHANGED" = "yes" ]; then
- : # noop in case postRun is empty
- ${data.postRun}
- fi
- '';
- in
- lib.mkForce "+${script}";
- };
- }
- ) config.security.acme.certs //
- {
- httpdProd = lib.mkIf config.services.httpd.Prod.enable
- { after = [ "acme-selfsigned-certificates.target" ]; wants = [ "acme-selfsigned-certificates.target" ]; };
- httpdTools = lib.mkIf config.services.httpd.Tools.enable
- { after = [ "acme-selfsigned-certificates.target" ]; wants = [ "acme-selfsigned-certificates.target" ]; };
- httpdInte = lib.mkIf config.services.httpd.Inte.enable
- { after = [ "acme-selfsigned-certificates.target" ]; wants = [ "acme-selfsigned-certificates.target" ]; };
- };
- };
-}
diff --git a/modules/private/databases/default.nix b/modules/private/databases/default.nix
deleted file mode 100644
index 1241658..0000000
--- a/modules/private/databases/default.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ lib, config, nodes, ... }:
-let
- cfg = config.myServices.databases;
-in
-{
- options.myServices = {
- databases.enable = lib.mkEnableOption "my databases service";
- databasesCerts = lib.mkOption {
- description = "Default databases configurations for certificates as accepted by acme";
- };
- };
-
- config.myServices.databases = lib.mkIf cfg.enable {
- mariadb = {
- enable = true;
- ldapConfig = {
- inherit (config.myEnv.ldap) host base;
- inherit (config.myEnv.databases.mysql.pam) dn filter password;
- };
- replicationLdapConfig = {
- inherit (config.myEnv.ldap) host base;
- inherit (config.myEnv.servers.eldiron.ldap) dn password;
- };
- credentials.root = config.myEnv.databases.mysql.systemUsers.root;
- };
-
- openldap = {
- accessFile = ../../../nixops/secrets/ldap.conf;
- baseDn = config.myEnv.ldap.base;
- rootDn = config.myEnv.ldap.root_dn;
- rootPw = config.myEnv.ldap.root_pw;
- enable = true;
- };
-
- postgresql = {
- ldapConfig = {
- inherit (config.myEnv.ldap) host base;
- inherit (config.myEnv.databases.postgresql.pam) dn filter password;
- };
- replicationLdapConfig = {
- inherit (config.myEnv.ldap) host base;
- inherit (config.myEnv.servers.eldiron.ldap) dn password;
- };
- authorizedHosts = {
- };
- replicationHosts = {
- backup-2 = {
- ip4 = [config.myEnv.servers.backup-2.ips.main.ip4];
- ip6 = config.myEnv.servers.backup-2.ips.main.ip6;
- };
- };
- enable = true;
- };
-
- redis.enable = true;
- };
-}
diff --git a/modules/private/databases/mariadb.nix b/modules/private/databases/mariadb.nix
deleted file mode 100644
index 101eb3f..0000000
--- a/modules/private/databases/mariadb.nix
+++ /dev/null
@@ -1,182 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.databases.mariadb;
-in {
- options.myServices.databases = {
- mariadb = {
- enable = lib.mkOption {
- default = false;
- example = true;
- description = "Whether to enable mariadb database";
- type = lib.types.bool;
- };
- package = lib.mkOption {
- type = lib.types.package;
- default = pkgs.mariadb;
- description = ''
- Mariadb package to use.
- '';
- };
- credentials = lib.mkOption {
- default = {};
- description = "Credentials";
- type = lib.types.attrsOf lib.types.str;
- };
- ldapConfig = lib.mkOption {
- description = "LDAP configuration to allow PAM identification via LDAP";
- type = lib.types.submodule {
- options = {
- host = lib.mkOption { type = lib.types.str; };
- base = lib.mkOption { type = lib.types.str; };
- dn = lib.mkOption { type = lib.types.str; };
- password = lib.mkOption { type = lib.types.str; };
- filter = lib.mkOption { type = lib.types.str; };
- };
- };
- };
- replicationLdapConfig = lib.mkOption {
- description = "LDAP configuration to allow replication";
- type = lib.types.submodule {
- options = {
- host = lib.mkOption { type = lib.types.str; };
- base = lib.mkOption { type = lib.types.str; };
- dn = lib.mkOption { type = lib.types.str; };
- password = lib.mkOption { type = lib.types.str; };
- };
- };
- };
- dataDir = lib.mkOption {
- type = lib.types.path;
- default = "/var/lib/mysql";
- description = ''
- The directory where Mariadb stores its data.
- '';
- };
- # Output variables
- socketsDir = lib.mkOption {
- type = lib.types.path;
- default = "/run/mysqld";
- description = ''
- The directory where Mariadb puts sockets.
- '';
- };
- sockets = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- mysqld = "${cfg.socketsDir}/mysqld.sock";
- };
- readOnly = true;
- description = ''
- Mariadb sockets
- '';
- };
- };
- };
-
- config = lib.mkIf cfg.enable {
- networking.firewall.allowedTCPPorts = [ 3306 ];
-
- # for adminer, ssl is implemented with mysqli only, which is
- # currently disabled because it’s not compatible with pam.
- # Thus we need to generate two users for each 'remote': one remote
- # with SSL, and one localhost without SSL.
- # User identified by LDAP:
- # CREATE USER foo@% IDENTIFIED VIA pam USING 'mysql' REQUIRE SSL;
- # CREATE USER foo@localhost IDENTIFIED VIA pam USING 'mysql';
-
- # To create a user (host) for replication:
- # CREATE USER 'host'@'%' IDENTIFIED VIA pam USING 'mysql_replication' REQUIRE SSL;
- # GRANT REPLICATION SLAVE, REPLICATION CLIENT, RELOAD, LOCK TABLES, SELECT, SHOW VIEW ON *.* TO 'host'@'%';
- # (the lock/select grant permits to let the replication host handle
- # the initial fetch of the database)
- # % should be valid for both localhost (for cron dumps) and the origin host.
- services.mysql = {
- enable = true;
- package = cfg.package;
- dataDir = cfg.dataDir;
- settings = {
- mysqld = {
- ssl_ca = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
- ssl_key = "${config.security.acme.certs.mysql.directory}/key.pem";
- ssl_cert = "${config.security.acme.certs.mysql.directory}/fullchain.pem";
-
- # for replication
- log-bin = "mariadb-bin";
- server-id = "1";
-
- # this introduces a small delay before storing on disk, but
- # makes it order of magnitudes quicker
- innodb_flush_log_at_trx_commit = "0";
- };
- };
- };
-
- users.users.mysql.extraGroups = [ "keys" ];
- security.acme.certs."mysql" = config.myServices.databasesCerts // {
- user = "mysql";
- group = "mysql";
- domain = "db-1.immae.eu";
- postRun = ''
- systemctl restart mysql.service
- '';
- };
-
- secrets.keys = {
- "mysql/mysqldump" = {
- permissions = "0400";
- user = "root";
- group = "root";
- text = ''
- [mysqldump]
- user = root
- password = ${cfg.credentials.root}
- '';
- };
- "mysql/pam" = {
- permissions = "0400";
- user = "mysql";
- group = "mysql";
- text = with cfg.ldapConfig; ''
- host ${host}
- base ${base}
- binddn ${dn}
- bindpw ${password}
- pam_filter ${filter}
- ssl start_tls
- '';
- };
- "mysql/pam_replication" = {
- permissions = "0400";
- user = "mysql";
- group = "mysql";
- text = with cfg.replicationLdapConfig; ''
- host ${host}
- base ${base}
- binddn ${dn}
- bindpw ${password}
- pam_login_attribute cn
- ssl start_tls
- '';
- };
- };
-
- security.pam.services = let
- pam_ldap = "${pkgs.pam_ldap}/lib/security/pam_ldap.so";
- in {
- mysql = {
- text = ''
- # https://mariadb.com/kb/en/mariadb/pam-authentication-plugin/
- auth required ${pam_ldap} config=${config.secrets.fullPaths."mysql/pam"}
- account required ${pam_ldap} config=${config.secrets.fullPaths."mysql/pam"}
- '';
- };
- mysql_replication = {
- text = ''
- auth required ${pam_ldap} config=${config.secrets.fullPaths."mysql/pam_replication"}
- account required ${pam_ldap} config=${config.secrets.fullPaths."mysql/pam_replication"}
- '';
- };
- };
-
- };
-}
diff --git a/modules/private/databases/mariadb_replication.nix b/modules/private/databases/mariadb_replication.nix
deleted file mode 100644
index 68e6f7f..0000000
--- a/modules/private/databases/mariadb_replication.nix
+++ /dev/null
@@ -1,251 +0,0 @@
-{ pkgs, config, lib, ... }:
-let
- cfg = config.myServices.databasesReplication.mariadb;
-in
-{
- options.myServices.databasesReplication.mariadb = {
- enable = lib.mkEnableOption "Enable mariadb replication";
- base = lib.mkOption {
- type = lib.types.path;
- description = ''
- Base path to put the replications
- '';
- };
- hosts = lib.mkOption {
- default = {};
- description = ''
- Hosts to backup
- '';
- type = lib.types.attrsOf (lib.types.submodule {
- options = {
- package = lib.mkOption {
- type = lib.types.package;
- default = pkgs.mariadb;
- description = ''
- Mariadb package for this host
- '';
- };
- serverId = lib.mkOption {
- type = lib.types.int;
- description = ''
- Server id to use for replication cluster (must be unique among the cluster!)
- '';
- };
- host = lib.mkOption {
- type = lib.types.str;
- description = ''
- Host to connect to
- '';
- };
- port = lib.mkOption {
- type = lib.types.str;
- description = ''
- Port to connect to
- '';
- };
- user = lib.mkOption {
- type = lib.types.str;
- description = ''
- User to connect as
- '';
- };
- password = lib.mkOption {
- type = lib.types.str;
- description = ''
- Password to use
- '';
- };
- dumpUser = lib.mkOption {
- type = lib.types.str;
- description = ''
- User who can do a dump
- '';
- };
- dumpPassword = lib.mkOption {
- type = lib.types.str;
- description = ''
- Password for the dump user
- '';
- };
- };
- });
- };
- };
-
- config = lib.mkIf cfg.enable {
- users.users.mysql = {
- description = "MySQL server user";
- group = "mysql";
- uid = config.ids.uids.mysql;
- extraGroups = [ "keys" ];
- };
- users.groups.mysql.gid = config.ids.gids.mysql;
-
- secrets.keys = lib.listToAttrs (lib.flatten (lib.mapAttrsToList (name: hcfg: [
- (lib.nameValuePair "mysql_replication/${name}/slave_init_commands" {
- user = "mysql";
- group = "mysql";
- permissions = "0400";
- text = ''
- CHANGE MASTER TO master_host="${hcfg.host}", master_port=${hcfg.port}, master_user="${hcfg.user}", master_password="${hcfg.password}", master_ssl=1, master_use_gtid=slave_pos;
- START SLAVE;
- '';
- })
- (lib.nameValuePair "mysql_replication/${name}/mysqldump_remote" {
- permissions = "0400";
- user = "root";
- group = "root";
- text = ''
- [mysqldump]
- user = ${hcfg.user}
- password = ${hcfg.password}
- '';
- })
- (lib.nameValuePair "mysql_replication/${name}/mysqldump" {
- permissions = "0400";
- user = "root";
- group = "root";
- text = ''
- [mysqldump]
- user = ${hcfg.dumpUser}
- password = ${hcfg.dumpPassword}
- '';
- })
- (lib.nameValuePair "mysql_replication/${name}/client" {
- permissions = "0400";
- user = "mysql";
- group = "mysql";
- text = ''
- [client]
- user = ${hcfg.dumpUser}
- password = ${hcfg.dumpPassword}
- '';
- })
- ]) cfg.hosts));
-
- services.cron = {
- enable = true;
- systemCronJobs = lib.flatten (lib.mapAttrsToList (name: hcfg:
- let
- dataDir = "${cfg.base}/${name}/mysql";
- backupDir = "${cfg.base}/${name}/mysql_backup";
- backup_script = pkgs.writeScript "backup_mysql_${name}" ''
- #!${pkgs.stdenv.shell}
-
- set -euo pipefail
-
- filename=${backupDir}/$(${pkgs.coreutils}/bin/date -Iminutes).sql
- ${hcfg.package}/bin/mysqldump \
- --defaults-file=${config.secrets.fullPaths."mysql_replication/${name}/mysqldump"} \
- -S /run/mysqld_${name}/mysqld.sock \
- --gtid \
- --master-data \
- --flush-privileges \
- --ignore-database=netdata \
- --all-databases > $filename
- ${pkgs.gzip}/bin/gzip $filename
- '';
- u = pkgs.callPackage ./utils.nix {};
- cleanup_script = pkgs.writeScript "cleanup_mysql_${name}" (u.exponentialDumps "sql.gz" backupDir);
- in [
- "0 22,4,10,16 * * * root ${backup_script}"
- "0 3 * * * root ${cleanup_script}"
- ]) cfg.hosts);
- };
-
- system.activationScripts = lib.attrsets.mapAttrs' (name: hcfg:
- lib.attrsets.nameValuePair "mysql_replication_${name}" {
- deps = [ "users" "groups" ];
- text = ''
- install -m 0700 -o mysql -g mysql -d ${cfg.base}/${name}/mysql
- install -m 0700 -o mysql -g mysql -d ${cfg.base}/${name}/mysql_backup
- '';
- }) cfg.hosts;
-
- environment.etc = lib.attrsets.mapAttrs' (name: hcfg:
- lib.attrsets.nameValuePair "mysql/${name}_my.cnf" {
- text = ''
- [mysqld]
- skip-networking
- socket = /run/mysqld_${name}/mysqld.sock
- datadir = ${cfg.base}/${name}/mysql/
- log-bin = mariadb-bin
- server-id = ${builtins.toString hcfg.serverId}
- '';
- }
- ) cfg.hosts;
-
- systemd.services = lib.attrsets.mapAttrs' (name: hcfg:
- let
- dataDir = "${cfg.base}/${name}/mysql";
- in
- lib.attrsets.nameValuePair "mysql_backup_${name}" {
- description = "Mysql replication for ${name}";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
- restartTriggers = [ config.environment.etc."mysql/${name}_my.cnf".source ];
- unitConfig.RequiresMountsFor = dataDir;
-
- preStart = ''
- if ! test -e ${dataDir}/mysql; then
- if ! test -e ${dataDir}/initial.sql; then
- ${hcfg.package}/bin/mysqldump \
- --defaults-file=${config.secrets.fullPaths."mysql_replication/${name}/mysqldump_remote"} \
- -h ${hcfg.host} \
- -P ${hcfg.port} \
- --ssl \
- --gtid \
- --flush-privileges \
- --master-data \
- --all-databases > ${dataDir}/initial.sql
- fi
-
- ${hcfg.package}/bin/mysql_install_db \
- --defaults-file=/etc/mysql/${name}_my.cnf \
- --user=mysql \
- --datadir=${dataDir} \
- --basedir=${hcfg.package}
- fi
- '';
-
- serviceConfig = {
- User = "mysql";
- Group = "mysql";
- RuntimeDirectory = "mysqld_${name}";
- RuntimeDirectoryMode = "0755";
- SupplementaryGroups = "keys";
- PermissionsStartOnly = true;
- Type = "notify";
-
- ExecStart = "${hcfg.package}/bin/mysqld --defaults-file=/etc/mysql/${name}_my.cnf --user=mysql --datadir=${dataDir} --basedir=${hcfg.package}";
- ExecStartPost =
- let
- sql_before = pkgs.writeText "mysql-initial-before" ''
- DROP DATABASE test;
- INSTALL SONAME 'auth_pam';
- '';
- setupScript = pkgs.writeScript "mysql-setup" ''
- #!${pkgs.runtimeShell} -e
-
- if test -e ${dataDir}/initial.sql; then
- cat \
- ${sql_before} \
- ${dataDir}/initial.sql \
- ${config.secrets.fullPaths."mysql_replication/${name}/slave_init_commands"} \
- | ${hcfg.package}/bin/mysql \
- --defaults-file=/etc/mysql/${name}_my.cnf \
- -S /run/mysqld_${name}/mysqld.sock \
- --user=root
- rm -f ${dataDir}/initial.sql
- fi
- '';
- in
- "+${setupScript}";
- # initial dump can take a long time
- TimeoutStartSec="infinity";
- TimeoutStopSec = 120;
- };
- }) cfg.hosts;
- };
-}
-
diff --git a/modules/private/databases/openldap/default.nix b/modules/private/databases/openldap/default.nix
deleted file mode 100644
index d35aca0..0000000
--- a/modules/private/databases/openldap/default.nix
+++ /dev/null
@@ -1,147 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.databases.openldap;
- ldapConfig = let
- eldiron_schemas = pkgs.callPackage ./eldiron_schemas.nix {};
- in ''
- ${eldiron_schemas}
-
- pidfile ${cfg.pids.pid}
- argsfile ${cfg.pids.args}
-
- moduleload back_hdb
- backend hdb
-
- TLSCertificateFile ${config.security.acme.certs.ldap.directory}/cert.pem
- TLSCertificateKeyFile ${config.security.acme.certs.ldap.directory}/key.pem
- TLSCACertificateFile ${config.security.acme.certs.ldap.directory}/fullchain.pem
- TLSCACertificatePath ${pkgs.cacert.unbundled}/etc/ssl/certs/
- #This makes openldap crash
- #TLSCipherSuite DEFAULT
-
- sasl-host kerberos.immae.eu
- '';
-in
-{
- options.myServices.databases = {
- openldap = {
- enable = lib.mkOption {
- default = false;
- example = true;
- description = "Whether to enable ldap";
- type = lib.types.bool;
- };
- baseDn = lib.mkOption {
- type = lib.types.str;
- description = ''
- Base DN for LDAP
- '';
- };
- rootDn = lib.mkOption {
- type = lib.types.str;
- description = ''
- Root DN
- '';
- };
- rootPw = lib.mkOption {
- type = lib.types.str;
- description = ''
- Root (Hashed) password
- '';
- };
- accessFile = lib.mkOption {
- type = lib.types.path;
- description = ''
- The file path that defines the access
- '';
- };
- dataDir = lib.mkOption {
- type = lib.types.path;
- default = "/var/lib/openldap";
- description = ''
- The directory where Openldap stores its data.
- '';
- };
- socketsDir = lib.mkOption {
- type = lib.types.path;
- default = "/run/slapd";
- description = ''
- The directory where Openldap puts sockets and pid files.
- '';
- };
- # Output variables
- pids = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- pid = "${cfg.socketsDir}/slapd.pid";
- args = "${cfg.socketsDir}/slapd.args";
- };
- readOnly = true;
- description = ''
- Slapd pid files
- '';
- };
- };
- };
-
- config = lib.mkIf cfg.enable {
- secrets.keys = {
- "ldap/password" = {
- permissions = "0400";
- user = "openldap";
- group = "openldap";
- text = "rootpw ${cfg.rootPw}";
- };
- "ldap/access" = {
- permissions = "0400";
- user = "openldap";
- group = "openldap";
- text = builtins.readFile cfg.accessFile;
- };
- "ldap" = {
- permissions = "0500";
- user = "openldap";
- group = "openldap";
- isDir = true;
- };
- };
- users.users.openldap.extraGroups = [ "keys" ];
- networking.firewall.allowedTCPPorts = [ 636 389 ];
-
- security.acme.certs."ldap" = config.myServices.databasesCerts // {
- user = "openldap";
- group = "openldap";
- domain = "ldap.immae.eu";
- postRun = ''
- systemctl restart openldap.service
- '';
- };
-
- services.filesWatcher.openldap = {
- restart = true;
- paths = [ config.secrets.fullPaths."ldap" ];
- };
-
- services.openldap = {
- enable = true;
- dataDir = cfg.dataDir;
- urlList = [ "ldap://" "ldaps://" ];
- logLevel = "none";
- extraConfig = ldapConfig;
- extraDatabaseConfig = ''
- moduleload memberof
- overlay memberof
-
- moduleload syncprov
- overlay syncprov
- syncprov-checkpoint 100 10
-
- include ${config.secrets.fullPaths."ldap/access"}
- '';
- rootpwFile = config.secrets.fullPaths."ldap/password";
- suffix = cfg.baseDn;
- rootdn = cfg.rootDn;
- database = "hdb";
- };
- };
-}
diff --git a/modules/private/databases/openldap/eldiron_schemas.nix b/modules/private/databases/openldap/eldiron_schemas.nix
deleted file mode 100644
index cf45ebe..0000000
--- a/modules/private/databases/openldap/eldiron_schemas.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ fetchurl, openldap }:
-let
- kerberosSchema = fetchurl {
- url = "https://raw.githubusercontent.com/krb5/krb5/0bdd3b8058ed4ec9acc050e316bea86f6830b15f/src/plugins/kdb/ldap/libkdb_ldap/kerberos.schema";
- sha256 = "17fnkkf6s3lznsl7wp6914pqsc78d038rh38l638big8z608ksww";
- };
- puppetSchema = fetchurl {
- url = "https://raw.githubusercontent.com/puppetlabs/puppet/bf7c108825ffdb5ea89cf3e500d55d27ab64b8d2/ext/ldap/puppet.schema";
- sha256 = "11bjf5zfvqlim7p9vddcafs0wiq3v8ys77x8h6fbp9c6bdfh0awh";
- };
- schemas = [
- #"${openldap}/etc/schema/core.schema"
- #"${openldap}/etc/schema/cosine.schema"
- #"${openldap}/etc/schema/inetorgperson.schema"
- #"${openldap}/etc/schema/nis.schema"
- puppetSchema
- kerberosSchema
- ./immae.schema
- ];
-in
- builtins.concatStringsSep "\n" (map (v: "include ${v}") schemas)
diff --git a/modules/private/databases/openldap/immae.schema b/modules/private/databases/openldap/immae.schema
deleted file mode 100644
index d2ef972..0000000
--- a/modules/private/databases/openldap/immae.schema
+++ /dev/null
@@ -1,179 +0,0 @@
-# vim: set filetype=slapd:
-objectIdentifier Immaeroot 1.3.6.1.4.1.50071
-
-objectIdentifier Immae Immaeroot:2
-objectIdentifier ImmaeattributeType Immae:3
-objectIdentifier ImmaeobjectClass Immae:4
-
-# TT-RSS
-attributetype ( ImmaeattributeType:1 NAME 'immaeTtrssLogin'
- DESC 'login for TTRSS'
- EQUALITY caseIgnoreMatch
- SUBSTR caseIgnoreSubstringsMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-objectclass ( ImmaeobjectClass:1 NAME 'immaeTtrssClass'
- DESC 'Expansion of the existing object classes for ttrss'
- SUP top AUXILIARY
- MUST ( immaeTtrssLogin ) )
-
-# FTP
-attributetype ( ImmaeattributeType:2 NAME 'immaeFtpDirectory'
- DESC 'home directory for ftp'
- EQUALITY caseExactIA5Match
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( ImmaeattributeType:3 NAME 'immaeFtpUid'
- DESC 'user id for ftp'
- EQUALITY integerMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-
-attributetype ( ImmaeattributeType:4 NAME 'immaeFtpGid'
- DESC 'group id for ftp'
- EQUALITY integerMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-
-objectclass ( ImmaeobjectClass:2 NAME 'immaeFtpClass'
- DESC 'Expansion of the existing object classes for ftp'
- SUP top AUXILIARY
- MUST ( immaeFtpDirectory $ immaeFtpGid $ immaeFtpUid ) )
-
-
-# SSH keys
-attributetype ( ImmaeattributeType:5 NAME 'immaeSshKey'
- DESC 'OpenSSH Public key'
- EQUALITY octetStringMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
-
-objectClass ( ImmaeobjectClass:3 NAME 'immaeSshClass'
- DESC 'OpenSSH class'
- SUP top AUXILIARY
- MAy ( immaeSSHKey ) )
-
-# Specific access
-attributetype (ImmaeattributeType:6 NAME 'immaeAccessDn'
- EQUALITY distinguishedNameMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype (ImmaeattributeType:17 NAME 'immaeAccessWriteDn'
- EQUALITY distinguishedNameMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype (ImmaeattributeType:18 NAME 'immaeAccessReadSubtree'
- EQUALITY distinguishedNameMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-objectClass ( ImmaeobjectClass:4 NAME 'immaeAccessClass'
- DESC 'Access class'
- SUP top AUXILIARY
- MAY ( immaeAccessDn $ immaeAccessWriteDn $ immaeAccessReadSubtree ) )
-
-# Xmpp uid
-attributetype ( ImmaeattributeType:7 NAME 'immaeXmppUid'
- DESC 'user part for Xmpp'
- EQUALITY caseIgnoreMatch
- SUBSTR caseIgnoreSubstringsMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-objectclass ( ImmaeobjectClass:5 NAME 'immaeXmppClass'
- DESC 'Expansion of the existing object classes for XMPP'
- SUP top AUXILIARY
- MUST ( immaeXmppUid ) )
-
-# Postfix accounts
-attributetype ( ImmaeattributeType:8 NAME 'immaePostfixAddress'
- DESC 'the dovecot address to match as username'
- EQUALITY caseIgnoreIA5Match
- SUBSTR caseIgnoreIA5SubstringsMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( ImmaeattributeType:9 NAME 'immaePostfixHome'
- DESC 'the postfix home directory'
- EQUALITY caseExactIA5Match
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-attributetype ( ImmaeattributeType:10 NAME 'immaePostfixMail'
- DESC 'the dovecot mail location'
- EQUALITY caseExactIA5Match
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-attributetype ( ImmaeattributeType:11 NAME 'immaePostfixUid'
- DESC 'the dovecot uid'
- EQUALITY caseExactIA5Match
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-attributetype ( ImmaeattributeType:12 NAME 'immaePostfixGid'
- DESC 'the dovecot gid'
- EQUALITY caseExactIA5Match
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-objectclass ( ImmaeobjectClass:6 NAME 'immaePostfixClass'
- DESC 'Expansion of the existing object classes for Postfix'
- SUP top AUXILIARY
- MUST ( immaePostfixAddress $ immaePostfixHome $
- immaePostfixMail $ immaePostfixUid $ immaePostfixGid )
- )
-
-# Tinc informations
-# Domaine = une classe a part ou une partie du dn ?
-# attributetype ( ImmaeattributeType:13 NAME 'immaeTincIpSegment'
-# DESC 'the internal ip segment in tinc'
-# EQUALITY caseIgnoreIA5Match
-# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-#
-# attributetype ( ImmaeattributeType:14 NAME 'immaeTincSubdomain'
-# DESC 'the host subdomain'
-# EQUALITY caseIgnoreIA5Match
-# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-#
-# attributetype ( ImmaeattributeType:15 NAME 'immaeTincHostname'
-# DESC 'the host name'
-# EQUALITY caseIgnoreIA5Match
-# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-#
-# objectclass ( ImmaeobjectClass:7 NAME 'immaeTincHostClass'
-# DESC 'Expansion of the existing object classes for Tinc'
-# SUP top AUXILIARY
-# MUST ( immaeTincInternalIp $ immaeTincSubdomain $
-# immaeTincHostname )
-# )
-
-attributetype (ImmaeattributeType:16 NAME 'immaePuppetJson'
- DESC 'Puppet hiera json'
- EQUALITY octetStringMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
-
-objectclass ( ImmaeobjectClass:8 NAME 'immaePuppetClass'
- DESC 'Expansion of the existing object classes for Puppet'
- SUP top AUXILIARY
- MUST ( immaePuppetJson )
- )
-
-attributetype (ImmaeattributeType:19 NAME 'immaeTaskId'
- DESC 'Taskwarrior server Org:Name:Key'
- EQUALITY caseIgnoreMatch
- SUBSTR caseIgnoreSubstringsMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-objectclass ( ImmaeobjectClass:9 NAME 'immaeTaskClass'
- DESC 'Expansion of the existing object classes for Task'
- SUP top AUXILIARY
- MUST ( immaeTaskId )
- )
-
-# Peertube uid
-attributetype ( ImmaeattributeType:20 NAME 'immaePeertubeId'
- DESC 'login for Peertube'
- EQUALITY caseIgnoreMatch
- SUBSTR caseIgnoreSubstringsMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-objectclass ( ImmaeobjectClass:10 NAME 'immaePeertubeClass'
- DESC 'Expansion of the existing object classes for peertube'
- SUP top AUXILIARY
- MUST ( immaePeertubeId ) )
-
-
-# Last:
-# attributetype ( ImmaeattributeType:20 NAME 'immaePeertubeId'
-# objectclass ( ImmaeobjectClass:10 NAME 'immaePeertubeClass'
diff --git a/modules/private/databases/openldap_replication.nix b/modules/private/databases/openldap_replication.nix
deleted file mode 100644
index b456323..0000000
--- a/modules/private/databases/openldap_replication.nix
+++ /dev/null
@@ -1,166 +0,0 @@
-{ pkgs, config, lib, ... }:
-let
- cfg = config.myServices.databasesReplication.openldap;
- eldiron_schemas = pkgs.callPackage ./openldap/eldiron_schemas.nix {};
- ldapConfig = hcfg: name: pkgs.writeText "slapd.conf" ''
- include ${pkgs.openldap}/etc/schema/core.schema
- include ${pkgs.openldap}/etc/schema/cosine.schema
- include ${pkgs.openldap}/etc/schema/inetorgperson.schema
- include ${pkgs.openldap}/etc/schema/nis.schema
- ${eldiron_schemas}
- pidfile /run/slapd_${name}/slapd.pid
- argsfile /run/slapd_${name}/slapd.args
-
- moduleload back_hdb
- backend hdb
- database hdb
-
- suffix "${hcfg.base}"
- rootdn "cn=root,${hcfg.base}"
- directory ${cfg.base}/${name}/openldap
-
- index objectClass eq
- index uid pres,eq
- index entryUUID eq
-
- include ${config.secrets.fullPaths."openldap_replication/${name}/replication_config"}
- '';
-in
-{
- options.myServices.databasesReplication.openldap = {
- enable = lib.mkEnableOption "Enable openldap replication";
- base = lib.mkOption {
- type = lib.types.path;
- description = ''
- Base path to put the replications
- '';
- };
- hosts = lib.mkOption {
- default = {};
- description = ''
- Hosts to backup
- '';
- type = lib.types.attrsOf (lib.types.submodule {
- options = {
- package = lib.mkOption {
- type = lib.types.package;
- default = pkgs.openldap;
- description = ''
- Openldap package for this host
- '';
- };
- url = lib.mkOption {
- type = lib.types.str;
- description = ''
- Host to connect to
- '';
- };
- base = lib.mkOption {
- type = lib.types.str;
- description = ''
- Base DN to replicate
- '';
- };
- dn = lib.mkOption {
- type = lib.types.str;
- description = ''
- DN to use
- '';
- };
- password = lib.mkOption {
- type = lib.types.str;
- description = ''
- Password to use
- '';
- };
- };
- });
- };
- };
-
- config = lib.mkIf cfg.enable {
- users.users.openldap = {
- description = "Openldap database user";
- group = "openldap";
- uid = config.ids.uids.openldap;
- extraGroups = [ "keys" ];
- };
- users.groups.openldap.gid = config.ids.gids.openldap;
-
- secrets.keys = lib.listToAttrs (lib.flatten (lib.mapAttrsToList (name: hcfg: [
- (lib.nameValuePair "openldap_replication/${name}/replication_config" {
- user = "openldap";
- group = "openldap";
- permissions = "0400";
- text = ''
- syncrepl rid=000
- provider=${hcfg.url}
- type=refreshAndPersist
- searchbase="${hcfg.base}"
- retry="5 10 300 +"
- attrs="*,+"
- schemachecking=off
- bindmethod=simple
- binddn="${hcfg.dn}"
- credentials="${hcfg.password}"
- '';
- })
- (lib.nameValuePair "openldap_replication/${name}/replication_password" {
- user = "openldap";
- group = "openldap";
- permissions = "0400";
- text = hcfg.password;
- })
- ]) cfg.hosts));
-
- services.cron = {
- enable = true;
- systemCronJobs = lib.flatten (lib.mapAttrsToList (name: hcfg:
- let
- dataDir = "${cfg.base}/${name}/openldap";
- backupDir = "${cfg.base}/${name}/openldap_backup";
- backup_script = pkgs.writeScript "backup_openldap_${name}" ''
- #!${pkgs.stdenv.shell}
-
- ${hcfg.package}/bin/slapcat -b "${hcfg.base}" -f ${ldapConfig hcfg name} -l ${backupDir}/$(${pkgs.coreutils}/bin/date -Iminutes).ldif
- '';
- u = pkgs.callPackage ./utils.nix {};
- cleanup_script = pkgs.writeScript "cleanup_openldap_${name}" (u.exponentialDumps "ldif" backupDir);
- in [
- "0 22,4,10,16 * * * root ${backup_script}"
- "0 3 * * * root ${cleanup_script}"
- ]) cfg.hosts);
- };
-
- system.activationScripts = lib.attrsets.mapAttrs' (name: hcfg:
- lib.attrsets.nameValuePair "openldap_replication_${name}" {
- deps = [ "users" "groups" ];
- text = ''
- install -m 0700 -o openldap -g openldap -d ${cfg.base}/${name}/openldap
- install -m 0700 -o openldap -g openldap -d ${cfg.base}/${name}/openldap_backup
- '';
- }) cfg.hosts;
-
- systemd.services = lib.attrsets.mapAttrs' (name: hcfg:
- let
- dataDir = "${cfg.base}/${name}/openldap";
- in
- lib.attrsets.nameValuePair "openldap_backup_${name}" {
- description = "Openldap replication for ${name}";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
- unitConfig.RequiresMountsFor = dataDir;
-
- preStart = ''
- mkdir -p /run/slapd_${name}
- chown -R "openldap:openldap" /run/slapd_${name}
- '';
-
- serviceConfig = {
- ExecStart = "${hcfg.package}/libexec/slapd -d 0 -u openldap -g openldap -f ${ldapConfig hcfg name}";
- };
- }) cfg.hosts;
- };
-}
-
-
diff --git a/modules/private/databases/postgresql.nix b/modules/private/databases/postgresql.nix
deleted file mode 100644
index a6c4cc9..0000000
--- a/modules/private/databases/postgresql.nix
+++ /dev/null
@@ -1,228 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.databases.postgresql;
-in {
- options.myServices.databases = {
- postgresql = {
- enable = lib.mkOption {
- default = false;
- example = true;
- description = "Whether to enable postgresql database";
- type = lib.types.bool;
- };
- package = lib.mkOption {
- type = lib.types.package;
- default = pkgs.postgresql;
- description = ''
- Postgresql package to use.
- '';
- };
- ldapConfig = lib.mkOption {
- description = "LDAP configuration to allow PAM identification via LDAP";
- type = lib.types.submodule {
- options = {
- host = lib.mkOption { type = lib.types.str; };
- base = lib.mkOption { type = lib.types.str; };
- dn = lib.mkOption { type = lib.types.str; };
- password = lib.mkOption { type = lib.types.str; };
- filter = lib.mkOption { type = lib.types.str; };
- };
- };
- };
- replicationLdapConfig = lib.mkOption {
- description = "LDAP configuration to allow replication";
- type = lib.types.submodule {
- options = {
- host = lib.mkOption { type = lib.types.str; };
- base = lib.mkOption { type = lib.types.str; };
- dn = lib.mkOption { type = lib.types.str; };
- password = lib.mkOption { type = lib.types.str; };
- };
- };
- };
- authorizedHosts = lib.mkOption {
- default = {};
- description = "Hosts to allow connections from";
- type = lib.types.attrsOf (lib.types.listOf (lib.types.submodule {
- options = {
- method = lib.mkOption {
- default = "md5";
- type = lib.types.str;
- };
- username = lib.mkOption {
- default = "all";
- type = lib.types.str;
- };
- database = lib.mkOption {
- default = "all";
- type = lib.types.str;
- };
- ip4 = lib.mkOption {
- default = [];
- type = lib.types.listOf lib.types.str;
- };
- ip6 = lib.mkOption {
- default = [];
- type = lib.types.listOf lib.types.str;
- };
- };
- }));
- };
- replicationHosts = lib.mkOption {
- default = {};
- description = "Hosts to allow replication from";
- type = lib.types.attrsOf (lib.types.submodule {
- options = {
- ip4 = lib.mkOption {
- type = lib.types.listOf lib.types.str;
- };
- ip6 = lib.mkOption {
- type = lib.types.listOf lib.types.str;
- };
- };
- });
- };
- # Output variables
- socketsDir = lib.mkOption {
- type = lib.types.path;
- default = "/run/postgresql";
- description = ''
- The directory where Postgresql puts sockets.
- '';
- readOnly = true;
- };
- };
- };
-
- config = lib.mkIf cfg.enable {
- networking.firewall.allowedTCPPorts = [ 5432 ];
-
- security.acme.certs."postgresql" = config.myServices.databasesCerts // {
- user = "postgres";
- group = "postgres";
- domain = "db-1.immae.eu";
- postRun = ''
- systemctl reload postgresql.service
- '';
- };
-
- systemd.services.postgresql.serviceConfig = {
- SupplementaryGroups = "keys";
- };
- systemd.services.postgresql.postStart = lib.mkAfter ''
- # This line is already defined in 19.09
- PSQL="${pkgs.sudo}/bin/sudo -u postgres psql --port=5432"
-
- ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (role: _: ''
- $PSQL -tAc "SELECT 1 FROM pg_roles WHERE rolname='${role}'" \
- | grep -q 1 \
- || $PSQL -tAc 'CREATE USER "${role}" WITH REPLICATION'
- '') cfg.replicationHosts)}
-
- ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (role: _:
- let
- sname = builtins.replaceStrings ["-"] ["_"] role;
- in
- ''
- $PSQL -tAc "SELECT 1 FROM pg_replication_slots WHERE slot_name='${sname}'" \
- | grep -q 1 \
- || $PSQL -tAc "SELECT * FROM pg_create_physical_replication_slot('${sname}')"
- '') cfg.replicationHosts)}
- '';
-
- services.postgresql = {
- enable = true;
- package = cfg.package;
- enableTCPIP = true;
- extraConfig = ''
- max_connections = 100
- wal_level = logical
- shared_buffers = 512MB
- work_mem = 10MB
- max_wal_size = 1GB
- min_wal_size = 80MB
- log_timezone = 'Europe/Paris'
- datestyle = 'iso, mdy'
- timezone = 'Europe/Paris'
- lc_messages = 'en_US.UTF-8'
- lc_monetary = 'en_US.UTF-8'
- lc_numeric = 'en_US.UTF-8'
- lc_time = 'en_US.UTF-8'
- default_text_search_config = 'pg_catalog.english'
- # this introduces a small delay before storing on disk, but
- # makes it order of magnitudes quicker
- synchronous_commit = off
- ssl = on
- ssl_cert_file = '${config.security.acme.certs.postgresql.directory}/fullchain.pem'
- ssl_key_file = '${config.security.acme.certs.postgresql.directory}/key.pem'
- '';
- authentication = let
- hosts = builtins.concatStringsSep "\n" (
- lib.lists.flatten (lib.mapAttrsToList (k: vs: map (v:
- map (ip6: "hostssl ${v.database} ${v.username} ${ip6}/128 ${v.method}") v.ip6
- ++ map (ip4: "hostssl ${v.database} ${v.username} ${ip4}/32 ${v.method}") v.ip4
- ) vs) cfg.authorizedHosts
- ));
- replication = builtins.concatStringsSep "\n" (
- lib.lists.flatten (lib.mapAttrsToList (k: v:
- map (ip6: "hostssl replication ${k} ${ip6}/128 pam pamservice=postgresql_replication") v.ip6
- ++ map (ip4: "hostssl replication ${k} ${ip4}/32 pam pamservice=postgresql_replication") v.ip4
- ) cfg.replicationHosts
- ));
- in ''
- local all postgres ident
- local all all md5
- ${hosts}
- hostssl all all all pam
- ${replication}
- '';
- };
-
- secrets.keys = {
- "postgresql/pam" = {
- permissions = "0400";
- group = "postgres";
- user = "postgres";
- text = with cfg.ldapConfig; ''
- host ${host}
- base ${base}
- binddn ${dn}
- bindpw ${password}
- pam_filter ${filter}
- ssl start_tls
- '';
- };
- "postgresql/pam_replication" = {
- permissions = "0400";
- group = "postgres";
- user = "postgres";
- text = with cfg.replicationLdapConfig; ''
- host ${host}
- base ${base}
- binddn ${dn}
- bindpw ${password}
- pam_login_attribute cn
- ssl start_tls
- '';
- };
- };
-
- security.pam.services = let
- pam_ldap = "${pkgs.pam_ldap}/lib/security/pam_ldap.so";
- in {
- postgresql = {
- text = ''
- auth required ${pam_ldap} config=${config.secrets.fullPaths."postgresql/pam"}
- account required ${pam_ldap} config=${config.secrets.fullPaths."postgresql/pam"}
- '';
- };
- postgresql_replication = {
- text = ''
- auth required ${pam_ldap} config=${config.secrets.fullPaths."postgresql/pam_replication"}
- account required ${pam_ldap} config=${config.secrets.fullPaths."postgresql/pam_replication"}
- '';
- };
- };
- };
-}
-
diff --git a/modules/private/databases/postgresql_replication.nix b/modules/private/databases/postgresql_replication.nix
deleted file mode 100644
index 135bbed..0000000
--- a/modules/private/databases/postgresql_replication.nix
+++ /dev/null
@@ -1,182 +0,0 @@
-{ pkgs, config, lib, ... }:
-let
- cfg = config.myServices.databasesReplication.postgresql;
-in
-{
- options.myServices.databasesReplication.postgresql = {
- enable = lib.mkEnableOption "Enable postgresql replication";
- base = lib.mkOption {
- type = lib.types.path;
- description = ''
- Base path to put the replications
- '';
- };
- mainPackage = lib.mkOption {
- type = lib.types.package;
- default = pkgs.postgresql;
- description = ''
- Postgresql package available in shell
- '';
- };
- hosts = lib.mkOption {
- default = {};
- description = ''
- Hosts to backup
- '';
- type = lib.types.attrsOf (lib.types.submodule {
- options = {
- package = lib.mkOption {
- type = lib.types.package;
- default = pkgs.postgresql;
- description = ''
- Postgresql package for this host
- '';
- };
- slot = lib.mkOption {
- type = lib.types.str;
- description = ''
- Slot to use for replication
- '';
- };
- connection = lib.mkOption {
- type = lib.types.str;
- description = ''
- Connection string to access the psql master
- '';
- };
- };
- });
- };
- };
-
- config = lib.mkIf cfg.enable {
- users.users.postgres = {
- name = "postgres";
- uid = config.ids.uids.postgres;
- group = "postgres";
- description = "PostgreSQL server user";
- home = "/var/lib/postgresql";
- useDefaultShell = true;
- extraGroups = [ "keys" ];
- };
- users.groups.postgres.gid = config.ids.gids.postgres;
- environment.systemPackages = [ cfg.mainPackage ];
-
- secrets.keys = lib.listToAttrs (lib.flatten (lib.mapAttrsToList (name: hcfg: [
- (lib.nameValuePair "postgresql_replication/${name}/recovery.conf" {
- user = "postgres";
- group = "postgres";
- permissions = "0400";
- text = ''
- standby_mode = on
- primary_conninfo = '${hcfg.connection}?sslmode=require'
- primary_slot_name = '${hcfg.slot}'
- '';
- })
- (lib.nameValuePair "postgresql_replication/${name}/connection_string" {
- user = "postgres";
- group = "postgres";
- permissions = "0400";
- text = hcfg.connection;
- })
- (lib.nameValuePair "postgresql_replication/${name}/postgresql.conf" {
- user = "postgres";
- group = "postgres";
- permissions = "0400";
- text = let
- dataDir = "${cfg.base}/${name}/postgresql";
- in ''
- listen_addresses = '''
- unix_socket_directories = '${dataDir}'
- data_directory = '${dataDir}'
- wal_level = logical
- '';
- })
- ]) cfg.hosts));
-
- services.cron = {
- enable = true;
- systemCronJobs = lib.flatten (lib.mapAttrsToList (name: hcfg:
- let
- dataDir = "${cfg.base}/${name}/postgresql";
- backupDir = "${cfg.base}/${name}/postgresql_backup";
- backup_script = pkgs.writeScript "backup_psql_${name}" ''
- #!${pkgs.stdenv.shell}
-
- set -euo pipefail
-
- resume_replication() {
- ${hcfg.package}/bin/psql -h ${dataDir} -c "SELECT pg_wal_replay_resume();" >/dev/null || echo "impossible to resume replication"
- }
-
- trap resume_replication EXIT
-
- ${hcfg.package}/bin/psql -h ${dataDir} -c "SELECT pg_wal_replay_pause();" >/dev/null || (echo "impossible to pause replication" && false)
-
- ${hcfg.package}/bin/pg_dumpall -h ${dataDir} -f ${backupDir}/$(${pkgs.coreutils}/bin/date -Iminutes).sql
- '';
- u = pkgs.callPackage ./utils.nix {};
- cleanup_script = pkgs.writeScript "cleanup_postgresql_${name}" (u.keepLastNDumps "sql" backupDir 6);
- in [
- "0 22,4,10,16 * * * postgres ${backup_script}"
- "0 3 * * * postgres ${cleanup_script}"
- ]) cfg.hosts);
- };
-
- system.activationScripts = lib.attrsets.mapAttrs' (name: hcfg:
- lib.attrsets.nameValuePair "psql_replication_${name}" {
- deps = [ "users" ];
- text = ''
- install -m 0700 -o postgres -g postgres -d ${cfg.base}/${name}/postgresql
- install -m 0700 -o postgres -g postgres -d ${cfg.base}/${name}/postgresql_backup
- '';
- }) cfg.hosts;
-
- systemd.services = lib.attrsets.mapAttrs' (name: hcfg:
- let
- dataDir = "${cfg.base}/${name}/postgresql";
- in
- lib.attrsets.nameValuePair "postgresql_backup_${name}" {
- description = "Postgresql replication for ${name}";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
-
- environment.PGDATA = dataDir;
- path = [ hcfg.package ];
-
- preStart = ''
- if ! test -e ${dataDir}/PG_VERSION; then
- mkdir -m 0700 -p ${dataDir}
- chown -R postgres:postgres ${dataDir}
- fi
- '';
- script = let
- fp = n: config.secrets.fullPaths."postgresql_replication/${name}/${n}";
- in ''
- if ! test -e ${dataDir}/PG_VERSION; then
- pg_basebackup -d $(cat ${fp "connection_string"}) -D ${dataDir} -S ${hcfg.slot}
- fi
- ln -sfn ${fp "recovery.conf"} ${dataDir}/recovery.conf
- ln -sfn ${fp "postgresql.conf"} ${dataDir}/postgresql.conf
-
- exec postgres
- '';
-
- serviceConfig = {
- ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
- User = "postgres";
- Group = "postgres";
- PermissionsStartOnly = true;
- RuntimeDirectory = "postgresql";
- Type = "notify";
-
- KillSignal = "SIGINT";
- KillMode = "mixed";
- # basebackup can take a long time
- TimeoutStartSec="infinity";
- TimeoutStopSec = 120;
- };
- unitConfig.RequiresMountsFor = dataDir;
- }) cfg.hosts;
- };
-}
diff --git a/modules/private/databases/redis.nix b/modules/private/databases/redis.nix
deleted file mode 100644
index 685fa46..0000000
--- a/modules/private/databases/redis.nix
+++ /dev/null
@@ -1,133 +0,0 @@
-{ lib, config, pkgs, ... }:
-let
- cfg = config.myServices.databases.redis;
-in {
- options.myServices.databases.redis = {
- enable = lib.mkOption {
- default = false;
- example = true;
- description = "Whether to enable redis database";
- type = lib.types.bool;
- };
- socketsDir = lib.mkOption {
- type = lib.types.path;
- default = "/run/redis";
- description = ''
- The directory where Redis puts sockets.
- '';
- };
- # Output variables
- sockets = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- redis = "${cfg.socketsDir}/redis.sock";
- };
- readOnly = true;
- description = ''
- Redis sockets
- '';
- };
- };
-
- config = lib.mkIf cfg.enable {
- users.users.redis.uid = config.ids.uids.redis;
- users.groups.redis.gid = config.ids.gids.redis;
- services.redis = rec {
- enable = true;
- bind = "127.0.0.1";
- unixSocket = cfg.sockets.redis;
- extraConfig = ''
- unixsocketperm 777
- maxclients 1024
- '';
- };
- systemd.services.redis.serviceConfig.Slice = "redis.slice";
-
- services.spiped = {
- enable = true;
- config.redis = {
- decrypt = true;
- source = "0.0.0.0:16379";
- target = "/run/redis/redis.sock";
- keyfile = config.secrets.fullPaths."redis/spiped_keyfile";
- };
- };
- systemd.services.spiped_redis = {
- description = "Secure pipe 'redis'";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
-
- serviceConfig = {
- Slice = "redis.slice";
- Restart = "always";
- User = "spiped";
- PermissionsStartOnly = true;
- SupplementaryGroups = "keys";
- };
-
- script = "exec ${pkgs.spiped}/bin/spiped -F `cat /etc/spiped/redis.spec`";
- };
-
- services.filesWatcher.predixy = {
- restart = true;
- paths = [ config.secrets.fullPaths."redis/predixy.conf" ];
- };
-
- networking.firewall.allowedTCPPorts = [ 7617 16379 ];
- secrets.keys = {
- "redis/predixy.conf" = {
- user = "redis";
- group = "redis";
- permissions = "0400";
- text = ''
- Name Predixy
- Bind 127.0.0.1:7617
- ClientTimeout 300
- WorkerThreads 1
-
- Authority {
- Auth "${config.myEnv.databases.redis.predixy.read}" {
- Mode read
- }
- }
-
- StandaloneServerPool {
- Databases 16
- RefreshMethod fixed
- Group shard001 {
- + ${config.myEnv.databases.redis.socket}
- }
- }
- '';
- };
- "redis/spiped_keyfile" = {
- user = "spiped";
- group = "spiped";
- permissions = "0400";
- text = config.myEnv.databases.redis.spiped_key;
- };
- };
-
- systemd.slices.redis = {
- description = "Redis slice";
- };
-
- systemd.services.predixy = {
- description = "Redis proxy";
- wantedBy = [ "multi-user.target" ];
- after = [ "redis.service" ];
-
- serviceConfig = {
- Slice = "redis.slice";
- User = "redis";
- Group = "redis";
- SupplementaryGroups = "keys";
- Type = "simple";
-
- ExecStart = "${pkgs.predixy}/bin/predixy ${config.secrets.fullPaths."redis/predixy.conf"}";
- };
-
- };
- };
-}
-
diff --git a/modules/private/databases/redis_replication.nix b/modules/private/databases/redis_replication.nix
deleted file mode 100644
index 9e48939..0000000
--- a/modules/private/databases/redis_replication.nix
+++ /dev/null
@@ -1,171 +0,0 @@
-{ pkgs, config, lib, ... }:
-let
- cfg = config.myServices.databasesReplication.redis;
-in
-{
- options.myServices.databasesReplication.redis = {
- enable = lib.mkEnableOption "Enable redis replication";
- base = lib.mkOption {
- type = lib.types.path;
- description = ''
- Base path to put the replications
- '';
- };
- hosts = lib.mkOption {
- default = {};
- description = ''
- Hosts to backup
- '';
- type = lib.types.attrsOf (lib.types.submodule {
- options = {
- package = lib.mkOption {
- type = lib.types.package;
- default = pkgs.redis;
- description = ''
- Redis package for this host
- '';
- };
- host = lib.mkOption {
- type = lib.types.str;
- description = ''
- Host to connect to
- '';
- };
- port = lib.mkOption {
- type = lib.types.str;
- description = ''
- Port to connect to
- '';
- };
- password = lib.mkOption {
- type = lib.types.nullOr lib.types.str;
- default = null;
- description = ''
- Password to use
- '';
- };
- };
- });
- };
- };
-
- config = lib.mkIf cfg.enable {
- users.users.redis = {
- description = "Redis database user";
- group = "redis";
- uid = config.ids.uids.redis;
- extraGroups = [ "keys" ];
- };
- users.groups.redis.gid = config.ids.gids.redis;
-
- services.spiped = { # sync from eldiron
- enable = true;
- config.redis = {
- encrypt = true;
- source = "127.0.0.1:16379";
- target = "${config.myEnv.servers.eldiron.ips.main.ip4}:16379";
- keyfile = config.secrets.fullPaths."redis/spiped_eldiron_keyfile";
- };
- };
-
- secrets.keys = lib.mapAttrs' (name: hcfg:
- lib.nameValuePair "redis_replication/${name}/config" {
- user = "redis";
- group = "redis";
- permissions = "0400";
- text = ''
- pidfile ${cfg.base}/${name}/redis/redis.pid
- port 0
- unixsocket /run/redis_${name}/redis.sock
- loglevel notice
- logfile /dev/null
- syslog-enabled yes
- databases 16
- save 900 1
- save 300 10
- save 60 10000
- dbfilename dump.rdb
- dir ${cfg.base}/${name}/redis/
- slaveof ${hcfg.host} ${hcfg.port}
- ${if hcfg.password != null then "masterauth ${hcfg.password}" else ""}
- appendOnly no
- appendfsync everysec
- slowlog-log-slower-than 10000
- slowlog-max-len 128
- unixsocketperm 777
- maxclients 1024
- '';
- }
- ) cfg.hosts // {
- "redis/spiped_eldiron_keyfile" = { # For eldiron only
- user = "spiped";
- group = "spiped";
- permissions = "0400";
- text = config.myEnv.databases.redis.spiped_key;
- };
- };
-
- services.cron = {
- enable = true;
- systemCronJobs = lib.flatten (lib.mapAttrsToList (name: hcfg:
- let
- dataDir = "${cfg.base}/${name}/redis";
- backupDir = "${cfg.base}/${name}/redis_backup";
- backup_script = pkgs.writeScript "backup_redis_${name}" ''
- #!${pkgs.stdenv.shell}
-
- ${pkgs.coreutils}/bin/cp ${cfg.base}/${name}/redis/dump.rdb \
- ${backupDir}/$(${pkgs.coreutils}/bin/date -Iminutes).rdb
- '';
- u = pkgs.callPackage ./utils.nix {};
- cleanup_script = pkgs.writeScript "cleanup_redis_${name}" (u.exponentialDumps "rdb" backupDir);
- in [
- "0 22,4,10,16 * * * root ${backup_script}"
- "0 3 * * * root ${cleanup_script}"
- ]) cfg.hosts);
- };
-
- system.activationScripts = lib.attrsets.mapAttrs' (name: hcfg:
- lib.attrsets.nameValuePair "redis_replication_${name}" {
- deps = [ "users" "groups" ];
- text = ''
- install -m 0700 -o redis -g redis -d ${cfg.base}/${name}/redis
- install -m 0700 -o redis -g redis -d ${cfg.base}/${name}/redis_backup
- '';
- }) cfg.hosts;
-
- systemd.services = {
- spiped_redis = { # For eldiron
- description = "Secure pipe 'redis'";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
-
- serviceConfig = {
- Restart = "always";
- User = "spiped";
- PermissionsStartOnly = true;
- SupplementaryGroups = "keys";
- };
-
- script = "exec ${pkgs.spiped}/bin/spiped -F `cat /etc/spiped/redis.spec`";
- };
- } // lib.attrsets.mapAttrs' (name: hcfg:
- let
- dataDir = "${cfg.base}/${name}/redis";
- in
- lib.attrsets.nameValuePair "redis_backup_${name}" {
- description = "Redis replication for ${name}";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
- unitConfig.RequiresMountsFor = dataDir;
-
- serviceConfig = {
- ExecStart = "${hcfg.package}/bin/redis-server ${config.secrets.fullPaths."redis_replication/${name}/config"}";
- User = "redis";
- RuntimeDirectory = "redis_${name}";
- };
- }) cfg.hosts;
- };
-}
-
-
diff --git a/modules/private/databases/utils.nix b/modules/private/databases/utils.nix
deleted file mode 100644
index 47988fc..0000000
--- a/modules/private/databases/utils.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ pkgs }:
-{
- keepLastNDumps = ext: backupDir: n: ''
- #!${pkgs.stdenv.shell}
-
- cd ${backupDir}
- ${pkgs.coreutils}/bin/rm -f \
- $(${pkgs.coreutils}/bin/ls -1 *.${ext} \
- | ${pkgs.coreutils}/bin/sort -r \
- | ${pkgs.gnused}/bin/sed -e '1,${builtins.toString n}d')
- '';
- exponentialDumps = ext: backupDir: let
- log2rotateSrc = builtins.fetchGit {
- url = "https://github.com/avian2/pylog2rotate";
- ref = "master";
- rev = "061f0564757289d3bea553b16f8fd5c4a0319c5e";
- };
- log2rotate = pkgs.writeScript "log2rotate" ''
- #!${pkgs.python3}/bin/python
-
- ${builtins.readFile "${log2rotateSrc}/log2rotate.py"}
- '';
- in ''
- #!${pkgs.stdenv.shell}
-
- cd ${backupDir}
- ${pkgs.coreutils}/bin/rm -f $(ls -1 *.${ext} | grep -v 'T22:' | sort -r | sed -e '1,12d')
- ${pkgs.coreutils}/bin/rm -f $(ls -1 *T22*.${ext} | ${log2rotate} --skip 7 --fuzz 7 --delete --format='%Y-%m-%dT%H:%M+00:00.${ext}')
- '';
-}
diff --git a/modules/private/default.nix b/modules/private/default.nix
deleted file mode 100644
index 9108a92..0000000
--- a/modules/private/default.nix
+++ /dev/null
@@ -1,136 +0,0 @@
-let
-set = {
- # adatped from nixpkgs/nixos/modules/services/web-servers/apache-httpd/default.nix
- httpdInte = import ../websites/httpd-service-builder.nix { httpdName = "Inte"; withUsers = false; };
- httpdProd = import ../websites/httpd-service-builder.nix { httpdName = "Prod"; withUsers = false; };
- httpdTools = import ../websites/httpd-service-builder.nix { httpdName = "Tools"; withUsers = true; };
-
- databases = ./databases;
- mariadb = ./databases/mariadb.nix;
- openldap = ./databases/openldap;
- postgresql = ./databases/postgresql.nix;
- redis = ./databases/redis.nix;
- postgresqlReplication = ./databases/postgresql_replication.nix;
- mariadbReplication = ./databases/mariadb_replication.nix;
- redisReplication = ./databases/redis_replication.nix;
- openldapReplication = ./databases/openldap_replication.nix;
-
- websites = ./websites;
- gemini = ./gemini;
-
-
- # Personal websites
- bakeerCloud = ./websites/bakeer/cloud.nix;
-
- capitainesLandingPages = ./websites/capitaines/landing_pages.nix;
-
- chloeInte = ./websites/chloe/integration.nix;
- chloeProd = ./websites/chloe/production.nix;
-
- cipcaSympa = ./websites/cip-ca/sympa.nix;
-
- connexionswingInte = ./websites/connexionswing/integration.nix;
- connexionswingProd = ./websites/connexionswing/production.nix;
-
- deniseDenisejeromeProd = ./websites/denise/denisejerome.nix;
- deniseEvariste = ./websites/denise/evariste.nix;
- deniseOMS = ./websites/denise/oms.nix;
- deniseBingo = ./websites/denise/bingo.nix;
- deniseAventuriers = ./websites/denise/aventuriers.nix;
- deniseProduction = ./websites/denise/production.nix;
-
- emiliaMoodle = ./websites/emilia/moodle.nix;
- emiliaAtelierFringant = ./websites/emilia/atelierfringant.nix;
-
- florianApp = ./websites/florian/app.nix;
- florianInte = ./websites/florian/integration.nix;
- florianProd = ./websites/florian/production.nix;
-
- immaeProd = ./websites/immae/production.nix;
- immaeRelease = ./websites/immae/release.nix;
- immaeTemp = ./websites/immae/temp.nix;
-
- isabelleAtenInte = ./websites/isabelle/aten_integration.nix;
- isabelleAtenProd = ./websites/isabelle/aten_production.nix;
- isabelleIridologie = ./websites/isabelle/iridologie.nix;
-
- jeromeNaturaloutil = ./websites/jerome/naturaloutil.nix;
-
- leilaProd = ./websites/leila/production.nix;
-
- ludivineInte = ./websites/ludivine/integration.nix;
- ludivineProd = ./websites/ludivine/production.nix;
-
- nassimeProd = ./websites/nassime/production.nix;
-
- nathVillon = ./websites/nath/villon.nix;
-
- papaMaisonBbc = ./websites/papa/maison_bbc.nix;
- papaSurveillance = ./websites/papa/surveillance.nix;
-
- patrickFodellaEcolyeu = ./websites/patrick_fodella/ecolyeu.nix;
- patrickFodellaAltermondia = ./websites/patrick_fodella/altermondia.nix;
-
- piedsjalouxInte = ./websites/piedsjaloux/integration.nix;
- piedsjalouxProd = ./websites/piedsjaloux/production.nix;
-
- ressourcerieBanonProd = ./websites/ressourcerie_banon/production.nix;
- ressourcerieBanonCloud = ./websites/ressourcerie_banon/cloud.nix;
- ressourcerieBanonCryptpad = ./websites/ressourcerie_banon/cryptpad.nix;
-
- richieProd = ./websites/richie/production.nix;
-
- sydenPeertube = ./websites/syden/peertube.nix;
-
- teliotortayProd = ./websites/telio_tortay/production.nix;
-
- # Tools
- assetsTools = ./websites/tools/assets;
- cloudTool = ./websites/tools/cloud;
- cloudFarmTool = ./websites/tools/cloud/farm.nix;
- cryptpadTool = ./websites/tools/cryptpad;
- cryptpadFarmTool = ./websites/tools/cryptpad/farm.nix;
- commentoTool = ./websites/tools/commento;
- davTool = ./websites/tools/dav;
- vpnTool = ./websites/tools/vpn;
- dbTool = ./websites/tools/db;
- diasporaTool = ./websites/tools/diaspora;
- etherTool = ./websites/tools/ether;
- gitTool = ./websites/tools/git;
- imTool = ./websites/tools/im;
- mastodonTool = ./websites/tools/mastodon;
- mgoblinTool = ./websites/tools/mgoblin;
- peertubeTool = ./websites/tools/peertube;
- performanceTool = ./websites/tools/performance;
- toolsTool = ./websites/tools/tools;
- mailTool = ./websites/tools/mail;
- statsTool = ./websites/tools/stats;
-
- # Games
- codenamesGame = ./websites/tools/games/codenames;
- terraformingMarsGame = ./websites/tools/games/terraforming-mars;
-
- mail = ./mail;
-
- buildbot = ./buildbot;
- certificates = ./certificates.nix;
- gitolite = ./gitolite;
- irc = ./irc.nix;
- pub = ./pub;
- tasks = ./tasks;
- dns = ./dns.nix;
- ftp = ./ftp.nix;
- mpd = ./mpd.nix;
- ejabberd = ./ejabberd;
- ssh = ./ssh;
- monitoring = ./monitoring;
- status = ./monitoring/status.nix;
- status_engine = ./monitoring/status_engine.nix;
- vpn = ./vpn;
-
- environment = ./environment.nix;
- system = ./system.nix;
- loginctl-linger = ./loginctl-linger.nix;
-};
-in
-builtins.listToAttrs (map (attr: { name = "priv${attr}"; value = set.${attr}; }) (builtins.attrNames set))
diff --git a/modules/private/dns.nix b/modules/private/dns.nix
deleted file mode 100644
index 1d7fd52..0000000
--- a/modules/private/dns.nix
+++ /dev/null
@@ -1,197 +0,0 @@
-{ lib, pkgs, config, ... }:
-{
- options.myServices.dns.enable = lib.mkEnableOption "enable DNS resolver";
- config = let
- # taken from unstable
- cartesianProductOfSets = attrsOfLists: with lib;
- lib.foldl' (listOfAttrs: attrName:
- concatMap (attrs:
- map (listValue: attrs // { ${attrName} = listValue; }) attrsOfLists.${attrName}
- ) listOfAttrs
- ) [{}] (attrNames attrsOfLists);
- cfg = config.services.bind;
- keyIncludes = builtins.concatStringsSep "\n" (map (v: "include \"${config.secrets.fullPaths."bind/${v}.key"}\";") (builtins.attrNames config.myEnv.dns.keys));
- cartProduct = lib.foldr
- (s: servers: servers // { ${s.masters} = lib.unique ((servers.${s.masters} or []) ++ [s.keys]); })
- {}
- (lib.unique (lib.concatMap (z: cartesianProductOfSets { masters = z.masters or []; keys = z.keys or []; }) config.myEnv.dns.slaveZones));
- toKeyList = servers: keys: builtins.concatStringsSep "\n" (map (s: ''
- server ${s} {
- keys { ${builtins.concatStringsSep ";" keys}; };
- };
- '') servers);
- serverIncludes = builtins.concatStringsSep "\n" (lib.mapAttrsToList (n: toKeyList (lib.flatten (builtins.attrValues config.myEnv.dns.ns."${n}"))) cartProduct);
- configFile = pkgs.writeText "named.conf" ''
- include "/etc/bind/rndc.key";
- controls {
- inet 127.0.0.1 allow {localhost;} keys {"rndc-key";};
- };
-
- acl cachenetworks { ${lib.concatMapStrings (entry: " ${entry}; ") cfg.cacheNetworks} };
- acl badnetworks { ${lib.concatMapStrings (entry: " ${entry}; ") cfg.blockedNetworks} };
-
- options {
- listen-on { ${lib.concatMapStrings (entry: " ${entry}; ") cfg.listenOn} };
- listen-on-v6 { ${lib.concatMapStrings (entry: " ${entry}; ") cfg.listenOnIpv6} };
- allow-query { cachenetworks; };
- blackhole { badnetworks; };
- forward first;
- forwarders { ${lib.concatMapStrings (entry: " ${entry}; ") cfg.forwarders} };
- directory "/var/run/named";
- pid-file "/var/run/named/named.pid";
- ${cfg.extraOptions}
- };
-
- ${keyIncludes}
- ${serverIncludes}
-
- ${cfg.extraConfig}
-
- ${ lib.concatMapStrings
- ({ name, file, master ? true, extra ? "", slaves ? [], masters ? [] }:
- ''
- zone "${name}" {
- type ${if master then "master" else "slave"};
- file "${file}";
- ${ if lib.lists.length slaves > 0 then
- ''
- allow-transfer {
- ${lib.concatMapStrings (ip: "${ip};\n") slaves}
- };
- '' else ""}
- ${ if lib.lists.length masters > 0 then
- ''
- masters {
- ${lib.concatMapStrings (ip: "${ip};\n") masters}
- };
- '' else ""}
- allow-query { any; };
- ${extra}
- };
- '')
- cfg.zones }
- '';
- mxes = lib.attrsets.filterAttrs
- (n: v: v.mx.enable)
- config.myEnv.servers;
- ip4mxes = builtins.concatStringsSep "\n" (lib.mapAttrsToList
- (n: v: "${v.mx.subdomain} IN A ${v.ips.main.ip4}")
- mxes);
- ip6mxes = builtins.concatStringsSep "\n" (lib.mapAttrsToList
- (n: v: builtins.concatStringsSep "\n" (map (i: "${v.mx.subdomain} IN AAAA ${i}") v.ips.main.ip6))
- mxes);
- mxmxes = n: conf: builtins.concatStringsSep "\n" (lib.mapAttrsToList
- (_: v: "${n} IN MX ${v.mx.priority} ${v.mx.subdomain}.${conf.name}.")
- mxes);
- in lib.mkIf config.myServices.dns.enable {
- networking.firewall.allowedUDPPorts = [ 53 ];
- networking.firewall.allowedTCPPorts = [ 53 ];
- users.users.named.extraGroups = [ "keys" ];
- secrets.keys = lib.mapAttrs' (k: v:
- lib.nameValuePair "bind/${k}.key" {
- permissions = "0400";
- user = "named";
- text = ''
- key "${k}"
- {
- algorithm ${v.algorithm};
- secret "${v.secret}";
- };
- '';
- }
- ) config.myEnv.dns.keys;
- services.bind = {
- enable = true;
- cacheNetworks = ["any"];
- configFile = configFile;
- extraOptions = ''
- allow-recursion { 127.0.0.1; };
- allow-transfer { none; };
-
- notify-source ${config.myEnv.servers.eldiron.ips.main.ip4};
- notify-source-v6 ${lib.head config.myEnv.servers.eldiron.ips.main.ip6};
- version none;
- hostname none;
- server-id none;
- '';
- zones = with config.myEnv.dns;
- assert (builtins.substring ((builtins.stringLength soa.email)-1) 1 soa.email) != ".";
- assert (builtins.substring ((builtins.stringLength soa.primary)-1) 1 soa.primary) != ".";
- (map (conf: {
- name = conf.name;
- master = false;
- file = "/var/run/named/${conf.name}.zone";
- masters = if lib.attrsets.hasAttr "masters" conf
- then lib.lists.flatten (map (n: lib.attrsets.attrValues ns.${n}) conf.masters)
- else [];
- }) slaveZones)
- ++ (map (conf: {
- name = conf.name;
- master = true;
- extra = if lib.attrsets.hasAttr "extra" conf then conf.extra else "";
- slaves = if lib.attrsets.hasAttr "slaves" conf
- then lib.lists.flatten (map (n: lib.attrsets.attrValues ns.${n}) conf.slaves)
- else [];
- file = pkgs.writeText "${conf.name}.zone" ''
- $TTL 10800
- @ IN SOA ${soa.primary}. ${builtins.replaceStrings ["@"] ["."] soa.email}. ${soa.serial} ${soa.refresh} ${soa.retry} ${soa.expire} ${soa.ttl}
-
- ${lib.concatStringsSep "\n" (map (x: "@ IN NS ${x}.") (lib.concatMap (n: lib.attrsets.mapAttrsToList (k: v: k) ns.${n}) conf.ns))}
- ${lib.optionalString (conf.withCAA != null) ''
- ${conf.name}. IN CAA 0 issue "${conf.withCAA}"
- ''}
-
- ${conf.entries}
-
- ${if lib.attrsets.hasAttr "withEmail" conf && lib.lists.length conf.withEmail > 0 then ''
- ${ip4mxes}
- ${ip6mxes}
- ${lib.concatStringsSep "\n\n" (map (e:
- let
- n = if e.domain == "" then "@" else "${e.domain} ";
- suffix = if e.domain == "" then "" else ".${e.domain}";
- in
- ''
- ; ------------------ mail: ${n} ---------------------------
- ${mxmxes n conf}
-
- ; https://tools.ietf.org/html/rfc6186
- _submission._tcp${suffix} SRV 0 1 587 smtp.immae.eu.
- _submissions._tcp${suffix} SRV 0 1 465 smtp.immae.eu.
- _imap._tcp${suffix} SRV 0 1 143 imap.immae.eu.
- _imaps._tcp${suffix} SRV 0 1 993 imap.immae.eu.
- _pop3._tcp${suffix} SRV 10 1 110 pop3.immae.eu.
- _pop3s._tcp${suffix} SRV 10 1 995 pop3.immae.eu.
- _sieve._tcp${suffix} SRV 0 1 4190 imap.immae.eu.
-
- ; MTA-STS
- ; https://blog.delouw.ch/2018/12/16/using-mta-sts-to-enhance-email-transport-security-and-privacy/
- ; https://support.google.com/a/answer/9261504
- _mta-sts${suffix} IN TXT "v=STSv1;id=20200109150200Z"
- _smtp._tls${suffix} IN TXT "v=TLSRPTv1;rua=mailto:postmaster+mta-sts@immae.eu"
- mta-sts${suffix} IN A ${config.myEnv.servers.eldiron.ips.main.ip4}
- ${builtins.concatStringsSep "\n" (map (i: "mta-sts${suffix} IN AAAA ${i}") config.myEnv.servers.eldiron.ips.main.ip6)}
-
- ; Mail sender authentications
- ${n} IN TXT "v=spf1 mx ~all"
- _dmarc${suffix} IN TXT "v=DMARC1; p=none; adkim=r; aspf=r; fo=1; rua=mailto:postmaster+rua@immae.eu; ruf=mailto:postmaster+ruf@immae.eu;"
- ${if e.send then ''
- immae_eu._domainkey${suffix} IN TXT ( "v=DKIM1; k=rsa; s=email; "
- "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzl3vLd8W5YAuumC5+ZT9OV7/14Pmh5JYtwyqKI3cfe9NnAqInt3xO4bZ7oqIxRKWN4SD39vm7O/QOvFdBt00ENOOzdP90s5gKw6eIP/4+vPTh0IWltAsmu9B2agzdtWUE7t2xFKIzEn8l9niRE2QYbVaqZv4sub98vY55fIgFoHtjkmNC7325S8fjDJGp6OPbyhAs6Xl5/adjF"
- "0ko4Y2p6RaxLQfjlS0bxmK4Qg6C14pIXHtzVeqOuWrwApqt5+AULSn97iUtqV/IJlEEjC6DUR44t3C/G0G/k46iFclCqRRi0hdPrOHCtZDbtMubnTN9eaUiNpkXh1WnCflHwtjQwIDAQAB" )
- eldiron._domainkey${suffix} IN TXT ${config.myEnv.mail.dkim.eldiron.public}
- '' else ""}
- '') conf.withEmail)}
- '' + (if conf.name == "immae.eu" then ''
- ; ----------------- Accept DMARC reports -------------------
- ${lib.concatStringsSep "\n" (
- lib.flatten (
- map (z: map (e: "${e.domain}${if builtins.stringLength e.domain > 0 then "." else ""}${z.name}._report._dmarc IN TXT \"v=DMARC1;\"") (z.withEmail or [])) masterZones
- )
- )}
- '' else "") else ""}
- '';
- }) masterZones);
- };
- };
-}
diff --git a/modules/private/ejabberd/default.nix b/modules/private/ejabberd/default.nix
deleted file mode 100644
index 4d86a64..0000000
--- a/modules/private/ejabberd/default.nix
+++ /dev/null
@@ -1,92 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.ejabberd;
-in
-{
- options.myServices = {
- ejabberd.enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- description = ''
- Whether to enable ejabberd service.
- '';
- };
- };
-
- config = lib.mkIf cfg.enable {
- security.acme.certs = {
- "ejabberd" = config.myServices.certificates.certConfig // {
- user = "ejabberd";
- group = "ejabberd";
- domain = "eldiron.immae.eu";
- keyType = "rsa4096";
- postRun = ''
- systemctl restart ejabberd.service
- '';
- extraDomains = {
- "immae.fr" = null;
- "conference.immae.fr" = null;
- "proxy.immae.fr" = null;
- "pubsub.immae.fr" = null;
- "upload.immae.fr" = null;
- };
- };
- };
- networking.firewall.allowedTCPPorts = [ 5222 5269 ];
- myServices.websites.tools.im.enable = true;
- systemd.services.ejabberd.postStop = ''
- rm /var/log/ejabberd/erl_crash*.dump
- '';
- secrets.keys = {
- "ejabberd/psql.yml" = {
- permissions = "0400";
- user = "ejabberd";
- group = "ejabberd";
- text = ''
- sql_type: pgsql
- sql_server: "localhost"
- sql_database: "${config.myEnv.jabber.postgresql.database}"
- sql_username: "${config.myEnv.jabber.postgresql.user}"
- sql_password: "${config.myEnv.jabber.postgresql.password}"
- '';
- };
- "ejabberd/host.yml" = {
- permissions = "0400";
- user = "ejabberd";
- group = "ejabberd";
- text = ''
- host_config:
- "immae.fr":
- domain_certfile: "${config.security.acme.certs.ejabberd.directory}/full.pem"
- auth_method: [ldap]
- ldap_servers: ["${config.myEnv.jabber.ldap.host}"]
- ldap_encrypt: tls
- ldap_rootdn: "${config.myEnv.jabber.ldap.dn}"
- ldap_password: "${config.myEnv.jabber.ldap.password}"
- ldap_base: "${config.myEnv.jabber.ldap.base}"
- ldap_uids:
- uid: "%u"
- immaeXmppUid: "%u"
- ldap_filter: "${config.myEnv.jabber.ldap.filter}"
- '';
- };
- };
- users.users.ejabberd.extraGroups = [ "keys" ];
- services.ejabberd = {
- package = pkgs.ejabberd.override { withPgsql = true; };
- imagemagick = true;
- enable = true;
- ctlConfig = ''
- ERLANG_NODE=ejabberd@localhost
- '';
- configFile = pkgs.runCommand "ejabberd.yml" {
- certificatePrivateKeyAndFullChain = "${config.security.acme.certs.ejabberd.directory}/full.pem";
- certificateCA = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
- sql_config_file = config.secrets.fullPaths."ejabberd/psql.yml";
- host_config_file = config.secrets.fullPaths."ejabberd/host.yml";
- } ''
- substituteAll ${./ejabberd.yml} $out
- '';
- };
- };
-}
diff --git a/modules/private/ejabberd/ejabberd.yml b/modules/private/ejabberd/ejabberd.yml
deleted file mode 100644
index 82ac35b..0000000
--- a/modules/private/ejabberd/ejabberd.yml
+++ /dev/null
@@ -1,231 +0,0 @@
-###
-### ejabberd configuration file
-###
-### The parameters used in this configuration file are explained at
-###
-### https://docs.ejabberd.im/admin/configuration
-###
-### The configuration file is written in YAML.
-### *******************************************************
-### ******* !!! WARNING !!! *******
-### ******* YAML IS INDENTATION SENSITIVE *******
-### ******* MAKE SURE YOU INDENT SECTIONS CORRECTLY *******
-### *******************************************************
-### Refer to http://en.wikipedia.org/wiki/YAML for the brief description.
-### However, ejabberd treats different literals as different types:
-###
-### - unquoted or single-quoted strings. They are called "atoms".
-### Example: dog, 'Jupiter', '3.14159', YELLOW
-###
-### - numeric literals. Example: 3, -45.0, .0
-###
-### - quoted or folded strings.
-### Examples of quoted string: "Lizzard", "orange".
-### Example of folded string:
-### > Art thou not Romeo,
-### and a Montague?
-###
-
-hosts:
- - "immae.fr"
-
-loglevel: 4
-log_rotate_size: 10485760
-log_rotate_date: ""
-log_rotate_count: 1
-log_rate_limit: 100
-
-certfiles:
- - "@certificatePrivateKeyAndFullChain@"
-
-listen:
- -
- port: 5222
- ip: "::"
- module: ejabberd_c2s
- max_stanza_size: 262144
- shaper: c2s_shaper
- access: c2s
- starttls_required: true
- -
- port: 5269
- ip: "::"
- module: ejabberd_s2s_in
- max_stanza_size: 524288
- -
- port: 5280
- ip: "127.0.0.1"
- module: ejabberd_http
- request_handlers:
- "/admin": ejabberd_web_admin
- "/api": mod_http_api
- "/bosh": mod_bosh
- "/captcha": ejabberd_captcha
- "/upload": mod_http_upload
- "/ws": ejabberd_http_ws
- tls: false
-
-s2s_use_starttls: optional
-s2s_cafile: "@certificateCA@"
-
-default_db: sql
-include_config_file: @sql_config_file@
-include_config_file: @host_config_file@
-new_sql_schema: true
-
-acl:
- admin:
- - user: "ismael@immae.fr"
- local:
- user_regexp: ""
- loopback:
- ip:
- - "127.0.0.0/8"
- - "::1/128"
- - "::FFFF:127.0.0.1/128"
-
-access_rules:
- local:
- - allow: local
- c2s:
- - deny: blocked
- - allow
- announce:
- - allow: admin
- configure:
- - allow: admin
- muc_admin:
- - allow: admin
- muc_create:
- - allow: local
- muc:
- - allow
- pubsub_createnode:
- - allow: local
- register:
- - deny
- trusted_network:
- - allow: loopback
-
-api_permissions:
- "console commands":
- from:
- - ejabberd_ctl
- who: all
- what: "*"
- "admin access":
- who:
- - acl: admin
- - oauth:
- - scope: "ejabberd:admin"
- - acl: admin
- what:
- - "*"
- - "!stop"
- - "!start"
- "public commands":
- who:
- - ip:
- - "0.0.0.0"
- - "::"
- what:
- - "status"
- - "connected_users_number"
-
-shaper:
- normal: 1000
- fast: 50000
-
-shaper_rules:
- max_user_sessions: 10
- max_user_offline_messages:
- - 5000: admin
- - 100
- c2s_shaper:
- - none: admin
- - normal
- s2s_shaper: fast
-
-modules:
- mod_adhoc: {}
- mod_admin_extra: {}
- mod_announce:
- access: announce
- mod_avatar: {}
- mod_blocking: {}
- mod_bosh: {}
- mod_caps: {}
- mod_carboncopy: {}
- mod_client_state: {}
- mod_configure: {}
- mod_disco: {}
- mod_fail2ban: {}
- mod_http_api: {}
- mod_http_upload:
- put_url: "https://im.immae.fr/upload"
- custom_headers:
- "Access-Control-Allow-Origin": "*"
- "Access-Control-Allow-Methods": "OPTIONS, HEAD, GET, PUT, POST"
- "Access-Control-Allow-Headers": "Content-Type"
- mod_last: {}
- mod_mam:
- default: always
- mod_muc:
- access:
- - allow
- access_admin:
- - allow: admin
- access_create: muc_create
- access_persistent: muc_create
- default_room_options:
- mam: true
- mod_muc_admin: {}
- mod_offline:
- access_max_user_messages: max_user_offline_messages
- mod_ping: {}
- mod_privacy: {}
- mod_private: {}
- mod_proxy65:
- access: local
- max_connections: 5
- mod_pubsub:
- access_createnode: pubsub_createnode
- plugins:
- - "flat"
- - "pep"
- force_node_config:
- ## Change from "whitelist" to "open" to enable OMEMO support
- ## See https://github.com/processone/ejabberd/issues/2425
- "eu.siacs.conversations.axolotl.*":
- access_model: open
- ## Avoid buggy clients to make their bookmarks public
- "storage:bookmarks":
- access_model: whitelist
- mod_push: {}
- mod_push_keepalive: {}
- mod_register:
- ## Only accept registration requests from the "trusted"
- ## network (see access_rules section above).
- ## Think twice before enabling registration from any
- ## address. See the Jabber SPAM Manifesto for details:
- ## https://github.com/ge0rg/jabber-spam-fighting-manifesto
- ip_access: trusted_network
- access: register
- mod_roster:
- versioning: true
- mod_s2s_dialback: {}
- mod_shared_roster: {}
- mod_stats: {}
- mod_stream_mgmt:
- resend_on_timeout: if_offline
- mod_time: {}
- mod_vcard: {}
- mod_vcard_xupdate: {}
- mod_version:
- show_os: false
-
-### Local Variables:
-### mode: yaml
-### End:
-### vim: set filetype=yaml tabstop=8
-
diff --git a/modules/private/environment.nix b/modules/private/environment.nix
deleted file mode 100644
index 837d24b..0000000
--- a/modules/private/environment.nix
+++ /dev/null
@@ -1,1492 +0,0 @@
-{ config, lib, name, ... }:
-with lib;
-with types;
-with lists;
-let
- ldapOptions = {
- base = mkOption { description = "Base of the LDAP tree"; type = str; };
- host = mkOption { description = "Host to access LDAP"; type = str; };
- root_dn = mkOption { description = "DN of the root user"; type = str; };
- root_pw = mkOption { description = "Hashed password of the root user"; type = str; };
- replication_dn = mkOption { description = "DN of the user allowed to replicate the LDAP directory"; type = str; };
- replication_pw = mkOption { description = "Password of the user allowed to replicate the LDAP directory"; type = str; };
- };
- mkLdapOptions = name: more: mkOption {
- description = "${name} LDAP configuration";
- type = submodule {
- options = ldapOptions // {
- dn = mkOption { description = "DN of the ${name} user"; type = str; };
- password = mkOption { description = "password of the ${name} user"; type = str; };
- filter = mkOption { description = "Filter for ${name} users"; type = str; default = ""; };
- } // more;
- };
- };
- mysqlOptions = {
- host = mkOption { description = "Host to access Mysql"; type = str; };
- remoteHost = mkOption { description = "Host to access Mysql from outside"; type = str; };
- port = mkOption { description = "Port to access Mysql"; type = str; };
- socket = mkOption { description = "Socket to access Mysql"; type = path; };
- systemUsers = mkOption {
- description = "Attrs of user-passwords allowed to access mysql";
- type = attrsOf str;
- };
- pam = mkOption {
- description = "PAM configuration for mysql";
- type = submodule {
- options = {
- dn = mkOption { description = "DN to connect as to check users"; type = str; };
- password = mkOption { description = "DN password to connect as to check users"; type = str; };
- filter = mkOption { description = "filter to match users"; type = str; };
- };
- };
- };
- };
- mkMysqlOptions = name: more: mkOption {
- description = "${name} mysql configuration";
- type = submodule {
- options = mysqlOptions // {
- database = mkOption { description = "${name} database"; type = str; };
- user = mkOption { description = "${name} user"; type = str; };
- password = mkOption { description = "mysql password of the ${name} user"; type = str; };
- } // more;
- };
- };
- psqlOptions = {
- host = mkOption { description = "Host to access Postgresql"; type = str; };
- port = mkOption { description = "Port to access Postgresql"; type = str; };
- socket = mkOption { description = "Socket to access Postgresql"; type = path; };
- pam = mkOption {
- description = "PAM configuration for psql";
- type = submodule {
- options = {
- dn = mkOption { description = "DN to connect as to check users"; type = str; };
- password = mkOption { description = "DN password to connect as to check users"; type = str; };
- filter = mkOption { description = "filter to match users"; type = str; };
- };
- };
- };
- };
- mkPsqlOptions = name: mkOption {
- description = "${name} psql configuration";
- type = submodule {
- options = psqlOptions // {
- database = mkOption { description = "${name} database"; type = str; };
- schema = mkOption { description = "${name} schema"; type = nullOr str; default = null; };
- user = mkOption { description = "${name} user"; type = str; };
- password = mkOption { description = "psql password of the ${name} user"; type = str; };
- };
- };
- };
- redisOptions = {
- host = mkOption { description = "Host to access Redis"; type = str; };
- port = mkOption { description = "Port to access Redis"; type = str; };
- socket = mkOption { description = "Socket to access Redis"; type = path; };
- dbs = mkOption {
- description = "Attrs of db number. Each number should be unique to avoid collision!";
- type = attrsOf str;
- };
- spiped_key = mkOption {
- type = str;
- description = ''
- Key to use with spiped to make a secure channel to replication
- '';
- };
- predixy = mkOption {
- description = "Predixy configuration. Unused yet";
- type = submodule {
- options = {
- read = mkOption { type = str; description = "Read password"; };
- };
- };
- };
- };
- mkRedisOptions = name: mkOption {
- description = "${name} redis configuration";
- type = submodule {
- options = redisOptions // {
- db = mkOption { description = "${name} database"; type = str; };
- };
- };
- };
- smtpOptions = {
- host = mkOption { description = "Host to access SMTP"; type = str; };
- port = mkOption { description = "Port to access SMTP"; type = str; };
- };
- mkSmtpOptions = name: mkOption {
- description = "${name} smtp configuration";
- type = submodule {
- options = smtpOptions // {
- email = mkOption { description = "${name} email"; type = str; };
- password = mkOption { description = "SMTP password of the ${name} user"; type = str; };
- };
- };
- };
- hostEnv = submodule {
- options = {
- fqdn = mkOption {
- description = "Host FQDN";
- type = str;
- };
- users = mkOption {
- type = unspecified;
- default = pkgs: [];
- description = ''
- Sublist of users from realUsers. Function that takes pkgs as
- argument and gives an array as a result
- '';
- };
- emails = mkOption {
- default = [];
- description = "List of e-mails that the server can be a sender of";
- type = listOf str;
- };
- ldap = mkOption {
- description = ''
- LDAP credentials for the host
- '';
- type = submodule {
- options = {
- password = mkOption { type = str; description = "Password for the LDAP connection"; };
- dn = mkOption { type = str; description = "DN for the LDAP connection"; };
- };
- };
- };
- mx = mkOption {
- description = "subdomain and priority for MX server";
- default = { enable = false; };
- type = submodule {
- options = {
- enable = mkEnableOption "Enable MX";
- subdomain = mkOption { type = nullOr str; description = "Subdomain name (mx-*)"; };
- priority = mkOption { type = nullOr str; description = "Priority"; };
- };
- };
- };
- ips = mkOption {
- description = ''
- attrs of ip4/ip6 grouped by section
- '';
- type = attrsOf (submodule {
- options = {
- ip4 = mkOption {
- type = str;
- description = ''
- ip4 address of the host
- '';
- };
- ip6 = mkOption {
- type = listOf str;
- default = [];
- description = ''
- ip6 addresses of the host
- '';
- };
- };
- });
- };
- };
- };
-in
-{
- options.myEnv = {
- servers = mkOption {
- description = ''
- Attrs of servers information in the cluster (not necessarily handled by nixops)
- '';
- default = {};
- type = attrsOf hostEnv;
- };
- hetznerCloud = mkOption {
- description = ''
- Hetzner Cloud credential information
- '';
- type = submodule {
- options = {
- authToken = mkOption {
- type = str;
- description = ''
- The API auth token.
- '';
- };
- };
- };
- };
- hetzner = mkOption {
- description = ''
- Hetzner credential information
- '';
- type = submodule {
- options = {
- user = mkOption { type = str; description = "User"; };
- pass = mkOption { type = str; description = "Password"; };
- };
- };
- };
- sshd = mkOption {
- description = ''
- sshd service credential information
- '';
- type = submodule {
- options = {
- rootKeys = mkOption { type = attrsOf str; description = "Keys of root users"; };
- ldap = mkOption {
- description = ''
- LDAP credentials for cn=ssh,ou=services,dc=immae,dc=eu dn
- '';
- type = submodule {
- options = {
- password = mkOption { description = "Password"; type = str; };
- };
- };
- };
- };
- };
- };
- ports = mkOption {
- description = ''
- non-standard reserved ports. Must be unique!
- '';
- type = attrsOf port;
- default = {};
- apply = let
- noDupl = x: builtins.length (builtins.attrValues x) == builtins.length (unique (builtins.attrValues x));
- in
- x: if isAttrs x && noDupl x then x else throw "Non unique values for ports";
- };
- httpd = mkOption {
- description = ''
- httpd service credential information
- '';
- type = submodule {
- options = {
- ldap = mkOption {
- description = ''
- LDAP credentials for cn=httpd,ou=services,dc=immae,dc=eu dn
- '';
- type = submodule {
- options = {
- password = mkOption { description = "Password"; type = str; };
- };
- };
- };
- };
- };
- };
- smtp = mkOption {
- type = submodule { options = smtpOptions; };
- description = "SMTP configuration";
- };
- ldap = mkOption {
- description = ''
- LDAP server configuration
- '';
- type = submodule {
- options = ldapOptions;
- };
- };
- databases = mkOption {
- description = "Databases configuration";
- type = submodule {
- options = {
- mysql = mkOption {
- type = submodule { options = mysqlOptions; };
- description = "Mysql configuration";
- };
- redis = mkOption {
- type = submodule { options = redisOptions; };
- description = "Redis configuration";
- };
- postgresql = mkOption {
- type = submodule { options = psqlOptions; };
- description = "Postgresql configuration";
- };
- };
- };
- };
- jabber = mkOption {
- description = "Jabber configuration";
- type = submodule {
- options = {
- postfix_user_filter = mkOption { type = str; description = "Postfix filter to get xmpp users"; };
- ldap = mkLdapOptions "Jabber" {};
- postgresql = mkPsqlOptions "Jabber";
- };
- };
- };
- realUsers = mkOption {
- description = ''
- Attrset of function taking pkgs as argument.
- Real users settings, should provide a subattr of users.users.
- with at least: name, (hashed)Password, shell
- '';
- type = attrsOf unspecified;
- };
- users = mkOption {
- description = "System and regular users uid/gid";
- type = attrsOf (submodule {
- options = {
- uid = mkOption {
- description = "user uid";
- type = int;
- };
- gid = mkOption {
- description = "user gid";
- type = int;
- };
- };
- });
- };
- dns = mkOption {
- description = "DNS configuration";
- type = submodule {
- options = {
- soa = mkOption {
- description = "SOA information";
- type = submodule {
- options = {
- serial = mkOption {
- description = "Serial number. Should be incremented at each change and unique";
- type = str;
- };
- refresh = mkOption {
- description = "Refresh time";
- type = str;
- };
- retry = mkOption {
- description = "Retry time";
- type = str;
- };
- expire = mkOption {
- description = "Expire time";
- type = str;
- };
- ttl = mkOption {
- description = "Default TTL time";
- type = str;
- };
- email = mkOption {
- description = "hostmaster e-mail";
- type = str;
- };
- primary = mkOption {
- description = "Primary NS";
- type = str;
- };
- };
- };
- };
- ns = mkOption {
- description = "Attrs of NS servers group";
- example = {
- foo = {
- "ns1.foo.com" = [ "198.51.100.10" "2001:db8:abcd::1" ];
- "ns2.foo.com" = [ "198.51.100.15" "2001:db8:1234::1" ];
- };
- };
- type = attrsOf (attrsOf (listOf str));
- };
- keys = mkOption {
- default = {};
- description = "DNS keys";
- type = attrsOf (submodule {
- options = {
- algorithm = mkOption { type = str; description = "Algorithm"; };
- secret = mkOption { type = str; description = "Secret"; };
- };
- });
- };
- slaveZones = mkOption {
- description = "List of slave zones";
- type = listOf (submodule {
- options = {
- name = mkOption { type = str; description = "zone name"; };
- masters = mkOption {
- description = "NS master groups of this zone";
- type = listOf str;
- };
- keys = mkOption {
- default = [];
- description = "Keys associated to the server";
- type = listOf str;
- };
- };
- });
- };
- masterZones = mkOption {
- description = "List of master zones";
- type = listOf (submodule {
- options = {
- name = mkOption { type = str; description = "zone name"; };
- withCAA = mkOption { type = nullOr str; description = "CAA entry"; default = null; };
- slaves = mkOption {
- description = "NS slave groups of this zone";
- type = listOf str;
- };
- ns = mkOption {
- description = "groups names that should have their NS entries listed here";
- type = listOf str;
- };
- extra = mkOption {
- description = "Extra zone configuration for bind";
- example = ''
- notify yes;
- '';
- type = lines;
- };
- entries = mkOption { type = lines; description = "Regular entries of the NS zone"; };
- withEmail = mkOption {
- description = "List of domains that should have mail entries (MX, dkim, SPF, ...)";
- default = [];
- type = listOf (submodule {
- options = {
- domain = mkOption { type = str; description = "Which subdomain is concerned"; };
- send = mkOption { type = bool; description = "Whether there can be e-mails originating from the subdomain"; };
- receive = mkOption { type = bool; description = "Whether there can be e-mails arriving to the subdomain"; };
- };
- });
- };
- };
- });
- };
- };
- };
- };
- backup = mkOption {
- description = ''
- Remote backup with duplicity
- '';
- type = submodule {
- options = {
- password = mkOption { type = str; description = "Password for encrypting files"; };
- remotes = mkOption {
- type = attrsOf (submodule {
- options = {
- remote = mkOption {
- type = unspecified;
- example = literalExample ''
- bucket: "s3://some_host/${bucket}";
- '';
- description = ''
- Function.
- Takes a bucket name as argument and returns a url
- '';
- };
- accessKeyId = mkOption { type = str; description = "Remote access-key"; };
- secretAccessKey = mkOption { type = str; description = "Remote access secret"; };
- };
- });
- };
- };
- };
- };
- zrepl_backup = mkOption {
- type = submodule {
- options = {
- ssh_key = mkOption {
- description = "SSH key information";
- type = submodule {
- options = {
- public = mkOption { type = str; description = "Public part of the key"; };
- private = mkOption { type = lines; description = "Private part of the key"; };
- };
- };
- };
- mysql = mkMysqlOptions "Zrepl" {};
- };
- };
- };
- rsync_backup = mkOption {
- description =''
- Rsync backup configuration from controlled host
- '';
- type = submodule {
- options = {
- ssh_key = mkOption {
- description = "SSH key information";
- type = submodule {
- options = {
- public = mkOption { type = str; description = "Public part of the key"; };
- private = mkOption { type = lines; description = "Private part of the key"; };
- };
- };
- };
- profiles = mkOption {
- description = "Attrs of profiles to backup";
- type = attrsOf (submodule {
- options = {
- keep = mkOption { type = int; description = "Number of backups to keep"; };
- check_command = mkOption { type = str; description = "command to check if backup needs to be done"; default = "backup"; };
- login = mkOption { type = str; description = "Login to connect to host"; };
- port = mkOption { type = str; default = "22"; description = "Port to connect to host"; };
- host = mkOption { type = str; description = "Host to connect to"; };
- host_key = mkOption { type = str; description = "Host key"; };
- host_key_type = mkOption { type = str; description = "Host key type"; };
- parts = mkOption {
- description = "Parts to backup for this host";
- type = attrsOf (submodule {
- options = {
- remote_folder = mkOption { type = path; description = "Remote folder to backup";};
- exclude_from = mkOption {
- type = listOf path;
- default = [];
- description = "List of folders/files to exclude from the backup";
- };
- files_from = mkOption {
- type = listOf path;
- default = [];
- description = "List of folders/files to backup in the base folder";
- };
- args = mkOption {
- type = nullOr str;
- default = null;
- description = "Extra arguments to pass to rsync";
- };
- };
- });
- };
- };
- });
- };
- };
- };
- };
- monitoring = mkOption {
- description = "Monitoring configuration";
- type = submodule {
- options = {
- status_url = mkOption { type = str; description = "URL to push status to"; };
- status_token = mkOption { type = str; description = "Token for the status url"; };
- http_user_password = mkOption { type = str; description = "HTTP credentials to check services behind wall"; };
- email = mkOption { type = str; description = "Admin E-mail"; };
- ssh_public_key = mkOption { type = str; description = "SSH public key"; };
- ssh_secret_key = mkOption { type = str; description = "SSH secret key"; };
- imap_login = mkOption { type = str; description = "IMAP login"; };
- imap_password = mkOption { type = str; description = "IMAP password"; };
- eriomem_keys = mkOption { type = listOf (listOf str); description = "Eriomem keys"; default = []; };
- ovh_sms = mkOption {
- description = "OVH credentials for sms script";
- type = submodule {
- options = {
- endpoint = mkOption { type = str; default = "ovh-eu"; description = "OVH endpoint"; };
- application_key = mkOption { type = str; description = "Application key"; };
- application_secret = mkOption { type = str; description = "Application secret"; };
- consumer_key = mkOption { type = str; description = "Consumer key"; };
- account = mkOption { type = str; description = "Account"; };
- };
- };
- };
- eban = mkOption {
- description = "Eban credentials for webhook";
- type = submodule {
- options = {
- user = mkOption { type = str; description = "User"; };
- password = mkOption { type = str; description = "Password"; };
- };
- };
- };
- nrdp_tokens = mkOption { type = listOf str; description = "Tokens allowed to push status update"; };
- slack_url = mkOption { type = str; description = "Slack webhook url to push status update"; };
- slack_channel = mkOption { type = str; description = "Slack channel to push status update"; };
- netdata_aggregator = mkOption { type = str; description = "Url where netdata information should be sent"; };
- netdata_keys = mkOption { type = attrsOf str; description = "netdata host keys"; };
- contacts = mkOption { type = attrsOf unspecified; description = "Contact dicts to fill naemon objects"; };
- email_check = mkOption {
- description = "Emails services to check";
- type = attrsOf (submodule {
- options = {
- local = mkOption { type = bool; default = false; description = "Use local configuration"; };
- port = mkOption { type = nullOr str; default = null; description = "Port to connect to ssh"; };
- login = mkOption { type = nullOr str; default = null; description = "Login to connect to ssh"; };
- targets = mkOption { type = listOf str; description = "Hosts to send E-mails to"; };
- mail_address = mkOption { type = nullOr str; default = null; description = "E-mail recipient part to send e-mail to"; };
- mail_domain = mkOption { type = nullOr str; default = null; description = "E-mail domain part to send e-mail to"; };
- };
- });
- };
- };
- };
- };
- mpd = mkOption {
- description = "MPD configuration";
- type = submodule {
- options = {
- folder = mkOption { type = str; description = "Folder to serve from the MPD instance"; };
- password = mkOption { type = str; description = "Password to connect to the MPD instance"; };
- host = mkOption { type = str; description = "Host to connect to the MPD instance"; };
- port = mkOption { type = str; description = "Port to connect to the MPD instance"; };
- };
- };
- };
- ftp = mkOption {
- description = "FTP configuration";
- type = submodule {
- options = {
- ldap = mkLdapOptions "FTP" {
- proftpd_filter = mkOption { type = str; description = "Filter for proftpd listing in LDAP"; };
- pure-ftpd_filter = mkOption { type = str; description = "Filter for pure-ftpd listing in LDAP"; };
- };
- };
- };
- };
- vpn = mkOption {
- description = "VPN configuration";
- type = attrsOf (submodule {
- options = {
- prefix = mkOption { type = str; description = "ipv6 prefix for the vpn subnet"; };
- privateKey = mkOption { type = str; description = "Private key for the host"; };
- publicKey = mkOption { type = str; description = "Public key for the host"; };
- };
- });
- };
- mail = mkOption {
- description = "Mail configuration";
- type = submodule {
- options = {
- dmarc = mkOption {
- description = "DMARC configuration";
- type = submodule {
- options = {
- ignore_hosts = mkOption {
- type = lines;
- description = ''
- Hosts to ignore when checking for dmarc
- '';
- };
- };
- };
- };
- dkim = mkOption {
- description = "DKIM configuration";
- type = attrsOf (submodule {
- options = {
- public = mkOption {
- type = str;
- example = ''
- ( "v=DKIM1; k=rsa; "
- "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3w1a2aMxWw9+hdcmbqX4UevcVqr204y0K73Wdc7MPZiOOlUJQYsMNSYR1Y/SC7jmPKeitpcJCpQgn/cveJZbuikjjPLsDReHyFEYmC278ZLRTELHx6f1IXM8WE08JIRT69CfZiMi1rVcOh9qRT4F93PyjCauU8Y5hJjtg9ThsWwIDAQAB" )
- '';
- description = "Public entry to put in DNS TXT field";
- };
- private = mkOption { type = str; description = "Private key"; };
- };
- });
- };
- postfix = mkOption {
- description = "Postfix configuration";
- type = submodule {
- options = {
- additional_mailbox_domains = mkOption {
- description = ''
- List of domains that are used as mailbox final destination, in addition to those defined in the DNS records
- '';
- type = listOf str;
- };
- mysql = mkMysqlOptions "Postfix" {
- password_encrypt = mkOption { type = str; description = "Key to encrypt relay password in database"; };
- };
- backup_domains = mkOption {
- description = ''
- Domains that are accepted for relay as backup domain
- '';
- type = attrsOf (submodule {
- options = {
- domains = mkOption { type = listOf str; description = "Domains list"; };
- relay_restrictions = mkOption {
- type = lines;
- description = ''
- Restrictions for relaying the e-mails from the domains
- '';
- };
- recipient_maps = mkOption {
- description = ''
- Recipient map to accept relay for.
- Must be specified for domain, the rules apply to everyone!
- '';
- type = listOf (submodule {
- options = {
- type = mkOption {
- type = enum [ "hash" ];
- description = "Map type";
- };
- content = mkOption {
- type = str;
- description = "Map content";
- };
- };
- });
- };
- };
- });
- };
- };
- };
- };
- dovecot = mkOption {
- description = "Dovecot configuration";
- type = submodule {
- options = {
- ldap = mkLdapOptions "Dovecot" {
- pass_attrs = mkOption { type = str; description = "Password attribute in LDAP"; };
- user_attrs = mkOption { type = str; description = "User attribute mapping in LDAP"; };
- iterate_attrs = mkOption { type = str; description = "User attribute mapping for listing in LDAP"; };
- iterate_filter = mkOption { type = str; description = "User attribute filter for listing in LDAP"; };
- postfix_mailbox_filter = mkOption { type = str; description = "Postfix filter to get mailboxes"; };
- };
- };
- };
- };
- rspamd = mkOption {
- description = "rspamd configuration";
- type = submodule {
- options = {
- redis = mkRedisOptions "Redis";
- read_password_hashed = mkOption { type = str; description = "Hashed read password for rspamd"; };
- write_password_hashed = mkOption { type = str; description = "Hashed write password for rspamd"; };
- read_password = mkOption {
- type = str;
- description = "Read password for rspamd. Unused";
- apply = x: "";
- };
- write_password = mkOption {
- type = str;
- description = "Write password for rspamd. Unused";
- apply = x: "";
- };
- };
- };
- };
- scripts = mkOption {
- description = "Mail script recipients";
- type = attrsOf (submodule {
- options = {
- external = mkEnableOption "Create a script_@mail.immae.eu external address";
- src = mkOption {
- description = ''
- git source to fetch the script from.
- It must have a default.nix file as its root accepting a scriptEnv parameter
- '';
- type = submodule {
- options = {
- url = mkOption { type = str; description = "git url to fetch"; };
- rev = mkOption { type = str; description = "git reference to fetch"; };
- };
- };
- };
- env = mkOption {
- description = "Variables to pass to the script";
- type = unspecified;
- };
- };
- });
- };
- sympa = mkOption {
- description = "Sympa configuration";
- type = submodule {
- options = {
- listmasters = mkOption {
- type = listOf str;
- description = "Listmasters";
- };
- postgresql = mkPsqlOptions "Sympa";
- data_sources = mkOption {
- type = attrsOf str;
- default = {};
- description = "Data sources to make available to sympa";
- };
- scenari = mkOption {
- type = attrsOf str;
- default = {};
- description = "Scenari to make available to sympa";
- };
- };
- };
- };
- };
- };
- };
- buildbot = mkOption {
- description = "Buildbot configuration";
- type = submodule {
- options = {
- ssh_key = mkOption {
- description = "SSH key information";
- type = submodule {
- options = {
- public = mkOption { type = str; description = "Public part of the key"; };
- private = mkOption { type = lines; description = "Private part of the key"; };
- };
- };
- };
- workerPassword = mkOption { description = "Buildbot worker password"; type = str; };
- user = mkOption {
- description = "Buildbot user";
- type = submodule {
- options = {
- uid = mkOption {
- description = "user uid";
- type = int;
- };
- gid = mkOption {
- description = "user gid";
- type = int;
- };
- };
- };
- };
- ldap = mkOption {
- description = "Ldap configuration for buildbot";
- type = submodule {
- options = {
- password = mkOption { type = str; description = "Buildbot password"; };
- };
- };
- };
- projects = mkOption {
- description = "Projects to make a buildbot for";
- type = attrsOf (submodule {
- options = {
- name = mkOption { type = str; description = "Project name"; };
- packages = mkOption {
- type = unspecified;
- example = literalExample ''
- pkgs: [ pkgs.bash pkgs.git pkgs.gzip pkgs.openssh ];
- '';
- description = ''
- Function.
- Builds packages list to make available to buildbot project.
- Takes pkgs as argument.
- '';
- };
- pythonPackages = mkOption {
- type = unspecified;
- example = literalExample ''
- p: pkgs: [ pkgs.python3Packages.pip ];
- '';
- description = ''
- Function.
- Builds python packages list to make available to buildbot project.
- Takes buildbot python module as first argument and pkgs as second argument in order to augment the python modules list.
- '';
- };
- pythonPathHome = mkOption { type = bool; description = "Whether to add project’s python home to python path"; };
- workerPort = mkOption { type = port; description = "Port for the worker"; };
- secrets = mkOption {
- type = attrsOf str;
- description = "Secrets for the project to dump as files";
- };
- environment = mkOption {
- type = attrsOf str;
- description = ''
- Environment variables for the project.
- BUILDBOT_ is prefixed to the variable names
- '';
- };
- activationScript = mkOption {
- type = lines;
- description = ''
- Activation script to run during deployment
- '';
- };
- builderPaths = mkOption {
- type = attrsOf unspecified;
- default = {};
- description = ''
- Attrs of functions to make accessible specifically per builder.
- Takes pkgs as argument and should return a single path containing binaries.
- This path will be accessible as BUILDBOT_PATH_
- '';
- };
- webhookTokens = mkOption {
- type = nullOr (listOf str);
- default = null;
- description = ''
- List of tokens allowed to push to project’s change_hook/base endpoint
- '';
- };
- };
- });
- };
- };
- };
- };
- tools = mkOption {
- description = "Tools configurations";
- type = submodule {
- options = {
- contact = mkOption { type = str; description = "Contact e-mail address"; };
- assets = mkOption {
- default = {};
- type = attrsOf (submodule {
- options = {
- url = mkOption { type = str; description = "URL to fetch"; };
- sha256 = mkOption { type = str; description = "Hash of the url"; };
- };
- });
- description = "Assets to provide on assets.immae.eu";
- };
- davical = mkOption {
- description = "Davical configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "Davical";
- ldap = mkLdapOptions "Davical" {};
- };
- };
- };
- diaspora = mkOption {
- description = "Diaspora configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "Diaspora";
- redis = mkRedisOptions "Diaspora";
- ldap = mkLdapOptions "Diaspora" {};
- secret_token = mkOption { type = str; description = "Secret token"; };
- };
- };
- };
- dmarc_reports = mkOption {
- description = "DMARC reports configuration";
- type = submodule {
- options = {
- mysql = mkMysqlOptions "DMARC" {};
- anonymous_key = mkOption { type = str; description = "Anonymous hashing key"; };
- };
- };
- };
- etherpad-lite = mkOption {
- description = "Etherpad configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "Etherpad";
- ldap = mkLdapOptions "Etherpad" {
- group_filter = mkOption { type = str; description = "Filter for groups"; };
- };
- adminPassword = mkOption { type = str; description = "Admin password for mypads / admin"; };
- session_key = mkOption { type = str; description = "Session key"; };
- api_key = mkOption { type = str; description = "API key"; };
- redirects = mkOption { type = str; description = "Redirects for apache"; };
- };
- };
- };
- gitolite = mkOption {
- description = "Gitolite configuration";
- type = submodule {
- options = {
- ldap = mkLdapOptions "Gitolite" {};
- ssh_key = mkOption {
- description = "SSH key information";
- type = submodule {
- options = {
- public = mkOption { type = str; description = "Public part of the key"; };
- private = mkOption { type = lines; description = "Private part of the key"; };
- };
- };
- };
- };
- };
- };
- kanboard = mkOption {
- description = "Kanboard configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "Kanboard";
- ldap = mkLdapOptions "Kanboard" {
- admin_dn = mkOption { type = str; description = "Admin DN"; };
- };
- };
- };
- };
- mantisbt = mkOption {
- description = "Mantisbt configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "Mantisbt";
- ldap = mkLdapOptions "Mantisbt" {};
- master_salt = mkOption { type = str; description = "Master salt for password hash"; };
- };
- };
- };
- mastodon = mkOption {
- description = "Mastodon configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "Mastodon";
- redis = mkRedisOptions "Mastodon";
- ldap = mkLdapOptions "Mastodon" {};
- paperclip_secret = mkOption { type = str; description = "Paperclip secret"; };
- otp_secret = mkOption { type = str; description = "OTP secret"; };
- secret_key_base = mkOption { type = str; description = "Secret key base"; };
- vapid = mkOption {
- description = "vapid key";
- type = submodule {
- options = {
- private = mkOption { type = str; description = "Private key"; };
- public = mkOption { type = str; description = "Public key"; };
- };
- };
- };
- };
- };
- };
- mediagoblin = mkOption {
- description = "Mediagoblin configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "Mediagoblin";
- redis = mkRedisOptions "Mediagoblin";
- ldap = mkLdapOptions "Mediagoblin" {};
- };
- };
- };
- nextcloud = mkOption {
- description = "Nextcloud configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "Peertube";
- redis = mkRedisOptions "Peertube";
- password_salt = mkOption { type = str; description = "Password salt"; };
- instance_id = mkOption { type = str; description = "Instance ID"; };
- secret = mkOption { type = str; description = "App secret"; };
- };
- };
- };
- peertube = mkOption {
- description = "Peertube configuration";
- type = submodule {
- options = {
- listenPort = mkOption { type = port; description = "Port to listen to"; };
- postgresql = mkPsqlOptions "Peertube";
- redis = mkRedisOptions "Peertube";
- ldap = mkLdapOptions "Peertube" {};
- };
- };
- };
- syden_peertube = mkOption {
- description = "Peertube Syden configuration";
- type = submodule {
- options = {
- listenPort = mkOption { type = port; description = "Port to listen to"; };
- postgresql = mkPsqlOptions "Peertube";
- redis = mkRedisOptions "Peertube";
- };
- };
- };
- phpldapadmin = mkOption {
- description = "phpLdapAdmin configuration";
- type = submodule {
- options = {
- ldap = mkLdapOptions "phpldapadmin" {};
- };
- };
- };
- rompr = mkOption {
- description = "Rompr configuration";
- type = submodule {
- options = {
- mpd = mkOption {
- description = "MPD configuration";
- type = submodule {
- options = {
- host = mkOption { type = str; description = "Host for MPD"; };
- port = mkOption { type = port; description = "Port to access MPD host"; };
- };
- };
- };
- };
- };
- };
- roundcubemail = mkOption {
- description = "Roundcubemail configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "TT-RSS";
- secret = mkOption { type = str; description = "Secret"; };
- };
- };
- };
- shaarli = mkOption {
- description = "Shaarli configuration";
- type = submodule {
- options = {
- ldap = mkLdapOptions "Shaarli" {};
- };
- };
- };
- status_engine = mkOption {
- description = "Status Engine configuration";
- type = submodule {
- options = {
- mysql = mkMysqlOptions "StatusEngine" {};
- ldap = mkLdapOptions "StatusEngine" {};
- };
- };
- };
- task = mkOption {
- description = "Taskwarrior configuration";
- type = submodule {
- options = {
- ldap = mkLdapOptions "Taskwarrior" {};
- taskwarrior-web = mkOption {
- description = "taskwarrior-web profiles";
- type = attrsOf (submodule {
- options = {
- uid = mkOption {
- type = listOf str;
- description = "List of ldap uids having access to this profile";
- };
- org = mkOption { type = str; description = "Taskd organisation"; };
- key = mkOption { type = str; description = "Taskd key"; };
- date = mkOption { type = str; description = "Preferred date format"; };
- };
- });
- };
- };
- };
- };
- ttrss = mkOption {
- description = "TT-RSS configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "TT-RSS";
- ldap = mkLdapOptions "TT-RSS" {};
- };
- };
- };
- wallabag = mkOption {
- description = "Wallabag configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "Wallabag";
- ldap = mkLdapOptions "Wallabag" {
- admin_filter = mkOption { type = str; description = "Admin users filter"; };
- };
- redis = mkRedisOptions "Wallabag";
- secret = mkOption { type = str; description = "App secret"; };
- };
- };
- };
- webhooks = mkOption {
- type = attrsOf str;
- description = "Mapping 'name'.php => script for webhooks";
- };
- csp_reports = mkOption {
- description = "CSP report configuration";
- type = submodule {
- options = {
- report_uri = mkOption { type = str; description = "URI to report CSP violations to"; };
- policies = mkOption { type = attrsOf str; description = "CSP policies to apply"; };
- postgresql = mkPsqlOptions "CSP reports";
- };
- };
- };
- commento = mkOption {
- description = "Commento configuration";
- type = submodule {
- options = {
- listenPort = mkOption { type = port; description = "Port to listen to"; };
- postgresql = mkPsqlOptions "Commento";
- smtp = mkSmtpOptions "Commento";
- };
- };
- };
- cryptpad = mkOption {
- description = "Cryptpad configuration";
- type = attrsOf (submodule {
- options = {
- email = mkOption { type = str; description = "Admin e-mail"; };
- admins = mkOption { type = listOf str; description = "Instance admin public keys"; };
- port = mkOption { type = port; description = "Port to listen to"; };
- };
- });
- };
- ympd = mkOption {
- description = "Ympd configuration";
- type = submodule {
- options = {
- listenPort = mkOption { type = port; description = "Port to listen to"; };
- mpd = mkOption {
- description = "MPD configuration";
- type = submodule {
- options = {
- password = mkOption { type = str; description = "Password to access MPD host"; };
- host = mkOption { type = str; description = "Host for MPD"; };
- port = mkOption { type = port; description = "Port to access MPD host"; };
- };
- };
- };
- };
- };
- };
- umami = mkOption {
- description = "Umami configuration";
- type = submodule {
- options = {
- listenPort = mkOption { type = port; description = "Port to listen to"; };
- postgresql = mkPsqlOptions "Umami";
- hashSalt = mkOption { type = str; description = "Hash salt"; };
- };
- };
- };
- yourls = mkOption {
- description = "Yourls configuration";
- type = submodule {
- options = {
- mysql = mkMysqlOptions "Yourls" {};
- ldap = mkLdapOptions "Yourls" {};
- cookieKey = mkOption { type = str; description = "Cookie key"; };
- };
- };
- };
- };
- };
- };
- serverSpecific = mkOption { type = attrsOf unspecified; description = "Server specific configuration"; };
- websites = mkOption {
- description = "Websites configurations";
- type = submodule {
- options = {
- immae = mkOption {
- description = "Immae configuration by environment";
- type = submodule {
- options = {
- temp = mkOption {
- description = "Temp configuration";
- type = submodule {
- options = {
- ldap = mkLdapOptions "Immae temp" {
- filter = mkOption { type = str; description = "Filter for user access"; };
- };
- };
- };
- };
- };
- };
- };
- isabelle = mkOption {
- description = "Isabelle configurations by environment";
- type =
- let
- atenSubmodule = mkOption {
- description = "environment configuration";
- type = submodule {
- options = {
- environment = mkOption { type = str; description = "Symfony environment"; };
- secret = mkOption { type = str; description = "Symfony App secret"; };
- postgresql = mkPsqlOptions "Aten";
- };
- };
- };
- in
- submodule {
- options = {
- aten_production = atenSubmodule;
- aten_integration = atenSubmodule;
- iridologie = mkOption {
- description = "environment configuration";
- type = submodule {
- options = {
- environment = mkOption { type = str; description = "SPIP environment"; };
- mysql = mkMysqlOptions "Iridologie" {};
- ldap = mkLdapOptions "Iridologie" {};
- };
- };
- };
- };
- };
- };
- chloe = mkOption {
- description = "Chloe configurations by environment";
- type =
- let
- chloeSubmodule = mkOption {
- description = "environment configuration";
- type = submodule {
- options = {
- environment = mkOption { type = str; description = "SPIP environment"; };
- mysql = mkMysqlOptions "Chloe" {};
- ldap = mkLdapOptions "Chloe" {};
- };
- };
- };
- in
- submodule {
- options = {
- production = chloeSubmodule;
- integration = chloeSubmodule;
- };
- };
- };
- connexionswing = mkOption {
- description = "Connexionswing configurations by environment";
- type =
- let
- csSubmodule = mkOption {
- description = "environment configuration";
- type = submodule {
- options = {
- environment = mkOption { type = str; description = "Symfony environment"; };
- mysql = mkMysqlOptions "Connexionswing" {};
- secret = mkOption { type = str; description = "Symfony App secret"; };
- email = mkOption { type = str; description = "Symfony email notification"; };
- };
- };
- };
- in
- submodule {
- options = {
- production = csSubmodule;
- integration = csSubmodule;
- };
- };
- };
- jerome = mkOption {
- description = "Naturaloutil configuration";
- type = submodule {
- options = {
- mysql = mkMysqlOptions "Naturaloutil" {};
- server_admin = mkOption { type = str; description = "Server admin e-mail"; };
- };
- };
- };
- telio_tortay = mkOption {
- description = "Telio Tortay configuration";
- type = submodule {
- options = {
- server_admin = mkOption { type = str; description = "Server admin e-mail"; };
- };
- };
- };
- ludivine = mkOption {
- description = "Ludivinecassal configurations by environment";
- type =
- let
- lcSubmodule = mkOption {
- description = "environment configuration";
- type = submodule {
- options = {
- environment = mkOption { type = str; description = "Symfony environment"; };
- mysql = mkMysqlOptions "LudivineCassal" {};
- ldap = mkLdapOptions "LudivineCassal" {};
- secret = mkOption { type = str; description = "Symfony App secret"; };
- };
- };
- };
- in
- submodule {
- options = {
- production = lcSubmodule;
- integration = lcSubmodule;
- };
- };
- };
- emilia = mkOption {
- description = "Emilia configuration";
- type = submodule {
- options = {
- postgresql = mkPsqlOptions "Emilia";
- };
- };
- };
- florian = mkOption {
- description = "Florian configuration";
- type = submodule {
- options = {
- server_admin = mkOption { type = str; description = "Server admin e-mail"; };
- };
- };
- };
- nassime = mkOption {
- description = "Nassime configuration";
- type = submodule {
- options = {
- server_admin = mkOption { type = str; description = "Server admin e-mail"; };
- };
- };
- };
- piedsjaloux = mkOption {
- description = "Piedsjaloux configurations by environment";
- type =
- let
- pjSubmodule = mkOption {
- description = "environment configuration";
- type = submodule {
- options = {
- environment = mkOption { type = str; description = "Symfony environment"; };
- mysql = mkMysqlOptions "Piedsjaloux" {};
- secret = mkOption { type = str; description = "Symfony App secret"; };
- };
- };
- };
- in
- submodule {
- options = {
- production = pjSubmodule;
- integration = pjSubmodule;
- };
- };
- };
- richie = mkOption {
- description = "Europe Richie configurations by environment";
- type = submodule {
- options = {
- mysql = mkMysqlOptions "Richie" {};
- smtp_mailer = mkOption {
- description = "SMTP mailer configuration";
- type = submodule {
- options = {
- user = mkOption { type = str; description = "Username"; };
- password = mkOption { type = str; description = "Password"; };
- };
- };
- };
- };
- };
- };
- caldance = mkOption {
- description = "Caldance configurations by environment";
- type = submodule {
- options = {
- integration = mkOption {
- description = "environment configuration";
- type = submodule {
- options = {
- password = mkOption { type = str; description = "Password file content for basic auth"; };
- };
- };
- };
- };
- };
- };
- tellesflorian = mkOption {
- description = "Tellesflorian configurations by environment";
- type =
- let
- tfSubmodule = mkOption {
- description = "environment configuration";
- type = submodule {
- options = {
- environment = mkOption { type = str; description = "Symfony environment"; };
- mysql = mkMysqlOptions "Tellesflorian" {};
- secret = mkOption { type = str; description = "Symfony App secret"; };
- invite_passwords = mkOption { type = str; description = "Password basic auth"; };
- };
- };
- };
- in
- submodule {
- options = {
- integration = tfSubmodule;
- };
- };
- };
- };
- };
- };
- };
- options.hostEnv = mkOption {
- readOnly = true;
- type = hostEnv;
- default = config.myEnv.servers."${name}";
- description = "Host environment";
- };
-}
diff --git a/modules/private/ftp.nix b/modules/private/ftp.nix
deleted file mode 100644
index cae25c1..0000000
--- a/modules/private/ftp.nix
+++ /dev/null
@@ -1,248 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- package = pkgs.pure-ftpd.override { ldapFtpId = "immaeFtp"; };
- pure-ftpd-enabled = config.myServices.ftp.pure-ftpd.enable;
- proftpd-enabled = config.myServices.ftp.proftpd.enable;
-in
-{
- options = {
- myServices.ftp.enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- description = ''
- Whether to enable ftp.
- '';
- };
- myServices.ftp.pure-ftpd.enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- description = ''
- Whether to enable pure-ftpd.
- '';
- };
- myServices.ftp.proftpd.enable = lib.mkOption {
- type = lib.types.bool;
- default = true;
- description = ''
- Whether to enable proftpd.
- '';
- };
- };
-
- config = lib.mkIf config.myServices.ftp.enable {
- security.acme.certs."ftp" = config.myServices.certificates.certConfig // {
- domain = "eldiron.immae.eu";
- postRun = (lib.optionalString pure-ftpd-enabled ''
- systemctl restart pure-ftpd.service
- '') + (lib.optionalString proftpd-enabled ''
- systemctl restart proftpd.service
- '');
- extraDomains = { "ftp.immae.eu" = null; };
- };
-
- networking = {
- firewall = {
- allowedTCPPorts = [ 21 115 ];
- allowedTCPPortRanges = [ { from = 40000; to = 50000; } ];
- };
- };
-
- users.users.ftp = {
- uid = config.ids.uids.ftp; # 8
- group = "ftp";
- description = "Anonymous FTP user";
- home = "/homeless-shelter";
- extraGroups = [ "keys" ];
- };
-
- users.groups.ftp.gid = config.ids.gids.ftp;
-
- system.activationScripts.ftp = ''
- install -m 0755 -o ftp -g ftp -d /var/lib/ftp
- '' + (lib.optionalString proftpd-enabled ''
- install -m 0755 -o nobody -g nogroup -d /var/lib/proftpd/authorized_keys
- '');
-
- secrets.keys."pure-ftpd-ldap" = lib.mkIf pure-ftpd-enabled {
- permissions = "0400";
- user = "ftp";
- group = "ftp";
- text = ''
- LDAPServer ${config.myEnv.ftp.ldap.host}
- LDAPPort 389
- LDAPUseTLS True
- LDAPBaseDN ${config.myEnv.ftp.ldap.base}
- LDAPBindDN ${config.myEnv.ftp.ldap.dn}
- LDAPBindPW ${config.myEnv.ftp.ldap.password}
- LDAPDefaultUID 500
- LDAPForceDefaultUID False
- LDAPDefaultGID 100
- LDAPForceDefaultGID False
- LDAPFilter ${config.myEnv.ftp.ldap.pure-ftpd_filter}
-
- LDAPAuthMethod BIND
-
- # Pas de possibilite de donner l'Uid/Gid !
- # Compile dans pure-ftpd directement avec immaeFtpUid / immaeFtpGid
- LDAPHomeDir immaeFtpDirectory
- '';
- };
- secrets.keys."proftpd-ldap.conf" = lib.mkIf proftpd-enabled {
- permissions = "0400";
- user = "ftp";
- group = "ftp";
- text = ''
- LDAPServer ldaps://${config.myEnv.ftp.ldap.host}:636/??sub
- LDAPUseTLS on
- LDAPAuthBinds on
- LDAPBindDN "${config.myEnv.ftp.ldap.dn}" "${config.myEnv.ftp.ldap.password}"
- LDAPSearchScope subtree
- LDAPAuthBinds on
- LDAPDefaultGID 100
- LDAPDefaultUID 500
- LDAPForceDefaultUID off
- LDAPForceDefaultGID off
- LDAPAttr gidNumber immaeFtpGid
- LDAPAttr uidNumber immaeFtpUid
- LDAPAttr homeDirectory immaeFtpDirectory
- LDAPUsers "${config.myEnv.ftp.ldap.base}" "${config.myEnv.ftp.ldap.proftpd_filter}"
- LDAPGroups "${config.myEnv.ftp.ldap.base}"
- '';
- };
-
- services.filesWatcher.pure-ftpd = lib.mkIf pure-ftpd-enabled {
- restart = true;
- paths = [ config.secrets.fullPaths."pure-ftpd-ldap" ];
- };
- services.filesWatcher.proftpd = lib.mkIf proftpd-enabled {
- restart = true;
- paths = [ config.secrets.fullPaths."proftpd-ldap.conf" ];
- };
-
- systemd.services.pure-ftpd = let
- configFile = pkgs.writeText "pure-ftpd.conf" ''
- PassivePortRange 40000 50000
- Bind 42
- ChrootEveryone yes
- CreateHomeDir yes
- BrokenClientsCompatibility yes
- MaxClientsNumber 50
- Daemonize yes
- MaxClientsPerIP 8
- VerboseLog no
- DisplayDotFiles yes
- AnonymousOnly no
- NoAnonymous no
- SyslogFacility ftp
- DontResolve yes
- MaxIdleTime 15
- LDAPConfigFile ${config.secrets.fullPaths."pure-ftpd-ldap"}
- LimitRecursion 10000 8
- AnonymousCanCreateDirs no
- MaxLoad 4
- AntiWarez yes
- Umask 133:022
- # ftp
- MinUID 8
- AllowUserFXP no
- AllowAnonymousFXP no
- ProhibitDotFilesWrite no
- ProhibitDotFilesRead no
- AutoRename no
- AnonymousCantUpload no
- MaxDiskUsage 99
- CustomerProof yes
- TLS 1
- CertFile ${config.security.acme.certs.ftp.directory}/full.pem
- '';
- in lib.mkIf pure-ftpd-enabled {
- description = "Pure-FTPd server";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
-
- serviceConfig.ExecStart = "${package}/bin/pure-ftpd ${configFile}";
- serviceConfig.Type = "forking";
- serviceConfig.PIDFile = "/run/pure-ftpd.pid";
- };
-
- systemd.services.proftpd = let
- configFile = pkgs.writeText "proftpd.conf" ''
- ServerName "ProFTPD"
- ServerType standalone
- DefaultServer on
-
- Port 21
- UseIPv6 on
- Umask 022
- MaxInstances 30
- MaxClients 50
- MaxClientsPerHost 8
-
- # Set the user and group under which the server will run.
- User ftp
- Group ftp
-
- CreateHome on
- DefaultRoot ~
-
- AllowOverwrite on
-
- TLSEngine on
- TLSRequired off
- TLSProtocol TLSv1.1 TLSv1.2 TLSv1.3
-
- TLSCertificateChainFile ${config.security.acme.certs.ftp.directory}/fullchain.pem
- TLSECCertificateFile ${config.security.acme.certs.ftp.directory}/cert.pem
- TLSECCertificateKeyFile ${config.security.acme.certs.ftp.directory}/key.pem
- TLSRenegotiate none
- PidFile /run/proftpd/proftpd.pid
-
- ScoreboardFile /run/proftpd/proftpd.scoreboard
-
- PassivePorts 40000 50000
- #DebugLevel 10
- Include ${config.secrets.fullPaths."proftpd-ldap.conf"}
-
- RequireValidShell off
-
- # Bar use of SITE CHMOD by default
-
- DenyAll
-
-
-
- Umask 022
- Port 115
- SFTPEngine on
- CreateHome on
- DefaultRoot ~
-
- AllowOverwrite on
-
- SFTPHostKey /etc/ssh/ssh_host_ed25519_key
- SFTPHostKey /etc/ssh/ssh_host_rsa_key
- Include ${config.secrets.fullPaths."proftpd-ldap.conf"}
- RequireValidShell off
- SFTPAuthorizedUserKeys file:/var/lib/proftpd/authorized_keys/%u
- SFTPAuthMethods password publickey
-
- SFTPOptions IgnoreSFTPSetOwners
-
- '';
- in lib.mkIf proftpd-enabled {
- description = "ProFTPD server";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
-
- serviceConfig.ExecStart = "${pkgs.proftpd}/bin/proftpd -c ${configFile}";
- serviceConfig.Type = "forking";
- serviceConfig.PIDFile = "/run/proftpd/proftpd.pid";
- serviceConfig.RuntimeDirectory = "proftpd";
- };
-
- services.cron.systemCronJobs = lib.mkIf proftpd-enabled [
- "*/2 * * * * nobody ${./ftp_sync.sh}"
- ];
- };
-
-}
diff --git a/modules/private/ftp_sync.sh b/modules/private/ftp_sync.sh
deleted file mode 100755
index 8b0d9c5..0000000
--- a/modules/private/ftp_sync.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env bash
-
-LDAPSEARCH=ldapsearch
-
-LDAP_BIND="cn=ssh,ou=services,dc=immae,dc=eu"
-LDAP_PASS=$(cat /etc/ssh/ldap_password)
-LDAP_HOST="ldap.immae.eu"
-LDAP_BASE="dc=immae,dc=eu"
-LDAP_FILTER="(memberOf=cn=users,cn=ftp,ou=services,dc=immae,dc=eu)"
-
-handle_keys() {
- uids="$1"
- keys="$2"
- if [ -n "$uids" ]; then
- for uid in $uids; do
- echo "$keys" | while read key; do
- if [ -n "$key" ]; then
- ssh-keygen -e -f <(echo "$key")
- fi
- done > /var/lib/proftpd/authorized_keys/$uid
- done
- fi
-}
-
-mkdir -p /var/lib/proftpd/authorized_keys
-
-while read i; do
- if [[ "$i" =~ ^dn: ]]; then
- handle_keys "$uids" "$keys"
- uids=""
- keys=""
- fi;
- if [[ "$i" =~ ^uid: ]]; then
- uids="$uids ${i#uid: }"
- fi
- if [[ "$i" =~ ^immaeSshKey: ]]; then
- key="${i#immaeSshKey: }"
- if [[ "$key" =~ ^ssh- ]]; then
- keys="$keys
-$key"
- elif echo "$key" | cut -d" " -f1 | grep -q "\bftp\b"; then
- keys="$keys
-$(echo "$key" | cut -d" " -f2-)"
- fi
- fi
-done < <(ldapsearch -h "$LDAP_HOST" -ZZ -LLL -D "$LDAP_BIND" -w "$LDAP_PASS" -b "$LDAP_BASE" -x -o ldif-wrap=no "$LDAP_FILTER" uid immaeSshKey)
-handle_keys "$uids" "$keys"
diff --git a/modules/private/gemini/default.nix b/modules/private/gemini/default.nix
deleted file mode 100644
index ffe8a12..0000000
--- a/modules/private/gemini/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib, config, pkgs, ... }:
-let
- configFile = pkgs.writeText "config.yaml" ''
- listen: ":1965"
- hosts:
- immae.eu:
- cert: /var/lib/acme/immae/full.pem
- key: /var/lib/acme/immae/key.pem
- paths:
- - path: /
- root: ${./public}
- '';
-in
-{
- options.myServices.gemini.enable = lib.mkEnableOption "enable Gemini capsule";
- config = lib.mkIf config.myServices.gemini.enable {
- networking.firewall.allowedTCPPorts = [ 1965 ];
- systemd.services.gemini = {
- description = "Gemini capsule server";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
- serviceConfig.ExecStart = "${pkgs.twins}/bin/twins -config ${configFile}";
- serviceConfig.Type = "simple";
- };
- };
-}
diff --git a/modules/private/gemini/public/index.gmi b/modules/private/gemini/public/index.gmi
deleted file mode 100644
index 034a0d9..0000000
--- a/modules/private/gemini/public/index.gmi
+++ /dev/null
@@ -1,70 +0,0 @@
-# Immae
-
-## Présentation
-
-Dans le but de promouvoir la décentralisation des données personnelles et l’usage de logiciels open source, je propose un hébergement de divers services utiles. Ces services sont basés sur du code libre et déployés sur des systèmes libres également.
-
-Je suis un particulier, et dans la mesure de mes capacités, j’essaye toujours de fournir des services à ma famille et à mes amis proches en remplacement de services non libres fournis par les géants du web. J’ai décidé de faire le nécessaire pour étendre ces services à un public plus large, avec pour but de conserver une qualité suffisante.
-
-Lorsque c’est possible, les programmes que je développe sont également libres de droits (ce n’est pas toujours dépendant de ma volonté ou tributaire de ma disponibilité pour rendre le code accessible)
-
-Depuis juin 2019 je fais partie du collectif CHATONS, dont je respecte en particulier la charte:
-=> https://chatons.org CHATONS
-
-## Tarifs
-
-Je ne cherche pas à faire de profits en proposant ces services. Cependant, l’hébergement de ces services n’est pas gratuit, et maintenir ces services à un niveau de qualité suffisant demande de l’investissement en temps. Ainsi, selon l’usage désiré, le niveau de personnalisation et support dont vous avez besoin et les moyens à votre disposition et votre volonté, une participation pourra être demandée afin d’y accéder.
-=> https://www.immae.eu/licences_et_tip.html Tips
-
-## Services proposés
-
-Voici une liste non exhaustive de services que je propose :
-
-* Mastodon
-* Nextcloud
-* Calendrier/Contacts et synchronisation
-* Hébergement de vidéos (Mediagoblin)
-* Hébergement de vidéos (Peertube)
-* Kanboard
-* Flux RSS
-* "Lire plus tard" (wallabag)
-* Partage de liens (Shaarli)
-* Raccourcisseur d’URLs
-* Édition de texte collaborative
-* Réseau social
-* Hébergement de dépôts git privés et publics, gestion d’issues
-* Messagerie instantanée (XMPP/Jabber)
-* Comptes e-mails avec domaines personnalisés, IMAP/SMTP, MX backup
-* Hébergement et administration de sites web privés
-* Comptes shell protégés
-
-Un tableau de bord des services est disponible :
-=> https://tools.immae.eu Tableau de bord des services
-
-Je propose également de l’aide à distance (ou de visu si la distance est faible), pour l’usage de ces outils ou d’autres problèmes liés à l’informatique.
-
-Si vous ne voyez pas ce que vous voulez dans la liste, nous pourrons essayer de trouver une solution ensemble. Je suis ouvert aussi bien sûr à la création de nouveaux services (la liste est encore incomplète et d’autres services sont déjà prévus), dans le cadre défini en haut : basé sur des applications libres.
-
-=> https://status.immae.eu État des services
-
-## Comment faire ?
-
-Vous devez commencer par accepter les conditions générales dgutilisation :
-=> https://www.immae.eu/CGU Conditions générales d’utilisation
-Elles ne contiennent rien d’inhabituel mais elles ont été écrites par moi-même, donc sans jargon juridique. Elles vous permettront de décider si les garanties proposées sont en accord avec ce que vous pouvez vous permettre.
-
-Ensuite, contactez-moi avec vos vœux :
-=> https://www.immae.eu/contacts_fr.html Page de contact
-
-## Infrastructure et open source
-
-Dans le but de pouvoir décemment offrir une qualité de service suffisante sans pour autant y passer mes journées, l’installation des services est gérée via NixOS, permettant d’assurer la reproductibilité et l’automatisation des installations.
-
-Cette configuration est stockée publiquement dans un dépôt git, réutilisable et améliorable librement (avec probablement quelques ajustements).
-=> https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/ Dépôt git de la configuration
-
-
-=> https://www.immae.eu/contacts_fr.html Page de contact
-=> https://www.immae.eu/CGU Conditions générales d’utilisation
-=> https://www.immae.eu/mentions.html Mentions légales
-=> https://www.immae.eu/licences_et_tip.html Quelques informations sur les licences utilisées et tips
diff --git a/modules/private/gitolite/default.nix b/modules/private/gitolite/default.nix
deleted file mode 100644
index 6a74734..0000000
--- a/modules/private/gitolite/default.nix
+++ /dev/null
@@ -1,77 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.gitolite;
-in {
- options.myServices.gitolite = {
- enable = lib.mkEnableOption "my gitolite service";
- gitoliteDir = lib.mkOption {
- type = lib.types.str;
- default = "/var/lib/gitolite";
- };
- };
-
- config = lib.mkIf cfg.enable {
- myServices.ssh.modules = [{
- snippet = builtins.readFile ./ldap_gitolite.sh;
- dependencies = [ pkgs.gitolite ];
- }];
- networking.firewall.allowedTCPPorts = [ 9418 ];
-
- secrets.keys."gitolite/ldap_password" = {
- user = "gitolite";
- group = "gitolite";
- permissions = "0400";
- text = config.myEnv.tools.gitolite.ldap.password;
- };
-
- services.gitDaemon = {
- enable = true;
- user = "gitolite";
- group = "gitolite";
- basePath = "${cfg.gitoliteDir}/repositories";
- };
-
- system.activationScripts.gitolite = let
- deps = [ pkgs.openldap pkgs.stdenv.shellPackage pkgs.gnugrep pkgs.coreutils ];
- gitolite_ldap_groups = pkgs.runCommand "gitolite_ldap_groups.sh" {
- buildInputs = [ pkgs.makeWrapper ];
- } ''
- makeWrapper "${./gitolite_ldap_groups.sh}" "$out" \
- --prefix PATH : ${lib.makeBinPath deps} \
- --set LDAP_PASS_PATH ${config.secrets.fullPaths."gitolite/ldap_password"}
- '';
- in {
- deps = [ "users" ];
- text = ''
- if [ -d ${cfg.gitoliteDir} ]; then
- ln -sf ${gitolite_ldap_groups} ${cfg.gitoliteDir}/gitolite_ldap_groups.sh
- chmod g+rx ${cfg.gitoliteDir}
- fi
- if [ -f ${cfg.gitoliteDir}/projects.list ]; then
- chmod g+r ${cfg.gitoliteDir}/projects.list
- fi
- '';
- };
-
- users.users.wwwrun.extraGroups = [ "gitolite" ];
- users.users.gitolite.extraGroups = [ "keys" ];
-
- users.users.gitolite.packages = let
- python-packages = python-packages: with python-packages; [
- simplejson
- urllib3
- sleekxmpp
- ];
- in
- [
- (pkgs.python3.withPackages python-packages)
- pkgs.nettools
- pkgs.findutils
- ];
- # Installation: https://git.immae.eu/mantisbt/view.php?id=93
- services.gitolite = {
- enable = true;
- adminPubkey = config.myEnv.sshd.rootKeys.immae_dilion;
- };
- };
-}
diff --git a/modules/private/gitolite/gitolite_ldap_groups.sh b/modules/private/gitolite/gitolite_ldap_groups.sh
deleted file mode 100755
index 3d7117e..0000000
--- a/modules/private/gitolite/gitolite_ldap_groups.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-
-uid_param="$1"
-ldap_host="ldap.immae.eu"
-ldap_binddn="cn=gitolite,ou=services,dc=immae,dc=eu"
-ldap_bindpw="$(cat $LDAP_PASS_PATH)"
-ldap_searchbase="dc=immae,dc=eu"
-ldap_scope="subtree"
-
-ldap_options="-h ${ldap_host} -ZZ -x -D ${ldap_binddn} -w ${ldap_bindpw} -b ${ldap_searchbase} -s ${ldap_scope}"
-
-ldap_filter="(&(memberOf=cn=groups,cn=gitolite,ou=services,dc=immae,dc=eu)(|(member=uid=${uid_param},ou=users,dc=immae,dc=eu)(member=uid=${uid_param},ou=group_users,dc=immae,dc=eu)))"
-ldap_result=$(ldapsearch ${ldap_options} -LLL "${ldap_filter}" cn | grep 'cn:' | cut -d' ' -f2)
-
-echo "$ldap_result"
diff --git a/modules/private/gitolite/ldap_gitolite.sh b/modules/private/gitolite/ldap_gitolite.sh
deleted file mode 100644
index 23cb2bf..0000000
--- a/modules/private/gitolite/ldap_gitolite.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-### This snippet is not standalone and must be integrated in the global ldap_authorized_keys.sh
-LDAP_GITOLITE_MEMBER="cn=users,cn=gitolite,ou=services,dc=immae,dc=eu"
-GITOLITE_SHELL=$(which gitolite-shell)
-
-if [[ $user == gitolite ]]; then
- ldap_search '(&(memberOf='$LDAP_GITOLITE_MEMBER')('$KEY'=*))' $KEY | \
- while read line ;
- do
- if [ ! -z "$line" ]; then
- if [[ $line == dn* ]]; then
- user=$(sed -n 's/.*uid=\([^,]*\).*/\1/p' <<< "$line")
- if [ -n "$user" ]; then
- if [[ $user == "immae" ]] || [[ $user == "denise" ]]; then
- # Capitalize first letter (backward compatibility)
- user=$(sed -r 's/^([a-z])/\U\1/' <<< "$user")
- fi
- else
- # Service fake user
- user=$(sed -n 's/.*cn=\([^,]*\).*/\1/p' <<< "$line")
- fi
- elif [[ $line == $KEY* ]]; then
- key=$(clean_key_line git "$line")
- if [ ! -z "$key" ]; then
- if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
- echo -n 'command="'$GITOLITE_SHELL' '$user'",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty '
- echo $key
- fi
- fi
- fi
- fi
- done
- exit 0
-fi
diff --git a/modules/private/irc.nix b/modules/private/irc.nix
deleted file mode 100644
index bc0bfb4..0000000
--- a/modules/private/irc.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.irc;
-in
-{
- options.myServices = {
- ircCerts = lib.mkOption {
- description = "Default ircconfigurations for certificates as accepted by acme";
- };
- irc.enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- description = ''
- Whether to enable irc stuff.
- '';
- };
- };
-
- config = lib.mkIf cfg.enable {
- security.acme.certs."irc" = config.myServices.ircCerts // {
- domain = "irc.immae.eu";
- postRun = ''
- systemctl restart stunnel.service
- '';
- };
-
- networking.firewall.allowedTCPPorts = [ 6697 ];
- services.bitlbee = with pkgs; {
- enable = true;
- authMode = "Registered";
- libpurple_plugins = [
- purple-hangouts
- purple-matrix
- ];
- plugins = [
- bitlbee-mastodon
- bitlbee-facebook
- bitlbee-discord
- bitlbee-steam
- ];
- };
-
- services.stunnel = {
- enable = true;
- servers = {
- bitlbee = {
- accept = 6697;
- connect = 6667;
- cert = "${config.security.acme.certs.irc.directory}/full.pem";
- };
- };
- };
- };
-}
diff --git a/modules/private/loginctl-linger.nix b/modules/private/loginctl-linger.nix
deleted file mode 100644
index e6b9f23..0000000
--- a/modules/private/loginctl-linger.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-# https://github.com/michalrus/dotfiles/commit/ebd5fa9583f82589f23531647aa677feb3f8d344#diff-4d353005ef5b3e37f33c07332b8523edR1
-# A temporary hack to `loginctl enable-linger $somebody` (for
-# multiplexer sessions to last), until this one is unresolved:
-# https://github.com/NixOS/nixpkgs/issues/3702
-#
-# Usage: `users.extraUsers.somebody.linger = true` or slt.
-
-with lib;
-
-let
-
- dataDir = "/var/lib/systemd/linger";
-
- lingeringUsers = map (u: u.name) (attrValues (flip filterAttrs config.users.users (n: u: u.linger)));
-
- lingeringUsersFile = builtins.toFile "lingering-users"
- (concatStrings (map (s: "${s}\n")
- (sort (a: b: a < b) lingeringUsers))); # this sorting is important for `comm` to work correctly
-
- updateLingering = pkgs.writeScript "update-lingering" ''
- if [ ! -e ${dataDir} ]; then
- install -m 0755 -o root -g root -d ${dataDir}
- fi
- if [ -e ${dataDir} ] ; then
- ls ${dataDir} | sort | comm -3 -1 ${lingeringUsersFile} - | xargs -r ${pkgs.systemd}/bin/loginctl disable-linger
- ls ${dataDir} | sort | comm -3 -2 ${lingeringUsersFile} - | xargs -r ${pkgs.systemd}/bin/loginctl enable-linger
- fi
- '';
-
-in
-
-{
- options = {
- users.users = mkOption {
- options = [{
- linger = mkEnableOption "lingering for the user";
- }];
- };
- };
-
- config = {
- system.activationScripts.update-lingering =
- stringAfter [ "users" ] updateLingering;
- };
-}
diff --git a/modules/private/mail/default.nix b/modules/private/mail/default.nix
deleted file mode 100644
index 2d405c6..0000000
--- a/modules/private/mail/default.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ lib, pkgs, config, ... }:
-{
- imports = [
- ./milters.nix
- ./postfix.nix
- ./dovecot.nix
- ./relay.nix
- ./rspamd.nix
- ./opensmtpd.nix
- ./sympa.nix
- ];
- options.myServices.mail.enable = lib.mkEnableOption "enable Mail services";
- options.myServices.mailRelay.enable = lib.mkEnableOption "enable Mail relay services";
- options.myServices.mailBackup.enable = lib.mkEnableOption "enable MX backup services";
-
- config = lib.mkIf config.myServices.mail.enable {
- security.acme.certs."mail" = config.myServices.certificates.certConfig // {
- domain = config.hostEnv.fqdn;
- extraDomains = let
- zonesWithMx = builtins.filter (zone:
- lib.attrsets.hasAttr "withEmail" zone && lib.lists.length zone.withEmail > 0
- ) config.myEnv.dns.masterZones;
- mxs = map (zone: "${config.hostEnv.mx.subdomain}.${zone.name}") zonesWithMx;
- in builtins.listToAttrs (map (mx: lib.attrsets.nameValuePair mx null) mxs);
- };
- # This is for clients that don’t support elliptic curves (e.g.
- # printer)
- security.acme.certs."mail-rsa" = config.myServices.certificates.certConfig // {
- domain = config.hostEnv.fqdn;
- keyType = "rsa4096";
- extraDomains = let
- zonesWithMx = builtins.filter (zone:
- lib.attrsets.hasAttr "withEmail" zone && lib.lists.length zone.withEmail > 0
- ) config.myEnv.dns.masterZones;
- mxs = map (zone: "${config.hostEnv.mx.subdomain}.${zone.name}") zonesWithMx;
- in builtins.listToAttrs (map (mx: lib.attrsets.nameValuePair mx null) mxs);
- };
- systemd.slices.mail = {
- description = "Mail slice";
- };
- };
-}
diff --git a/modules/private/mail/dovecot.nix b/modules/private/mail/dovecot.nix
deleted file mode 100644
index b6fdc02..0000000
--- a/modules/private/mail/dovecot.nix
+++ /dev/null
@@ -1,292 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- sieve_bin = pkgs.runCommand "sieve_bin" {
- buildInputs = [ pkgs.makeWrapper ];
- } ''
- cp -a ${./sieve_bin} $out
- chmod -R u+w $out
- patchShebangs $out
- for i in $out/*; do
- wrapProgram "$i" --prefix PATH : ${lib.makeBinPath [ pkgs.coreutils ]}
- done
- '';
-in
-{
- config = lib.mkIf config.myServices.mail.enable {
- systemd.services.dovecot2.serviceConfig.Slice = "mail.slice";
- secrets.keys."dovecot/ldap" = {
- user = config.services.dovecot2.user;
- group = config.services.dovecot2.group;
- permissions = "0400";
- text = ''
- hosts = ${config.myEnv.mail.dovecot.ldap.host}
- tls = yes
-
- dn = ${config.myEnv.mail.dovecot.ldap.dn}
- dnpass = ${config.myEnv.mail.dovecot.ldap.password}
-
- auth_bind = yes
-
- ldap_version = 3
-
- base = ${config.myEnv.mail.dovecot.ldap.base}
- scope = subtree
-
- pass_filter = ${config.myEnv.mail.dovecot.ldap.filter}
- pass_attrs = ${config.myEnv.mail.dovecot.ldap.pass_attrs}
-
- user_attrs = ${config.myEnv.mail.dovecot.ldap.user_attrs}
- user_filter = ${config.myEnv.mail.dovecot.ldap.filter}
- iterate_attrs = ${config.myEnv.mail.dovecot.ldap.iterate_attrs}
- iterate_filter = ${config.myEnv.mail.dovecot.ldap.iterate_filter}
- '';
- };
-
- users.users.vhost = {
- group = "vhost";
- uid = config.ids.uids.vhost;
- };
- users.groups.vhost.gid = config.ids.gids.vhost;
-
- # https://blog.zeninc.net/index.php?post/2018/04/01/Un-annuaire-pour-les-gouverner-tous.......
- services.dovecot2 = {
- enable = true;
- enablePAM = false;
- enablePop3 = true;
- enableImap = true;
- enableLmtp = true;
- protocols = [ "sieve" ];
- modules = [
- pkgs.dovecot_pigeonhole
- pkgs.dovecot_fts-xapian
- ];
- mailUser = "vhost";
- mailGroup = "vhost";
- createMailUser = false;
- mailboxes = {
- Trash = { auto = "subscribe"; specialUse = "Trash"; };
- Junk = { auto = "subscribe"; specialUse = "Junk"; };
- Sent = { auto = "subscribe"; specialUse = "Sent"; };
- Drafts = { auto = "subscribe"; specialUse = "Drafts"; };
- };
- mailLocation = "mbox:~/Mail:INBOX=~/Mail/Inbox:INDEX=~/.imap";
- sslServerCert = "/var/lib/acme/mail/fullchain.pem";
- sslServerKey = "/var/lib/acme/mail/key.pem";
- sslCACert = "/var/lib/acme/mail/fullchain.pem";
- extraConfig = builtins.concatStringsSep "\n" [
- # For printer which doesn’t support elliptic curve
- ''
- ssl_alt_cert = &1 > /dev/null | grep -v "Mailbox doesn't exist:" | grep -v "Info: Opening DB"
- ${pkgs.dovecot}/bin/doveadm expunge -A MAILBOX Junk SEEN NOT FLAGGED BEFORE 4w 2>&1 > /dev/null | grep -v "Mailbox doesn't exist:" | grep -v "Info: Opening DB"
- ${pkgs.dovecot}/bin/doveadm expunge -A MAILBOX Trash NOT FLAGGED BEFORE 4w 2>&1 > /dev/null | grep -v "Mailbox doesn't exist:" | grep -v "Info: Opening DB"
- '';
- in
- [
- "0 2 * * * root ${cron_script}/bin/cleanup-imap-folders"
- ];
- security.acme.certs."mail-rsa" = {
- postRun = ''
- systemctl restart dovecot2.service
- '';
- extraDomains = {
- "imap.immae.eu" = null;
- "pop3.immae.eu" = null;
- };
- };
- security.acme.certs."mail" = {
- postRun = ''
- systemctl restart dovecot2.service
- '';
- extraDomains = {
- "imap.immae.eu" = null;
- "pop3.immae.eu" = null;
- };
- };
- };
-}
-
diff --git a/modules/private/mail/filter-rewrite-from.py b/modules/private/mail/filter-rewrite-from.py
deleted file mode 100755
index aad9c69..0000000
--- a/modules/private/mail/filter-rewrite-from.py
+++ /dev/null
@@ -1,68 +0,0 @@
-#! /usr/bin/env python3
-import sys
-
-sys.stdin.reconfigure(encoding='utf-8')
-sys.stdout.reconfigure(encoding='utf-8')
-stdin = sys.stdin
-stdout = sys.stdout
-
-mailaddr = sys.argv[1]
-inheader = {}
-
-# Change to actual file for logging
-logfile = open("/dev/null", "a")
-
-def log(l, i):
- logfile.write("{} {}\n".format(i, l))
- logfile.flush()
-
-def send(l):
- log(l, ">")
- stdout.write("{}\n".format(l))
- stdout.flush()
-
-def token_and_sid(version, sid, token):
- if version < "0.5":
- return "{}|{}".format(token, sid)
- else:
- return "{}|{}".format(sid, token)
-
-log("started", "l")
-while True:
- line = stdin.readline().strip()
- log(line, "<")
- if not line:
- log("finished", "l")
- break
- splitted = line.split("|")
- if line == "config|ready":
- log("in config ready", "l")
- send("register|filter|smtp-in|mail-from")
- send("register|filter|smtp-in|data-line")
- send("register|ready")
- if splitted[0] != "filter":
- continue
- if len(splitted) < 7:
- send("invalid filter command: expected >6 fields!")
- sys.exit(1)
- version = splitted[1]
- action = splitted[4]
- sid = splitted[5]
- token = splitted[6]
- token_sid = token_and_sid(version, sid, token)
- rest = "|".join(splitted[7:])
- if action == "mail-from":
- inheader[sid] = True
- send("filter-result|{}|rewrite|<{}>".format(token_sid, mailaddr))
- continue
- if action == "data-line":
- if rest == "" and inheader.get(sid, False):
- inheader[sid] = False
- if rest == "." and not inheader.get(sid):
- del(inheader[sid])
- if inheader.get(sid, False) and rest.upper().startswith("FROM:"):
- send("filter-dataline|{}|From: {}".format(token_sid, mailaddr))
- else:
- send("filter-dataline|{}|{}".format(token_sid, rest))
- continue
- send("filter-result|{}|proceed".format(token_sid))
diff --git a/modules/private/mail/milters.nix b/modules/private/mail/milters.nix
deleted file mode 100644
index 4b93a7a..0000000
--- a/modules/private/mail/milters.nix
+++ /dev/null
@@ -1,88 +0,0 @@
-{ lib, pkgs, config, name, ... }:
-{
- imports =
- builtins.attrValues (import ../../../lib/flake-compat.nix ../../../flakes/private/openarc).nixosModules
- ++ builtins.attrValues (import ../../../lib/flake-compat.nix ../../../flakes/private/opendmarc).nixosModules;
-
- options.myServices.mail.milters.sockets = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- opendkim = "/run/opendkim/opendkim.sock";
- opendmarc = config.services.opendmarc.socket;
- openarc = config.services.openarc.socket;
- };
- readOnly = true;
- description = ''
- milters sockets
- '';
- };
- config = lib.mkIf (config.myServices.mail.enable || config.myServices.mailBackup.enable) {
- secrets.keys = {
- "opendkim" = {
- isDir = true;
- user = config.services.opendkim.user;
- group = config.services.opendkim.group;
- permissions = "0550";
- };
- "opendkim/eldiron.private" = {
- user = config.services.opendkim.user;
- group = config.services.opendkim.group;
- permissions = "0400";
- text = config.myEnv.mail.dkim.eldiron.private;
- };
- "opendkim/eldiron.txt" = {
- user = config.services.opendkim.user;
- group = config.services.opendkim.group;
- permissions = "0444";
- text = ''
- eldiron._domainkey IN TXT ${config.myEnv.mail.dkim.eldiron.public}'';
- };
- };
- users.users."${config.services.opendkim.user}".extraGroups = [ "keys" ];
- services.opendkim = {
- enable = true;
- socket = "local:${config.myServices.mail.milters.sockets.opendkim}";
- domains = builtins.concatStringsSep "," (lib.flatten (map
- (zone: map
- (e: "${e.domain}${lib.optionalString (e.domain != "") "."}${zone.name}")
- (zone.withEmail or [])
- )
- config.myEnv.dns.masterZones
- ));
- keyPath = config.secrets.fullPaths."opendkim";
- selector = "eldiron";
- configFile = pkgs.writeText "opendkim.conf" ''
- SubDomains yes
- UMask 002
- AlwaysAddARHeader yes
- '';
- group = config.services.postfix.group;
- };
- systemd.services.opendkim.serviceConfig.Slice = "mail.slice";
- systemd.services.opendkim.preStart = lib.mkBefore ''
- # Skip the prestart script as keys are handled in secrets
- exit 0
- '';
- services.filesWatcher.opendkim = {
- restart = true;
- paths = [
- config.secrets.fullPaths."opendkim/eldiron.private"
- ];
- };
-
- systemd.services.milter_verify_from = {
- description = "Verify from milter";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
-
- serviceConfig = {
- Slice = "mail.slice";
- User = "postfix";
- Group = "postfix";
- ExecStart = let python = pkgs.python3.withPackages (p: [ p.pymilter ]);
- in "${python}/bin/python ${./verify_from.py} -s /run/milter_verify_from/verify_from.sock";
- RuntimeDirectory = "milter_verify_from";
- };
- };
- };
-}
diff --git a/modules/private/mail/opensmtpd.nix b/modules/private/mail/opensmtpd.nix
deleted file mode 100644
index e05bba9..0000000
--- a/modules/private/mail/opensmtpd.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ lib, pkgs, config, name, ... }:
-{
- config = lib.mkIf config.myServices.mailRelay.enable {
- secrets.keys."opensmtpd/creds" = {
- user = "smtpd";
- group = "smtpd";
- permissions = "0400";
- text = ''
- eldiron ${name}:${config.hostEnv.ldap.password}
- '';
- };
- users.users.smtpd.extraGroups = [ "keys" ];
- services.opensmtpd = {
- enable = true;
- serverConfiguration = let
- filter-rewrite-from = pkgs.runCommand "filter-rewrite-from.py" {
- buildInputs = [ pkgs.python3 ];
- } ''
- cp ${./filter-rewrite-from.py} $out
- patchShebangs $out
- '';
- in ''
- table creds \
- "${config.secrets.fullPaths."opensmtpd/creds"}"
- # FIXME: filtering requires 6.6, uncomment following lines when
- # upgrading
- # filter "fixfrom" \
- # proc-exec "${filter-rewrite-from} ${name}@immae.eu"
- # listen on socket filter "fixfrom"
- action "relay-rewrite-from" relay \
- helo ${config.hostEnv.fqdn} \
- host smtp+tls://eldiron@eldiron.immae.eu:587 \
- auth \
- mail-from ${name}@immae.eu
- action "relay" relay \
- helo ${config.hostEnv.fqdn} \
- host smtp+tls://eldiron@eldiron.immae.eu:587 \
- auth
- match for any !mail-from "@immae.eu" action "relay-rewrite-from"
- match for any mail-from "@immae.eu" action "relay"
- '';
- };
- environment.systemPackages = [ config.services.opensmtpd.package ];
- services.mail.sendmailSetuidWrapper = {
- program = "sendmail";
- source = "${config.services.opensmtpd.package}/bin/smtpctl";
- setuid = false;
- setgid = false;
- };
- security.wrappers.mailq = {
- program = "mailq";
- source = "${config.services.opensmtpd.package}/bin/smtpctl";
- setuid = false;
- setgid = false;
- };
- };
-}
diff --git a/modules/private/mail/postfix.nix b/modules/private/mail/postfix.nix
deleted file mode 100644
index ae98a8a..0000000
--- a/modules/private/mail/postfix.nix
+++ /dev/null
@@ -1,471 +0,0 @@
-{ lib, pkgs, config, nodes, ... }:
-{
- config = lib.mkIf config.myServices.mail.enable {
- secrets.keys = {
- "postfix/mysql_alias_maps" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- # We need to specify that option to trigger ssl connection
- tls_ciphers = TLSv1.2
- user = ${config.myEnv.mail.postfix.mysql.user}
- password = ${config.myEnv.mail.postfix.mysql.password}
- hosts = unix:${config.myEnv.mail.postfix.mysql.socket}
- dbname = ${config.myEnv.mail.postfix.mysql.database}
- query = SELECT DISTINCT destination
- FROM forwardings
- WHERE
- ((regex = 1 AND '%s' REGEXP CONCAT('^',source,'$') ) OR (regex = 0 AND source = '%s'))
- AND active = 1
- AND '%s' NOT IN
- (
- SELECT source
- FROM forwardings_blacklisted
- WHERE source = '%s'
- ) UNION
- SELECT 'devnull@immae.eu'
- FROM forwardings_blacklisted
- WHERE source = '%s'
- '';
- };
- "postfix/ldap_mailboxes" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- server_host = ldaps://${config.myEnv.mail.dovecot.ldap.host}:636
- search_base = ${config.myEnv.mail.dovecot.ldap.base}
- query_filter = ${config.myEnv.mail.dovecot.ldap.postfix_mailbox_filter}
- bind_dn = ${config.myEnv.mail.dovecot.ldap.dn}
- bind_pw = ${config.myEnv.mail.dovecot.ldap.password}
- result_attribute = immaePostfixAddress
- result_format = dummy
- version = 3
- '';
- };
- "postfix/mysql_sender_login_maps" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- # We need to specify that option to trigger ssl connection
- tls_ciphers = TLSv1.2
- user = ${config.myEnv.mail.postfix.mysql.user}
- password = ${config.myEnv.mail.postfix.mysql.password}
- hosts = unix:${config.myEnv.mail.postfix.mysql.socket}
- dbname = ${config.myEnv.mail.postfix.mysql.database}
- query = SELECT DISTINCT destination
- FROM forwardings
- WHERE
- (
- (regex = 1 AND CONCAT(SUBSTRING_INDEX('%u', '+', 1), '@%d') REGEXP CONCAT('^',source,'$') )
- OR
- (regex = 0 AND source = CONCAT(SUBSTRING_INDEX('%u', '+', 1), '@%d'))
- )
- AND active = 1
- UNION SELECT CONCAT(SUBSTRING_INDEX('%u', '+', 1), '@%d') AS destination
- '';
- };
- "postfix/mysql_sender_relays_maps" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- # We need to specify that option to trigger ssl connection
- tls_ciphers = TLSv1.2
- user = ${config.myEnv.mail.postfix.mysql.user}
- password = ${config.myEnv.mail.postfix.mysql.password}
- hosts = unix:${config.myEnv.mail.postfix.mysql.socket}
- dbname = ${config.myEnv.mail.postfix.mysql.database}
- # INSERT INTO sender_relays
- # (`from`, owner, relay, login, password, regex, active)
- # VALUES
- # ( 'sender@otherhost.org'
- # , 'me@mail.immae.eu'
- # , '[otherhost.org]:587'
- # , 'otherhostlogin'
- # , AES_ENCRYPT('otherhostpassword', '${config.myEnv.mail.postfix.mysql.password_encrypt}')
- # , '0'
- # , '1');
-
- query = SELECT DISTINCT `owner`
- FROM sender_relays
- WHERE
- ((regex = 1 AND '%s' REGEXP CONCAT('^',`from`,'$') ) OR (regex = 0 AND `from` = '%s'))
- AND active = 1
- '';
- };
- "postfix/mysql_sender_relays_hosts" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- # We need to specify that option to trigger ssl connection
- tls_ciphers = TLSv1.2
- user = ${config.myEnv.mail.postfix.mysql.user}
- password = ${config.myEnv.mail.postfix.mysql.password}
- hosts = unix:${config.myEnv.mail.postfix.mysql.socket}
- dbname = ${config.myEnv.mail.postfix.mysql.database}
-
- query = SELECT DISTINCT relay
- FROM sender_relays
- WHERE
- ((regex = 1 AND '%s' REGEXP CONCAT('^',`from`,'$') ) OR (regex = 0 AND `from` = '%s'))
- AND active = 1
- '';
- };
- "postfix/mysql_sender_relays_creds" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- # We need to specify that option to trigger ssl connection
- tls_ciphers = TLSv1.2
- user = ${config.myEnv.mail.postfix.mysql.user}
- password = ${config.myEnv.mail.postfix.mysql.password}
- hosts = unix:${config.myEnv.mail.postfix.mysql.socket}
- dbname = ${config.myEnv.mail.postfix.mysql.database}
-
- query = SELECT DISTINCT CONCAT(`login`, ':', AES_DECRYPT(`password`, '${config.myEnv.mail.postfix.mysql.password_encrypt}'))
- FROM sender_relays
- WHERE
- ((regex = 1 AND '%s' REGEXP CONCAT('^',`from`,'$') ) OR (regex = 0 AND `from` = '%s'))
- AND active = 1
- '';
- };
- "postfix/ldap_ejabberd_users_immae_fr" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- server_host = ldaps://${config.myEnv.jabber.ldap.host}:636
- search_base = ${config.myEnv.jabber.ldap.base}
- query_filter = ${config.myEnv.jabber.postfix_user_filter}
- domain = immae.fr
- bind_dn = ${config.myEnv.jabber.ldap.dn}
- bind_pw = ${config.myEnv.jabber.ldap.password}
- result_attribute = immaeXmppUid
- result_format = ejabberd@localhost
- version = 3
- '';
- };
- } // lib.mapAttrs' (name: v: lib.nameValuePair "postfix/scripts/${name}-env" {
- user = "postfixscripts";
- group = "root";
- permissions = "0400";
- text = builtins.toJSON v.env;
- }) config.myEnv.mail.scripts;
-
- networking.firewall.allowedTCPPorts = [ 25 465 587 ];
-
- users.users.postfixscripts = {
- group = "keys";
- uid = config.ids.uids.postfixscripts;
- description = "Postfix scripts user";
- };
- users.users."${config.services.postfix.user}".extraGroups = [ "keys" ];
- services.filesWatcher.postfix = {
- restart = true;
- paths = [
- config.secrets.fullPaths."postfix/mysql_alias_maps"
- config.secrets.fullPaths."postfix/ldap_mailboxes"
- config.secrets.fullPaths."postfix/mysql_sender_login_maps"
- config.secrets.fullPaths."postfix/ldap_ejabberd_users_immae_fr"
- ];
- };
- services.postfix = {
- extraAliases = let
- toScript = name: script: pkgs.writeScript name ''
- #! ${pkgs.stdenv.shell}
- mail=$(${pkgs.coreutils}/bin/cat -)
- output=$(echo "$mail" | ${script} 2>&1)
- ret=$?
-
- if [ "$ret" != "0" ]; then
- echo "$mail" \
- | ${pkgs.procmail}/bin/formail -i "X-Return-Code: $ret" \
- | /run/wrappers/bin/sendmail -i scripts_error+${name}@mail.immae.eu
-
- messageId=$(echo "$mail" | ${pkgs.procmail}/bin/formail -x "Message-Id:")
- repeat=$(echo "$mail" | ${pkgs.procmail}/bin/formail -X "From:" -X "Received:")
-
- ${pkgs.coreutils}/bin/cat <')"
- '';
- };
- in builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (n: v: ''${n}: "|${v}"'') scripts);
- mapFiles = let
- recipient_maps = let
- name = n: i: "relay_${n}_${toString i}";
- pair = n: i: m: lib.attrsets.nameValuePair (name n i) (
- if m.type == "hash"
- then pkgs.writeText (name n i) m.content
- else null
- );
- pairs = n: v: lib.imap1 (i: m: pair n i m) v.recipient_maps;
- in lib.attrsets.filterAttrs (k: v: v != null) (
- lib.attrsets.listToAttrs (lib.flatten (
- lib.attrsets.mapAttrsToList pairs config.myEnv.mail.postfix.backup_domains
- ))
- );
- relay_restrictions = lib.attrsets.filterAttrs (k: v: v != null) (
- lib.attrsets.mapAttrs' (n: v:
- lib.attrsets.nameValuePair "recipient_access_${n}" (
- if lib.attrsets.hasAttr "relay_restrictions" v
- then pkgs.writeText "recipient_access_${n}" v.relay_restrictions
- else null
- )
- ) config.myEnv.mail.postfix.backup_domains
- );
- virtual_map = {
- virtual = let
- cfg = config.myEnv.monitoring.email_check.eldiron;
- address = "${cfg.mail_address}@${cfg.mail_domain}";
- in pkgs.writeText "postfix-virtual" (
- builtins.concatStringsSep "\n" (
- ["${address} testmail@localhost"] ++
- lib.attrsets.mapAttrsToList (
- n: v: lib.optionalString v.external ''
- script_${n}@mail.immae.eu ${n}@localhost, scripts@mail.immae.eu
- ''
- ) config.myEnv.mail.scripts
- )
- );
- };
- sasl_access = {
- host_sender_login = with lib.attrsets; let
- addresses = zipAttrs (lib.flatten (mapAttrsToList
- (n: v: (map (e: { "${e}" = "${n}@immae.eu"; }) v.emails)) config.myEnv.servers));
- joined = builtins.concatStringsSep ",";
- in pkgs.writeText "host-sender-login"
- (builtins.concatStringsSep "\n" (mapAttrsToList (n: v: "${n} ${joined v}") addresses));
- };
- in
- recipient_maps // relay_restrictions // virtual_map // sasl_access;
- config = {
- ### postfix module overrides
- readme_directory = "${pkgs.postfix}/share/postfix/doc";
- smtp_tls_CAfile = lib.mkForce "";
- smtp_tls_cert_file = lib.mkForce "";
- smtp_tls_key_file = lib.mkForce "";
-
- message_size_limit = "1073741824"; # Don't put 0 here, it's not equivalent to "unlimited"
- mailbox_size_limit = "1073741825"; # Workaround, local delivered mails should all go through scripts
- alias_database = "\$alias_maps";
-
- ### Aliases scripts user
- default_privs = "postfixscripts";
-
- ### Virtual mailboxes config
- virtual_alias_maps = [
- "hash:/etc/postfix/virtual"
- "mysql:${config.secrets.fullPaths."postfix/mysql_alias_maps"}"
- "ldap:${config.secrets.fullPaths."postfix/ldap_ejabberd_users_immae_fr"}"
- ];
- virtual_mailbox_domains = config.myEnv.mail.postfix.additional_mailbox_domains
- ++ lib.remove null (lib.flatten (map
- (zone: map
- (e: if e.receive
- then "${e.domain}${lib.optionalString (e.domain != "") "."}${zone.name}"
- else null
- )
- (zone.withEmail or [])
- )
- config.myEnv.dns.masterZones
- ));
- virtual_mailbox_maps = [
- "ldap:${config.secrets.fullPaths."postfix/ldap_mailboxes"}"
- ];
- dovecot_destination_recipient_limit = "1";
- virtual_transport = "dovecot";
-
- ### Relay domains
- relay_domains = lib.flatten (lib.attrsets.mapAttrsToList (n: v: v.domains or []) config.myEnv.mail.postfix.backup_domains);
- relay_recipient_maps = lib.flatten (lib.attrsets.mapAttrsToList (n: v:
- lib.imap1 (i: m: "${m.type}:/etc/postfix/relay_${n}_${toString i}") v.recipient_maps
- ) config.myEnv.mail.postfix.backup_domains);
- smtpd_relay_restrictions = [
- "defer_unauth_destination"
- ] ++ lib.flatten (lib.attrsets.mapAttrsToList (n: v:
- if lib.attrsets.hasAttr "relay_restrictions" v
- then [ "check_recipient_access hash:/etc/postfix/recipient_access_${n}" ]
- else []
- ) config.myEnv.mail.postfix.backup_domains);
-
- ### Additional smtpd configuration
- smtpd_tls_received_header = "yes";
- smtpd_tls_loglevel = "1";
-
- ### Email sending configuration
- smtp_tls_security_level = "may";
- smtp_tls_loglevel = "1";
-
- ### Force ip bind for smtp
- smtp_bind_address = config.hostEnv.ips.main.ip4;
- smtp_bind_address6 = builtins.head config.hostEnv.ips.main.ip6;
-
- # Use some relays when authorized senders are not myself
- smtp_sasl_mechanism_filter = "plain,login"; # GSSAPI Not correctly supported by postfix
- smtp_sasl_auth_enable = "yes";
- smtp_sasl_password_maps =
- "mysql:${config.secrets.fullPaths."postfix/mysql_sender_relays_creds"}";
- smtp_sasl_security_options = "noanonymous";
- smtp_sender_dependent_authentication = "yes";
- sender_dependent_relayhost_maps =
- "mysql:${config.secrets.fullPaths."postfix/mysql_sender_relays_hosts"}";
-
- ### opendkim, opendmarc, openarc milters
- non_smtpd_milters = [
- "unix:${config.myServices.mail.milters.sockets.opendkim}"
- ];
- smtpd_milters = [
- "unix:${config.myServices.mail.milters.sockets.opendkim}"
- "unix:${config.myServices.mail.milters.sockets.openarc}"
- "unix:${config.myServices.mail.milters.sockets.opendmarc}"
- ];
-
- smtp_use_tls = true;
- smtpd_use_tls = true;
- smtpd_tls_chain_files = builtins.concatStringsSep "," [ "/var/lib/acme/mail/full.pem" "/var/lib/acme/mail-rsa/full.pem" ];
-
- maximal_queue_lifetime = "6w";
- bounce_queue_lifetime = "6w";
- };
- enable = true;
- enableSmtp = true;
- enableSubmission = true;
- submissionOptions = {
- # Don’t use "long form", only commas (cf
- # http://www.postfix.org/master.5.html long form is not handled
- # well by the submission function)
- smtpd_tls_security_level = "encrypt";
- smtpd_sasl_auth_enable = "yes";
- smtpd_tls_auth_only = "yes";
- smtpd_sasl_tls_security_options = "noanonymous";
- smtpd_sasl_type = "dovecot";
- smtpd_sasl_path = "private/auth";
- smtpd_reject_unlisted_recipient = "no";
- smtpd_client_restrictions = "permit_sasl_authenticated,reject";
- smtpd_relay_restrictions = "permit_sasl_authenticated,reject";
- # Refuse to send e-mails with a From that is not handled
- smtpd_sender_restrictions =
- "reject_sender_login_mismatch,reject_unlisted_sender,permit_sasl_authenticated,reject";
- smtpd_sender_login_maps = builtins.concatStringsSep "," [
- "hash:/etc/postfix/host_sender_login"
- "mysql:${config.secrets.fullPaths."postfix/mysql_sender_relays_maps"}"
- "mysql:${config.secrets.fullPaths."postfix/mysql_sender_login_maps"}"
- ];
- smtpd_recipient_restrictions = "permit_sasl_authenticated,reject";
- milter_macro_daemon_name = "ORIGINATING";
- smtpd_milters = builtins.concatStringsSep "," [
- # FIXME: put it back when opensmtpd is upgraded and able to
- # rewrite the from header
- #"unix:/run/milter_verify_from/verify_from.sock"
- "unix:${config.myServices.mail.milters.sockets.opendkim}"
- ];
- };
- destination = ["localhost"];
- # This needs to reverse DNS
- hostname = config.hostEnv.fqdn;
- setSendmail = true;
- recipientDelimiter = "+";
- masterConfig = {
- submissions = {
- type = "inet";
- private = false;
- command = "smtpd";
- args = ["-o" "smtpd_tls_wrappermode=yes" ] ++ (let
- mkKeyVal = opt: val: [ "-o" (opt + "=" + val) ];
- in lib.concatLists (lib.mapAttrsToList mkKeyVal config.services.postfix.submissionOptions)
- );
- };
- dovecot = {
- type = "unix";
- privileged = true;
- chroot = false;
- command = "pipe";
- args = let
- # rspamd could be used as a milter, but then it cannot apply
- # its checks "per user" (milter is not yet dispatched to
- # users), so we wrap dovecot-lda inside rspamc per recipient
- # here.
- rspamc_dovecot = pkgs.writeScriptBin "rspamc_dovecot" ''
- #! ${pkgs.stdenv.shell}
- sender="$1"
- original_recipient="$2"
- user="$3"
-
- ${pkgs.coreutils}/bin/cat - | \
- (${pkgs.rspamd}/bin/rspamc -h ${config.myServices.mail.rspamd.sockets.worker-controller} -c bayes -d "$user" --mime || true) | \
- ${pkgs.dovecot}/libexec/dovecot/dovecot-lda -f "$sender" -a "$original_recipient" -d "$user"
- '';
- in [
- "flags=ODRhu" "user=vhost:vhost"
- "argv=${rspamc_dovecot}/bin/rspamc_dovecot \${sender} \${original_recipient} \${user}@\${nexthop}"
- ];
- };
- };
- };
- security.acme.certs."mail" = {
- postRun = ''
- systemctl restart postfix.service
- '';
- extraDomains = {
- "smtp.immae.eu" = null;
- };
- };
- security.acme.certs."mail-rsa" = {
- postRun = ''
- systemctl restart postfix.service
- '';
- extraDomains = {
- "smtp.immae.eu" = null;
- };
- };
- system.activationScripts.testmail = {
- deps = [ "users" ];
- text = let
- allCfg = config.myEnv.monitoring.email_check;
- cfg = allCfg.eldiron;
- reverseTargets = builtins.attrNames (lib.attrsets.filterAttrs (k: v: builtins.elem "eldiron" v.targets) allCfg);
- to_email = cfg': host':
- let sep = if lib.strings.hasInfix "+" cfg'.mail_address then "_" else "+";
- in "${cfg'.mail_address}${sep}${host'}@${cfg'.mail_domain}";
- mails_to_receive = builtins.concatStringsSep " " (map (to_email cfg) reverseTargets);
- in ''
- install -m 0555 -o postfixscripts -g keys -d /var/lib/naemon/checks/email
- for f in ${mails_to_receive}; do
- if [ ! -f /var/lib/naemon/checks/email/$f ]; then
- install -m 0644 -o postfixscripts -g keys /dev/null -T /var/lib/naemon/checks/email/$f
- touch -m -d @0 /var/lib/naemon/checks/email/$f
- fi
- done
- '';
- };
- systemd.services.postfix.serviceConfig.Slice = "mail.slice";
- };
-}
diff --git a/modules/private/mail/relay.nix b/modules/private/mail/relay.nix
deleted file mode 100644
index 668d365..0000000
--- a/modules/private/mail/relay.nix
+++ /dev/null
@@ -1,235 +0,0 @@
-{ lib, pkgs, config, nodes, name, ... }:
-{
- config = lib.mkIf config.myServices.mailBackup.enable {
- security.acme.certs."mail" = config.myServices.certificates.certConfig // {
- postRun = ''
- systemctl restart postfix.service
- '';
- domain = config.hostEnv.fqdn;
- extraDomains = let
- zonesWithMx = builtins.filter (zone:
- lib.attrsets.hasAttr "withEmail" zone && lib.lists.length zone.withEmail > 0
- ) config.myEnv.dns.masterZones;
- mxs = map (zone: "${config.myEnv.servers."${name}".mx.subdomain}.${zone.name}") zonesWithMx;
- in builtins.listToAttrs (map (mx: lib.attrsets.nameValuePair mx null) mxs);
- };
- secrets.keys = {
- "postfix/mysql_alias_maps" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- # We need to specify that option to trigger ssl connection
- tls_ciphers = TLSv1.2
- user = ${config.myEnv.mail.postfix.mysql.user}
- password = ${config.myEnv.mail.postfix.mysql.password}
- hosts = ${config.myEnv.mail.postfix.mysql.remoteHost}
- dbname = ${config.myEnv.mail.postfix.mysql.database}
- query = SELECT DISTINCT 1
- FROM forwardings
- WHERE
- ((regex = 1 AND '%s' REGEXP CONCAT('^',source,'$') ) OR (regex = 0 AND source = '%s'))
- AND active = 1
- AND '%s' NOT IN
- (
- SELECT source
- FROM forwardings_blacklisted
- WHERE source = '%s'
- ) UNION
- SELECT 'devnull@immae.eu'
- FROM forwardings_blacklisted
- WHERE source = '%s'
- '';
- };
- "postfix/ldap_mailboxes" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- server_host = ldaps://${config.myEnv.mail.dovecot.ldap.host}:636
- search_base = ${config.myEnv.mail.dovecot.ldap.base}
- query_filter = ${config.myEnv.mail.dovecot.ldap.postfix_mailbox_filter}
- bind_dn = ${config.myEnv.mail.dovecot.ldap.dn}
- bind_pw = ${config.myEnv.mail.dovecot.ldap.password}
- result_attribute = immaePostfixAddress
- result_format = dummy
- version = 3
- '';
- };
- "postfix/sympa_mailbox_maps" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- hosts = ${config.myEnv.mail.sympa.postgresql.host}
- user = ${config.myEnv.mail.sympa.postgresql.user}
- password = ${config.myEnv.mail.sympa.postgresql.password}
- dbname = ${config.myEnv.mail.sympa.postgresql.database}
- query = SELECT DISTINCT 1 FROM list_table WHERE '%s' IN (
- CONCAT(name_list, '@', robot_list),
- CONCAT(name_list, '-request@', robot_list),
- CONCAT(name_list, '-editor@', robot_list),
- CONCAT(name_list, '-unsubscribe@', robot_list),
- CONCAT(name_list, '-owner@', robot_list),
- CONCAT('sympa-request@', robot_list),
- CONCAT('sympa-owner@', robot_list),
- CONCAT('sympa@', robot_list),
- CONCAT('listmaster@', robot_list),
- CONCAT('bounce@', robot_list),
- CONCAT('abuse-feedback-report@', robot_list)
- )
- '';
- };
- "postfix/ldap_ejabberd_users_immae_fr" = {
- user = config.services.postfix.user;
- group = config.services.postfix.group;
- permissions = "0440";
- text = ''
- server_host = ldaps://${config.myEnv.jabber.ldap.host}:636
- search_base = ${config.myEnv.jabber.ldap.base}
- query_filter = ${config.myEnv.jabber.postfix_user_filter}
- domain = immae.fr
- bind_dn = ${config.myEnv.jabber.ldap.dn}
- bind_pw = ${config.myEnv.jabber.ldap.password}
- result_attribute = immaeXmppUid
- result_format = ejabberd@localhost
- version = 3
- '';
- };
- };
-
- networking.firewall.allowedTCPPorts = [ 25 ];
-
- users.users."${config.services.postfix.user}".extraGroups = [ "keys" ];
- services.filesWatcher.postfix = {
- restart = true;
- paths = [
- config.secrets.fullPaths."postfix/mysql_alias_maps"
- config.secrets.fullPaths."postfix/sympa_mailbox_maps"
- config.secrets.fullPaths."postfix/ldap_ejabberd_users_immae_fr"
- config.secrets.fullPaths."postfix/ldap_mailboxes"
- ];
- };
- services.postfix = {
- mapFiles = let
- recipient_maps = let
- name = n: i: "relay_${n}_${toString i}";
- pair = n: i: m: lib.attrsets.nameValuePair (name n i) (
- if m.type == "hash"
- then pkgs.writeText (name n i) m.content
- else null
- );
- pairs = n: v: lib.imap1 (i: m: pair n i m) v.recipient_maps;
- in lib.attrsets.filterAttrs (k: v: v != null) (
- lib.attrsets.listToAttrs (lib.flatten (
- lib.attrsets.mapAttrsToList pairs config.myEnv.mail.postfix.backup_domains
- ))
- );
- relay_restrictions = lib.attrsets.filterAttrs (k: v: v != null) (
- lib.attrsets.mapAttrs' (n: v:
- lib.attrsets.nameValuePair "recipient_access_${n}" (
- if lib.attrsets.hasAttr "relay_restrictions" v
- then pkgs.writeText "recipient_access_${n}" v.relay_restrictions
- else null
- )
- ) config.myEnv.mail.postfix.backup_domains
- );
- virtual_map = {
- virtual = let
- cfg = config.myEnv.monitoring.email_check.eldiron;
- address = "${cfg.mail_address}@${cfg.mail_domain}";
- in pkgs.writeText "postfix-virtual" (
- builtins.concatStringsSep "\n" (
- ["${address} 1"] ++
- lib.attrsets.mapAttrsToList (
- n: v: lib.optionalString v.external ''
- script_${n}@mail.immae.eu 1
- ''
- ) config.myEnv.mail.scripts
- )
- );
- };
- in
- recipient_maps // relay_restrictions // virtual_map;
- config = {
- ### postfix module overrides
- readme_directory = "${pkgs.postfix}/share/postfix/doc";
- smtp_tls_CAfile = lib.mkForce "";
- smtp_tls_cert_file = lib.mkForce "";
- smtp_tls_key_file = lib.mkForce "";
-
- message_size_limit = "1073741824"; # Don't put 0 here, it's not equivalent to "unlimited"
- mailbox_size_limit = "1073741825"; # Workaround, local delivered mails should all go through scripts
- alias_database = "\$alias_maps";
-
- ### Relay domains
- relay_domains = let
- backups = lib.flatten (lib.attrsets.mapAttrsToList (n: v: v.domains or []) config.myEnv.mail.postfix.backup_domains);
- virtual_domains = config.myEnv.mail.postfix.additional_mailbox_domains
- ++ lib.remove null (lib.flatten (map
- (zone: map
- (e: if e.receive
- then "${e.domain}${lib.optionalString (e.domain != "") "."}${zone.name}"
- else null
- )
- (zone.withEmail or [])
- )
- config.myEnv.dns.masterZones
- ));
- in
- backups ++ virtual_domains;
- relay_recipient_maps = let
- backup_recipients = lib.flatten (lib.attrsets.mapAttrsToList (n: v:
- lib.imap1 (i: m: "${m.type}:/etc/postfix/relay_${n}_${toString i}") v.recipient_maps
- ) config.myEnv.mail.postfix.backup_domains);
- virtual_alias_maps = [
- "hash:/etc/postfix/virtual"
- "mysql:${config.secrets.fullPaths."postfix/mysql_alias_maps"}"
- "ldap:${config.secrets.fullPaths."postfix/ldap_ejabberd_users_immae_fr"}"
- ];
- virtual_mailbox_maps = [
- "ldap:${config.secrets.fullPaths."postfix/ldap_mailboxes"}"
- "pgsql:${config.secrets.fullPaths."postfix/sympa_mailbox_maps"}"
- ];
- in
- backup_recipients ++ virtual_alias_maps ++ virtual_mailbox_maps;
- smtpd_relay_restrictions = [
- "defer_unauth_destination"
- ] ++ lib.flatten (lib.attrsets.mapAttrsToList (n: v:
- if lib.attrsets.hasAttr "relay_restrictions" v
- then [ "check_recipient_access hash:/etc/postfix/recipient_access_${n}" ]
- else []
- ) config.myEnv.mail.postfix.backup_domains);
-
- ### Additional smtpd configuration
- smtpd_tls_received_header = "yes";
- smtpd_tls_loglevel = "1";
-
- ### Email sending configuration
- smtp_tls_security_level = "may";
- smtp_tls_loglevel = "1";
-
- ### Force ip bind for smtp
- smtp_bind_address = config.myEnv.servers."${name}".ips.main.ip4;
- smtp_bind_address6 = builtins.head config.myEnv.servers."${name}".ips.main.ip6;
-
- smtpd_milters = [
- "unix:${config.myServices.mail.milters.sockets.opendkim}"
- "unix:${config.myServices.mail.milters.sockets.openarc}"
- "unix:${config.myServices.mail.milters.sockets.opendmarc}"
- ];
- };
- enable = true;
- enableSmtp = true;
- enableSubmission = false;
- destination = ["localhost"];
- # This needs to reverse DNS
- hostname = config.hostEnv.fqdn;
- setSendmail = false;
- sslCert = "/var/lib/acme/mail/fullchain.pem";
- sslKey = "/var/lib/acme/mail/key.pem";
- recipientDelimiter = "+";
- };
- };
-}
-
diff --git a/modules/private/mail/rspamd.nix b/modules/private/mail/rspamd.nix
deleted file mode 100644
index 05f1300..0000000
--- a/modules/private/mail/rspamd.nix
+++ /dev/null
@@ -1,87 +0,0 @@
-{ lib, pkgs, config, ... }:
-{
- options.myServices.mail.rspamd.sockets = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- worker-controller = "/run/rspamd/worker-controller.sock";
- };
- readOnly = true;
- description = ''
- rspamd sockets
- '';
- };
- config = lib.mkIf config.myServices.mail.enable {
- services.cron.systemCronJobs = let
- cron_script = pkgs.runCommand "cron_script" {
- buildInputs = [ pkgs.makeWrapper ];
- } ''
- mkdir -p $out
- cp ${./scan_reported_mails} $out/scan_reported_mails
- patchShebangs $out
- for i in $out/*; do
- wrapProgram "$i" --prefix PATH : ${lib.makeBinPath [ pkgs.coreutils pkgs.rspamd pkgs.flock ]}
- done
- '';
- in
- [ "*/20 * * * * vhost ${cron_script}/scan_reported_mails" ];
-
- systemd.services.rspamd.serviceConfig.Slice = "mail.slice";
- services.rspamd = {
- enable = true;
- debug = false;
- overrides = {
- "actions.conf".text = ''
- reject = null;
- add_header = 6;
- greylist = null;
- '';
- "milter_headers.conf".text = ''
- extended_spam_headers = true;
- '';
- };
- locals = {
- "redis.conf".text = ''
- servers = "${config.myEnv.mail.rspamd.redis.socket}";
- db = "${config.myEnv.mail.rspamd.redis.db}";
- '';
- "classifier-bayes.conf".text = ''
- users_enabled = true;
- backend = "redis";
- servers = "${config.myEnv.mail.rspamd.redis.socket}";
- database = "${config.myEnv.mail.rspamd.redis.db}";
- autolearn = true;
- cache {
- backend = "redis";
- }
- new_schema = true;
- statfile {
- BAYES_HAM {
- spam = false;
- }
- BAYES_SPAM {
- spam = true;
- }
- }
- '';
- };
- workers = {
- controller = {
- extraConfig = ''
- enable_password = "${config.myEnv.mail.rspamd.write_password_hashed}";
- password = "${config.myEnv.mail.rspamd.read_password_hashed}";
- '';
- bindSockets = [ {
- socket = config.myServices.mail.rspamd.sockets.worker-controller;
- mode = "0660";
- owner = config.services.rspamd.user;
- group = "vhost";
- } ];
- };
- };
- postfix = {
- enable = true;
- config = {};
- };
- };
- };
-}
diff --git a/modules/private/mail/scan_reported_mails b/modules/private/mail/scan_reported_mails
deleted file mode 100755
index fe9f4d6..0000000
--- a/modules/private/mail/scan_reported_mails
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env bash
-
-( flock -n 9 || exit 1
-shopt -s nullglob
-for spool in /var/lib/vhost/.rspamd/*/pending; do
- rspamd_folder=$(dirname $spool)
- mail_user=$(basename $rspamd_folder)
- mv $rspamd_folder/pending $rspamd_folder/processing
-
- for mtype in ham spam; do
- if [ -d $rspamd_folder/processing/$mtype ]; then
- output="$(rspamc -h /run/rspamd/worker-controller.sock -c bayes -d $mail_user learn_$mtype $rspamd_folder/processing/$mtype/*)"
- echo "[$mtype: $mail_user]" ${output} >> /var/lib/vhost/.rspamd/rspamd.log
- mkdir -p $rspamd_folder/processed/$mtype
- cp $rspamd_folder/processing/$mtype/* $rspamd_folder/processed/$mtype/
- fi
- done
-
- rm -rf $rspamd_folder/processing
-done
-) 9>/var/lib/vhost/scan_reported_mails.lock
diff --git a/modules/private/mail/sieve_bin/imapsieve_copy b/modules/private/mail/sieve_bin/imapsieve_copy
deleted file mode 100755
index 2ca1f23..0000000
--- a/modules/private/mail/sieve_bin/imapsieve_copy
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-# Inspired from https://docs.iredmail.org/dovecot.imapsieve.html
-
-MSG_TYPE="$1"
-OUTPUT_DIR="/var/lib/vhost/.rspamd/${USER}/pending/${MSG_TYPE}"
-FILE="${OUTPUT_DIR}/$(date +%Y%m%d%H%M%S)-${RANDOM}${RANDOM}.eml"
-mkdir -p "${OUTPUT_DIR}"
-cat > ${FILE} < /dev/stdin
diff --git a/modules/private/mail/sieve_scripts/backup.sieve b/modules/private/mail/sieve_scripts/backup.sieve
deleted file mode 100644
index 3014c0a..0000000
--- a/modules/private/mail/sieve_scripts/backup.sieve
+++ /dev/null
@@ -1,7 +0,0 @@
-# vim: filetype=sieve
-require ["copy","mailbox","fileinto","regex"];
-if header :is "X-Spam" "Yes" {
- fileinto :create :copy "Backup/Spam";
-} else {
- fileinto :create :copy "Backup/Ham";
-}
diff --git a/modules/private/mail/sieve_scripts/report_ham.sieve b/modules/private/mail/sieve_scripts/report_ham.sieve
deleted file mode 100644
index f9b8481..0000000
--- a/modules/private/mail/sieve_scripts/report_ham.sieve
+++ /dev/null
@@ -1,11 +0,0 @@
-require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];
-
-if environment :matches "imap.mailbox" "*" {
- set "mailbox" "${1}";
-}
-
-if string "${mailbox}" "Trash" {
- stop;
-}
-
-pipe :copy "imapsieve_copy" [ "ham" ];
diff --git a/modules/private/mail/sieve_scripts/report_spam.sieve b/modules/private/mail/sieve_scripts/report_spam.sieve
deleted file mode 100644
index 9a1f794..0000000
--- a/modules/private/mail/sieve_scripts/report_spam.sieve
+++ /dev/null
@@ -1,3 +0,0 @@
-require ["vnd.dovecot.pipe", "copy", "imapsieve" ];
-
-pipe :copy "imapsieve_copy" [ "spam" ];
diff --git a/modules/private/mail/sympa.nix b/modules/private/mail/sympa.nix
deleted file mode 100644
index 0626ac0..0000000
--- a/modules/private/mail/sympa.nix
+++ /dev/null
@@ -1,213 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- domain = "lists.immae.eu";
- sympaConfig = config.myEnv.mail.sympa;
-in
-{
- config = lib.mkIf config.myServices.mail.enable {
- myServices.databases.postgresql.authorizedHosts = {
- backup-2 = [
- {
- username = "sympa";
- database = "sympa";
- ip4 = [config.myEnv.servers.backup-2.ips.main.ip4];
- ip6 = config.myEnv.servers.backup-2.ips.main.ip6;
- }
- ];
- };
- services.websites.env.tools.vhostConfs.mail = {
- extraConfig = lib.mkAfter [
- ''
- Alias /static-sympa/ /var/lib/sympa/static_content/
-
- Require all granted
- AllowOverride none
-
-
- SetHandler "proxy:unix:/run/sympa/wwsympa.socket|fcgi://"
- Require all granted
-
- ''
- ];
- };
-
- secrets.keys = {
- "sympa/db_password" = {
- permissions = "0400";
- group = "sympa";
- user = "sympa";
- text = sympaConfig.postgresql.password;
- };
- }
- // lib.mapAttrs' (n: v: lib.nameValuePair "sympa/data_sources/${n}.incl" {
- permissions = "0400"; group = "sympa"; user = "sympa"; text = v;
- }) sympaConfig.data_sources
- // lib.mapAttrs' (n: v: lib.nameValuePair "sympa/scenari/${n}" {
- permissions = "0400"; group = "sympa"; user = "sympa"; text = v;
- }) sympaConfig.scenari;
- users.users.sympa.extraGroups = [ "keys" ];
- systemd.slices.mail-sympa = {
- description = "Sympa slice";
- };
-
- systemd.services.sympa.serviceConfig.SupplementaryGroups = [ "keys" ];
- systemd.services.sympa-archive.serviceConfig.SupplementaryGroups = [ "keys" ];
- systemd.services.sympa-bounce.serviceConfig.SupplementaryGroups = [ "keys" ];
- systemd.services.sympa-bulk.serviceConfig.SupplementaryGroups = [ "keys" ];
- systemd.services.sympa-task.serviceConfig.SupplementaryGroups = [ "keys" ];
-
- systemd.services.sympa.serviceConfig.Slice = "mail-sympa.slice";
- systemd.services.sympa-archive.serviceConfig.Slice = "mail-sympa.slice";
- systemd.services.sympa-bounce.serviceConfig.Slice = "mail-sympa.slice";
- systemd.services.sympa-bulk.serviceConfig.Slice = "mail-sympa.slice";
- systemd.services.sympa-task.serviceConfig.Slice = "mail-sympa.slice";
-
- # https://github.com/NixOS/nixpkgs/pull/84202
- systemd.services.sympa.serviceConfig.ProtectKernelModules = lib.mkForce false;
- systemd.services.sympa-archive.serviceConfig.ProtectKernelModules = lib.mkForce false;
- systemd.services.sympa-bounce.serviceConfig.ProtectKernelModules = lib.mkForce false;
- systemd.services.sympa-bulk.serviceConfig.ProtectKernelModules = lib.mkForce false;
- systemd.services.sympa-task.serviceConfig.ProtectKernelModules = lib.mkForce false;
- systemd.services.sympa.serviceConfig.ProtectKernelTunables = lib.mkForce false;
- systemd.services.sympa-archive.serviceConfig.ProtectKernelTunables = lib.mkForce false;
- systemd.services.sympa-bounce.serviceConfig.ProtectKernelTunables = lib.mkForce false;
- systemd.services.sympa-bulk.serviceConfig.ProtectKernelTunables = lib.mkForce false;
- systemd.services.sympa-task.serviceConfig.ProtectKernelTunables = lib.mkForce false;
-
- systemd.services.wwsympa = {
- wantedBy = [ "multi-user.target" ];
- after = [ "sympa.service" ];
- serviceConfig = {
- Slice = "mail-sympa.slice";
- Type = "forking";
- PIDFile = "/run/sympa/wwsympa.pid";
- Restart = "always";
- ExecStart = ''${pkgs.spawn_fcgi}/bin/spawn-fcgi \
- -u sympa \
- -g sympa \
- -U wwwrun \
- -M 0600 \
- -F 2 \
- -P /run/sympa/wwsympa.pid \
- -s /run/sympa/wwsympa.socket \
- -- ${pkgs.sympa}/lib/sympa/cgi/wwsympa.fcgi
- '';
- StateDirectory = "sympa";
- ProtectHome = true;
- ProtectSystem = "full";
- ProtectControlGroups = true;
- };
- };
-
- services.postfix = {
- mapFiles = {
- # Update relay list when changing one of those
- sympa_virtual = pkgs.writeText "virtual.sympa" ''
- sympa-request@${domain} postmaster@immae.eu
- sympa-owner@${domain} postmaster@immae.eu
-
- sympa-request@cip-ca.fr postmaster@immae.eu
- sympa-owner@cip-ca.fr postmaster@immae.eu
- '';
- sympa_transport = pkgs.writeText "transport.sympa" ''
- ${domain} error:User unknown in recipient table
- sympa@${domain} sympa:sympa@${domain}
- listmaster@${domain} sympa:listmaster@${domain}
- bounce@${domain} sympabounce:sympa@${domain}
- abuse-feedback-report@${domain} sympabounce:sympa@${domain}
-
- sympa@cip-ca.fr sympa:sympa@cip-ca.fr
- listmaster@cip-ca.fr sympa:listmaster@cip-ca.fr
- bounce@cip-ca.fr sympabounce:sympa@cip-ca.fr
- abuse-feedback-report@cip-ca.fr sympabounce:sympa@cip-ca.fr
- '';
- };
- config = {
- transport_maps = lib.mkAfter [
- "hash:/etc/postfix/sympa_transport"
- "hash:/var/lib/sympa/sympa_transport"
- ];
- virtual_alias_maps = lib.mkAfter [
- "hash:/etc/postfix/sympa_virtual"
- ];
- virtual_mailbox_maps = lib.mkAfter [
- "hash:/etc/postfix/sympa_transport"
- "hash:/var/lib/sympa/sympa_transport"
- "hash:/etc/postfix/sympa_virtual"
- ];
- };
- masterConfig = {
- sympa = {
- type = "unix";
- privileged = true;
- chroot = false;
- command = "pipe";
- args = [
- "flags=hqRu"
- "user=sympa"
- "argv=${pkgs.sympa}/libexec/queue"
- "\${nexthop}"
- ];
- };
- sympabounce = {
- type = "unix";
- privileged = true;
- chroot = false;
- command = "pipe";
- args = [
- "flags=hqRu"
- "user=sympa"
- "argv=${pkgs.sympa}/libexec/bouncequeue"
- "\${nexthop}"
- ];
- };
- };
- };
- services.sympa = {
- enable = true;
- listMasters = sympaConfig.listmasters;
- mainDomain = domain;
- domains = {
- "${domain}" = {
- webHost = "mail.immae.eu";
- webLocation = "/sympa";
- };
- "cip-ca.fr" = {
- webHost = "mail.cip-ca.fr";
- webLocation = "/sympa";
- };
- };
-
- database = {
- type = "PostgreSQL";
- user = sympaConfig.postgresql.user;
- host = sympaConfig.postgresql.socket;
- name = sympaConfig.postgresql.database;
- passwordFile = config.secrets.fullPaths."sympa/db_password";
- createLocally = false;
- };
- settings = {
- sendmail = "/run/wrappers/bin/sendmail";
- log_smtp = "on";
- sendmail_aliases = "/var/lib/sympa/sympa_transport";
- aliases_program = "${pkgs.postfix}/bin/postmap";
- };
- settingsFile = {
- "virtual.sympa".enable = false;
- "transport.sympa".enable = false;
- } // lib.mapAttrs' (n: v: lib.nameValuePair
- "etc/${domain}/data_sources/${n}.incl"
- { source = config.secrets.fullPaths."sympa/data_sources/${n}.incl"; }) sympaConfig.data_sources
- // lib.mapAttrs' (n: v: lib.nameValuePair
- "etc/${domain}/scenari/${n}"
- { source = config.secrets.fullPaths."sympa/scenari/${n}"; }) sympaConfig.scenari;
- web = {
- server = "none";
- };
-
- mta = {
- type = "none";
- };
- };
- };
-}
diff --git a/modules/private/mail/verify_from.py b/modules/private/mail/verify_from.py
deleted file mode 100755
index b75001e..0000000
--- a/modules/private/mail/verify_from.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python3
-import Milter
-import argparse
-from email.header import decode_header
-from email.utils import parseaddr
-
-class CheckMilter(Milter.Base):
- def __init__(self):
- self.envelope_from = None
- self.header_from = None
-
- @Milter.noreply
- def connect(self, IPname, family, hostaddr):
- return Milter.CONTINUE
-
- def hello(self, heloname):
- return Milter.CONTINUE
-
- def envfrom(self, mailfrom, *args):
- self.envelope_from = parseaddr(mailfrom)[1]
- return Milter.CONTINUE
-
- @Milter.noreply
- def envrcpt(self, to, *str):
- return Milter.CONTINUE
-
- @Milter.noreply
- def header(self, name, hval):
- if name.lower() == "from":
- self.header_from = parseaddr(decode_header(hval)[-1][0])[1]
- return Milter.CONTINUE
-
- def eoh(self):
- if self.header_from is not None and self.header_from != "" and self.header_from != self.envelope_from:
- self.setreply("553", xcode="5.7.1", msg="<%s>: From header rejected: not matching envelope From %s"
- % (self.header_from, self.envelope_from))
- return Milter.REJECT
-
- return Milter.CONTINUE
-
- @Milter.noreply
- def body(self, chunk):
- return Milter.CONTINUE
-
- def eom(self):
- return Milter.ACCEPT
-
- def close(self):
- return Milter.CONTINUE
-
- def abort(self):
- return Milter.CONTINUE
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument("--socket", "-s", type=str, help="socket to listen to")
- config = parser.parse_args()
-
- Milter.factory = CheckMilter
- Milter.runmilter("check_from", config.socket, timeout=300)
diff --git a/modules/private/monitoring/default.nix b/modules/private/monitoring/default.nix
deleted file mode 100644
index 0783c2f..0000000
--- a/modules/private/monitoring/default.nix
+++ /dev/null
@@ -1,249 +0,0 @@
-{ config, pkgs, lib, name, nodes, ... }:
-let
- cfg = config.myServices.monitoring;
- activatedPlugins = [ "memory" "command" "bandwidth" ]
- ++ (if cfg.master then (masterObjects.activatedPlugins or []) else [])
- ++ (if cfg.master then (lib.flatten (map (v: v.activatedPlugins or []) otherObjects)) else [])
- ++ (hostObjects.activatedPlugins or [])
- ++ (if cfg.master then ["notify-primary"] else ["notify-secondary"]);
- allPluginsConfig = import ./myplugins.nix {
- inherit pkgs lib config;
- sudo = "/run/wrappers/bin/sudo";
- };
- mypluginsConfig = lib.getAttrs activatedPlugins allPluginsConfig;
- myplugins = let
- mypluginsChunk = builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (k: v: v.chunk or "") mypluginsConfig);
- in pkgs.runCommand "buildplugins" {
- buildInputs = [ pkgs.makeWrapper pkgs.perl ];
- } ''
- mkdir $out
- ${mypluginsChunk}
- '';
- toObjects = pkgs.callPackage ./to_objects.nix {};
- commonConfig = {
- dilion = {
- processWarn = "250"; processAlert = "400";
- loadWarn = "1.0"; loadAlert = "1.2";
- interface = "eth0";
- };
- eldiron = {
- processWarn = "550"; processAlert = "650";
- loadWarn = "1.0"; loadAlert = "1.2";
- interface = "eth0";
- };
- backup-2 = {
- processWarn = "60"; processAlert = "70";
- loadWarn = "1.0"; loadAlert = "2.0";
- interface = "ens3";
- };
- monitoring-1 = {
- processWarn = "50"; processAlert = "60";
- loadWarn = "4.0"; loadAlert = "6.0";
- load15Warn = "1.0"; load15Alert = "2.0";
- interface = "ens3";
- };
- quatresaisons = {
- processWarn = "250"; processAlert = "400";
- loadWarn = "1.0"; loadAlert = "1.2";
- interface = "eth0";
- };
- };
- externalObjects = lib.genAttrs [ "tiboqorl-fr" ]
- (n: pkgs.callPackage (./. + "/objects_" + n + ".nix") { inherit emailCheck; });
- masterPassiveObjects = let
- passiveNodes = lib.attrsets.filterAttrs (n: _: builtins.elem n ["backup-2" "eldiron" "quatresaisons" "dilion"]) nodes;
- toPassiveServices = map (s: s.passiveInfo.filter s // s.passiveInfo);
- passiveServices = lib.flatten (lib.attrsets.mapAttrsToList
- (_: n: toPassiveServices n.config.myServices.monitoring.services)
- passiveNodes
- ) ++ lib.flatten (lib.attrsets.mapAttrsToList
- (_: n: toPassiveServices n.service)
- externalObjects);
- in {
- service = passiveServices;
- host = lib.lists.foldr
- (a: b: a//b)
- {}
- (lib.attrsets.mapAttrsToList (_: h: h.config.myServices.monitoring.hosts) passiveNodes
- ++ lib.attrsets.mapAttrsToList (_: n: n.host) externalObjects);
- };
- emailCheck = host: hostFQDN: let
- allCfg = config.myEnv.monitoring.email_check;
- cfg = allCfg."${host}";
- reverseTargets = builtins.attrNames (lib.attrsets.filterAttrs (k: v: builtins.elem host v.targets) allCfg);
- to_email = cfg': host':
- let sep = if lib.strings.hasInfix "+" cfg'.mail_address then "_" else "+";
- in "${cfg'.mail_address}${sep}${host'}@${cfg'.mail_domain}";
- mails_to_send = builtins.concatStringsSep "," (map (n: to_email allCfg."${n}" host) cfg.targets);
- mails_to_receive = builtins.concatStringsSep "," (map (n: "${to_email cfg n}:${n}") reverseTargets);
- command = if cfg.local
- then
- [ "check_emails_local" "/var/lib/naemon/checks/email" mails_to_send mails_to_receive ]
- else
- [ "check_emails" cfg.login cfg.port mails_to_send mails_to_receive ];
- in
- {
- service_description = "${hostFQDN} email service is active";
- use = "mail-service";
- host_name = hostFQDN;
- servicegroups = "webstatus-email";
- check_command = command;
- };
- otherObjects = map
- (n: (pkgs.callPackage (./. + "/objects_" + n + ".nix") { inherit emailCheck; }))
- [ "ulminfo-fr" "phare" "eban" ];
- masterObjects = pkgs.callPackage ./objects_master.nix { inherit config; };
- commonObjects = pkgs.callPackage ./objects_common.nix ({
- master = cfg.master;
- hostFQDN = config.hostEnv.fqdn;
- hostName = name;
- inherit mypluginsConfig;
- } // builtins.getAttr name commonConfig);
- hostObjects =
- let
- specific_file = ./. + "/objects_" + name + ".nix";
- in
- lib.attrsets.optionalAttrs
- (builtins.pathExists specific_file)
- (pkgs.callPackage specific_file {
- inherit config nodes emailCheck;
- hostFQDN = config.hostEnv.fqdn;
- hostName = name;
- });
- objectsFiles = lib.mapAttrs' (name: value: lib.nameValuePair
- "=/${name}/objects.conf" { alias = pkgs.writeText "objects.conf" (toObjects value); }
- ) externalObjects;
-in
-{
- options = {
- myServices.monitoring = {
- enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- description = ''
- Whether to enable monitoring.
- '';
- };
- master = lib.mkOption {
- type = lib.types.bool;
- default = false;
- description = ''
- This instance is the master instance
- '';
- };
- hosts = lib.mkOption {
- readOnly = true;
- description = "Hosts list for this host";
- default = (commonObjects.host or {}) // (hostObjects.host or {});
- };
- services = lib.mkOption {
- readOnly = true;
- description = "Services list for this host";
- default = commonObjects.service ++ hostObjects.service;
- };
- };
- };
-
- config = lib.mkIf cfg.enable {
- services.nginx = lib.mkIf config.myServices.status.enable {
- virtualHosts."status.immae.eu".locations = objectsFiles // {
- "=/common/immae.cfg" = {
- alias = pkgs.writeText "immae.cfg" ''
- # put me for instance in /etc/naemon/module-conf.d/immae.cfg
- # Make sure that you have include_dir=module-conf.d in
- # naemon.cfg
- log_initial_states=1
- date_format=iso8601
- admin_email=${config.myEnv.monitoring.email}
- obsess_over_services=1
- ocsp_command=notify-master
- '';
- };
- "=/common/resource.cfg" = {
- alias = pkgs.writeText "resource.cfg" ''
- # Resource.cfg file
- # Replace this with path to monitoring plugins
- $USER1$=@@COMMON_PLUGINS@@
- # Replace this with a path to scripts from
- # https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/tree/modules/private/monitoring/plugins
- $USER2$=@@IMMAE_PLUGINS@@
- $USER200$=https://status.immae.eu/
- $USER201$=@@TOKEN@@
- '';
- };
- };
- };
-
- security.sudo.extraRules = let
- pluginsSudo = lib.lists.remove null (lib.attrsets.mapAttrsToList (k: v:
- if (v ? sudo)
- then ({ users = [ "naemon" ]; } // (v.sudo myplugins))
- else null) mypluginsConfig);
- in [
- {
- commands = [
- { command = "${pkgs.mdadm}/bin/mdadm --monitor --scan -1"; options = [ "NOPASSWD" ]; }
- { command = "${pkgs.postfix}/bin/mailq"; options = [ "NOPASSWD" ]; }
- ];
- users = [ "naemon" ];
- runAs = "root";
- }
- ] ++ pluginsSudo;
- environment.etc."mdadm.conf" = {
- enable = true;
- mode = "0644";
- user = "root";
- text = "MAILADDR ${config.myEnv.monitoring.email}";
- };
-
- secrets.keys = {
- "naemon/id_rsa" = {
- user = "naemon";
- group = "naemon";
- permissions = "0400";
- text = config.myEnv.monitoring.ssh_secret_key;
- };
- } // lib.optionalAttrs cfg.master (
- lib.mapAttrs' (k: v: lib.nameValuePair "${k}_access_key" {
- user = "naemon";
- group = "naemon";
- permissions = "0400";
- text = ''
- export AWS_ACCESS_KEY_ID="${v.accessKeyId}"
- export AWS_SECRET_ACCESS_KEY="${v.secretAccessKey}"
- export BASE_URL="${v.remote "immae-eldiron"}"
- '';
- }) config.myEnv.backup.remotes
- );
- # needed since extraResource is not in the closure
- systemd.services.naemon.path = [ myplugins ];
- services.naemon = {
- enable = true;
- extraConfig = ''
- use_syslog=1
- log_initial_states=1
- date_format=iso8601
- admin_email=${config.myEnv.monitoring.email}
- '' + lib.optionalString (!cfg.master) ''
- obsess_over_services=1
- ocsp_command=notify-master
- '' + lib.optionalString (cfg.master) ''
- broker_module=${pkgs.naemon-livestatus}/lib/naemon-livestatus/livestatus.so ${config.services.naemon.runDir}/live
- broker_module=${pkgs.status_engine.module}/lib/status-engine/naemon/statusengine-${pkgs.naemon.status_engine_version}.o use_service_perfdata=1 use_process_data=0 use_system_command_data=0 use_external_command_data=0 use_flapping_data=0 use_program_status_data=0 use_notification_data=0 use_contact_status_data=0 use_contact_notification_data=0 use_event_handler_data=0 use_object_data=0
- '';
- extraResource = let
- resources = [hostObjects.resources or {}] ++ (lib.mapAttrsToList (k: v: v.resources or {}) mypluginsConfig);
- joined = lib.zipAttrsWith (n: v: if builtins.length (lib.unique v) == 1 then builtins.head v else abort "Non-unique resources names") resources;
- joinedStr = builtins.concatStringsSep "\n" (lib.mapAttrsToList (k: v: "$" + "${k}$=${v}") joined);
- in ''
- $USER2$=${myplugins}
- ${joinedStr}
- '';
- objectDefs = toObjects commonObjects
- + toObjects hostObjects
- + lib.optionalString cfg.master (toObjects masterObjects)
- + lib.optionalString cfg.master (toObjects masterPassiveObjects)
- + lib.optionalString cfg.master (builtins.concatStringsSep "\n" (map toObjects otherObjects));
- };
- };
-}
diff --git a/modules/private/monitoring/myplugins.nix b/modules/private/monitoring/myplugins.nix
deleted file mode 100644
index e59ddc4..0000000
--- a/modules/private/monitoring/myplugins.nix
+++ /dev/null
@@ -1,389 +0,0 @@
-{ sudo, pkgs, lib, config }:
-let
- cfg = config.myServices.monitoring;
-in
-{
- notify-secondary = {
- resources = {
- USER200 = config.myEnv.monitoring.status_url;
- USER201 = config.myEnv.monitoring.status_token;
- };
- commands = {
- notify-master = "$USER2$/send_nrdp.sh -u \"$USER200$\" -t \"$USER201$\" -H \"$HOSTADDRESS$\" -s \"$SERVICEDESC$\" -S \"$SERVICESTATEID$\" -o \"$SERVICEOUTPUT$ | $SERVICEPERFDATA$\"";
- };
- chunk = ''
- cp ${./plugins}/send_nrdp.sh $out
- patchShebangs $out/send_nrdp.sh
- wrapProgram $out/send_nrdp.sh --prefix PATH : ${lib.makeBinPath [
- pkgs.curl pkgs.jq
- ]}
- '';
- };
- notify-primary = {
- resources = {
- USER206 = config.myEnv.monitoring.slack_channel;
- USER207 = config.myEnv.monitoring.slack_url;
- USER210 = config.myEnv.monitoring.eban.user;
- USER211 = config.myEnv.monitoring.eban.password;
- };
- commands = {
- # $OVE is to force naemon to run via shell instead of execve which fails here
- notify-host-by-email = "ADMINEMAIL=\"$ADMINEMAIL$\" SERVICENOTIFICATIONID=\"$SERVICENOTIFICATIONID$\" HOSTSTATE=\"$HOSTSTATE$\" HOSTOUTPUT=\"$HOSTOUTPUT$\" $USER2$/notify_by_email host \"$NOTIFICATIONTYPE$\" \"$HOSTALIAS$\" \"$LONGDATETIME$\" \"$CONTACTEMAIL$\" $OVE";
- # $OVE is to force naemon to run via shell instead of execve which fails here
- notify-service-by-email = "ADMINEMAIL=\"$ADMINEMAIL$\" SERVICENOTIFICATIONID=\"$SERVICENOTIFICATIONID$\" SERVICEDESC=\"$SERVICEDESC$\" SERVICESTATE=\"$SERVICESTATE$\" SERVICEOUTPUT=\"$SERVICEOUTPUT$\" $USER2$/notify_by_email service \"$NOTIFICATIONTYPE$\" \"$HOSTALIAS$\" \"$LONGDATETIME$\" \"$CONTACTEMAIL$\" $OVE";
- notify-by-slack = "HOST=\"$HOSTALIAS$\" SERVICESTATE=\"$SERVICESTATE$\" SERVICEDESC=\"$SERVICEDESC$\" SERVICEOUTPUT=\"$SERVICEOUTPUT$\" $USER2$/notify_by_slack \"$ARG1$\" \"$ARG2$\"";
- notify-host-eban-url = "STATUS_NAME=\"Server\" USER=\"$USER210$\" PASSWORD=\"$USER211$\" HOSTSTATE=\"$HOSTSTATE$\" $USER2$/notify_eban_url";
- notify-service-eban-url = "STATUS_NAME=\"$_SERVICEWEBSTATUS_NAME$\" USER=\"$USER210$\" PASSWORD=\"$USER211$\" SERVICESTATE=\"$SERVICESTATE$\" $USER2$/notify_eban_url";
- };
- chunk = ''
- cp ${./plugins}/{notify_by_email,notify_by_slack,notify_eban_url} $out
- patchShebangs $out/{notify_by_email,notify_by_slack,notify_eban_url}
- wrapProgram $out/notify_by_email --prefix PATH : ${lib.makeBinPath [
- pkgs.mailutils
- ]}
- wrapProgram $out/notify_by_slack --prefix PATH : ${lib.makeBinPath [
- pkgs.curl pkgs.jq
- ]}
- wrapProgram $out/notify_eban_url --prefix PATH : ${lib.makeBinPath [
- pkgs.curl
- ]}
- '';
- };
- bandwidth = {
- commands = {
- check_local_bandwidth = "$USER2$/check_bandwidth -i=$ARG1$ -w $ARG2$ -c $ARG3$";
- };
- chunk = ''
- cp ${./plugins}/check_bandwidth $out/
- patchShebangs $out/check_bandwidth
- wrapProgram $out/check_bandwidth --prefix PATH : ${lib.makeBinPath [
- pkgs.iproute pkgs.bc
- ]}
- '';
- };
- command = {
- commands = {
- check_command_match = "$USER2$/check_command -c \"$ARG1$\" -C \"$ARG2$\" $ARG3$";
- check_command_output = "$USER2$/check_command -c \"$ARG1$\" -s 0 -o \"$ARG2$\" $ARG3$";
- check_command_status = "$USER2$/check_command -c \"$ARG1$\" -s \"$ARG2$\" $ARG3$";
- };
- chunk = ''
- cp ${./plugins}/check_command $out/
- patchShebangs $out/check_command
- wrapProgram $out/check_command --prefix PATH : ${config.security.wrapperDir}
- '';
- };
- dns = {
- commands = {
- check_dns = "$USER1$/check_dns -H $ARG1$ -s $HOSTADDRESS$ $ARG2$";
- check_external_dns = "$USER1$/check_dns -H $ARG2$ -s $ARG1$ $ARG3$";
- };
- };
- emails = {
- resources = {
- USER203 = config.secrets.fullPaths."naemon/id_rsa";
- };
- commands = {
- check_emails = "$USER2$/check_emails -H $HOSTADDRESS$ -i $USER203$ -l $ARG1$ -p $ARG2$ -s $ARG3$ -f $ARG4$";
- check_emails_local = "$USER2$/check_emails -H $HOSTADDRESS$ -n $ARG1$ -r $ADMINEMAIL$ -s $ARG2$ -f $ARG3$";
- };
- chunk = let
- send_mails = pkgs.runCommand "send_mails" {
- buildInputs = [ pkgs.makeWrapper ];
- } ''
- mkdir -p $out/bin
- cp ${./send_mails} $out/bin/send_mails
- patchShebangs $out
- wrapProgram $out/bin/send_mails --prefix PATH : ${lib.makeBinPath [
- pkgs.mailutils
- ]}
- '';
- in ''
- cp ${./plugins}/check_emails $out/
- patchShebangs $out/check_emails
- wrapProgram $out/check_emails --prefix PATH : ${lib.makeBinPath [
- pkgs.openssh send_mails
- ]} --prefix PERL5LIB : ${pkgs.perlPackages.makePerlPath [
- pkgs.perlPackages.TimeDate
- ]}
- '';
- };
- eriomem = {
- resources = {
- USER208 = builtins.concatStringsSep "," (map (builtins.concatStringsSep ":") config.myEnv.monitoring.eriomem_keys);
- };
- commands = {
- check_backup_eriomem = "$USER2$/check_eriomem $USER208$";
- check_backup_eriomem_age = "$USER2$/check_backup_eriomem_age $ARG1$";
- };
- chunk = ''
- cp ${./plugins}/check_eriomem $out/
- patchShebangs $out/check_eriomem
- wrapProgram $out/check_eriomem --prefix PATH : ${lib.makeBinPath [
- pkgs.s3cmd pkgs.python3
- ]}
- cp ${./plugins}/check_backup_age $out/check_backup_eriomem_age
- patchShebangs $out/check_backup_eriomem_age
- wrapProgram $out/check_backup_eriomem_age --prefix PATH : ${lib.makeBinPath [
- pkgs.duplicity
- ]} --set SECRETS_PATH ${lib.optionalString cfg.master config.secrets.fullPaths."eriomem_access_key"}
- '';
- };
- file_date = {
- commands = {
- check_last_file_date = "${sudo} -u \"$ARG3$\" $USER2$/check_last_file_date \"$ARG1$\" \"$ARG2$\"";
- };
- chunk = ''
- cp ${./plugins}/check_last_file_date $out/
- patchShebangs $out/check_last_file_date
- '';
- sudo = myplugins: {
- commands = [
- { command = "${myplugins}/check_last_file_date /backup2/*"; options = [ "NOPASSWD" ]; }
- ];
- runAs = "ALL";
- };
- };
- ftp = {
- commands = {
- check_ftp_database = "$USER2$/check_ftp_database";
- };
- chunk = ''
- cp ${./plugins}/check_ftp_database $out/
- patchShebangs $out/check_ftp_database
- wrapProgram $out/check_ftp_database --prefix PATH : ${lib.makeBinPath [
- pkgs.lftp
- ]}
- '';
- };
- git = {
- resources = {
- USER203 = config.secrets.fullPaths."naemon/id_rsa";
- };
- commands = {
- check_git = "$USER2$/check_git $USER203$";
- };
- chunk = ''
- cp ${./plugins}/check_git $out/
- patchShebangs $out/check_git
- wrapProgram $out/check_git --prefix PATH : ${lib.makeBinPath [
- pkgs.git pkgs.openssh
- ]}
- '';
- };
- http = {
- resources = {
- USER202 = config.myEnv.monitoring.http_user_password;
- };
- commands = {
- check_http = "$USER1$/check_http --sni -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
- check_https = "$USER1$/check_http --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
- check_https_auth = "$USER1$/check_http --sni --ssl -a \"$USER202$\" -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
- check_https_certificate = "$USER1$/check_http --sni --ssl -H \"$ARG1$\" -C 21,15";
- check_https_code = "$USER1$/check_http --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -e \"$ARG3$\" -r \"$ARG4$\"";
- };
- };
- imap = {
- resources = {
- USER204 = config.myEnv.monitoring.imap_login;
- USER205 = config.myEnv.monitoring.imap_password;
- };
- commands = {
- check_imap_connection = "$USER2$/check_imap_connection -u \"$USER204$\" -p \"$USER205$\" -H \"imap.immae.eu:143\"";
- };
- chunk = ''
- cp ${./plugins}/check_imap_connection $out/
- patchShebangs $out/check_imap_connection
- wrapProgram $out/check_imap_connection --prefix PATH : ${lib.makeBinPath [
- pkgs.openssl
- ]}
- '';
- };
- megaraid = let
- megacli = pkgs.megacli.overrideAttrs(old: { meta = old.meta // { license = null; }; });
- in {
- commands = {
- check_megaraid = "$USER2$/check_megaraid_sas --sudo";
- };
- chunk = let
- megaCliPlugin = pkgs.runCommand "megaCliPlugin" {
- plugin = pkgs.fetchurl {
- name = "check_megaraid_sas";
- url = "https://exchange.nagios.org/components/com_mtree/attachment.php?link_id=6381&cf_id=24";
- sha256 = "0yf60p4c0hb4q3fng9fc14qc89bqm0f1sijayzygadaqcl44jx4p";
- };
- } ''
- mkdir $out
- cp $plugin $out/check_megaraid_sas
- chmod +x $out/check_megaraid_sas
- patchShebangs $out
- substituteInPlace $out/check_megaraid_sas --replace /usr/sbin/MegaCli ${megacli}/bin/MegaCli64
- substituteInPlace $out/check_megaraid_sas --replace 'sudo $megacli' '${sudo} $megacli'
- sed -i -e "s/use utils qw(%ERRORS);/my %ERRORS = ('OK' => 0, 'WARNING' => 1, 'CRITICAL' => 2, 'UNKNOWN' => 3);/" $out/check_megaraid_sas
- '';
- in ''
- cp ${megaCliPlugin}/check_megaraid_sas $out/
- patchShebangs $out/check_megaraid_sas
- '';
- sudo = _: {
- commands = [
- { command = "${megacli}/bin/MegaCli64"; options = [ "NOPASSWD" ]; }
- ];
- runAs = "root";
- };
- };
- memory = {
- commands = {
- check_memory = "$USER2$/check_mem.sh -w $ARG1$ -c $ARG2$";
- };
- chunk = ''
- cp ${./plugins}/check_mem.sh $out/
- patchShebangs $out/check_mem.sh
- wrapProgram $out/check_mem.sh --prefix PATH : ${lib.makeBinPath [
- pkgs.gnugrep pkgs.gawk pkgs.procps-ng
- ]}
- '';
- };
- mysql = {
- commands = {
- check_mysql_replication = "${sudo} -u mysql $USER2$/check_mysql_replication \"$ARG1$\" \"$ARG2$\"";
- };
- chunk = ''
- cp ${./plugins}/check_mysql_replication $out/
- patchShebangs $out/check_mysql_replication
- wrapProgram $out/check_mysql_replication --prefix PATH : ${lib.makeBinPath [
- pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.mariadb
- ]}
- '';
- sudo = myplugins: {
- commands = [
- { command = "${myplugins}/check_mysql_replication *"; options = [ "NOPASSWD" ]; }
- ];
- runAs = "mysql";
- };
- };
- openldap = {
- commands = {
- check_openldap_replication = "${sudo} -u openldap $USER2$/check_openldap_replication \"$ARG1$\" \"$ARG2$\" \"$ARG3$\" \"$ARG4$\" \"$ARG5$\"";
- };
- chunk = ''
- cp ${./plugins}/check_openldap_replication $out/
- patchShebangs $out/check_openldap_replication
- wrapProgram $out/check_openldap_replication --prefix PATH : ${lib.makeBinPath [
- pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.openldap
- ]}
- '';
- sudo = myplugins: {
- commands = [
- { command = "${myplugins}/check_openldap_replication *"; options = [ "NOPASSWD" ]; }
- ];
- runAs = "openldap";
- };
- };
- ovh = {
- resources = {
- USER209 = builtins.concatStringsSep "," [
- config.myEnv.monitoring.ovh_sms.endpoint
- config.myEnv.monitoring.ovh_sms.application_key
- config.myEnv.monitoring.ovh_sms.application_secret
- config.myEnv.monitoring.ovh_sms.consumer_key
- config.myEnv.monitoring.ovh_sms.account
- ];
- };
- commands = {
- check_backup_ovh_age = "$USER2$/check_backup_ovh_age $ARG1$";
- check_ovh_sms = "$USER2$/check_ovh_sms \"$USER209$\"";
- };
- chunk = ''
- cp ${./plugins}/check_backup_age $out/check_backup_ovh_age
- patchShebangs $out/check_backup_ovh_age
- wrapProgram $out/check_backup_ovh_age --prefix PATH : ${lib.makeBinPath [
- pkgs.duplicity
- ]} --set SECRETS_PATH ${lib.optionalString cfg.master config.secrets.fullPaths."ovh_access_key"}
- cp ${./plugins}/check_ovh_sms $out/
- patchShebangs $out/check_ovh_sms
- wrapProgram $out/check_ovh_sms --prefix PATH : ${lib.makeBinPath [
- (pkgs.python3.withPackages (ps: [ps.ovh]))
- ]}
- '';
- };
- postgresql = {
- commands = {
- check_postgresql_replication = "${sudo} -u postgres $USER2$/check_postgres_replication \"$ARG1$\" \"$ARG2$\" \"$ARG3$\"";
- check_postgresql_database_count = "$USER2$/check_postgres_database_count \"$ARG1$\" \"$ARG2$\" \"$ARG3$\"";
- };
- chunk = let
- postgresqlBinary = if config.myServices.databasesReplication.postgresql.enable
- then config.myServices.databasesReplication.postgresql.mainPackage
- else if config.myServices.databases.enable
- then config.myServices.databases.postgresql.package
- else pkgs.postgresql;
- in ''
- cp ${./plugins}/check_postgres_replication $out/
- patchShebangs $out/check_postgres_replication
- wrapProgram $out/check_postgres_replication --prefix PATH : ${lib.makeBinPath [
- postgresqlBinary
- ]}
- cp ${./plugins}/check_postgres_database_count $out/
- patchShebangs $out/check_postgres_database_count
- wrapProgram $out/check_postgres_database_count --prefix PATH : ${lib.makeBinPath [
- postgresqlBinary
- ]}
- '';
-
- sudo = myplugins: {
- commands = [
- { command = "${myplugins}/check_postgres_replication *"; options = [ "NOPASSWD" ]; }
- ];
- runAs = "postgres";
- };
- };
- redis = {
- commands = {
- check_redis_replication = "${sudo} -u redis $USER2$/check_redis_replication \"$ARG1$\"";
- };
- chunk = ''
- cp ${./plugins}/check_redis_replication $out/
- patchShebangs $out/check_redis_replication
- wrapProgram $out/check_redis_replication --prefix PATH : ${lib.makeBinPath [
- pkgs.gnugrep pkgs.coreutils pkgs.redis
- ]}
- '';
- sudo = myplugins: {
- commands = [
- { command = "${myplugins}/check_redis_replication *"; options = [ "NOPASSWD" ]; }
- ];
- runAs = "redis";
- };
- };
- tcp = {
- commands = {
- check_tcp = "$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -e \"$ARG2$\" -Mcrit";
- check_tcp_ssl = "$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -S -D 21,15";
- };
- };
- zfs = {
- commands = {
- check_zfs = "$USER2$/check_zpool.sh -p ALL -w 80 -c 90";
- check_zfs_snapshot = "$USER2$/check_zfs_snapshot -d $ARG1$ -c 18000 -w 14400";
- };
- chunk = let
- zfsPlugin = pkgs.fetchurl {
- url = "https://www.claudiokuenzler.com/monitoring-plugins/check_zpools.sh";
- sha256 = "0p9ms9340in80jkds4kfspw62xnzsv5s7ni9m28kxyd0bnzkbzhf";
- };
- in ''
- cp ${zfsPlugin} $out/check_zpool.sh
- chmod +x $out/check_zpool.sh
- patchShebangs $out/check_zpool.sh
- wrapProgram $out/check_zpool.sh --prefix PATH : ${lib.makeBinPath [
- pkgs.which pkgs.zfs pkgs.gawk
- ]}
- cp ${./plugins}/check_zfs_snapshot $out
- patchShebangs $out/check_zfs_snapshot
- wrapProgram $out/check_zfs_snapshot --prefix PATH : ${lib.makeBinPath [
- pkgs.zfs pkgs.coreutils pkgs.gawk pkgs.gnugrep
- ]}
- '';
- };
-}
diff --git a/modules/private/monitoring/nagios-cli.cfg b/modules/private/monitoring/nagios-cli.cfg
deleted file mode 100644
index 7bd30cb..0000000
--- a/modules/private/monitoring/nagios-cli.cfg
+++ /dev/null
@@ -1,68 +0,0 @@
-# -*- coding: utf-8; -*-
-
-[cli]
-history = /var/lib/naemon/nagios_cli_history
-
-[ui]
-color = 1
-prompt = naemon %s>
-prompt_separator = " → "
-
-[nagios]
-log = /var/log/naemon
-command_file = /run/naemon/naemon.cmd
-log_file = %(log)s/naemon.log
-object_cache_file = /var/lib/naemon/objects.cache
-status_file = /var/lib/naemon/status.dat
-
-[object]
-host.status =
- host_name
- current_state
- plugin_output
- is_flapping
- last_check
- last_time_down
- last_state_change
- check_period
- notification_period
- current_attempt
- max_attempts
-service.status =
- host_name
- service_description
- current_state
- is_flapping
- plugin_output
- last_time_down
- last_state_change
- last_check
- next_check
- check_interval
- check_latency
- check_period
- notification_period
- current_attempt
- max_attempts
-
-[string]
-level.ok = ↑ OK
-level.warning = ! WARNING
-level.critical = ↓ CRITICAL
-level.unknown = ↕ UNKNOWN
-
-[color]
-error = bold_red
-
-prompt = normal
-prompt.object = bold
-
-host.host_name = bold
-host.plugin_output = bold
-service.plugin_output = bold
-
-level.ok = bold_green
-level.warning = bold_yellow
-level.critical = bold_red
-level.unknown = bold_magenta
-
diff --git a/modules/private/monitoring/objects_backup-2.nix b/modules/private/monitoring/objects_backup-2.nix
deleted file mode 100644
index 28032a4..0000000
--- a/modules/private/monitoring/objects_backup-2.nix
+++ /dev/null
@@ -1,111 +0,0 @@
-{ config, pkgs, lib, hostFQDN, emailCheck, ... }:
-let
- defaultPassiveInfo = {
- filter = lib.attrsets.filterAttrs
- (k: v: builtins.elem k ["service_description"] || builtins.substring 0 1 k == "_");
- use = "external-passive-service";
- freshness_threshold = "450";
- retry_interval = "1";
- servicegroups = "webstatus-resources";
- host_name = hostFQDN;
- };
-in
-{
- activatedPlugins = [ "file_date" "mysql" "openldap" "redis" "emails" ];
- service = [
- (emailCheck "backup-2" hostFQDN // {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-email"; freshness_threshold = "1350"; };
- })
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Size on /backup2 partition";
- use = "local-service";
- check_command = ["check_local_disk" "10%" "5%" "/backup2"];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-backup"; };
- service_description = "Last backup in /backup2/phare is not too old";
- use = "local-service";
- check_command = ["check_last_file_date" "/backup2/phare" "14" "backup"];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-backup"; };
- service_description = "Last backup in /backup2/dilion is not too old";
- use = "local-service";
- check_command = ["check_last_file_date" "/backup2/dilion" "14" "backup"];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-backup"; };
- service_description = "Last backup in /backup2/ulminfo is not too old";
- use = "local-service";
- check_command = ["check_last_file_date" "/backup2/ulminfo" "14" "backup"];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases,webstatus-backup"; };
- service_description = "Last postgresql dump in /backup2/eldiron/postgresql_backup is not too old";
- use = "local-service";
- check_command = ["check_last_file_date" "/backup2/eldiron/postgresql_backup" "7" "postgres"];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases"; };
- service_description = "Redis replication for eldiron is up to date";
- use = "local-service";
- check_command = ["check_redis_replication" "/run/redis_eldiron/redis.sock"];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases,webstatus-backup"; };
- service_description = "Last redis dump in /backup2/eldiron/redis_backup is not too old";
- use = "local-service";
- check_command = ["check_last_file_date" "/backup2/eldiron/redis_backup" "7" "redis"];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases"; };
- service_description = "Mysql replication for eldiron is up to date";
- use = "local-service";
- check_command = ["check_mysql_replication" "/run/mysqld_eldiron/mysqld.sock" config.secrets.fullPaths."mysql_replication/eldiron/client"];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases,webstatus-backup"; };
- service_description = "Last mysql dump in /backup2/eldiron/mysql_backup is not too old";
- use = "local-service";
- check_command = ["check_last_file_date" "/backup2/eldiron/mysql_backup" "7" "mysql"];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases"; };
- service_description = "Openldap replication for eldiron is up to date";
- use = "local-service";
- check_command = let
- name = "eldiron";
- hcfg = config.myServices.databasesReplication.openldap.hosts.eldiron;
- base = config.myServices.databasesReplication.openldap.base;
- eldiron_schemas = pkgs.callPackage ../databases/openldap/eldiron_schemas.nix {};
- ldapConfig = pkgs.writeText "slapd.conf" ''
- include ${pkgs.openldap}/etc/schema/core.schema
- include ${pkgs.openldap}/etc/schema/cosine.schema
- include ${pkgs.openldap}/etc/schema/inetorgperson.schema
- include ${pkgs.openldap}/etc/schema/nis.schema
- ${eldiron_schemas}
- moduleload back_hdb
- backend hdb
- database hdb
-
- suffix "${hcfg.base}"
- directory ${base}/${name}/openldap
- '';
- in [
- "check_openldap_replication"
- hcfg.url
- hcfg.dn
- config.secrets.fullPaths."openldap_replication/eldiron/replication_password"
- hcfg.base
- ldapConfig
- ];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases,webstatus-backup"; };
- service_description = "Last openldap dump in /backup2/eldiron/openldap_backup is not too old";
- use = "local-service";
- check_command = ["check_last_file_date" "/backup2/eldiron/openldap_backup" "7" "openldap"];
- }
- ];
-}
diff --git a/modules/private/monitoring/objects_common.nix b/modules/private/monitoring/objects_common.nix
deleted file mode 100644
index 7c9f642..0000000
--- a/modules/private/monitoring/objects_common.nix
+++ /dev/null
@@ -1,253 +0,0 @@
-{ hostFQDN
-, hostName
-, interface ? "eth0"
-, processWarn ? "250"
-, processAlert ? "400"
-, loadWarn ? "0.9"
-, load5Warn ? loadWarn
-, load15Warn ? load5Warn
-, loadAlert ? "1.0"
-, load5Alert ? loadAlert
-, load15Alert ? load5Alert
-, mdadm
-, master
-, lib
-, mypluginsConfig
-, ...
-}:
-let
- defaultPassiveInfo = {
- filter = lib.attrsets.filterAttrs
- (k: v: builtins.elem k ["service_description"] || builtins.substring 0 1 k == "_");
- use = "external-passive-service";
- freshness_threshold = "450";
- retry_interval = "1";
- servicegroups = "webstatus-resources";
- host_name = hostFQDN;
- };
-in
-{
- host = {
- "${hostFQDN}" = {
- alias = hostFQDN;
- address = hostFQDN;
- use = "linux-server";
- hostgroups = "webstatus-hosts";
- _webstatus_name = hostName;
- _webstatus_vhost = "status.immae.eu";
- };
- };
- service = [
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Size on root partition";
- use = "local-service";
- check_command = ["check_local_disk" "20%" "10%" "/"];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Total number of process";
- use = "local-service";
- check_command = [
- "check_local_procs"
- processWarn
- processAlert
- "RSZDT"
- ];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Network bandwidth";
- use = "local-service";
- check_interval = "2";
- max_check_attempts = "20";
- retry_interval = "2";
- check_command = [
- "check_local_bandwidth"
- interface
- "20480" # kb/s
- "51200" # kb/s
- ];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Average load";
- use = "local-service";
- check_command = [
- "check_local_load"
- "${loadWarn},${load5Warn},${load15Warn}"
- "${loadAlert},${load5Alert},${load15Alert}"
- ];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Swap usage";
- use = "local-service";
- check_command = ["check_local_swap" "20" "10"];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Memory usage";
- use = "local-service";
- check_command = ["check_memory" "80" "90"];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "NTP is activated and working";
- use = "local-service";
- check_command = ["check_ntp"];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "No mdadm array is degraded";
- use = "local-service";
- check_command = [
- "check_command_output"
- "${mdadm}/bin/mdadm --monitor --scan -1"
- "^$"
- "-s 0 -r root"
- ];
- }
- ];
- command = lib.foldr (v: o: o // (v.commands or {})) {} (builtins.attrValues mypluginsConfig) // {
- check_local_disk = "$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$";
- check_local_procs = "$USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$";
- check_local_load = "$USER1$/check_load -r -w $ARG1$ -c $ARG2$";
- check_local_swap = "$USER1$/check_swap -n ok -w $ARG1$ -c $ARG2$";
- check_ntp = "$USER1$/check_ntp_time -t 30 -q -H 0.arch.pool.ntp.org";
- check_mailq = "$USER1$/check_mailq -s -w 1 -c 2";
- check_smtp = "$USER1$/check_smtp -H $HOSTADDRESS$ -p 25 -S -D 21,15";
-
- check_host_alive = "$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5";
- check_ok = "$USER1$/check_dummy 0 \"Dummy OK\"";
- check_critical = "$USER1$/check_dummy 2 \"Dummy CRITICAL\"";
- };
- timeperiod = {
- "24x7" = {
- alias = "24 Hours A Day, 7 Days A Week";
- monday = "00:00-24:00";
- tuesday = "00:00-24:00";
- wednesday = "00:00-24:00";
- thursday = "00:00-24:00";
- friday = "00:00-24:00";
- saturday = "00:00-24:00";
- sunday = "00:00-24:00";
- };
- };
- servicegroup = {
- webstatus-webapps = { alias = "Web applications"; };
- webstatus-websites = { alias = "Personal websites"; };
- webstatus-ssl = { alias = "SSL certificates"; };
- webstatus-dns = { alias = "DNS resolution"; };
- webstatus-remote-services = { alias = "Other remote services"; };
- webstatus-local-services = { alias = "Other local services"; };
- webstatus-email = { alias = "E-mail services"; };
- webstatus-resources = { alias = "Local resources"; };
- webstatus-databases = { alias = "Databases resources"; };
- webstatus-backup = { alias = "Backup resources"; };
- };
- hostgroup = {
- webstatus-hosts = { alias = "Hosts"; };
- };
- contactgroup = {
- admins = { alias = "Naemon Administrators"; };
- };
- templates = {
- service = {
- generic-service = {
- active_checks_enabled = "1";
- check_freshness = "0";
- check_interval = "10";
- check_period = "24x7";
- contact_groups = "admins";
- event_handler_enabled = "1";
- flap_detection_enabled = "1";
- is_volatile = "0";
- max_check_attempts = "3";
- notification_interval = "60";
- notification_options = "w,u,c,r,f,s";
- notification_period = "24x7";
- notifications_enabled = if master then "1" else "0";
- obsess_over_service = "1";
- passive_checks_enabled = "1";
- process_perf_data = "1";
- retain_nonstatus_information = "1";
- retain_status_information = "1";
- retry_interval = "2";
- _webstatus_namespace = "immae";
- };
- local-service = {
- use = "generic-service";
- host_name = hostFQDN;
- check_interval = "5";
- max_check_attempts = "4";
- retry_interval = "1";
- servicegroups = "webstatus-resources";
- };
- external-service = {
- use = "generic-service";
- check_interval = "5";
- max_check_attempts = "4";
- retry_interval = "1";
- };
- web-service = {
- use = "generic-service";
- check_interval = "20";
- max_check_attempts = "2";
- retry_interval = "1";
- };
- external-web-service = {
- use = "generic-service";
- check_interval = "20";
- max_check_attempts = "2";
- retry_interval = "1";
- };
- mail-service = {
- use = "generic-service";
- check_interval = "15";
- max_check_attempts = "1";
- retry_interval = "1";
- };
- dns-service = {
- use = "generic-service";
- check_interval = "120";
- notification_interval = "120";
- max_check_attempts = "5";
- retry_interval = "5";
- };
- };
- # No contact, we go through master
- contact = {
- generic-contact = {
- host_notification_commands = "notify-host-by-email";
- host_notification_options = "d,u,r,f,s";
- host_notification_period = "24x7";
- service_notification_commands = "notify-service-by-email";
- service_notification_options = "w,u,c,r,f,s";
- service_notification_period = "24x7";
- };
- };
- host = {
- generic-host = {
- event_handler_enabled = "1";
- flap_detection_enabled = "1";
- notification_period = "24x7";
- notifications_enabled = "1";
- process_perf_data = "1";
- retain_nonstatus_information = "1";
- retain_status_information = "1";
- };
- linux-server = {
- check_command = "check_host_alive";
- check_interval = "5";
- check_period = "24x7";
- contact_groups = "admins";
- max_check_attempts = "10";
- notification_interval = "120";
- notification_options = "d,u,r,f";
- retry_interval = "1";
- _webstatus_namespace = "immae";
- };
- };
- };
-}
diff --git a/modules/private/monitoring/objects_dilion.nix b/modules/private/monitoring/objects_dilion.nix
deleted file mode 100644
index 16b3c64..0000000
--- a/modules/private/monitoring/objects_dilion.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib, hostFQDN, emailCheck, ... }:
-let
- defaultPassiveInfo = {
- filter = lib.attrsets.filterAttrs
- (k: v: builtins.elem k ["service_description"] || builtins.substring 0 1 k == "_");
- use = "external-passive-service";
- freshness_threshold = "450";
- retry_interval = "1";
- servicegroups = "webstatus-resources";
- host_name = hostFQDN;
- };
- zfs_snapshot = name: {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-resources"; };
- service_description = "ZFS snapshot ${name} happened not too long ago";
- use = "local-service";
- check_command = ["check_zfs_snapshot" name];
- };
-in
-{
- activatedPlugins = [ "zfs" ];
- service = [
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-resources"; };
- service_description = "No ZFS pool is degraded";
- use = "local-service";
- check_command = ["check_zfs"];
- }
- (zfs_snapshot "zpool/backup/eldiron/zpool/root")
- (zfs_snapshot "zpool/backup/eldiron/zpool/root/etc")
- (zfs_snapshot "zpool/backup/eldiron/zpool/root/var")
- ];
-}
diff --git a/modules/private/monitoring/objects_eban.nix b/modules/private/monitoring/objects_eban.nix
deleted file mode 100644
index df54f6a..0000000
--- a/modules/private/monitoring/objects_eban.nix
+++ /dev/null
@@ -1,70 +0,0 @@
-{ ... }:
-let
- serviceTemplate = rest: {
- host_name = "eban.bzh";
- use = "external-web-service";
- contacts = "eban";
- contact_groups = "null";
- check_interval = "15";
-
- servicegroups = "webstatus-resources";
- _webstatus_namespace = "eban";
- } // rest;
-in
-{
- activatedPlugins = [ "http" ];
- contact = {
- eban = {
- use = "generic-contact";
- host_notification_commands = "notify-host-eban-url";
- service_notification_commands = "notify-service-eban-url";
- };
- };
- host = {
- "eban.bzh" = {
- alias = "eban.bzh";
- address = "eban.bzh";
- use = "linux-server";
- hostgroups = "webstatus-hosts";
- contacts = "eban";
- contact_groups = "null";
- _webstatus_name = "Eban";
- _webstatus_vhost = "status.eban.bzh";
- _webstatus_namespace = "eban";
- };
- };
- service = [
- (serviceTemplate {
- service_description = "Eban website is up and running";
- check_command = ["check_https" "eban.bzh" "/" ""];
- _webstatus_name = "Main Website";
- _webstatus_url = "https://eban.bzh/";
- })
- (serviceTemplate {
- service_description = "Eban blog is up and running";
- check_command = ["check_https" "blog.eban.bzh" "/" ""];
- _webstatus_name = "Blog";
- _webstatus_url = "https://blog.eban.bzh/";
- })
- (serviceTemplate {
- service_description = "Eban gitea is up and running";
- check_command = ["check_https" "git.eban.bzh" "/" ""];
- _webstatus_name = "Git";
- _webstatus_url = "https://git.eban.bzh/";
- })
- (serviceTemplate {
- service_description = "I Learned website is up and running";
- check_command = [ "check_https" "ilearned.eu.org" "/" "Tiny Tiny RSS"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "TT-RSS";
- _webstatus_url = "https://tools.immae.eu/ttrss/";
- }
-
- {
- service_description = "mpd website is running on tools.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https_auth" "tools.immae.eu" "/mpd/" "ympd"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "MPD (YMPD)";
- _webstatus_url = "https://tools.immae.eu/mpd/";
- }
-
- {
- service_description = "rompr mpd website is running on tools.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https_auth" "tools.immae.eu" "/rompr/" "RompЯ"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "MPD (ROMPR)";
- _webstatus_url = "https://tools.immae.eu/rompr/";
- }
-
- {
- service_description = "wallabag website is running on tools.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "tools.immae.eu" "/wallabag/" "Bienvenue sur wallabag"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "Wallabag";
- _webstatus_url = "https://tools.immae.eu/wallabag/";
- }
-
- {
- service_description = "yourl website is running on tools.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "tools.immae.eu" "/url/admin/" "YOURLS"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "YOURLS";
- _webstatus_url = "https://tools.immae.eu/url/admin/";
- }
-
- {
- service_description = "roundcube website is running on mail.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "mail.immae.eu" "/roundcube/" "Roundcube"];
-
- servicegroups = "webstatus-webapps,webstatus-email";
- _webstatus_name = "Roundcube";
- _webstatus_url = "https://mail.immae.eu/roundcube/";
- }
-
- {
- service_description = "dokuwiki website is running on tools.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "tools.immae.eu" "/dokuwiki/" "start"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "Dokuwiki";
- _webstatus_url = "https://tools.immae.eu/dokuwiki/";
- }
-
- {
- service_description = "shaarli website is running on tools.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "tools.immae.eu" "/Shaarli/immae" "Immae"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "Shaarli";
- _webstatus_url = "https://tools.immae.eu/Shaarli/";
- }
-
- {
- service_description = "ldap website is running on tools.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "tools.immae.eu" "/ldap/" "phpLDAPadmin"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "LDAP";
- _webstatus_url = "https://tools.immae.eu/ldap/";
- }
-
- {
- service_description = "gitweb website is running on git.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "git.immae.eu" "/cgit" "Immae’s git"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "Git";
- _webstatus_url = "https://git.immae.eu/";
- }
-
- {
- service_description = "mantisbt website is running on git.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "git.immae.eu" "/mantisbt/" "My View - MantisBT"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "Mantisbt";
- _webstatus_url = "https://git.immae.eu/mantisbt";
- }
-
- {
- service_description = "diaspora website is running on diaspora.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "diaspora.immae.eu" "/" "is the online social world where you are in control"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "Diaspora";
- _webstatus_url = "https://diaspora.immae.eu/";
- }
-
- {
- service_description = "peertube website is running on peertube.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "peertube.immae.eu" "/" "Immae’s PeerTube"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "Peertube";
- _webstatus_url = "https://peertube.immae.eu/";
- }
-
- {
- service_description = "etherpad website is running on ether.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "ether.immae.eu" "/" "Etherpad"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "Etherpad";
- _webstatus_url = "https://ether.immae.eu/";
- }
-
- {
- service_description = "mediagoblin website is running on mgoblin.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "mgoblin.immae.eu" "/" "GNU MediaGoblin"];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "Mediagoblin";
- _webstatus_url = "https://mgoblin.immae.eu/";
- }
-
- {
- service_description = "mastodon website is running on mastodon.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "mastodon.immae.eu" "/" "Mastodon "];
-
- servicegroups = "webstatus-webapps";
- _webstatus_name = "Mastodon";
- _webstatus_url = "https://mastodon.immae.eu/";
- }
-
- # Other web pages
- {
- service_description = "Jerome website is running on naturaloutil.immae.eu";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "naturaloutil.immae.eu" "/ping.php" "YES"];
-
- servicegroups = "webstatus-websites";
- _webstatus_name = "naturaloutil.immae.eu";
- _webstatus_url = "https://naturaloutil.immae.eu/";
- }
-
- {
- service_description = "Telio website is running on realistesmedia.fr";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "realistesmedia.fr" "/" "doctype html"];
- contact_groups = "telio-tortay";
- }
-
- {
- service_description = "Chloe website site is running on osteopathe-cc.fr";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "www.osteopathe-cc.fr" "/" "Chloé Condamin ostéopathe D.O."];
-
- servicegroups = "webstatus-websites";
- _webstatus_name = "osteopathe-cc.fr";
- _webstatus_url = "https://www.osteopathe-cc.fr/";
- }
-
- {
- service_description = "Richie website is running on europe-richie.org";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "www.europe-richie.org" "/" ".Europe Richie]"];
-
- servicegroups = "webstatus-websites";
- _webstatus_name = "europe-richie.org";
- _webstatus_url = "https://www.europe-richie.org/";
- }
-
- {
- service_description = "Ludivine website site is running on ludivinecassal.com";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "www.ludivinecassal.com" "/" "Ludivine Cassal"];
-
- servicegroups = "webstatus-websites";
- _webstatus_name = "ludivinecassal.com";
- _webstatus_url = "https://www.ludivinecassal.com/";
- }
-
- {
- service_description = "Aten website site is running on aten.pro";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "aten.pro" "/" "ATEN"];
-
- servicegroups = "webstatus-websites";
- _webstatus_name = "aten.pro";
- _webstatus_url = "https://aten.pro/";
- }
-
- {
- service_description = "PiedsJaloux website site is running on piedsjaloux.fr";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "www.piedsjaloux.fr" "/" "Les Pieds Jaloux"];
-
- servicegroups = "webstatus-websites";
- _webstatus_name = "piedsjaloux.fr";
- _webstatus_url = "https://www.piedsjaloux.fr/";
- }
-
- {
- service_description = "Denise and Jerome website site is running on denisejerome.piedsjaloux.fr";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "denisejerome.piedsjaloux.fr" "/" "Accueil - Mariage"];
-
- servicegroups = "webstatus-websites";
- _webstatus_name = "denisejerome.piedsjaloux.fr";
- _webstatus_url = "https://denisejerome.piedsjaloux.fr/";
- }
-
- {
- service_description = "Connexionswing website site is running on connexionswing.com";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "www.connexionswing.com" "/" "Cours, stages"];
-
- servicegroups = "webstatus-websites";
- _webstatus_name = "connexionswing.com";
- _webstatus_url = "https://www.connexionswing.com/";
- }
-
- {
- service_description = "Sandetludo website site is running on sandetludo.com";
- host_name = "eldiron.immae.eu";
- use = "external-web-service";
- check_command = ["check_https" "www.sandetludo.com" "/" "Cours de West Coast"];
-
- servicegroups = "webstatus-websites";
- _webstatus_name = "sandetludo.com";
- _webstatus_url = "https://www.sandetludo.com/";
- }
-
- # SSL
- {
- service_description = "ldap SSL is up to date";
- host_name = "eldiron.immae.eu";
- use = "external-service";
- check_command = ["check_tcp_ssl" "636"];
-
- servicegroups = "webstatus-ssl";
- _webstatus_name = "LDAP";
- _webstatus_url = "ldap.immae.eu";
- }
-
- # Tiboqorl
- {
- service_description = "Cyllene support page is running";
- host_name = "tiboqorl.fr";
- use = "external-web-service";
- contact_groups = "tiboqorl";
- check_command = [ "check_https" "sc.groupe-cyllene.com" "/" "Support Client Cyllene" ];
- _webstatus_namespace = "tiboqorl";
- }
-
- {
- service_description = "Origny page is running";
- host_name = "tiboqorl.fr";
- use = "external-web-service";
- contact_groups = "tiboqorl";
- check_command = [ "check_https" "origny.tiboqorl.fr" "/" "Home Assistant" ];
- _webstatus_namespace = "tiboqorl";
- }
- ];
- contact = {
- telio-tortay = config.myEnv.monitoring.contacts.telio-tortay // {
- use = "generic-contact";
- contactgroups = "telio-tortay";
- };
- thibault = config.myEnv.monitoring.contacts.thibault // {
- use = "generic-contact";
- contactgroups = "tiboqorl";
- };
- };
- contactgroup = {
- telio-tortay = { alias = "Telio Tortay"; members = "immae"; };
- tiboqorl = { alias = "Tiboqorl"; members = "immae"; };
- };
-}
diff --git a/modules/private/monitoring/objects_phare.nix b/modules/private/monitoring/objects_phare.nix
deleted file mode 100644
index 082e7e3..0000000
--- a/modules/private/monitoring/objects_phare.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ emailCheck, ... }:
-{
- activatedPlugins = [ "emails" ];
- host = {
- "phare.normalesup.org" = {
- alias = "phare.normalesup.org";
- address = "phare.normalesup.org";
- use = "linux-server";
- hostgroups = "webstatus-hosts";
- _webstatus_name = "phare";
- _webstatus_vhost = "status.immae.eu";
- };
- };
- service = [
- (emailCheck "phare" "phare.normalesup.org")
- ];
-}
diff --git a/modules/private/monitoring/objects_quatresaisons.nix b/modules/private/monitoring/objects_quatresaisons.nix
deleted file mode 100644
index f30cf81..0000000
--- a/modules/private/monitoring/objects_quatresaisons.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib, hostFQDN, emailCheck, openldap, ... }:
-let
- defaultPassiveInfo = {
- filter = lib.attrsets.filterAttrs
- (k: v: builtins.elem k ["service_description"] || builtins.substring 0 1 k == "_");
- use = "external-passive-service";
- freshness_threshold = "450";
- retry_interval = "1";
- servicegroups = "webstatus-resources";
- host_name = hostFQDN;
- };
-in
-{
- resources = {
- USER212 = "{{ .monitoring.quatresaisons.naemon_ldap }}";
- };
- activatedPlugins = [ "megaraid" "command" "postgresql" ];
- service = [
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-resources"; };
- service_description = "No RAID device is degraded";
- use = "local-service";
- check_command = ["check_megaraid"];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-resources"; };
- service_description = "LDAP is running";
- use = "local-service";
- check_command = [ "check_command_status" "${openldap}/bin/ldapwhoami -D uid=naemon,ou=services,dc=salle-s,dc=org -w $USER212$" "0" ""];
- }
- {
- passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-resources"; };
- service_description = "Postgresql is running";
- use = "local-service";
- check_command = [ "check_postgresql_database_count" "/run/postgresql" "5432" "3" ];
- }
- ];
-}
diff --git a/modules/private/monitoring/objects_tiboqorl-fr.nix b/modules/private/monitoring/objects_tiboqorl-fr.nix
deleted file mode 100644
index b49a1d8..0000000
--- a/modules/private/monitoring/objects_tiboqorl-fr.nix
+++ /dev/null
@@ -1,174 +0,0 @@
-{ lib, ... }:
-let
- hostFQDN = "tiboqorl.fr";
- defaultPassiveInfo = {
- filter = lib.attrsets.filterAttrs
- (k: v: builtins.elem k ["service_description"] || builtins.substring 0 1 k == "_");
- use = "external-passive-service";
- contact_groups = "tiboqorl";
- freshness_threshold = "450";
- notification_interval = "240";
- retry_interval = "1";
- servicegroups = "webstatus-resources";
- _webstatus_namespace = "tiboqorl";
- host_name = hostFQDN;
- };
-in
-{
- host = {
- "tiboqorl.fr" = {
- alias = "tiboqorl.fr";
- address = "tiboqorl.fr";
- use = "linux-server";
- contact_groups = "tiboqorl";
- hostgroups = "webstatus-hosts";
- _webstatus_name = "tiboqorl";
- _webstatus_vhost = "status.immae.eu";
- _webstatus_namespace = "tiboqorl";
- };
- };
- service = [
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Size on root partition";
- use = "local-service";
- check_command = ["check_local_disk" "20%" "10%" "/"];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Total number of process";
- use = "local-service";
- check_command = [ "check_local_procs" "250" "400" "RSZDT" ];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Network bandwidth";
- use = "local-service";
- check_interval = "2";
- max_check_attempts = "20";
- retry_interval = "2";
- check_command = [
- "check_local_bandwidth"
- "eth0"
- "20480" # kb/s
- "51200" # kb/s
- ];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Average load";
- use = "local-service";
- check_command = [
- "check_local_load"
- "0.75,0.75,0.75" # warn
- "1.0,1.0,1.0" # alert
- ];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Swap usage";
- use = "local-service";
- check_command = ["check_local_swap" "20" "10"];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "Memory usage";
- use = "local-service";
- check_command = ["check_memory" "80" "90"];
- }
- {
- passiveInfo = defaultPassiveInfo;
- service_description = "NTP is activated and working";
- use = "local-service";
- check_command = ["check_ntp"];
- }
- ];
- command = {
- check_local_disk = "$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$";
- check_local_procs = "$USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$";
- check_local_load = "$USER1$/check_load -w $ARG1$ -c $ARG2$";
- check_local_swap = "$USER1$/check_swap -n ok -w $ARG1$ -c $ARG2$";
- check_local_bandwidth = "$USER2$/check_bandwidth -i=$ARG1$ -w $ARG2$ -c $ARG3$";
- check_memory = "$USER2$/check_mem.sh -w $ARG1$ -c $ARG2$";
- check_ntp = "$USER1$/check_ntp_time -t 30 -q -H 0.arch.pool.ntp.org";
-
- check_host_alive = "$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5";
-
- notify-master = "$USER2$/send_nrdp.sh -u \"$USER200$\" -t \"$USER201$\" -H \"$HOSTADDRESS$\" -s \"$SERVICEDESC$\" -S \"$SERVICESTATEID$\" -o \"$SERVICEOUTPUT$ | $SERVICEPERFDATA$\"";
- };
- timeperiod = {
- "24x7" = {
- alias = "24 Hours A Day, 7 Days A Week";
- monday = "00:00-24:00";
- tuesday = "00:00-24:00";
- wednesday = "00:00-24:00";
- thursday = "00:00-24:00";
- friday = "00:00-24:00";
- saturday = "00:00-24:00";
- sunday = "00:00-24:00";
- };
- };
- servicegroup = {
- webstatus-resources = { alias = "Local resources"; };
- };
- hostgroup = {
- webstatus-hosts = { alias = "Hosts"; };
- };
- contactgroup = {
- tiboqorl = { alias = "Naemon Administrators"; };
- };
- templates = {
- service = {
- generic-service = {
- active_checks_enabled = "1";
- check_freshness = "0";
- check_interval = "10";
- check_period = "24x7";
- contact_groups = "tiboqorl";
- event_handler_enabled = "1";
- flap_detection_enabled = "1";
- is_volatile = "0";
- max_check_attempts = "3";
- notification_interval = "60";
- notification_options = "w,u,c,r,f,s";
- notification_period = "24x7";
- notifications_enabled = "0";
- obsess_over_service = "1";
- passive_checks_enabled = "1";
- process_perf_data = "1";
- retain_nonstatus_information = "1";
- retain_status_information = "1";
- retry_interval = "2";
- };
- local-service = {
- use = "generic-service";
- host_name = hostFQDN;
- check_interval = "5";
- max_check_attempts = "4";
- retry_interval = "1";
- servicegroups = "webstatus-resources";
- };
- };
- host = {
- generic-host = {
- event_handler_enabled = "1";
- flap_detection_enabled = "1";
- notification_period = "24x7";
- notifications_enabled = "1";
- process_perf_data = "1";
- retain_nonstatus_information = "1";
- retain_status_information = "1";
- };
- linux-server = {
- check_command = "check_host_alive";
- check_interval = "5";
- check_period = "24x7";
- contact_groups = "tiboqorl";
- max_check_attempts = "10";
- notification_interval = "120";
- notification_options = "d,u,r,f";
- retry_interval = "1";
- };
- };
- };
-}
diff --git a/modules/private/monitoring/objects_ulminfo-fr.nix b/modules/private/monitoring/objects_ulminfo-fr.nix
deleted file mode 100644
index bd2804b..0000000
--- a/modules/private/monitoring/objects_ulminfo-fr.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ emailCheck, ... }:
-{
- activatedPlugins = [ "emails" ];
- host = {
- "ulminfo.fr" = {
- alias = "ulminfo.fr";
- address = "ulminfo.fr";
- use = "linux-server";
- hostgroups = "webstatus-hosts";
- _webstatus_name = "ulminfo";
- _webstatus_vhost = "status.immae.eu";
- };
- };
- service = [
- (emailCheck "ulminfo" "ulminfo.fr")
- ];
-}
diff --git a/modules/private/monitoring/plugins/check_backup_age b/modules/private/monitoring/plugins/check_backup_age
deleted file mode 100755
index d873bdc..0000000
--- a/modules/private/monitoring/plugins/check_backup_age
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/env bash
-
-set -euo pipefail
-
-source $SECRETS_PATH
-export HOME=$(mktemp -d)
-
-trap "rm -rf $HOME" EXIT
-folder=$1
-
-parse_date() {
- d=$1
- echo $d | sed -e "s/^\(....\)\(..\)\(..\)T\(..\)\(..\)\(..\)/\1-\2-\3T\4:\5:\6/"
-}
-
-output=$(duplicity collection-status --log-fd 2 "$BASE_URL$folder" 2>&1 > /dev/null)
-
-output=$(echo "$output" | grep -v "^\.")
-
-last_full=$(parse_date "$(echo "$output" | grep "^ full " | cut -d' ' -f3 | sort | tail -n1)")
-last_bkp=$(parse_date "$(echo "$output" | grep -E "^ (full|inc) " | cut -d' ' -f3 | sort | tail -n1)")
-orphaned_sets=$(echo "$output" | grep "^orphaned-sets-num" | cut -d' ' -f2)
-incomplete_sets=$(echo "$output" | grep "^incomplete-sets-num" | cut -d' ' -f2)
-
-if [[ -z "$last_full" || -z "$last_bkp" || -z "$orphaned_sets" || -z "$incomplete_sets" ]]; then
- echo "duply-backup $folder UNKNOWN - impossible to parse result"
- exit 3
-fi
-
-last_full_age=$(( ($(date "+%s") - $(date -d "$last_full" "+%s")) / (60*60*24) ))
-last_bkp_age=$(( ($(date "+%s") - $(date -d "$last_bkp" "+%s")) / (60*60) ))
-
-PERFS="orphan=$orphaned_sets;1;;0; incomplete=$incomplete_sets;1;;0; age=${last_bkp_age}h;30;48;0; full_age=${last_full_age}d;35;45;0;"
-
-
-WARNINGS=""
-ERRORS=""
-if [[ "$incomplete_sets" -gt 0 ]]; then
- WARNINGS="$WARNINGS - Incomplete sets is $incomplete_sets"
-fi
-
-if [[ "$orphaned_sets" -gt 0 ]]; then
- WARNINGS="$WARNINGS - Orphaned sets is $orphaned_sets"
-fi
-
-if [[ "$last_full_age" -gt 45 ]]; then
- ERRORS="$ERRORS - Last full backup is too old $last_full"
-elif [[ "$last_full_age" -gt 35 ]]; then
- WARNINGS="$WARNINGS - Last full backup is getting old $last_full"
-fi
-
-if [[ "$last_bkp_age" -gt 48 ]]; then
- ERRORS="$ERRORS - Last backup is too old $last_bkp"
-elif [[ "$last_bkp_age" -gt 30 ]]; then
- WARNINGS="$WARNINGS - Last backup is getting old $last_bkp"
-fi
-
-if [[ -n "$ERRORS" ]]; then
- echo "duply-backup $folder CRITICAL$ERRORS$WARNINGS | $PERFS"
- exit 2
-elif [[ -n "$WARNINGS" ]]; then
- echo "duply-backup $folder WARNING$WARNINGS | $PERFS"
- exit 1
-else
- echo "duply-backup $folder OK | $PERFS"
-fi
diff --git a/modules/private/monitoring/plugins/check_bandwidth b/modules/private/monitoring/plugins/check_bandwidth
deleted file mode 100755
index 53c5d85..0000000
--- a/modules/private/monitoring/plugins/check_bandwidth
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/bin/bash
-
-# ============================== SUMMARY =====================================
-#Author : Ken Roulamellah
-#Date : 19/07/2018
-#Version : 1.0
-# Licence : GPL
-# ===================== INFORMATION ABOUT THIS PLUGIN ========================
-#
-# This plugin checks the average RX and TX bandwidth utilisation. It use
-# kbytes as measure unite.
-#
-# ========================== START OF PROGRAM CODE ===========================
-
-STATE_OK=0
-STATE_WARNING=1
-STATE_CRITICAL=2
-STATE_UNKNOWN=3
-
-interface=$( ip route | grep default | awk '{print $5}' | head -n1)
-function print_usage()
-{
- echo "Usage :"
- echo "$0 [ -i=INTERFACE] [ -ct=COUNT ] -w WARNING -c CRITICAL"
- echo "This script calculate the average bandwith usage."
- echo "Default values | interface: ${interface}, counter: 10"
-}
-
-counter=10
-warning=-1
-critical=-1
-
-sum_rx=0
-sum_tx=0
-avg_rx=
-avg_tx=
-i=
-
-
-if [[ $# -lt 4 ]];
-then
- echo "Error: Arguments are missing"
- print_usage
- exit $STATE_UNKNOWN
-fi
-
-while [[ $# -gt 0 ]]; do
- case "$1" in
- -i=*)
- interface="$(cut -d'=' -f2 <<<"$1")"
- shift
- ;;
- -ct=*)
- counter="$(cut -d'=' -f2 <<<"$1")"
- shift
- ;;
- -w)
- warning=$2
- shift 2
- ;;
- -c)
- critical=$2
- shift 2
- ;;
- *)
- printf "\nError: Invalid option '$1'"
- print_usage
- exit $STATE_UNKNOWN
- ;;
- esac
-done
-
-if [ $warning -lt 0 ] || [ $critical -lt 0 ];
-then
- echo "Error: You need to specify a warning and critical treshold"
- print_usage
- exit $STATE_UNKNOWN
-fi
-
-grep -q "up" /sys/class/net/$interface/operstate || exec echo "$interface: no such device or down"
-
-read rx <"/sys/class/net/$interface/statistics/rx_bytes"
-read tx <"/sys/class/net/$interface/statistics/tx_bytes"
-
-i=$counter
-while [ $i -gt 0 ]; do
- sleep 1
- read newrx <"/sys/class/net/$interface/statistics/rx_bytes"
- read newtx <"/sys/class/net/$interface/statistics/tx_bytes"
-
- #echo "old rx :$rx"
- #echo "new rx :$newrx"
- rx_cal=$(bc <<< "scale=2; ($newrx-$rx) / 1000")
- tx_cal=$(bc <<< "scale=2; ($newtx-$tx) / 1000")
-
- sum_rx=$(bc <<< "scale=2;$sum_rx+$rx_cal")
- sum_tx=$(bc <<< "scale=2;$sum_tx+$tx_cal")
-
- #echo "$interface {rx: $rx_cal ko/s, tx: $tx_cal ko/s}"
- rx=$newrx
- tx=$newtx
- ((i --))
-done
-
-avg_rx=$(bc <<< "scale=2;$sum_rx/$counter")
-avg_tx=$(bc <<< "scale=2;$sum_tx/$counter")
-
-#echo "$avg_rx"
-#echo "$avg_tx"
-
-
-if [ $(bc <<< "$avg_rx > $critical || $avg_tx > $critical") -eq 1 ]; then
- echo "$interface CRITICAL - AVG_RX: $avg_rx kb/s, AVG_TX:
- $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;"
- exit $STATE_CRITICAL
-elif [ $(bc <<< "$avg_rx > $warning || $avg_tx > $warning") -eq 1 ]; then
- echo "$interface WARNING - AVG_RX: $avg_rx kb/s, AVG_TX: $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;"
- exit $STATE_WARNING
-else
- echo "$interface - OK AVG_RX: $avg_rx kb/s, AVG_TX: $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;"
- exit $STATE_OK
-fi
-exit 3
diff --git a/modules/private/monitoring/plugins/check_command b/modules/private/monitoring/plugins/check_command
deleted file mode 100755
index 2b546c1..0000000
--- a/modules/private/monitoring/plugins/check_command
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/usr/bin/env perl
-
-use strict;
-use Getopt::Std;
-$| = 1;
-
-my %opts;
-getopts('hr:C:c:s:o:', \%opts);
-
-my $STATE_OK = 0;
-my $STATE_WARNING = 1;
-my $STATE_CRITICAL = 2;
-my $STATE_UNKNOWN = 3;
-
-if ($opts{'h'} || scalar(%opts) == 0) {
- &print_help();
- exit($STATE_OK);
-}
-
-my $command = $opts{'c'};
-if ($command eq '') {
- print "You must provide a command to check.\n";
- exit($STATE_UNKNOWN);
-}
-
-my $expected_output = $opts{'o'};
-my $expected_status = $opts{'s'};
-my $other_command = $opts{'C'};
-
-if ($other_command eq '' and $expected_status eq '' and $expected_output eq '') {
- $expected_status = 0;
-}
-
-my $cmd = $command . ' 2>&1';
-my $other_cmd;
-if ($other_command ne '') {
- $other_cmd = $other_command . ' 2>&1';
-}
-
-my $run_as;
-if ($opts{'r'}) {
- $run_as = $opts{'r'};
- $cmd = "sudo -u $run_as -n $cmd";
-
- if ($other_command ne '') {
- $other_cmd = "sudo -u $run_as -n $other_cmd";
- }
-
-}
-
-my $cmd_result = `$cmd`;
-my $other_cmd_result;
-if ($other_command ne '') {
- $other_cmd_result = `$other_cmd`;
- chomp($other_cmd_result);
-}
-
-chomp($cmd_result);
-if ($cmd_result =~ /sudo/i) {
- print "$command CRITICAL - No sudo right to run the command | result=1;;;;\n";
- exit($STATE_UNKNOWN);
-} elsif ($expected_status ne '') {
- if ($? != $expected_status) {
- print "$command CRITICAL - Response status $? | result=1;;;;\n";
- exit($STATE_CRITICAL);
- } else {
- print "$command OK - Response status $? | result=0;;;;\n";
- exit($STATE_OK);
- }
-} elsif ($other_command ne '') {
- if ($cmd_result ne $other_cmd_result) {
- print "$command CRITICAL - Expected output not matching other command output | result=1;;;;\n";
- exit($STATE_CRITICAL);
- } else {
- print "$command OK - Expected output matching other command output | result=0;;;;\n";
- exit($STATE_OK);
- }
-} else {
- if ($cmd_result !~ /$expected_output/) {
- print "$command CRITICAL - Expected output not matching | result=1;;;;\n";
- exit($STATE_CRITICAL);
- } else {
- print "$command OK - Expected output matching | result=0;;;;\n";
- exit($STATE_OK);
- }
-}
-
-sub print_help() {
- print << "EOF";
-Check whether the given command responds as expected. One of -o -C or -s must be selected.
-
-Options:
--h
- Print detailed help screen
-
--c
- command to run (required)
-
--C
- other command to compare output
-
--r user
- Run as user via sudo.
-
--s
- status code to check
-
--o
- output to check
-
-EOF
-}
-
diff --git a/modules/private/monitoring/plugins/check_emails b/modules/private/monitoring/plugins/check_emails
deleted file mode 100755
index 534e5a5..0000000
--- a/modules/private/monitoring/plugins/check_emails
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/usr/bin/env perl
-
-use strict;
-use Getopt::Std;
-use File::Basename;
-use Date::Parse;
-use POSIX qw(strftime);
-
-$| = 1;
-
-my %opts;
-getopts('hH:l:s:p:f:i:n:r:', \%opts);
-
-my $STATE_OK = 0;
-my $STATE_WARNING = 1;
-my $STATE_CRITICAL = 2;
-my $STATE_UNKNOWN = 3;
-
-if ($opts{'h'} || scalar(%opts) == 0) {
- &print_help();
- exit($STATE_OK);
-}
-
-my $port = $opts{'p'};
-my $host = $opts{'H'};
-my $login = $opts{'l'};
-if ($login ne '') {
- $login = "$login@";
-}
-
-my $identity = $opts{'i'};
-my $local_directory = $opts{'n'};
-my $return_path = $opts{'r'};
-
-my @emails_to_send = split(/,/, $opts{'s'});
-my @emails_to_expect = split(/,/, $opts{'f'});
-
-my $cmd_result;
-if ($local_directory ne '') {
- if (@emails_to_expect and ! -d $local_directory) {
- print "Emails $host UNKNOWN - Could not find local directory";
- exit($STATE_UNKNOWN);
- }
- $cmd_result = `send_mails $local_directory $return_path @emails_to_send 2>&1`;
-} else {
- $cmd_result = `ssh -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -p $port -i $identity $login$host send_mails @emails_to_send 2>&1`;
-
- if ($cmd_result =~ /Host key verification failed./) {
- print "Emails $host UNKNOWN - Could not connect to host with ssh key\n";
- exit($STATE_UNKNOWN);
- }
-}
-
-my @lines = split(/\n/, $cmd_result);
-
-my %found_emails;
-
-foreach my $line (@lines) {
- my @split_line = split(/;/, $line, 2);
- $found_emails{$split_line[0]} = $split_line[1];
-}
-
-my $output = "";
-my $old = 0;
-foreach my $email_from (@emails_to_expect) {
- my @email_split = split(/:/, $email_from);
- my $email = $email_split[0];
- my $from = $email_split[1];
-
- if ( exists $found_emails{$email} ) {
- my $email_date = str2time($found_emails{$email});
- my $current_date = strftime "%s", localtime;
-
- if ($current_date - $email_date > 60*30) {
- $output = "$output$email ($found_emails{$email} from $from) ";
- }
- $old = ($current_date - $email_date) > $old ? ($current_date - $email_date) : $old;
- } else {
- $output = "$output$email (missing) "
- }
-}
-
-if ($output ne '') {
- print "Emails $host CRITICAL - expecting emails: $output | timestamp=${old}s;;;;\n";
- exit($STATE_CRITICAL);
-} else {
- print "Emails $host OK | timestamp=${old}s;;;;\n";
- exit($STATE_OK);
-}
-
-sub print_help() {
- print << "EOF";
-Check sent emails
-
-Options:
--h
- Print detailed help screen
-
--H
- Host to check
-
--l
- Login
-
--i
- Identity file
-
--n
- Don’t use ssh, pass that directory to script
-
--r
- Return path for local e-mails
-
--s
- Comma separated list of emails to send from the host.
-
--f
- Comma separated list of emails to expect on the host.
-EOF
-}
-
diff --git a/modules/private/monitoring/plugins/check_eriomem b/modules/private/monitoring/plugins/check_eriomem
deleted file mode 100755
index 880b88a..0000000
--- a/modules/private/monitoring/plugins/check_eriomem
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/bin/env python
-import os
-import sys
-import getopt
-import signal
-from subprocess import Popen, PIPE
-
-STATE_OK = 0
-STATE_WARNING = 1
-STATE_CRITICAL = 2
-STATE_UNKNOWN = 3
-
-keys = sys.argv[1].split(",")
-
-def to_args(k):
- access, secret = k.split(":", 1)
- return [
- "s3cmd",
- '-c=/dev/null',
- '--no-check-certificate',
- '--access_key={}'.format(access),
- '--secret_key={}'.format(secret),
- '--host=e.eriomem.net',
- '--host-bucket=%(bucket)s.e.eriomem.net',
- 'du'
- ]
-
-max_size = 1024*1024*1024*1024
-warning_percent = 99.75
-critical_percent = 99.95
-
-def output(code, msg):
- print(msg)
- sys.exit(code)
-
-def main():
- def handler(signum, frame):
- raise IOError
- signal.signal(signal.SIGALRM, handler)
- signal.alarm(60)
-
- try:
- ps = [Popen(to_args(a), stdout=PIPE, stderr=PIPE) for a in keys]
- outs = [p.communicate() for p in ps]
- rets = [p.wait() for p in ps]
- except IOError:
- for p in ps:
- os.kill(p.pid, signal.SIGTERM)
- output(STATE_UNKNOWN,
- "Eriomem UNKNOWN - Command timeout after 60 seconds!")
-
- signal.alarm(0)
-
- if sum(rets) == 0:
- usages = [int(out[0].decode().split("\n")[-2].split()[0]) for out in outs]
- usage = sum(usages)
- use_percent = 100 * usage / max_size
- if use_percent > critical_percent:
- output(STATE_CRITICAL,
- "Eriomem CRITICAL - bucket usage: %s (%s%%);| size=%s;;;;" %
- (sizeof_fmt(usage), use_percent, sizeof_fmt(usage)))
- elif use_percent > warning_percent:
- output(STATE_WARNING,
- "Eriomem WARNING - bucket usage: %s (%s%%);| size=%s;;;;" %
- (sizeof_fmt(usage), use_percent, sizeof_fmt(usage)))
- else:
- output(STATE_OK,
- "Eriomem OK - bucket usage: %s (%d%%);| size=%s;;;;" %
- (sizeof_fmt(usage), use_percent, sizeof_fmt(usage)))
- else:
- messages = "\n".join([out[0].decode() + out[1].decode() for out in outs])
- output(STATE_UNKNOWN,
- "Eriomem UNKNOWN - Error in command")
-
-def sizeof_fmt(num):
- for unit in ['','ko','Mo','Go','To','Po','Eo','Zo']:
- if abs(num) < 1024.0:
- return "%3.1f%s" % (num, unit)
- num /= 1024.0
- return "%.1f%s%s" % (num, 'Yo')
-
-if __name__ == '__main__':
- main()
diff --git a/modules/private/monitoring/plugins/check_ftp_database b/modules/private/monitoring/plugins/check_ftp_database
deleted file mode 100755
index f9cf579..0000000
--- a/modules/private/monitoring/plugins/check_ftp_database
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env bash
-
-OUT=$(echo "ls" | lftp -u test_ftp,test_ftp eldiron.immae.eu | grep it_works | wc -l)
-
-if [ "$OUT" -eq 1 ]; then
- echo "ftp connection OK - access to ftp is working | ftp=1;;;;"
- exit 0
-else
- echo "ftp connection CRITICAL - no access to ftp | ftp=0;;;;"
- exit 2
-fi
diff --git a/modules/private/monitoring/plugins/check_git b/modules/private/monitoring/plugins/check_git
deleted file mode 100755
index e8fbb29..0000000
--- a/modules/private/monitoring/plugins/check_git
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/usr/bin/env bash
-
-SSH_KEY="$1"
-
-TMPDIR=$(mktemp -d)
-
-if [ ! -d "$TMPDIR" ]; then
- echo "gitolite UNKNOWN - impossible to create temp dir"
- exit 3
-fi
-
-trap "rm -rf $TMPDIR" EXIT
-
-ERRORS=""
-OUTPUT=""
-PERFS=""
-
-cd "$TMPDIR"
-OUT=$(git clone -q git://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1)
-ERR=$?
-if [ -n "$OUT" ]; then
-OUTPUT="$OUTPUT
-$OUT"
-fi
-if [ "$ERR" != 0 ]; then
- PERFS="$PERFS git=0;;;;"
- ERRORS="$ERRORS git://"
-else
- PERFS="$PERFS git=1;;;;"
-fi
-rm -rf Monitor
-
-OUT=$(git clone -q http://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1)
-ERR=$?
-if [ -n "$OUT" ]; then
-OUTPUT="$OUTPUT
-$OUT"
-fi
-if [ "$ERR" != 0 ]; then
- ERRORS="$ERRORS http://"
- PERFS="$PERFS http=0;;;;"
-else
- PERFS="$PERFS http=1;;;;"
-fi
-rm -rf Monitor
-
-OUT=$(git clone -q https://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1)
-ERR=$?
-if [ -n "$OUT" ]; then
-OUTPUT="$OUTPUT
-$OUT"
-fi
-if [ "$ERR" != 0 ]; then
- ERRORS="$ERRORS https://"
- PERFS="$PERFS https=0;;;;"
-else
- PERFS="$PERFS https=1;;;;"
-fi
-rm -rf Monitor
-
-OUT=$(GIT_SSH_COMMAND="ssh -i $SSH_KEY -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no" git clone -q gitolite@git.immae.eu:perso/Immae/Projets/Ruby/Monitor 2>&1)
-ERR=$?
-if [ -n "$OUT" ]; then
-OUTPUT="$OUTPUT
-$OUT"
-fi
-if [ "$ERR" != 0 ]; then
- ERRORS="$ERRORS ssh"
- PERFS="$PERFS ssh=0;;;;"
-else
- PERFS="$PERFS ssh=1;;;;"
-fi
-rm -rf Monitor
-
-if [ -n "$ERRORS" ]; then
- echo "gitolite CRITICAL - impossible to clone via$ERRORS | $PERFS"
- exit 2
-else
- echo "gitolite OK - ssh, git, http and https work | $PERFS"
- exit 0
-fi
diff --git a/modules/private/monitoring/plugins/check_imap_connection b/modules/private/monitoring/plugins/check_imap_connection
deleted file mode 100755
index c1ab0dd..0000000
--- a/modules/private/monitoring/plugins/check_imap_connection
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env perl
-
-use strict;
-use Getopt::Std;
-$| = 1;
-
-my %opts;
-getopts('h:u:p:H:', \%opts);
-
-my $STATE_OK = 0;
-my $STATE_WARNING = 1;
-my $STATE_CRITICAL = 2;
-my $STATE_UNKNOWN = 3;
-
-if ($opts{'h'} || !$opts{'u'} || !$opts{'p'} || !$opts{'H'}) {
- &print_help();
- exit($STATE_UNKNOWN);
-}
-
-my $user = $opts{'u'};
-my $password = $opts{'p'};
-my $host = $opts{'H'};
-
-my $cmd_result = `(echo "a login $user $password"; echo "b logout") | openssl s_client -quiet -ign_eof -connect $host -starttls imap 2>&1`;
-my $expected_result = "a OK Logged in";
-
-chomp($cmd_result);
-if ($cmd_result !~ /$expected_result/) {
- print "IMAP CRITICAL - Unable to connect via imaps | imap=0;;;;\n";
- exit($STATE_CRITICAL);
-} else {
- print "IMAP OK - imaps connected successfully | imap=1;;;;\n";
- exit($STATE_OK);
-}
-
-sub print_help() {
- print << "EOF";
-Check whether imap works via ssl and is able to connect its database.
-
-Options:
--h
- Print detailed help screen
--u
- User to log in as
--p
- Password to log in
--H
- Host to log in to
-
-EOF
-}
-
diff --git a/modules/private/monitoring/plugins/check_last_file_date b/modules/private/monitoring/plugins/check_last_file_date
deleted file mode 100755
index f51a258..0000000
--- a/modules/private/monitoring/plugins/check_last_file_date
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-
-STATE_OK=0
-STATE_WARNING=1
-STATE_CRITICAL=2
-STATE_UNKNOWN=3
-
-base_path=$1
-hours=$2
-
-last_date=$(find $base_path -mindepth 1 -maxdepth 1 -printf "%T@\n" 2>/dev/null | sort | tail -n 1)
-
-if [ -z "$last_date" ]; then
- echo "UNKNOWN: Could not read folder"
- exit $STATE_UNKNOWN
-else
- LC_ALL=C last_date=$(printf "%.*f" 0 $last_date)
- LC_ALL=C age=$(( $(date "+%s") - $last_date))
- max_age=$(( $hours * 60 * 60 ))
- min_date=$(date -d "$hours hours ago" "+%s")
- if [ "$min_date" -lt "$last_date" ]; then
- echo "OK: Last file $(date -d @$last_date) | age=${age}s;;$max_age;;"
- exit $STATE_OK
- else
- echo "CRITICAL: Last file $(date -d @$last_date) | age=${age}s;;$max_age;;"
- exit $STATE_CRITICAL
- fi
-fi
diff --git a/modules/private/monitoring/plugins/check_mem.sh b/modules/private/monitoring/plugins/check_mem.sh
deleted file mode 100755
index cc97ae2..0000000
--- a/modules/private/monitoring/plugins/check_mem.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-if [ "$1" = "-w" ] && [ "$2" -gt "0" ] && [ "$3" = "-c" ] && [ "$4" -gt "0" ]; then
- FreeM=`free -m`
- memTotal_m=`echo "$FreeM" |grep Mem |awk '{print $2}'`
- memUsed_m=`echo "$FreeM" |grep Mem |awk '{print $3}'`
- memFree_m=`echo "$FreeM" |grep Mem |awk '{print $4}'`
- memBuffer_m=`echo "$FreeM" |grep Mem |awk '{print $6}'`
- memCache_m=`echo "$FreeM" |grep Mem |awk '{print $7}'`
- memUsedPrc=`echo $((($memUsed_m*100)/$memTotal_m))||cut -d. -f1`
- if [ "$memUsedPrc" -ge "$4" ]; then
- echo "Memory: CRITICAL Total: $memTotal_m MB - Used: $memUsed_m MB - $memUsedPrc% used!|TOTAL=$memTotal_m;;;; USED=$memUsed_m;;;; CACHE=$memCache_m;;;; BUFFER=$memBuffer_m;;;;"
- exit 2
- elif [ "$memUsedPrc" -ge "$2" ]; then
- echo "Memory: WARNING Total: $memTotal_m MB - Used: $memUsed_m MB - $memUsedPrc% used!|TOTAL=$memTotal_m;;;; USED=$memUsed_m;;;; CACHE=$memCache_m;;;; BUFFER=$memBuffer_m;;;;"
- exit 1
- else
- echo "Memory: OK Total: $memTotal_m MB - Used: $memUsed_m MB - $memUsedPrc% used|TOTAL=$memTotal_m;;;; USED=$memUsed_m;;;; CACHE=$memCache_m;;;; BUFFER=$memBuffer_m;;;;"
- exit 0
- fi
-else # If inputs are not as expected, print help.
- sName="`echo $0|awk -F '/' '{print $NF}'`"
- echo -e "\n\n\t\t### $sName Version 2.0###\n"
- echo -e "# Usage:\t$sName -w -c "
- echo -e "\t\t= warnlevel and critlevel is percentage value without %\n"
- echo "# EXAMPLE:\t/usr/lib64/nagios/plugins/$sName -w 80 -c 90"
- echo -e "\nCopyright (C) 2012 Lukasz Gogolin (lukasz.gogolin@gmail.com), improved by Nestor 2015\n\n"
- exit
-fi
diff --git a/modules/private/monitoring/plugins/check_mysql_replication b/modules/private/monitoring/plugins/check_mysql_replication
deleted file mode 100755
index 1ee5de1..0000000
--- a/modules/private/monitoring/plugins/check_mysql_replication
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-
-STATE_OK=0
-STATE_WARNING=1
-STATE_CRITICAL=2
-STATE_UNKNOWN=3
-
-socket=$1
-config_file=$2
-info=$(mysql --defaults-file=${config_file} -S $socket -e "show slave status" --vertical)
-exit_code=$?
-
-lag=$(echo "$info" | grep "\bSeconds_Behind_Master\b" | cut -d':' -f2 | sed -e "s/\s//g")
-
-IO_running=$(echo "$info" | grep "\bSlave_IO_Running\b" | cut -d':' -f2 | sed -e "s/\s//g")
-SQL_running=$(echo "$info" | grep "\bSlave_SQL_Running\b" | cut -d':' -f2 | sed -e "s/\s//g")
-
-if [[ $exit_code -ne 0 ]]; then
- echo "UNKNOWN - Impossible to run mysql command"
- exit $STATE_UNKNOWN
-elif [[ -z "$lag" ]]; then
- echo "UNKNOWN - No replication found for mysql"
- exit $STATE_UNKNOWN
-elif [[ "$IO_running" != "Yes" || "$SQL_running" != "Yes" ]]; then
- echo "UNKNOWN - Replication is not running"
- exit $STATE_UNKNOWN
-else
- output="Replication lag for mysql is ${lag}s"
- LC_ALL=C lag=$(printf "%.*f" 0 $lag)
-
- if [[ $lag -lt 5 ]]; then
- echo "OK - $output | time=${lag}s;5;10;;"
- exit $STATE_OK
- elif [[ $lag -lt 10 ]]; then
- echo "WARNING - $output | time=${lag}s;5;10;;"
- exit $STATE_WARNING
- else
- echo "CRITICAL - $output | time=${lag}s;5;10;;"
- exit $STATE_CRITICAL
- fi
-fi
diff --git a/modules/private/monitoring/plugins/check_openldap_replication b/modules/private/monitoring/plugins/check_openldap_replication
deleted file mode 100755
index 7136ad5..0000000
--- a/modules/private/monitoring/plugins/check_openldap_replication
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-
-STATE_OK=0
-STATE_WARNING=1
-STATE_CRITICAL=2
-STATE_UNKNOWN=3
-
-distant_host="$1"
-replication_dn="$2"
-replication_pw="$3"
-base="$4"
-config="$5"
-
-to_date() {
- i="$1"
- i=$(echo "$i" | grep contextCSN | cut -d":" -f2 | sed -e "s/\s//g")
- i=$(echo "$i" | cut -d"#" -f1)
- i=$(echo "$i" | cut -d"." -f1)
- echo "$i"
-}
-
-# ldap
-remote_ldap=$(ldapsearch -H $distant_host -D "$replication_dn" -y "$replication_pw" -b "$base" -s base -LLL contextCSN )
-exit_code_remote=$?
-remote_ldap=$(to_date "$remote_ldap")
-
-# slapcat
-local_ldap=$(slapcat -b "$base" -f "$config" -a "(entryDN=$base)")
-exit_code_local=$?
-local_ldap=$(to_date "$local_ldap")
-
-offset=$(($remote_ldap - $local_ldap))
-
-if [[ $exit_code_remote -ne 0 || $exit_code_local -ne 0 ]]; then
- echo "UNKNOWN - Impossible to run ldap command"
- exit $STATE_UNKNOWN
-elif [[ -z "$offset" ]]; then
- echo "UNKNOWN - No replication found"
- exit $STATE_UNKNOWN
-else
- output="Replication lag for openldap is ${offset}s"
- LC_ALL=C lag=$(printf "%.*f" 0 $lag)
-
- if [[ $offset -lt 5 ]]; then
- echo "OK - $output | time=${offset}s;5;10;;"
- exit $STATE_OK
- elif [[ $offset -lt 10 ]]; then
- echo "WARNING - $output | time=${offset}s;5;10;;"
- exit $STATE_WARNING
- else
- echo "CRITICAL - $output | time=${offset}s;5;10;;"
- exit $STATE_CRITICAL
- fi
-fi
diff --git a/modules/private/monitoring/plugins/check_ovh_sms b/modules/private/monitoring/plugins/check_ovh_sms
deleted file mode 100755
index caf279c..0000000
--- a/modules/private/monitoring/plugins/check_ovh_sms
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-try:
- import ovh
-
- [endpoint, application_key, application_secret, consumer_key, account] = sys.argv[1].split(",")
- client = ovh.Client(
- endpoint=endpoint,
- application_key=application_key,
- application_secret=application_secret,
- consumer_key=consumer_key,
- )
-
- result = client.get('/sms/{}'.format(account))["creditsLeft"]
-
- if result < 20:
- print("SMS OVH Critical - Not enough sms left ({})|SMS={};;;;".format(result, result))
- sys.exit(2)
- else:
- print("SMS OVH Ok - Enough sms left ({})|SMS={};;;;".format(result, result))
- sys.exit(0)
-except Exception:
- print("SMS OVH UNKNOWN - Error during script")
- sys.exit(3)
diff --git a/modules/private/monitoring/plugins/check_postgres_database_count b/modules/private/monitoring/plugins/check_postgres_database_count
deleted file mode 100755
index 43bdd8c..0000000
--- a/modules/private/monitoring/plugins/check_postgres_database_count
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-
-STATE_OK=0
-STATE_WARNING=1
-STATE_CRITICAL=2
-STATE_UNKNOWN=3
-
-host=$1
-port=$2
-min=$3
-
-count=$(psql -h $host -p $port -A -q -c '\t' -c 'select count(datname) from pg_catalog.pg_database' postgres 2>&1)
-exit_code=$?
-
-if [[ $exit_code -ne 0 ]]; then
- echo "UNKNOWN - Impossible to run psql command: $count"
- exit $STATE_UNKNOWN
-elif [[ -z "$count" ]]; then
- echo "UNKNOWN - No database found"
- exit $STATE_UNKNOWN
-else
- output="Database count is $count"
- LC_ALL=C count=$(printf "%.*f" 0 $count)
-
- if [[ $count -gt $min ]]; then
- echo "OK - $output | count=${count};$min;$min;0;"
- exit $STATE_OK
- else
- echo "CRITICAL - $output | count=${count};$min;$min;0;"
- exit $STATE_CRITICAL
- fi
-fi
diff --git a/modules/private/monitoring/plugins/check_postgres_replication b/modules/private/monitoring/plugins/check_postgres_replication
deleted file mode 100755
index ff257a3..0000000
--- a/modules/private/monitoring/plugins/check_postgres_replication
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-
-STATE_OK=0
-STATE_WARNING=1
-STATE_CRITICAL=2
-STATE_UNKNOWN=3
-
-user=$1
-host=$2
-port=$3
-
-lag=$(psql -h $host -p $port -A -t -c "SELECT COALESCE(EXTRACT(EPOCH FROM replay_lag),0) FROM pg_stat_replication WHERE usename='$user'" 2>/dev/null)
-exit_code=$?
-
-if [[ $exit_code -ne 0 ]]; then
- echo "UNKNOWN - Impossible to run psql command"
- exit $STATE_UNKNOWN
-elif [[ -z "$lag" ]]; then
- echo "UNKNOWN - No replication found for $user"
- exit $STATE_UNKNOWN
-else
- output="Replication lag for $user is ${lag}s"
- LC_ALL=C lag=$(printf "%.*f" 0 $lag)
-
- if [[ $lag -lt 5 ]]; then
- echo "OK - $output | time=${lag}s;5;10;0;"
- exit $STATE_OK
- elif [[ $lag -lt 10 ]]; then
- echo "WARNING - $output | time=${lag}s;5;10;0;"
- exit $STATE_WARNING
- else
- echo "CRITICAL - $output | time=${lag}s;5;10;0;"
- exit $STATE_CRITICAL
- fi
-fi
diff --git a/modules/private/monitoring/plugins/check_redis_replication b/modules/private/monitoring/plugins/check_redis_replication
deleted file mode 100755
index 6dbe4c4..0000000
--- a/modules/private/monitoring/plugins/check_redis_replication
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-STATE_OK=0
-STATE_WARNING=1
-STATE_CRITICAL=2
-STATE_UNKNOWN=3
-
-socket=$1
-
-info=$(redis-cli -s $socket info replication)
-lag=$(echo "$info" | grep master_last_io_seconds_ago | cut -d":" -f2 | sed -e "s/\s//g")
-slave_offset=$(echo "$info" | grep slave_repl_offset | cut -d":" -f2 | sed -e "s/\s//g")
-master_offset=$(echo "$info" | grep master_repl_offset | cut -d":" -f2 | sed -e "s/\s//g")
-offset=$(($master_offset - $slave_offset))
-
-exit_code=$?
-
-if [[ $exit_code -ne 0 ]]; then
- echo "UNKNOWN - Impossible to run redis command"
- exit $STATE_UNKNOWN
-elif [[ -z "$lag" ]]; then
- echo "UNKNOWN - No replication found"
- exit $STATE_UNKNOWN
-else
- output="Replication lag for redis is ${lag}s and offset is ${offset}"
- LC_ALL=C lag=$(printf "%.*f" 0 $lag)
-
- if [[ $lag -lt 5 && $offset -lt 5 ]]; then
- echo "OK - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;"
- exit $STATE_OK
- elif [[ $lag -lt 10 && $offset -lt 10 ]]; then
- echo "WARNING - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;"
- exit $STATE_WARNING
- else
- echo "CRITICAL - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;"
- exit $STATE_CRITICAL
- fi
-fi
diff --git a/modules/private/monitoring/plugins/check_zfs_snapshot b/modules/private/monitoring/plugins/check_zfs_snapshot
deleted file mode 100755
index 56f8c4f..0000000
--- a/modules/private/monitoring/plugins/check_zfs_snapshot
+++ /dev/null
@@ -1,325 +0,0 @@
-#! /bin/sh
-
-OS=$(uname)
-
-# MIT License
-#
-# Copyright (c) 2016 Josef Friedrich
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-########################################################################
-# Date functions
-########################################################################
-
-# This date function must be placed on the top of this file because
-# they are used in some global variables.
-
-# to_year ###
-
-##
-# Get the four digit year integer from now.
-#
-# Return:
-# The current 4 digit year.
-##
-_now_to_year() {
- date +%Y
-}
-
-##
-# Convert a date in the format YYYY-MM-DD to a four digit year integer.
-#
-# Parameters:
-# a date in the format YYYY-MM-DD
-#
-# Return:
-# four digit year integer
-##
-_date_to_year() {
- local OPTIONS
- if [ "$OS" = 'Linux' ]; then
- OPTIONS="--date $1"
- # FreeBSD, Darwin
- else
- OPTIONS="-j -f %Y-%m-%d $1"
- fi
- date $OPTIONS +%Y
-}
-
-# to_datetime ###
-
-##
-# Convert a UNIX timestamp to a datetime string.
-#
-# Parameters:
-# UNIX timestamp
-#
-# Return:
-# %Y-%m-%d.%H:%M:%S
-##
-_timestamp_to_datetime() {
- local OPTIONS
- if [ "$OS" = 'Linux' ]; then
- OPTIONS="--date @$1"
- # FreeBSD, Darwin
- else
- OPTIONS="-j -f %s $1"
- fi
- date $OPTIONS +%Y-%m-%d.%H:%M:%S
-}
-
-# to_timestamp ###
-
-##
-# Get the current UNIX timestamp.
-#
-# Return:
-# %current UNIX timestamp
-##
-_now_to_timestamp() {
- date +%s
-}
-
-PROJECT_PAGES='https://github.com/Josef-Friedrich/check_zfs_snapshot
-https://exchange.icinga.com/joseffriedrich/check_zfs_snapshot
-https://exchange.nagios.org/directory/Plugins/System-Metrics/File-System/check_zfs_snapshot/details'
-
-VERSION=1.2
-FIRST_RELEASE=2016-09-08
-SHORT_DESCRIPTION="Monitoring plugin to check how long ago the last \
-snapshot of a ZFS dataset was created."
-USAGE="check_zfs_snapshot v$VERSION
-Copyright (c) $(_date_to_year $FIRST_RELEASE)-$(_now_to_year) \
-Josef Friedrich
-
-$SHORT_DESCRIPTION
-
-
-Usage: check_zfs_snapshot
-
-Options:
- -c, --critical=OPT_CRITICAL
- Interval in seconds for critical state.
- -d, --dataset=OPT_DATASET
- The ZFS dataset to check.
- -h, --help
- Show this help.
- -s, --short-description
- Show a short description of the command.
- -v, --version
- Show the version number.
- -w, --warning=OPT_WARNING
- Interval in seconds for warning state. Must be lower than -c
-
-Performance data:
- - last_ago
- Time interval in seconds for last snapshot.
- - warning
- Interval in seconds.
- - critical
- Interval in seconds.
- - snapshot_count
- How many snapshot exists in the given dataset and all child
- datasets exists.
-"
-
-# Exit codes
-STATE_OK=0
-STATE_WARNING=1
-STATE_CRITICAL=2
-STATE_UNKNOWN=3
-
-_get_last_snapshot() {
- zfs get creation -Hpr -t snapshot "$1" | \
- awk 'BEGIN {max = 0} {if ($3>max) max=$3} END {print max}'
-}
-
-_getopts() {
- while getopts ':c:d:hsvw:-:' OPT ; do
- case $OPT in
-
- c)
- OPT_CRITICAL=$OPTARG
- ;;
-
- d)
- OPT_DATASET="$OPTARG"
- ;;
-
- h)
- echo "$USAGE"
- exit 0
- ;;
-
- s)
- echo "$SHORT_DESCRIPTION"
- exit 0
- ;;
-
- v)
- echo "$VERSION"
- exit 0
- ;;
-
- w)
- OPT_WARNING=$OPTARG
- ;;
-
- \?)
- echo "Invalid option “-$OPTARG”!" >&2
- exit 2
- ;;
-
- :)
- echo "Option “-$OPTARG” requires an argument!" >&2
- exit 3
- ;;
-
- -)
- LONG_OPTARG="${OPTARG#*=}"
-
- case $OPTARG in
-
- critical=?*)
- OPT_CRITICAL=$LONG_OPTARG
- ;;
-
- dataset=?*)
- OPT_DATASET="$LONG_OPTARG"
- ;;
-
- help)
- echo "$USAGE"
- exit 0
- ;;
-
- short-description)
- echo "$SHORT_DESCRIPTION"
- exit 0
- ;;
-
- version)
- echo "$VERSION"
- exit 0
- ;;
-
- warning=?*)
- OPT_WARNING=$LONG_OPTARG
- ;;
-
- critical*|dataset*|warning*)
- echo "Option “--$OPTARG” requires an argument!" >&2
- exit 3
- ;;
-
- help*|short-description*|version*)
- echo "No argument allowed for the option “--$OPTARG”!" >&2
- exit 4
- ;;
-
- '') # "--" terminates argument processing
- break
- ;;
-
- *)
- echo "Invalid option “--$OPTARG”!" >&2
- exit 2
- ;;
-
- esac
- ;;
-
- esac
- done
-}
-
-_snapshot_count() {
- # FreeBSD wc adds some whitespaces before the number!
- # cat $HOME/debug | wc -l
- # 7
- local COUNT
- COUNT="$(zfs list -t snapshot | grep "$1" | wc -l)"
- echo $COUNT
-}
-
-_performance_data() {
- echo "| \
-last_ago=${DIFF}s;$OPT_WARNING;$OPT_CRITICAL;0 \
-count=$(_snapshot_count "$OPT_DATASET");;;0\
-"
-}
-
-## This SEPARATOR is required for test purposes. Please don’t remove! ##
-
-_getopts $@
-
-if [ -z "$OPT_WARNING" ]; then
- # 1 day
- OPT_WARNING=86400
-fi
-
-if [ -z "$OPT_CRITICAL" ]; then
- # 3 day
- OPT_CRITICAL=259200
-fi
-
-if [ -z "$OPT_DATASET" ]; then
- echo "Dataset has to be set! Use option -d " >&2
- echo "$USAGE" >&2
- exit $STATE_UNKNOWN
-fi
-
-if ! zfs list "$OPT_DATASET" > /dev/null 2>&1; then
- echo "'$OPT_DATASET' is no ZFS dataset!" >&2
- echo "$USAGE" >&2
- exit $STATE_UNKNOWN
-fi
-
-NOW=$(_now_to_timestamp)
-
-CREATION_DATE=$(_get_last_snapshot "$OPT_DATASET")
-
-DIFF=$((NOW - CREATION_DATE))
-
-if [ "$OPT_WARNING" -gt "$OPT_CRITICAL" ]; then
- echo '-w OPT_WARNING must be smaller than -c OPT_CRITICAL'
- _usage >&2
- exit $STATE_UNKNOWN
-fi
-
-RETURN=STATE_UNKNOWN
-
-if [ "$DIFF" -gt "$OPT_CRITICAL" ]; then
- RETURN=$STATE_CRITICAL
- MESSAGE="CRITICAL:"
-elif [ "$DIFF" -gt "$OPT_WARNING" ]; then
- RETURN=$STATE_WARNING
- MESSAGE="WARNING:"
-else
- RETURN=$STATE_OK
- MESSAGE="OK:"
-fi
-
-DATE="$(_timestamp_to_datetime "$CREATION_DATE")"
-
-echo "$MESSAGE Last snapshot for dataset '$OPT_DATASET' was created on $DATE $(_performance_data)"
-
-exit $RETURN
diff --git a/modules/private/monitoring/plugins/notify_by_email b/modules/private/monitoring/plugins/notify_by_email
deleted file mode 100755
index 959db26..0000000
--- a/modules/private/monitoring/plugins/notify_by_email
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env bash
-
-# $1 = service/host
-
-# $2 = type (PROBLEM RECOVERY ACKNOWLEDGEMENT FLAPPINGSTART FLAPPINGSTOP FLAPPINGDISABLED DOWNTIMESTART DOWNTIMESTOP DOWNTIMECANCELLED)
-# http://www.naemon.org/documentation/usersguide/macrolist.html#notificationtype
-
-# $3 = host alias
-
-# $4 = date (YYYY-MM-DDTHH:MM:SS)
-
-# $5 = E-mail
-
-NOTIFICATION_TYPE="$2"
-HOST_ALIAS="$3"
-DATE="$4"
-CONTACT="$5"
-
-message=""
-
-if [ "$1" = "host" ]; then
- message=$(printf "%b" "***** Naemon *****\n\nNotification Type: $NOTIFICATION_TYPE\n\nHost: $HOST_ALIAS\nState: $HOSTSTATE\nInfo: $HOSTOUTPUT\n\nDate/Time: $DATE\n")
- subject="** $NOTIFICATION_TYPE Host Alert: $HOST_ALIAS is $HOSTSTATE **"
-else
- message=$(printf "%b" "***** Naemon *****\n\nNotification Type: $NOTIFICATION_TYPE\n\nService: $SERVICEDESC\nHost: $HOST_ALIAS\nState: $SERVICESTATE\n\nDate/Time: $DATE\n\nAdditional Info:\n\n$SERVICEOUTPUT\n")
- subject="** $NOTIFICATION_TYPE Service Alert: $HOST_ALIAS/$SERVICEDESC is $SERVICESTATE **"
-fi
-
-echo "$message" | MAILRC=/dev/null mail -r "$ADMINEMAIL" -n -s "$subject" "$CONTACT"
diff --git a/modules/private/monitoring/plugins/notify_by_slack b/modules/private/monitoring/plugins/notify_by_slack
deleted file mode 100755
index 1b16a0d..0000000
--- a/modules/private/monitoring/plugins/notify_by_slack
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env bash
-
-SLACK_CHANNEL="$1"
-SLACK_USERNAME="Naemon"
-SLACK_URL="$2"
-SLACK_USERICON="https://assets.immae.eu/monitoring.png"
-
-if [ "$SERVICESTATE" = "CRITICAL" ]; then
- ICON=":exclamation:"
- COLOR="#DA0505"
-elif [ "$SERVICESTATE" = "WARNING" ]; then
- ICON=":warning:"
- COLOR="#F1E903"
-elif [ "$SERVICESTATE" = "OK" ]; then
- ICON=":white_check_mark:"
- COLOR="#36a64f"
-elif [ "$SERVICESTATE" = "UNKNOWN" ]; then
- ICON=":question:"
- COLOR="#000000"
-else
- ICON=":white_medium_square:"
- COLOR="#ffffff"
-fi
-
-payload=$(echo "{}" | jq -r \
- --arg "icon_url" "$SLACK_USERICON" \
- --arg "channel" "$SLACK_CHANNEL" \
- --arg "username" "$SLACK_USERNAME" \
- --arg "text" "${ICON} ${SERVICEDESC} on ${HOST} is ${SERVICESTATE}" \
- --arg "color" "$COLOR" \
- --arg "host" "$HOST" \
- --arg "desc" "$SERVICEDESC" \
- --arg "state" "$SERVICESTATE" \
- --arg "output" "$SERVICEOUTPUT" \
- '.icon_url = $icon_url |
- .channel = $channel |
- .username = $username |
- .text = $text |
- .attachments = [{fallback:"", color:$color,fields: [{},{},{},{}]}] |
- .attachments[0].fields[0] = {title:"Host",value:$host,short:true} |
- .attachments[0].fields[1] = {title:"Service description",value:$desc,short:true} |
- .attachments[0].fields[2] = {title:"Status",value:$state,short:true} |
- .attachments[0].fields[3] = {title:"Message",value:$output,short:false}
- ')
-
-curl -X POST --data "payload=$payload" $SLACK_URL
diff --git a/modules/private/monitoring/plugins/notify_eban_url b/modules/private/monitoring/plugins/notify_eban_url
deleted file mode 100755
index 107b5de..0000000
--- a/modules/private/monitoring/plugins/notify_eban_url
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env bash
-
-if [ "$SERVICESTATE" = "CRITICAL" -o "$SERVICESTATE" = "UNKNOWN" -o "$HOSTSTATE" = "DOWN" -o "$HOSTSTATE" = "UNREACHABLE" ]; then
- MESSAGE="$STATUS_NAME seems down!"
- curl -X GET -G --data-urlencode "user=$USER" --data-urlencode "pass=$PASSWORD" --data-urlencode "msg=$MESSAGE" https://smsapi.free-mobile.fr/sendmsg
-fi
diff --git a/modules/private/monitoring/plugins/send_nrdp.sh b/modules/private/monitoring/plugins/send_nrdp.sh
deleted file mode 100755
index c83c8cb..0000000
--- a/modules/private/monitoring/plugins/send_nrdp.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/bash
-
-TEMPLATE='{
- "cmd": "submitcheck",
- "token": $token,
- "checkresult": [{
- "hostname": $hostname,
- "state": $state,
- "output": $output,
- "type": $type,
- "servicename": $servicename
- }]
-}'
-
-while getopts "u:t:H:s:S:o:" option
-do
- case $option in
- u) url=$OPTARG ;;
- t) token=$OPTARG ;;
- H) hostname=$OPTARG ;;
- s) servicename=$OPTARG ;;
- S) state=$OPTARG ;;
- o) output=$OPTARG ;;
- esac
-done
-
-if [ -n "$servicename" ]; then
- checktype="service"
-else
- checktype="host"
-fi
-
-payload=$(jq -n \
- --arg type "$checktype" \
- --arg hostname "$hostname" \
- --arg servicename "$servicename" \
- --arg output "$output" \
- --arg token "$token" \
- --arg state "$state" \
- "$TEMPLATE")
-
-rslt=$(curl -f --silent --insecure -d "$payload" -H "Content-Type: application/json" "$url")
-ret=$?
-
-if [ $ret != 0 ];then
- echo "ERROR: could not connect to NRDP server at $url"
- exit 1
-fi
-
-status=$(echo "$rslt" | jq -r .status)
-message=$(echo "$rslt" | jq -r .message)
-
-if [ "$status" != "ok" ];then
- echo "ERROR: The NRDP Server said $message"
- exit 2
-fi
-echo "Sent 1 checks to $url"
diff --git a/modules/private/monitoring/send_mails b/modules/private/monitoring/send_mails
deleted file mode 100755
index 105c505..0000000
--- a/modules/private/monitoring/send_mails
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-
-CHECK_DIR=$1
-shift
-RETURN_PATH=$1
-shift
-
-for mail in "$@"; do
- echo "Test Mail" | MAILRC=/dev/null mail -n -r "$RETURN_PATH" -s "TestMailImmae " "$mail"
-done
-
-if [ -d "$CHECK_DIR" ]; then
- cd $CHECK_DIR
- stat -c '%n;%y' *
-fi
diff --git a/modules/private/monitoring/status.nix b/modules/private/monitoring/status.nix
deleted file mode 100644
index ab0290c..0000000
--- a/modules/private/monitoring/status.nix
+++ /dev/null
@@ -1,93 +0,0 @@
-{ config, pkgs, lib, name, ... }:
-{
- options = {
- myServices.status = {
- enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- description = ''
- Whether to enable status app.
- '';
- };
- };
- };
- config = lib.mkIf config.myServices.status.enable {
- secrets.keys."naemon-status/environment" = {
- user = "naemon";
- group = "naemon";
- permissions = "0400";
- text = ''
- TOKENS=${builtins.concatStringsSep " " config.myEnv.monitoring.nrdp_tokens}
- '';
- };
- services.nginx = {
- enable = true;
- recommendedOptimisation = true;
- recommendedGzipSettings = true;
- recommendedProxySettings = true;
- upstreams."netdata".servers = { "127.0.0.1:19999" = {}; };
- upstreams."netdata".extraConfig = ''
- keepalive 64;
- '';
- virtualHosts."status.eban.bzh" = {
- acmeRoot = config.myServices.certificates.webroot;
- useACMEHost = name;
- forceSSL = true;
- locations."/".proxyPass = "http://unix:/run/naemon-status/socket.sock:/";
- };
- virtualHosts."status.immae.eu" = {
- acmeRoot = config.myServices.certificates.webroot;
- useACMEHost = name;
- forceSSL = true;
- locations."/".proxyPass = "http://unix:/run/naemon-status/socket.sock:/";
-
- locations."= /netdata".return = "301 /netdata/";
- locations."~ /netdata/(?.*)".extraConfig = ''
- proxy_redirect off;
- proxy_set_header Host $host;
-
- proxy_set_header X-Forwarded-Host $host;
- proxy_set_header X-Forwarded-Server $host;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_http_version 1.1;
- proxy_pass_request_headers on;
- proxy_set_header Connection "keep-alive";
- proxy_store off;
- proxy_pass http://netdata/$ndpath$is_args$args;
-
- gzip on;
- gzip_proxied any;
- gzip_types *;
- '';
- };
- };
- security.acme.certs."${name}" = {
- extraDomains."status.immae.eu" = null;
- extraDomains."status.eban.bzh" = null;
- user = config.services.nginx.user;
- group = config.services.nginx.group;
- };
-
- myServices.certificates.enable = true;
- networking.firewall.allowedTCPPorts = [ 80 443 ];
- systemd.services.naemon-status = {
- description = "Naemon status";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
-
- serviceConfig = {
- EnvironmentFile = config.secrets.fullPaths."naemon-status/environment";
- Type = "simple";
- WorkingDirectory = "${./status}";
- ExecStart = let
- python = pkgs.python3.withPackages (p: [ p.gunicorn p.flask p.flask_login ]);
- in
- "${python}/bin/gunicorn -w4 --bind unix:/run/naemon-status/socket.sock app:app";
- User = "naemon";
- RuntimeDirectory = "naemon-status";
- StandardOutput = "journal";
- StandardError = "inherit";
- };
- };
- };
-}
diff --git a/modules/private/monitoring/status/app.py b/modules/private/monitoring/status/app.py
deleted file mode 100755
index ff92891..0000000
--- a/modules/private/monitoring/status/app.py
+++ /dev/null
@@ -1,414 +0,0 @@
-from flask import Flask, request, render_template_string, jsonify, make_response
-from flask_login import LoginManager, UserMixin, login_required
-import socket
-import json
-import time
-import os
-
-login_manager = LoginManager()
-app = Flask(__name__)
-login_manager.init_app(app)
-
-STATUS = [
- "ok",
- "warning",
- "error",
- "unknown"
- ]
-
-HOST_STATUS = [
- "up",
- "down",
- "unreachable",
- ]
-
-#### Push
-AUTHORIZED_KEYS = os.environ.get("TOKENS", "").split()
-COMMAND_FILE = "/var/run/naemon/naemon.cmd"
-
-ERROR_NO_REQUEST_HANDLER="NO REQUEST HANDLER"
-ERROR_NO_TOKEN_SUPPLIED="NO TOKEN"
-ERROR_BAD_TOKEN_SUPPLIED="BAD TOKEN"
-
-ERROR_BAD_COMMAND_FILE="BAD COMMAND FILE"
-ERROR_COMMAND_FILE_OPEN_WRITE="COMMAND FILE UNWRITEABLE"
-ERROR_COMMAND_FILE_OPEN="CANNOT OPEN COMMAND FILE"
-ERROR_BAD_WRITE="WRITE ERROR"
-
-ERROR_BAD_DATA="BAD DATA"
-ERROR_BAD_JSON="BAD JSON"
-
-ERROR_NO_CORRECT_STATUS="NO STATUS WAS CORRECT"
-#### /Push
-
-def get_lq(request):
- # https://mathias-kettner.de/checkmk_livestatus.html
- socket_path="/var/run/naemon/live"
- s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
- s.connect(socket_path)
- s.send(request.encode())
- s.shutdown(socket.SHUT_WR)
- chunks = []
- while len(chunks) == 0 or len(chunks[-1]) > 0:
- chunks.append(s.recv(4096))
- s.close()
- return b"".join(chunks).decode()
-
-class Host:
- def __init__(self, name, alias, status, webname, vhost):
- self.name = name
- self.alias = alias
- self.webname = webname or alias
- self.vhost = vhost
- self.status = status
- self.services = []
-
- @classmethod
- def parse_hosts(cls, payload, vhost):
- parsed = filter(lambda x: x.vhost == vhost, [cls.parse(p) for p in json.loads(payload)])
- return {p.name: p for p in parsed}
-
- @classmethod
- def parse(cls, payload):
- return cls(payload[0], payload[1], HOST_STATUS[payload[2]], payload[3].get("WEBSTATUS_NAME"), payload[3].get("WEBSTATUS_VHOST"))
-
- def __repr__(self):
- return "Host {}: {} ({})".format(self.name, self.alias, self.webname)
-
- @classmethod
- def query(cls, vhost):
- answer = get_lq("""GET hosts
-Filter: groups >= webstatus-hosts
-Columns: name alias state custom_variables
-OutputFormat: json
-""")
- return cls.parse_hosts(answer, vhost)
-
- def fill_services(self, services):
- self.services = [service for service in services if service.host == self.name]
-
-class ServiceGroup:
- def __init__(self, name, alias):
- self.name = name
- self.alias = alias
- self.services = []
-
- @classmethod
- def parse_groups(cls, payload):
- parsed = [cls.parse(p) for p in json.loads(payload)]
- return {p.name: p for p in parsed}
-
- @classmethod
- def parse(cls, payload):
- return cls(payload[0], payload[1])
-
- @classmethod
- def query(cls):
- answer = get_lq("""GET servicegroups
-Filter: name ~ ^webstatus-
-Columns: name alias custom_variables
-OutputFormat: json
-""")
- return cls.parse_groups(answer)
-
- def fill_services(self, services, hosts):
- self.services = [service for service in services if any([group == self.name for group in service.groups]) and service.host in hosts]
-
- def __repr__(self):
- return "ServiceGroup {}: {}".format(self.name, self.alias)
-
-class Service:
- def __init__(self, name, host, groups, status, webname, url, description, infos):
- self.name = name
- self.host = host
- self.groups = groups
- self.status = status
- self.webname = webname
- self.url = url
- self.description = description
- self.infos = infos
-
- @classmethod
- def parse_services(cls, payload):
- parsed = json.loads(payload)
- return [cls.parse(p) for p in parsed if cls.valid(p[2])]
-
- @staticmethod
- def valid(groups):
- return any([b.startswith("webstatus-") for b in groups])
-
- @classmethod
- def parse(cls, payload):
- return cls(payload[0],
- payload[1],
- payload[2],
- STATUS[payload[3]],
- payload[4].get("WEBSTATUS_NAME"),
- payload[4].get("WEBSTATUS_URL"),
- payload[5],
- payload[6])
-
- @classmethod
- def query(cls):
- answer = get_lq("""GET services
-Columns: display_name host_name groups state custom_variables description plugin_output
-OutputFormat: json
-""")
- return cls.parse_services(answer)
-
- def __repr__(self):
- return "Service {}: {}".format(self.name, self.webname)
-
-def get_infos(vhost):
- hosts = Host.query(vhost)
- servicegroups = ServiceGroup.query()
- services = Service.query()
-
- for host in hosts:
- hosts[host].fill_services(services)
- for group in servicegroups:
- servicegroups[group].fill_services(services, hosts)
- return (hosts, servicegroups, services)
-
-TEMPLATE='''
-
-
-
-
-
- Status
-
-
-
-
- Hosts
- {%- for host in hosts.values() %}
-
- {{ host.status }}
- {{ host.webname }}
-
- {%- for service in servicegroups["webstatus-resources"].services if service.host == host.name -%}
- {%- if loop.first %}
-
- {% endif %}
-
-
- {{ service.status }}
- {{ service.description }}
- {{ service.infos }}
-
-
- {%- if loop.last %}
-
- {% endif %}
- {% endfor %}
- {%- endfor %}
-
- {%- for group in servicegroups.values() if group.services and group.name != "webstatus-resources" %}
- {%- if loop.first %}
- Services
-
- {%- endif %}
-
-
{{ group.alias }}
- {%- for service in group.services if service.host in hosts -%}
- {%- if loop.first %}
-
- {% endif %}
-
-
- {{ service.status }}
-
- {% if service.url and service.url.startswith("https://") %}
- {{ service.webname or service.description }}
- {% else %}
- {{ service.webname or service.description }}
- {% endif %}
-
- {{ hosts[service.host].webname }}
-
-
- {%- if loop.last %}
-
- {% endif %}
- {%- endfor -%}
-
- {%- if loop.last %}
-
- {% endif %}
- {%- endfor %}
-
-
-'''
-
-@login_manager.request_loader
-def load_user_from_request(request):
- api_key = request.headers.get('Token')
- if api_key in AUTHORIZED_KEYS:
- return UserMixin()
- content = request.get_json(force=True, silent=True)
- if content is not None and content.get("token") in AUTHORIZED_KEYS:
- return UserMixin()
-
-@app.route("/live", methods=["POST"])
-@login_required
-def live():
- query = request.get_data()
- result = get_lq(query.decode() + "\n")
- resp = make_response(result)
- resp.content_type = "text/plain"
- return resp
-
-@app.route("/", methods=["GET"])
-def get():
- (hosts, servicegroups, services) = get_infos(request.host)
- resp = make_response(render_template_string(TEMPLATE, hosts=hosts, servicegroups=servicegroups))
- resp.content_type = "text/html"
- return resp
-
-@app.route("/", methods=["POST"])
-@login_required
-def push():
- content = request.get_json(force=True, silent=True)
- if content is None:
- return ERROR_BAD_JSON
- if content.get("cmd") != "submitcheck":
- return render_error(ERROR_NO_REQUEST_HANDLER)
- if "checkresult" not in content or not isinstance(content["checkresult"], list):
- return render_error(ERROR_BAD_DATA)
-
- checks = 0
- errors = 0
- for check in map(lambda x: CheckResult.from_json(x), content["checkresult"]):
- if check is None:
- errors += 1
- continue
- try:
- write_check_output(check)
- except Exception as e:
- return render_error(str(e))
- checks += 1
- return render_response(checks, errors)
-
-def write_check_output(check):
- if check.type== "service":
- command = "[{time}] PROCESS_SERVICE_CHECK_RESULT;{hostname};{servicename};{state};{output}";
- else:
- command = "[{time}] PROCESS_HOST_CHECK_RESULT;{hostname};{state};{output}";
- formatted = command.format(
- time=int(time.time()),
- hostname=check.hostname,
- state=check.state,
- output=check.output,
- servicename=check.servicename,
- )
-
- if not os.path.exists(COMMAND_FILE):
- raise Exception(ERROR_BAD_COMMAND_FILE)
- if not os.access(COMMAND_FILE, os.W_OK):
- raise Exception(ERROR_COMMAND_FILE_OPEN_WRITE)
- if not os.access(COMMAND_FILE, os.W_OK):
- raise Exception(ERROR_COMMAND_FILE_OPEN_WRITE)
- try:
- with open(COMMAND_FILE, "w") as c:
- c.write(formatted + "\n")
- except Exception as e:
- raise Exception(ERROR_BAD_WRITE)
-
-def render_error(error):
- return jsonify({
- "status": "error",
- "message": error,
- })
-
-def render_response(checks, errors):
- if checks > 0:
- return jsonify({
- "status": "ok",
- "result": {
- "checks": checks,
- "errors": errors,
- }
- })
- else:
- return jsonify({
- "status": "error",
- "message": ERROR_NO_CORRECT_STATUS,
- })
-
-class CheckResult:
- def __init__(self, hostname, state, output, servicename, checktype):
- self.hostname = hostname
- self.state = state
- self.output = output
- self.servicename = servicename
- self.type = checktype
-
- @classmethod
- def from_json(klass, j):
- if not isinstance(j, dict):
- return None
- for key in ["hostname", "state", "output"]:
- if key not in j or not isinstance(j[key], str):
- return None
- for key in ["servicename", "type"]:
- if key in j and not isinstance(j[key], str):
- return None
- return klass(
- j["hostname"],
- j["state"],
- j["output"],
- j.get("servicename", ""),
- j.get("type", "host"))
-
diff --git a/modules/private/monitoring/status_engine.nix b/modules/private/monitoring/status_engine.nix
deleted file mode 100644
index 39a753a..0000000
--- a/modules/private/monitoring/status_engine.nix
+++ /dev/null
@@ -1,115 +0,0 @@
-{ config, pkgs, lib, name, ... }:
-let
- package = pkgs.status_engine.worker.override { config_file = config.secrets.fullPaths."status_engine"; };
- env = config.myEnv.tools.status_engine;
-in
-{
- config = lib.mkIf config.myServices.status.enable {
- systemd.services.gearmand = {
- description = "Gearman daemon";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- DynamicUser = true;
- User = "gearmand";
- Type = "simple";
- ExecStart = "${pkgs.gearmand}/bin/gearmand --syslog -L 127.0.0.1 -q libsqlite3 --libsqlite3-db /var/lib/gearmand/gearmand.db --store-queue-on-shutdown -l stderr -P /run/gearmand/gearmand.pid";
- RuntimeDirectory = "gearmand";
- StateDirectory = "gearmand";
- };
- };
-
- secrets.keys."status_engine" = {
- permissions = "0400";
- user = "naemon";
- group = "naemon";
- text = ''
- node_name: ${name}
- use_gearman: 1
- gearman:
- address: 127.0.0.1
- port: 4730
- timeout: 1000
- use_rabbitmq: 0
- use_redis: 1
- redis:
- address: 127.0.0.1
- port: 6379
- db: 0
- store_live_data_in_archive_backend: 1
- use_mysql: 1
- mysql:
- host: ${env.mysql.remoteHost}
- port: ${env.mysql.port}
- username: ${env.mysql.user}
- password: ${env.mysql.password}
- database: ${env.mysql.database}
- use_crate: 0
- number_of_bulk_records: 100
- max_bulk_delay: 5
- number_servicestatus_worker: 1
- number_hoststatus_worker: 1
- number_logentry_worker: 1
- number_statechange_worker: 1
- number_hostcheck_worker: 1
- number_servicecheck_worker: 1
- number_misc_worker: 1
-
- process_perfdata: 1
- number_perfdata_worker: 1
- perfdata_backend:
- - mysql
-
- check_for_commands: 1
- command_check_interval: 15
- external_command_file: /run/naemon/naemon.cmd
- query_handler: /run/naemon/naemon.qh
- submit_method: qh
-
- syslog_enabled: 1
- syslog_tag: statusengine-worker
-
- # Archive age
- age_hostchecks: 5
- age_host_acknowledgements: 60
- age_host_notifications: 60
- age_host_statehistory: 365
- age_host_downtimes: 60
- age_servicechecks: 5
- age_service_acknowledgements: 60
- age_service_notifications: 60
- age_service_statehistory: 365
- age_service_downtimes: 60
- age_logentries: 5
- age_tasks: 1
- age_perfdata: 90
-
- disable_http_proxy: 1
- '';
- };
-
- services.redis = rec {
- enable = true;
- bind = "127.0.0.1";
- };
-
- services.cron = {
- mailto = "cron@immae.eu";
- systemCronJobs = [
- "0 0 * * * naemon cd ${package} && ./bin/Console.php cleanup"
- ];
- };
-
- systemd.services.status_engine_worker = {
- description = "Status engine worker";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- Type = "simple";
- Restart = "on-failure";
- User = "naemon";
- ExecStart = "${package}/bin/StatusengineWorker.php";
- };
- };
- };
-}
diff --git a/modules/private/monitoring/to_objects.nix b/modules/private/monitoring/to_objects.nix
deleted file mode 100644
index 12721d2..0000000
--- a/modules/private/monitoring/to_objects.nix
+++ /dev/null
@@ -1,77 +0,0 @@
-{ lib }:
- with lib.attrsets;
- with lib.strings;
- with lib.lists;
- with lib.trivial;
-let
- pad = width: str: let
- padWidth = width - stringLength str;
- padding = concatStrings (genList (const " ") padWidth);
- in str + optionalString (padWidth > 0) padding;
- toStr = k: v:
- if k == "check_command" && builtins.isList v
- then builtins.concatStringsSep "!" v
- else v;
-
- toService = service: ''
- define service {
- ${builtins.concatStringsSep "\n" (mapAttrsToList (k: v:
- " ${pad 30 k} ${toStr k v}"
- ) (filterAttrs (k: v: ! builtins.elem k ["passiveInfo" "filter"]) service))}
- }
- '';
- toServices = services: builtins.concatStringsSep "\n" (map toService services);
-
- toCommand = k: v: ''
- define command {
- ${pad 30 "command_name"} ${k}
- ${pad 30 "command_line"} ${v}
- }
- '';
- toCommands = a: builtins.concatStringsSep "\n" (mapAttrsToList toCommand a);
-
- toOther = keyname: k: v: ''
- define ${keyname} {
- ${pad 30 "${keyname}_name"} ${k}
- ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv:
- " ${pad 30 kk} ${vv}"
- ) v)}
- }
- '';
- toOtherNoName = keyname: v: ''
- define ${keyname} {
- ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv:
- " ${pad 30 kk} ${vv}"
- ) v)}
- }
- '';
- toOthers = keyname: a: builtins.concatStringsSep "\n" (mapAttrsToList (toOther keyname) a);
- toOthersArray = keyname: a: builtins.concatStringsSep "\n" (map (toOtherNoName keyname) a);
-
- toTemplate = keyname: k: v: ''
- define ${keyname} {
- ${pad 30 "name"} ${k}
- ${pad 30 "register"} 0
- ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv:
- " ${pad 30 kk} ${vv}"
- ) v)}
- }
- '';
- toTemplates' = keyname: a: builtins.concatStringsSep "\n" (mapAttrsToList (toTemplate keyname) a);
- toTemplates = v: builtins.concatStringsSep "\n" (mapAttrsToList toTemplates' v);
-
- toObjects' = keyname: v:
- if keyname == "service"
- then toServices v
- else if keyname == "command"
- then toCommands v
- else if keyname == "templates"
- then toTemplates v
- else if builtins.elem keyname ["hostgroup" "host" "contactgroup" "contact" "timeperiod" "servicegroup"]
- then toOthers keyname v
- else if builtins.elem keyname ["servicedependency"]
- then toOthersArray keyname v
- else "";
- toObjects = v: builtins.concatStringsSep "\n" (mapAttrsToList toObjects' v);
-in
- toObjects
diff --git a/modules/private/mpd.nix b/modules/private/mpd.nix
deleted file mode 100644
index 640b001..0000000
--- a/modules/private/mpd.nix
+++ /dev/null
@@ -1,60 +0,0 @@
-{ lib, pkgs, config, ... }:
-{
- options.myServices.mpd.enable = lib.mkEnableOption "enable MPD";
- config = lib.mkIf config.myServices.mpd.enable {
- secrets.keys = {
- "mpd" = {
- permissions = "0400";
- text = config.myEnv.mpd.password;
- };
- "mpd-config" = {
- permissions = "0400";
- user = "mpd";
- group = "mpd";
- text = ''
- password "${config.myEnv.mpd.password}@read,add,control,admin"
- '';
- };
- };
- networking.firewall.allowedTCPPorts = [ 6600 ];
- users.users.mpd.extraGroups = [ "wwwrun" "keys" ];
- systemd.services.mpd.serviceConfig.RuntimeDirectory = "mpd";
- services.filesWatcher.mpd = {
- restart = true;
- paths = [ config.secrets.fullPaths."mpd-config" ];
- };
-
- services.mpd = {
- enable = true;
- network.listenAddress = "any";
- musicDirectory = config.myEnv.mpd.folder;
- extraConfig = ''
- include "${config.secrets.fullPaths."mpd-config"}"
- audio_output {
- type "null"
- name "No Output"
- mixer_type "none"
- }
- audio_output {
- type "httpd"
- name "OGG"
- encoder "vorbis"
- bind_to_address "/run/mpd/ogg.sock"
- quality "5.0"
- format "44100:16:1"
- }
- audio_output {
- type "httpd"
- name "MP3"
- encoder "lame"
- bind_to_address "/run/mpd/mp3.sock"
- quality "5.0"
- format "44100:16:1"
- }
-
-
- '';
- };
- };
-}
-
diff --git a/modules/private/pub/default.nix b/modules/private/pub/default.nix
deleted file mode 100644
index c419530..0000000
--- a/modules/private/pub/default.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-{ lib, pkgs, config, ... }:
-{
- options = {
- myServices.pub.enable = lib.mkOption {
- type = lib.types.bool;
- default = false;
- description = ''
- Whether to enable pub user.
- '';
- };
- };
-
- config = lib.mkIf config.myServices.pub.enable {
- myServices.ssh.modules = [{
- snippet = builtins.readFile ./ldap_pub.sh;
- dependencies = [ pkgs.coreutils ];
- }];
- users.users.pub = let
- restrict = pkgs.runCommand "restrict" {
- file = ./restrict;
- buildInputs = [ pkgs.makeWrapper ];
- } ''
- mkdir -p $out/bin
- cp $file $out/bin/restrict
- chmod a+x $out/bin/restrict
- patchShebangs $out/bin/restrict
- wrapProgram $out/bin/restrict \
- --prefix PATH : ${lib.makeBinPath [ pkgs.bubblewrap pkgs.rrsync ]} \
- --set TMUX_RESTRICT ${./tmux.restrict.conf}
- '';
- purple-hangouts = pkgs.purple-hangouts.overrideAttrs(old: {
- installPhase = ''
- install -Dm755 -t $out/lib/purple-2/ libhangouts.so
- for size in 16 22 24 48; do
- install -TDm644 hangouts$size.png $out/share/pixmaps/pidgin/protocols/$size/hangouts.png
- done
- '';
- });
- in {
- createHome = true;
- description = "Restricted shell user";
- home = "/var/lib/pub";
- uid = config.myEnv.users.pub.uid;
- useDefaultShell = true;
- packages = [
- restrict
- pkgs.tmux
- (pkgs.pidgin.override { plugins = [
- pkgs.purple-plugin-pack purple-hangouts
- pkgs.purple-discord pkgs.purple-facebook
- pkgs.telegram-purple
- ]; })
- ];
- };
- };
-}
diff --git a/modules/private/pub/ldap_pub.sh b/modules/private/pub/ldap_pub.sh
deleted file mode 100644
index bbbefdc..0000000
--- a/modules/private/pub/ldap_pub.sh
+++ /dev/null
@@ -1,56 +0,0 @@
-### This snippet is not standalone and must be integrated in the global ldap_authorized_keys.sh
-LDAP_PUB_RESTRICT_MEMBER="cn=restrict,cn=pub,ou=services,dc=immae,dc=eu"
-LDAP_PUB_FORWARD_MEMBER="cn=forward,cn=pub,ou=services,dc=immae,dc=eu"
-ECHO=$(which echo)
-
-if [[ $user == pub ]]; then
- ldap_search '(&(memberOf='$LDAP_PUB_RESTRICT_MEMBER')('$KEY'=*))' $KEY | \
- while read line ;
- do
- if [ ! -z "$line" ]; then
- if [[ $line == dn* ]]; then
- echo ""
- user=$(sed -n 's/.*uid=\([^,]*\).*/\1/p' <<< "$line")
- echo "# $user"
- elif [[ $line == $KEY* ]]; then
- key=$(clean_key_line pub "$line")
- key_forward=$(clean_key_line forward "$line")
- if [ ! -z "$key" ]; then
- if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
- echo -n 'command="/etc/profiles/per-user/pub/bin/restrict '$user'" '
- echo $key
- fi
- elif [ ! -z "$key_forward" ]; then
- if [[ $key_forward != *$'\n'* ]] && [[ $key_forward == ssh-* ]]; then
- echo "# forward only"
- echo -n 'no-pty,no-X11-forwarding,command="'$ECHO' forward only" '
- echo $key_forward
- fi
- fi
- fi
- fi
- done
-
- echo ""
- ldap_search '(&(memberOf='$LDAP_PUB_FORWARD_MEMBER')('$KEY'=*))' $KEY | \
- while read line ;
- do
- if [ ! -z "$line" ]; then
- if [[ $line == dn* ]]; then
- echo ""
- user=$(sed -n 's/.*uid=\([^,]*\).*/\1/p' <<< "$line")
- echo "# $user"
- elif [[ $line == $KEY* ]]; then
- key=$(clean_key_line forward "$line")
- if [ ! -z "$key" ]; then
- if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
- echo -n 'no-pty,no-X11-forwarding,command="'$ECHO' forward only" '
- echo $key
- fi
- fi
- fi
- fi
- done
- exit 0
-fi
-
diff --git a/modules/private/pub/restrict b/modules/private/pub/restrict
deleted file mode 100644
index b2f3be3..0000000
--- a/modules/private/pub/restrict
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env bash
-user="$1"
-rootuser="$HOME/$user/"
-mkdir -p $rootuser
-
-orig="$SSH_ORIGINAL_COMMAND"
-if [ -z "$orig" ]; then
- orig="/bin/bash -l"
-fi
-if [ "${orig:0:7}" = "command" ]; then
- orig="${orig:8}"
-fi
-
-case "$orig" in
-rsync*)
- rrsync $HOME/$user/
- ;;
-*)
- nix_store_paths() {
- nix-store -q -R \
- /run/current-system/sw \
- /etc/profiles/per-user/pub \
- /etc/ssl/certs/ca-bundle.crt \
- | while read i; do
- printf '%s--ro-bind\0'$i'\0'$i'\0' ''
- done
- }
-
- set -euo pipefail
- (exec -c bwrap --ro-bind /usr /usr \
- --args 10 \
- --dir /tmp \
- --dir /var \
- --symlink ../tmp var/tmp \
- --proc /proc \
- --dev /dev \
- --ro-bind /etc/resolv.conf /etc/resolv.conf \
- --ro-bind /etc/zoneinfo /etc/zoneinfo \
- --ro-bind /etc/ssl /etc/ssl \
- --ro-bind /etc/static/ssl/certs /etc/static/ssl/certs \
- --ro-bind /run/current-system/sw/lib/locale/locale-archive /etc/locale-archive \
- --ro-bind /run/current-system/sw/bin /bin \
- --ro-bind /etc/profiles/per-user/pub/bin /bin-pub \
- --bind /var/lib/pub/$user /var/lib/pub \
- --dir /var/lib/commons \
- --ro-bind $TMUX_RESTRICT /var/lib/commons/tmux.restrict.conf \
- --chdir /var/lib/pub \
- --unshare-all \
- --share-net \
- --dir /run/user/$(id -u) \
- --setenv TERM "$TERM" \
- --setenv LOCALE_ARCHIVE "/etc/locale-archive" \
- --setenv XDG_RUNTIME_DIR "/run/user/`id -u`" \
- --setenv PS1 "$user@pub $ " \
- --setenv PATH "/bin:/bin-pub" \
- --setenv HOME "/var/lib/pub" \
- --file 11 /etc/passwd \
- --file 12 /etc/group \
- -- $orig) \
- 10< <(nix_store_paths) \
- 11< <(getent passwd $UID 65534) \
- 12< <(getent group $(id -g) 65534)
- ;;
-esac
diff --git a/modules/private/pub/tmux.restrict.conf b/modules/private/pub/tmux.restrict.conf
deleted file mode 100644
index 5aefd1c..0000000
--- a/modules/private/pub/tmux.restrict.conf
+++ /dev/null
@@ -1,43 +0,0 @@
-# Pour les nostalgiques de screen
-# comme les raccourcis ne sont pas les mêmes, j'évite
-set -g prefix C-a
-unbind-key C-b
-
-unbind-key -a
-bind-key -n C-h list-keys
-bind-key C-d detach
-bind-key & confirm-before -p "kill-window #W? (y/n)" kill-window
-
-# même hack que sur screen lorsqu'on veut profiter du scroll du terminal
-# (xterm ...)
-set -g terminal-overrides 'xterm*:smcup@:rmcup@'
-
-#Pour les ctrl+arrow
-set-option -g xterm-keys on
-
-# c'est un minimum (defaut 2000)
-set-option -g history-limit 10000
-
-# lorsque j'ai encore un tmux ailleurs seule
-# sa fenetre active réduit la taille de ma fenetre locale
-setw -g aggressive-resize on
-
-# Pour etre alerté sur un changement dans une autre fenêtre
-setw -g monitor-activity on
-#set -g visual-activity on
-#set -g visual-bell on
-
-set -g base-index 1
-
-# repercuter le contenu de la fenetre dans la barre de titre
-# reference des string : man tmux (status-left)
-set -g set-titles on
-set -g set-titles-string '#H #W #T' # host window command
-
-#Dans les valeurs par defaut deja, avec le ssh-agent
-set -g update-environment "DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY PATH"
-
-set -g status off
-set -g status-left ''
-set -g status-right ''
-
diff --git a/modules/private/ssh/default.nix b/modules/private/ssh/default.nix
deleted file mode 100644
index ee5dda5..0000000
--- a/modules/private/ssh/default.nix
+++ /dev/null
@@ -1,91 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.ssh;
-in
-{
- options.myServices.ssh = let
- module = lib.types.submodule {
- options = {
- snippet = lib.mkOption {
- type = lib.types.lines;
- description = ''
- Snippet to use
- '';
- };
- dependencies = lib.mkOption {
- type = lib.types.listOf lib.types.package;
- default = [];
- description = ''
- Dependencies of the package
- '';
- };
- };
- };
- in {
- predefinedModules = lib.mkOption {
- type = lib.types.attrsOf module;
- default = {
- regular = {
- snippet = builtins.readFile ./ldap_regular.sh;
- };
- };
- readOnly = true;
- description = ''
- Predefined modules
- '';
- };
- modules = lib.mkOption {
- type = lib.types.listOf module;
- default = [];
- description = ''
- List of modules to enable
- '';
- };
- };
- config = {
- networking.firewall.allowedTCPPorts = [ 22 ];
- } // (lib.mkIf (builtins.length cfg.modules > 0) {
-
- services.openssh.extraConfig = ''
- AuthorizedKeysCommand /etc/ssh/ldap_authorized_keys
- AuthorizedKeysCommandUser nobody
- '';
-
- secrets.keys."ssh-ldap" = {
- user = "nobody";
- group = "nogroup";
- permissions = "0400";
- text = config.myEnv.sshd.ldap.password;
- };
- system.activationScripts.sshd = {
- deps = [ "secrets" ];
- text = ''
- install -Dm400 -o nobody -g nogroup -T ${config.secrets.fullPaths."ssh-ldap"} /etc/ssh/ldap_password
- '';
- };
- # ssh is strict about parent directory having correct rights, don't
- # move it in the nix store.
- environment.etc."ssh/ldap_authorized_keys" = let
- deps = lib.lists.unique (
- [ pkgs.which pkgs.openldap pkgs.stdenv.shellPackage pkgs.gnugrep pkgs.gnused pkgs.coreutils ]
- ++ lib.flatten (map (v: v.dependencies) cfg.modules)
- );
- fullScript = pkgs.runCommand "ldap_authorized_keys" {
- snippets = builtins.concatStringsSep "\n" (map (v: v.snippet) cfg.modules);
- } ''
- substituteAll ${./ldap_authorized_keys.sh} $out
- chmod a+x $out
- '';
- ldap_authorized_keys = pkgs.runCommand "ldap_authorized_keys" {
- buildInputs = [ pkgs.makeWrapper ];
- } ''
- makeWrapper "${fullScript}" "$out" --prefix PATH : ${lib.makeBinPath deps}
- '';
- in {
- enable = true;
- mode = "0755";
- user = "root";
- source = ldap_authorized_keys;
- };
- });
-}
diff --git a/modules/private/ssh/ldap_authorized_keys.sh b/modules/private/ssh/ldap_authorized_keys.sh
deleted file mode 100755
index 402f283..0000000
--- a/modules/private/ssh/ldap_authorized_keys.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env bash
-
-LDAPSEARCH=ldapsearch
-KEY="immaeSshKey"
-LDAP_BIND="cn=ssh,ou=services,dc=immae,dc=eu"
-LDAP_PASS=$(cat /etc/ssh/ldap_password)
-LDAP_HOST="ldap.immae.eu"
-LDAP_BASE="dc=immae,dc=eu"
-
-suitable_for() {
- type_for="$1"
- key="$2"
-
- if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
- echo "$key"
- else
- key_type=$(cut -d " " -f 1 <<< "$key")
-
- if grep -q "\b-$type_for\b" <<< "$key_type"; then
- echo ""
- elif grep -q "\b$type_for\b" <<< "$key_type"; then
- echo $(sed -e "s/^[^ ]* //g" <<< "$key")
- else
- echo ""
- fi
- fi
-}
-
-clean_key_line() {
- type_for="$1"
- line="$2"
-
- if [[ "$line" == $KEY::* ]]; then
- # base64 keys should't happen, unless wrong copy-pasting
- key=""
- else
- key=$(sed -e "s/^$KEY: *//" -e "s/ *$//" <<< "$line")
- fi
-
- suitable_for "$type_for" "$key"
-}
-
-ldap_search() {
- $LDAPSEARCH -h $LDAP_HOST -ZZ -b $LDAP_BASE -D $LDAP_BIND -w "$LDAP_PASS" -x -o ldif-wrap=no -LLL "$@"
-}
-
-ldap_keys() {
- user=$1;
- @snippets@
-}
-
-ldap_keys $@
diff --git a/modules/private/ssh/ldap_regular.sh b/modules/private/ssh/ldap_regular.sh
deleted file mode 100644
index 4c2f47e..0000000
--- a/modules/private/ssh/ldap_regular.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-### This snippet is not standalone and must be integrated in the global ldap_authorized_keys.sh
-LDAP_MEMBER="cn=users,cn=ssh,ou=services,dc=immae,dc=eu"
-
-ldap_search '(&(memberOf='$LDAP_MEMBER')('$KEY'=*)(uid='$user'))' $KEY | \
- while read line ;
- do
- if [ ! -z "$line" ]; then
- if [[ $line == dn* ]]; then
- user=$(sed -n 's/.*uid=\([^,]*\).*/\1/p' <<< "$line")
- elif [[ $line == $KEY* ]]; then
- key=$(clean_key_line ssh "$line")
- if [ ! -z "$key" ]; then
- if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
- echo $key
- fi
- fi
- fi
- fi
- done
diff --git a/modules/private/system.nix b/modules/private/system.nix
deleted file mode 100644
index 5f3d79e..0000000
--- a/modules/private/system.nix
+++ /dev/null
@@ -1,98 +0,0 @@
-{ pkgs, lib, config, name, nodes, ... }:
-{
- config = {
- deployment.secrets."secret_vars.yml" = {
- source = builtins.toString ../../nixops/secrets/vars.yml;
- destination = config.secrets.secretsVars;
- owner.user = "root";
- owner.group = "root";
- permissions = "0400";
- };
-
- networking.extraHosts = builtins.concatStringsSep "\n"
- (lib.mapAttrsToList (n: v: "${v.config.hostEnv.ips.main.ip4} ${n}") nodes);
-
- users.extraUsers.root.openssh.authorizedKeys.keys = [ config.myEnv.sshd.rootKeys.nix_repository ];
- secrets.deleteSecretsVars = true;
- secrets.gpgKeys = [
- ../../nixops/public_keys/Immae.pub
- ];
- secrets.secretsVars = "/run/keys/vars.yml";
-
- services.openssh.enable = true;
-
- nixpkgs.overlays = builtins.attrValues (import ../../overlays) ++ [
- (self: super: {
- postgresql = self.postgresql_pam;
- mariadb = self.mariadb_pam;
- }) # don’t put them as generic overlay because of home-manager
- ];
-
- services.journald.extraConfig = ''
- #Should be "warning" but disabled for now, it prevents anything from being stored
- MaxLevelStore=info
- MaxRetentionSec=1year
- '';
-
- users.users =
- builtins.listToAttrs (map (x: lib.attrsets.nameValuePair x.name ({
- isNormalUser = true;
- home = "/home/${x.name}";
- createHome = true;
- linger = true;
- } // x)) (config.hostEnv.users pkgs))
- // {
- root.packages = let
- nagios-cli = pkgs.writeScriptBin "nagios-cli" ''
- #!${pkgs.stdenv.shell}
- sudo -u naemon ${pkgs.nagios-cli}/bin/nagios-cli -c ${./monitoring/nagios-cli.cfg}
- '';
- in
- [
- pkgs.telnet
- pkgs.htop
- pkgs.iftop
- pkgs.bind.dnsutils
- pkgs.httpie
- pkgs.iotop
- pkgs.whois
- pkgs.ngrep
- pkgs.tcpdump
- pkgs.tshark
- pkgs.tcpflow
- # pkgs.mitmproxy # failing
- pkgs.nmap
- pkgs.p0f
- pkgs.socat
- pkgs.lsof
- pkgs.psmisc
- pkgs.openssl
- pkgs.wget
-
- pkgs.cnagios
- nagios-cli
-
- pkgs.pv
- pkgs.smartmontools
- ];
- };
-
- users.mutableUsers = lib.mkDefault false;
-
- environment.etc.cnagios.source = "${pkgs.cnagios}/share/doc/cnagios";
- environment.systemPackages = [
- pkgs.git
- pkgs.vim
- pkgs.rsync
- pkgs.strace
- ] ++
- (lib.optional (builtins.length (config.hostEnv.users pkgs) > 0) pkgs.home-manager);
-
- systemd.targets.maintenance = {
- description = "Maintenance target with only sshd";
- after = [ "network-online.target" "sshd.service" ];
- requires = [ "network-online.target" "sshd.service" ];
- unitConfig.AllowIsolate = "yes";
- };
- };
-}
diff --git a/modules/private/system/backup-2.nix b/modules/private/system/backup-2.nix
deleted file mode 100644
index c01a666..0000000
--- a/modules/private/system/backup-2.nix
+++ /dev/null
@@ -1,137 +0,0 @@
-{ config, pkgs, resources, name, ... }:
-{
- deployment = {
- targetUser = "root";
- targetHost = config.hostEnv.ips.main.ip4;
- substituteOnDestination = true;
- };
- # ssh-keyscan backup-2 | nix-shell -p ssh-to-age --run ssh-to-age
- secrets.ageKeys = [ "age1kk3nr27qu42j28mcfdag5lhq0zu2pky7gfanvne8l4z2ctevjpgskmw0sr" ];
- secrets.keys = {
- "rsync_backup/identity" = {
- user = "backup";
- group = "backup";
- permissions = "0400";
- text = config.myEnv.rsync_backup.ssh_key.private;
- };
- "rsync_backup/identity.pub" = {
- user = "backup";
- group = "backup";
- permissions = "0444";
- text = config.myEnv.rsync_backup.ssh_key.public;
- };
- };
- boot.kernelPackages = pkgs.linuxPackages_latest;
- myEnv = import ../../../nixops/secrets/environment.nix;
-
- imports = [ ] ++ builtins.attrValues (import ../..);
-
- fileSystems = {
- "/backup2" = {
- fsType = "ext4";
- device = "UUID=b9425333-f567-435d-94d8-b26c22d93426";
- };
- "/" = { device = "/dev/sda1"; fsType = "ext4"; };
- };
-
- networking = {
- firewall.enable = true;
- interfaces."ens3".ipv4.addresses = pkgs.lib.attrsets.mapAttrsToList
- (n: ips: { address = ips.ip4; prefixLength = 32; })
- (pkgs.lib.attrsets.filterAttrs (n: v: n != "main") config.hostEnv.ips);
- interfaces."ens3".ipv6.addresses = pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
- (n: ips: map (ip: { address = ip; prefixLength = (if n == "main" && ip == pkgs.lib.head ips.ip6 then 64 else 128); }) (ips.ip6 or []))
- config.hostEnv.ips);
- defaultGateway6 = { address = "fe80::1"; interface = "ens3"; };
- };
-
- boot.loader.grub.device = "nodev";
-
- myServices.certificates.enable = true;
- security.acme.certs."${name}" = {
- user = config.services.nginx.user;
- group = config.services.nginx.group;
- };
- services.nginx = {
- enable = true;
- recommendedOptimisation = true;
- recommendedGzipSettings = true;
- recommendedProxySettings = true;
- };
- networking.firewall.allowedTCPPorts = [ 80 443 ];
-
- services.cron = {
- mailto = "cron@immae.eu";
- enable = true;
- };
-
- services.rsyncBackup = {
- mountpoint = "/backup2";
- profiles = config.myEnv.rsync_backup.profiles;
- ssh_key_public = config.secrets.fullPaths."rsync_backup/identity.pub";
- ssh_key_private = config.secrets.fullPaths."rsync_backup/identity";
- };
-
- myServices.mailRelay.enable = true;
- myServices.mailBackup.enable = true;
- myServices.monitoring.enable = true;
- myServices.databasesReplication = {
- postgresql = {
- enable = true;
- base = "/backup2";
- mainPackage = pkgs.postgresql;
- hosts = {
- eldiron = {
- slot = "backup_2";
- connection = "postgresql://backup-2:${config.hostEnv.ldap.password}@eldiron.immae.eu";
- package = pkgs.postgresql;
- };
- };
- };
- mariadb = {
- enable = true;
- base = "/backup2";
- hosts = {
- eldiron = {
- serverId = 2;
- # mysql resolves "backup-2" host and checks the ip, but uses /etc/hosts which only contains ip4
- host = config.myEnv.servers.eldiron.ips.main.ip4;
- port = "3306";
- user = "backup-2";
- password = config.hostEnv.ldap.password;
- dumpUser = "root";
- dumpPassword = config.myEnv.databases.mysql.systemUsers.root;
- };
- };
- };
- redis = {
- enable = true;
- base = "/backup2";
- hosts = {
- eldiron = {
- host = "127.0.0.1";
- port = "16379";
- };
- };
- };
- openldap = {
- enable = true;
- base = "/backup2";
- hosts = {
- eldiron = {
- url = "ldaps://${config.myEnv.ldap.host}:636";
- dn = config.myEnv.ldap.replication_dn;
- password = config.myEnv.ldap.replication_pw;
- base = config.myEnv.ldap.base;
- };
- };
- };
- };
-
- # This value determines the NixOS release with which your system is
- # to be compatible, in order to avoid breaking some software such as
- # database servers. You should change this only after NixOS release
- # notes say you should.
- # https://nixos.org/nixos/manual/release-notes.html
- system.stateVersion = "20.03"; # Did you read the comment?
-}
diff --git a/modules/private/system/dilion.nix b/modules/private/system/dilion.nix
deleted file mode 100644
index fa92cd9..0000000
--- a/modules/private/system/dilion.nix
+++ /dev/null
@@ -1,242 +0,0 @@
-{ config, pkgs, name, lib, ... }:
-{
- deployment = {
- targetUser = "root";
- targetHost = config.hostEnv.ips.main.ip4;
- substituteOnDestination = true;
- };
- # ssh-keyscan dilion | nix-shell -p ssh-to-age --run ssh-to-age
- secrets.ageKeys = [ "age1x49n6qa0arkdpq8530s7umgm0gqkq90exv4jep97q30rfnzknpaqate06a" ];
- nixpkgs.system = lib.mkOverride 900 "x86_64-linux";
- boot = {
- loader = {
- grub = {
- version = 2;
- devices = [ "/dev/sda" "/dev/sdb" "/dev/sdc" "/dev/sdd" ];
- };
- timeout = 1;
- };
- blacklistedKernelModules = [ "nvidiafb" ];
- supportedFilesystems = [ "zfs" ];
- kernelPackages = pkgs.linuxPackages_latest;
- kernelModules = [ "kvm-intel" ];
- initrd.availableKernelModules = [ "ahci" "sd_mod" ];
- initrd.secrets = {
- "/boot/pass.key" = "/boot/pass.key";
- };
- kernel.sysctl."vm.nr_hugepages" = 256; # for xmr-stak
- # available in nixos-20.09
- #zfs.requestEncryptionCredentials = [ "zpool/root" ];
- };
- nix.maxJobs = 8;
- powerManagement.cpuFreqGovernor = "powersave";
- hardware.enableRedistributableFirmware = true;
-
- myEnv = import ../../../nixops/secrets/environment.nix;
-
- swapDevices = [ { label = "swap"; } ];
- fileSystems = {
- "/" = { fsType = "zfs"; device = "zpool/root"; };
- "/boot" = { fsType = "ext4"; device = "/dev/disk/by-uuid/fd1c511e-2bc0-49d5-b8bb-95e7e8c8c816"; };
- "/etc" = { fsType = "zfs"; device = "zpool/root/etc"; };
- "/home" = { fsType = "zfs"; device = "zpool/root/home"; };
- "/home/immae" = { fsType = "zfs"; device = "zpool/root/home/immae"; };
- "/tmp" = { fsType = "zfs"; device = "zpool/root/tmp"; };
- "/var" = { fsType = "zfs"; device = "zpool/root/var"; };
- "/data" = { fsType = "ext4"; label = "data"; };
- "/nix" = { fsType = "ext4"; label = "nix"; };
- };
-
- services.udev.extraRules = ''
- ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="10:bf:48:7f:e6:3b", NAME="eth0"
- '';
-
- networking = {
- hostId = "27c3048d"; # generated with head -c4 /dev/urandom | od -A none -t x4
- firewall.enable = false;
- interfaces."eth0".ipv4.addresses =
- [ { address = config.hostEnv.ips.main.ip4; prefixLength = 27; } ]
- ++ pkgs.lib.attrsets.mapAttrsToList
- (n: ips: { address = ips.ip4; prefixLength = 32; })
- (pkgs.lib.attrsets.filterAttrs (n: v: n != "main") config.hostEnv.ips);
- interfaces."eth0".ipv6.addresses =
- [ { address = "2a01:4f8:141:53e7::"; prefixLength = 64; } ]
- ++ pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
- (n: ips: map (ip: { address = ip; prefixLength = (if n == "main" && ip == pkgs.lib.head ips.ip6 then 64 else 128); }) (ips.ip6 or []))
- config.hostEnv.ips);
- defaultGateway = { address = "176.9.10.225"; interface = "eth0"; };
- defaultGateway6 = { address = "fe80::1"; interface = "eth0"; };
- nameservers = [
- "213.133.98.98"
- "213.133.99.99"
- "213.133.100.100"
- "2a01:4f8:0:a0a1::add:1010"
- "2a01:4f8:0:a102::add:9999"
- "2a01:4f8:0:a111::add:9898"
- ];
- };
-
- myServices.ssh.modules = [ config.myServices.ssh.predefinedModules.regular ];
- imports = builtins.attrValues (import ../..) ++ [ ./dilion/vms.nix ];
-
- system.nssModules = [ pkgs.libvirt ];
- system.nssDatabases.hosts = lib.mkForce [ "files" "libvirt_guest" "mymachines" "dns" "myhostname" ];
- programs.zsh.enable = true;
-
- users.users.libvirt = {
- hashedPassword = "!";
- shell = pkgs.bashInteractive;
- isSystemUser = true;
- group = "libvirtd";
- packages = [ pkgs.netcat-openbsd ];
- openssh.authorizedKeys.keys = [
- config.myEnv.buildbot.ssh_key.public
- config.myEnv.sshd.rootKeys.ismael_flony
- ];
- };
-
- users.users.backup = {
- hashedPassword = "!";
- isSystemUser = true;
- extraGroups = [ "keys" ];
- shell = pkgs.bashInteractive;
- openssh.authorizedKeys.keys = let
- zreplConfig = config.secrets.fullPaths."zrepl/zrepl.yml";
- in
- ["command=\"${pkgs.zrepl}/bin/zrepl stdinserver --config ${zreplConfig} eldiron\",restrict ${config.myEnv.zrepl_backup.ssh_key.public}"];
- };
- security.sudo.extraRules = pkgs.lib.mkAfter [
- {
- commands = [
- { command = "/home/immae/.nix-profile/root_scripts/*"; options = [ "NOPASSWD" ]; }
- ];
- users = [ "immae" ];
- runAs = "root";
- }
- ];
-
- system.activationScripts.libvirtd_exports = ''
- install -m 0755 -o root -g root -d /var/lib/caldance
- '';
- virtualisation.docker.enable = true;
- virtualisation.docker.storageDriver = "zfs";
- virtualisation.libvirtd.enable = true;
- users.extraUsers.immae.extraGroups = [ "libvirtd" "docker" ];
- systemd.services.libvirtd.postStart = ''
- install -m 0770 -g libvirtd -d /var/lib/libvirt/images
- '';
- systemd.services.socat-caldance = {
- description = "Forward ssh port to caldance";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
-
- serviceConfig = {
- ExecStart = "${pkgs.socat}/bin/socat TCP-LISTEN:8022,fork TCP:caldance:22";
- };
- };
-
- time.timeZone = "Europe/Paris";
- nix = {
- useSandbox = "relaxed";
- extraOptions = ''
- keep-outputs = true
- keep-derivations = true
- allow-unsafe-native-code-during-evaluation = true
- experimental-features = nix-command flakes
- #Assumed in NUR
- allow-import-from-derivation = true
- '';
- };
-
- security.pki.certificateFiles = [
- (pkgs.fetchurl {
- url = "http://downloads.e.eriomem.net/eriomemca.pem";
- sha256 = "1ixx4c6j3m26j8dp9a3dkvxc80v1nr5aqgmawwgs06bskasqkvvh";
- })
- ];
-
- # This is equivalent to setting environment.sessionVariables.NIX_PATH
- nix.nixPath = [
- "home-manager=${pkgs.sources.home-manager.url}"
- "nixpkgs=${pkgs.sources.nixpkgs-home-manager.url}"
- ];
- nix.binaryCaches = [ "https://hydra.iohk.io" "https://cache.nixos.org" ];
- nix.binaryCachePublicKeys = [ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" ];
-
- myServices.monitoring.enable = true;
- myServices.certificates.enable = true;
- security.acme.certs."${name}-immae" = config.myServices.certificates.certConfig // {
- user = "immae";
- domain = "dilion.immae.eu";
- };
- security.acme.certs."${name}" = {
- user = config.services.nginx.user;
- group = config.services.nginx.group;
- extraDomains = {
- "dilion.immae.dev" = null;
- "caldance.cs.immae.dev" = null;
- };
- };
- services.nginx = {
- enable = true;
- recommendedOptimisation = true;
- recommendedGzipSettings = true;
- recommendedProxySettings = true;
- upstreams = {
- caldance.servers."caldance:3031" = {};
- };
- virtualHosts = {
- "dilion.immae.dev" = {
- acmeRoot = config.myServices.certificates.webroot;
- useACMEHost = name;
- forceSSL = true;
- root = "/home/immae/www";
- };
- "caldance.cs.immae.dev" = {
- acmeRoot = config.myServices.certificates.webroot;
- useACMEHost = name;
- forceSSL = true;
- locations."/".extraConfig = ''
- uwsgi_pass caldance;
- '';
- locations."/static/".alias = "/var/lib/caldance/caldance/app/www/static/";
- locations."/media/".alias = "/var/lib/caldance/caldance/media/";
- extraConfig = ''
- auth_basic "Authentification requise";
- auth_basic_user_file ${pkgs.writeText "htpasswd" config.myEnv.websites.caldance.integration.password};
- '';
- };
- };
- };
-
- systemd.services.zrepl.serviceConfig.RuntimeDirectory = lib.mkForce "zrepl zrepl/stdinserver";
- systemd.services.zrepl.serviceConfig.User = "backup";
- # zfs allow backup create,mount,receive,destroy,rename,snapshot,hold,bookmark,release zpool/backup
- services.zrepl = {
- enable = true;
- config = ''
- global:
- control:
- sockpath: /run/zrepl/control
- serve:
- stdinserver:
- sockdir: /run/zrepl/stdinserver
- jobs:
- - type: sink
- # must not change
- name: "backup-from-eldiron"
- root_fs: "zpool/backup"
- serve:
- type: stdinserver
- client_identities:
- - eldiron
- '';
- };
- # This value determines the NixOS release with which your system is
- # to be compatible, in order to avoid breaking some software such as
- # database servers. You should change this only after NixOS release
- # notes say you should.
- # https://nixos.org/nixos/manual/release-notes.html
- system.stateVersion = "20.03"; # Did you read the comment?
-}
-
diff --git a/modules/private/system/dilion/vms.nix b/modules/private/system/dilion/vms.nix
deleted file mode 100644
index af96622..0000000
--- a/modules/private/system/dilion/vms.nix
+++ /dev/null
@@ -1,185 +0,0 @@
-# inspired from https://nixos.wiki/wiki/Virtualization_in_NixOS
-{ config, pkgs, lib, ... }@args:
-let
- pools = {
- niximages = {
- type = "dir";
- target = "/etc/libvirtd/base-images";
- };
- buildbot-disks = rec {
- preStart = ''
- mkdir -p ${target}
- '';
- type = "dir";
- target = "/var/lib/libvirt/images/buildbot-disks";
- };
- zfspool = {
- # pool-define-as --name zfspool --source-name zpool/libvirt --type zfs
- type = "zfs";
- xml = ''
-
- zpool/libvirt
-
- '';
- };
- };
- networks = {
- immae = {
- bridgeNumber = "1";
- ipRange = "192.168.100";
- };
- };
- guests = {
- caldance = {
- pool = "zfspool";
- cpus = "1";
- memory = "2";
- network = "immae";
- diskSize = "10GiB";
- extraDevicesXML = ''
-
-
-
-
- '';
- };
- buildbot = {
- pool = "zfspool";
- cpus = "1";
- memory = "3";
- network = "immae";
- diskSize = "10GiB";
- destroyVolumeOnExit = true;
- };
- };
- toImage = f: "${import ./vms/base_image.nix f (args // { myEnv = config.myEnv; })}/nixos.qcow2";
-in
-{
- environment.etc."libvirtd/base-images/nixos.qcow2".source = toImage ./vms/base_configuration.nix;
- environment.etc."libvirtd/base-images/buildbot.qcow2".source = toImage ./vms/buildbot_configuration.nix;
- systemd.services = lib.mapAttrs' (name: guest: lib.nameValuePair "libvirtd-guest-${name}" {
- after = [ "libvirtd.service" "libvirtd-pool-${guest.pool}.service" "libvirtd-network-${guest.network}.service" ];
- requires = [ "libvirtd.service" "libvirtd-pool-${guest.pool}.service" "libvirtd-network-${guest.network}.service" ];
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- Type = "oneshot";
- RemainAfterExit = "yes";
- };
- script =
- let
- xml = pkgs.writeText "libvirt-guest-${name}.xml"
- ''
-
- ${name}
- UUID
- ${guest.memory}
- ${guest.cpus}
-
- hvm
-
-
- /run/current-system/sw/bin/qemu-system-x86_64
-
-
-
-
- ${guest.extraDevicesXML or ""}
-
-
-
-
-
-
-
-
-
-
- '';
- in
- guest.preStart or "" + ''
- if ! ${pkgs.libvirt}/bin/virsh vol-key 'guest-${name}' --pool ${guest.pool} &> /dev/null; then
- ${pkgs.libvirt}/bin/virsh vol-create-as --pool ${guest.pool} --name 'guest-${name}' --capacity '${guest.diskSize}'
- volume_path=$(${pkgs.libvirt}/bin/virsh vol-path --pool ${guest.pool} --vol 'guest-${name}')
- ${pkgs.qemu}/bin/qemu-img convert /etc/libvirtd/base-images/nixos.qcow2 $volume_path
- fi
- uuid="$(${pkgs.libvirt}/bin/virsh domuuid '${name}' || true)"
- ${pkgs.libvirt}/bin/virsh define <(sed "s/UUID/$uuid/" '${xml}')
- ${pkgs.libvirt}/bin/virsh start '${name}'
- '';
- preStop = ''
- ${pkgs.libvirt}/bin/virsh shutdown '${name}'
- let "timeout = $(date +%s) + 10"
- while [ "$(${pkgs.libvirt}/bin/virsh list --name | grep --count '^${name}$')" -gt 0 ]; do
- if [ "$(date +%s)" -ge "$timeout" ]; then
- # Meh, we warned it...
- ${pkgs.libvirt}/bin/virsh destroy '${name}'
- else
- # The machine is still running, let's give it some time to shut down
- sleep 0.5
- fi
- done
- '' + lib.optionalString (guest.destroyVolumeOnExit or false) ''
- if ${pkgs.libvirt}/bin/virsh vol-key 'guest-${name}' --pool ${guest.pool} &> /dev/null; then
- ${pkgs.libvirt}/bin/virsh vol-wipe --pool ${guest.pool} --vol 'guest-${name}' || true
- ${pkgs.libvirt}/bin/virsh vol-delete --pool ${guest.pool} --vol 'guest-${name}'
- fi
- '';
- }) guests // (lib.mapAttrs' (name: network: lib.nameValuePair "libvirtd-network-${name}" {
- after = [ "libvirtd.service" ];
- requires = [ "libvirtd.service" ];
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- Type = "oneshot";
- RemainAfterExit = "yes";
- };
- script = let
- xml = pkgs.writeText "libvirt-network-${name}.xml" ''
-
- ${name}
- UUID
-
-
-
-
-
-
-
-
-
- '';
- in ''
- uuid="$(${pkgs.libvirt}/bin/virsh net-uuid '${name}' || true)"
- ${pkgs.libvirt}/bin/virsh net-define <(sed "s/UUID/$uuid/" '${xml}')
- ${pkgs.libvirt}/bin/virsh net-start '${name}'
- '';
- preStop = ''
- ${pkgs.libvirt}/bin/virsh net-destroy '${name}'
- '';
- }) networks) // (lib.mapAttrs' (name: pool: lib.nameValuePair "libvirtd-pool-${name}" {
- after = [ "libvirtd.service" ];
- requires = [ "libvirtd.service" ];
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- Type = "oneshot";
- RemainAfterExit = "yes";
- };
- script = let
- xml = pkgs.writeText "libvirt-pool-${name}.xml" ''
-
- ${name}
- UUID
- ${pool.xml or ""}
- ${if pool ? target then ''
-
- ${pool.target}
-
- '' else ""}
-
- '';
- in pool.preStart or "" + ''
- uuid="$(${pkgs.libvirt}/bin/virsh pool-uuid '${name}' || true)"
- ${pkgs.libvirt}/bin/virsh pool-define <(sed "s/UUID/$uuid/" '${xml}')
- ${pkgs.libvirt}/bin/virsh pool-start '${name}' || true
- '';
- }) pools);
-}
diff --git a/modules/private/system/dilion/vms/base_configuration.nix b/modules/private/system/dilion/vms/base_configuration.nix
deleted file mode 100644
index e2caba2..0000000
--- a/modules/private/system/dilion/vms/base_configuration.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, config, ... }@args:
-{
- options.myEnv = (import ../../../environment.nix (args // { name = "dummy"; })).options.myEnv;
- config = {
- fileSystems."/".device = "/dev/disk/by-label/nixos";
- boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "virtio_balloon" "virtio_blk" "virtio_pci" "virtio_ring" ];
- boot.loader = {
- grub = {
- version = 2;
- device = "/dev/vda";
- };
- timeout = 0;
- };
- services.openssh.enable = true;
- networking.firewall.allowedTCPPorts = [ 22 ];
- users = {
- mutableUsers = false;
- users.root.openssh.authorizedKeys.keys = [ config.myEnv.sshd.rootKeys.immae_dilion ];
- };
- };
-}
diff --git a/modules/private/system/dilion/vms/base_image.nix b/modules/private/system/dilion/vms/base_image.nix
deleted file mode 100644
index 8de8560..0000000
--- a/modules/private/system/dilion/vms/base_image.nix
+++ /dev/null
@@ -1,94 +0,0 @@
-configuration_file: { pkgs ? import {}, system ? builtins.currentSystem, myEnv, ... }:
-let
- config = (import {
- inherit system;
- modules = [ {
- myEnv = myEnv;
- imports = [ configuration_file ];
-
- # We want our template image to be as small as possible, but the deployed image should be able to be
- # of any size. Hence we resize on the first boot.
- systemd.services.resize-main-fs = {
- wantedBy = [ "multi-user.target" ];
- serviceConfig.Type = "oneshot";
- script =
- ''
- # Resize main partition to fill whole disk
- echo ", +" | ${pkgs.utillinux}/bin/sfdisk /dev/vda --no-reread -N 1
- ${pkgs.parted}/bin/partprobe
- # Resize filesystem
- ${pkgs.e2fsprogs}/bin/resize2fs /dev/vda1
- '';
- };
- } ];
- }).config;
-in pkgs.vmTools.runInLinuxVM (
- pkgs.runCommand "nixos-base-image"
- {
- memSize = 768;
- preVM =
- ''
- mkdir $out
- diskImage=image.qcow2
- ${pkgs.vmTools.qemu}/bin/qemu-img create -f qcow2 $diskImage 2G
- mv closure xchg/
- '';
- postVM =
- ''
- echo compressing VM image...
- ${pkgs.vmTools.qemu}/bin/qemu-img convert -c $diskImage -O qcow2 $out/nixos.qcow2
- '';
- buildInputs = [ pkgs.utillinux pkgs.perl pkgs.parted pkgs.e2fsprogs ];
- exportReferencesGraph =
- [ "closure" config.system.build.toplevel ];
- }
- ''
- # Create the partition
- parted /dev/vda mklabel msdos
- parted /dev/vda -- mkpart primary ext4 1M -1s
-
- # Format the partition
- mkfs.ext4 -L nixos /dev/vda1
- mkdir /mnt
- mount /dev/vda1 /mnt
-
- for dir in dev proc sys; do
- mkdir /mnt/$dir
- mount --bind /$dir /mnt/$dir
- done
-
- storePaths=$(perl ${pkgs.pathsFromGraph} /tmp/xchg/closure)
- echo filling Nix store...
- mkdir -p /mnt/nix/store
- set -f
- cp -prd $storePaths /mnt/nix/store
- # The permissions will be set up incorrectly if the host machine is not running NixOS
- chown -R 0:30000 /mnt/nix/store
-
- mkdir -p /mnt/etc/nix
- echo 'build-users-group = ' > /mnt/etc/nix/nix.conf
-
- # Register the paths in the Nix database.
- export USER=root
- printRegistration=1 perl ${pkgs.pathsFromGraph} /tmp/xchg/closure | \
- chroot /mnt ${config.nix.package.out}/bin/nix-store --load-db
-
- # Create the system profile to allow nixos-rebuild to work.
- chroot /mnt ${config.nix.package.out}/bin/nix-env \
- -p /nix/var/nix/profiles/system --set ${config.system.build.toplevel}
-
- # `nixos-rebuild' requires an /etc/NIXOS.
- mkdir -p /mnt/etc/nixos
- touch /mnt/etc/NIXOS
-
- # `switch-to-configuration' requires a /bin/sh
- mkdir -p /mnt/bin
- ln -s ${config.system.build.binsh}/bin/sh /mnt/bin/sh
-
- # Generate the GRUB menu.
- chroot /mnt ${config.system.build.toplevel}/bin/switch-to-configuration boot
-
- umount /mnt/{proc,dev,sys}
- umount /mnt
- ''
-)
diff --git a/modules/private/system/dilion/vms/buildbot_configuration.nix b/modules/private/system/dilion/vms/buildbot_configuration.nix
deleted file mode 100644
index 05b02d4..0000000
--- a/modules/private/system/dilion/vms/buildbot_configuration.nix
+++ /dev/null
@@ -1,67 +0,0 @@
-{ pkgs, config, lib, ... }:
-{
- imports = [
-
- ./base_configuration.nix
- ];
- systemd.services.buildbot-worker.serviceConfig.ExecStartPre = let
- cfg = config.services.buildbot-worker;
- script = pkgs.writeScript "decode-dmi" ''
- #!${pkgs.stdenv.shell}
-
- mkdir -vp "${cfg.buildbotDir}"
- varfile=${cfg.buildbotDir}/variables
- rm $varfile || true
- echo "[DEFAULT]" > $varfile
- strings=$(${pkgs.dmidecode}/bin/dmidecode --oem-string count)
- for i in $(seq 1 $strings); do
- ${pkgs.dmidecode}/bin/dmidecode --oem-string $i >> $varfile
- done
- chown -R ${cfg.user}:${cfg.group} ${cfg.buildbotDir}
- '';
- in
- lib.mkForce ["+${script}"];
- systemd.services.buildbot-worker.serviceConfig.ExecStart = let
- cfg = config.services.buildbot-worker;
- tacFile = pkgs.writeText "buildbot-worker.tac" ''
- import os
- from io import open
-
- from buildbot_worker.bot import Worker
- from twisted.application import service
-
- basedir = '${cfg.buildbotDir}'
-
- # note: this line is matched against to check that this is a worker
- # directory; do not edit it.
- application = service.Application('buildbot-worker')
-
- import configparser
- config = config = configparser.ConfigParser()
- config.read("${cfg.buildbotDir}/variables")
- master_url_split = config["DEFAULT"]["buildbot_master_url"].split(':')
- buildmaster_host = master_url_split[0]
- port = int(master_url_split[1])
- workername = config["DEFAULT"]["buildbot_worker_name"]
-
- with open('${cfg.workerPassFile}', 'r', encoding='utf-8') as passwd_file:
- passwd = passwd_file.read().strip('\r\n')
- keepalive = ${toString cfg.keepalive}
- umask = None
- maxdelay = 300
- numcpus = None
- allow_shutdown = None
-
- s = Worker(buildmaster_host, port, workername, passwd, basedir,
- keepalive, umask=umask, maxdelay=maxdelay,
- numcpus=numcpus, allow_shutdown=allow_shutdown)
- s.setServiceParent(application)
- '';
- in
- lib.mkForce "${cfg.package.pythonModule.pkgs.twisted}/bin/twistd --nodaemon --pidfile= --logfile - --python ${tacFile}";
- services.buildbot-worker = {
- enable = true;
- workerPass = config.myEnv.buildbot.workerPassword;
- packages = [ pkgs.git pkgs.gzip pkgs.openssh ];
- };
-}
diff --git a/modules/private/system/eldiron.nix b/modules/private/system/eldiron.nix
deleted file mode 100644
index 8b2784d..0000000
--- a/modules/private/system/eldiron.nix
+++ /dev/null
@@ -1,228 +0,0 @@
-{ config, pkgs, lib, ... }:
-{
- deployment = {
- targetUser = "root";
- targetHost = config.hostEnv.ips.main.ip4;
- substituteOnDestination = true;
- };
- # ssh-keyscan eldiron | nix-shell -p ssh-to-age --run ssh-to-age
- secrets.ageKeys = [ "age1dxr5lhvtnjssfaqpnf6qx80h8gfwkxg3tdf35m6n9wljmk7wadfs3kmahj" ];
- boot = {
- kernelModules = [ "kvm-intel" ];
- blacklistedKernelModules = [ "nvidiafb" ];
- loader.timeout = 1;
- loader.grub.devices = [ "/dev/sda" "/dev/sdb" ];
- kernel.sysctl = {
- # https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-001.md
- "net.ipv4.tcp_sack" = 0;
- };
- supportedFilesystems = [ "zfs" ];
- kernelParams = ["zfs.zfs_arc_max=6442450944"];
- kernelPackages = pkgs.linuxPackages_latest;
- initrd.availableKernelModules = [ "ahci" "sd_mod" ];
- initrd.secrets = {
- "/boot/pass.key" = "/boot/pass.key";
- };
- };
- services.udev.extraRules = ''
- ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="c8:60:00:56:a0:88", NAME="eth0"
- '';
- nix.maxJobs = 8;
- powerManagement.cpuFreqGovernor = "powersave";
- myEnv = import ../../../nixops/secrets/environment.nix;
-
- fileSystems = {
- # pools:
- # zpool: ashift=12
- # zfast: ashift=12
- # zfs:
- # zpool/: acltype=posixacl ; xattr=sa ; atime=off ; mountpoint=legacy
- # zpool/root: encryption=on ; keyformat=passphrase ; keylocation=file:///boot/pass.key
- # zpool/root/var: atime=on
- # zfast/: acltype=posixacl ; xattr=sa ; atime=off ; mountpoint=legacy
- # zfast/root: encryption=on ; keyformat=passphrase ; keylocation=file:///boot/pass.key
- # zfast/root/etc: ø
- # zfast/root/nix: ø
- # zfast/root/tmp: async=disabled
- # zfast/root/var: atime=on
- # zfast/root/var/lib: ø
- # zfast/root/var/lib/mysql: logbias=throughput ; atime=off ; primarycache=metadata
- # zfast/root/var/lib/postgresql: recordsize=8K ; atime=off ; logbias=throughput
- # zfast/root/var/lib/postgresql/11.0: ø
- # zfast/root/var/lib/postgresql/11.0/pg_wal: ø
- "/" = { fsType = "zfs"; device = "zpool/root"; };
- "/boot" = { fsType = "ext4"; device = "/dev/disk/by-uuid/e6bb18fb-ff56-4b5f-ae9f-e60d40dc0622"; };
- "/etc" = { fsType = "zfs"; device = "zpool/root/etc"; };
- "/nix" = { fsType = "zfs"; device = "zfast/root/nix"; };
- "/tmp" = { fsType = "zfs"; device = "zfast/root/tmp"; };
- "/var" = { fsType = "zfs"; device = "zpool/root/var"; };
- "/var/lib/mysql" = { fsType = "zfs"; device = "zfast/root/var/lib/mysql"; };
- "/var/lib/postgresql" = { fsType = "zfs"; device = "zfast/root/var/lib/postgresql"; };
- "/var/lib/postgresql/11.0" = { fsType = "zfs"; device = "zfast/root/var/lib/postgresql/11.0"; };
- "/var/lib/postgresql/11.0/pg_wal" = { fsType = "zfs"; device = "zfast/root/var/lib/postgresql/11.0/pg_wal"; };
- };
- swapDevices = [ { label = "swap1"; } { label = "swap2"; } ];
- hardware.enableRedistributableFirmware = true;
-
- services.zfs = {
- autoScrub = {
- enable = false;
- };
- };
- networking = {
- hostId = "8262ca33"; # generated with head -c4 /dev/urandom | od -A none -t x4
- firewall.enable = true;
- # FIXME: on next reboot, remove the /27 and the localCommands
- interfaces."eth0".ipv4.addresses =
- pkgs.lib.attrsets.mapAttrsToList
- (n: ips: { address = ips.ip4; prefixLength = 32; })
- (pkgs.lib.attrsets.filterAttrs (n: v: n != "main") config.hostEnv.ips)
- ++ [ { address = config.hostEnv.ips.main.ip4; prefixLength = 27; } ];
- interfaces."eth0".ipv6.addresses = pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
- (n: ips: map (ip: { address = ip; prefixLength = (if n == "main" && ip == pkgs.lib.head ips.ip6 then 64 else 128); }) (ips.ip6 or []))
- config.hostEnv.ips);
- defaultGateway = "176.9.151.65";
- localCommands = ''
- # FIXME: Those commands were added by nixops and may not be
- # actually needed
- ip -6 addr add '2a01:4f8:160:3445::/64' dev 'eth0' || true
- ip -4 route change '176.9.151.64/27' via '176.9.151.65' dev 'eth0' || true
- ip -6 route add default via 'fe80::1' dev eth0 || true
- '';
- nameservers = [
- "213.133.98.98"
- "213.133.99.99"
- "213.133.100.100"
- "2a01:4f8:0:a0a1::add:1010"
- "2a01:4f8:0:a102::add:9999"
- "2a01:4f8:0:a111::add:9898"
- ];
- };
-
- imports = builtins.attrValues (import ../..);
-
- myServices.buildbot.enable = true;
- myServices.databases.enable = true;
- myServices.gitolite.enable = true;
- myServices.monitoring.enable = true;
- myServices.irc.enable = true;
- myServices.pub.enable = true;
- myServices.tasks.enable = true;
- myServices.mpd.enable = true;
- myServices.dns.enable = true;
- myServices.certificates.enable = true;
- myServices.websites.enable = true;
- myServices.gemini.enable = true;
- myServices.mail.enable = true;
- myServices.ejabberd.enable = true;
- myServices.vpn.enable = true;
- myServices.ftp.enable = true;
-
- services.netdata.enable = true;
- services.netdata.config.global."memory mode" = "none";
- services.netdata.config.health."enabled" = "no";
- services.netdata.config.web.mode = "none";
- users.users."${config.services.netdata.user}".extraGroups = [ "keys" ];
- environment.etc."netdata/stream.conf".source = config.secrets.fullPaths."netdata-stream.conf";
- secrets.keys = {
- "netdata-stream.conf" = {
- user = config.services.netdata.user;
- group = config.services.netdata.group;
- permissions = "0400";
- text = ''
- [stream]
- enabled = yes
- destination = ${config.myEnv.monitoring.netdata_aggregator}
- api key = ${config.myEnv.monitoring.netdata_keys.eldiron}
- '';
- };
- "zrepl_backup/identity" = {
- user = "root";
- group = "root";
- permissions = "0400";
- text = config.myEnv.zrepl_backup.ssh_key.private;
- };
- };
- programs.ssh.knownHosts.dilion = {
- hostNames = ["dilion.immae.eu"];
- publicKey = let
- profile = config.myEnv.rsync_backup.profiles.dilion;
- in
- "${profile.host_key_type} ${profile.host_key}";
- };
-
- services.cron = {
- enable = true;
- mailto = "cron@immae.eu";
- systemCronJobs = [
- ''
- 0 0 * * * root journalctl -q --since="25 hours ago" -u postfix -t postfix/smtpd -g "immae.eu.*Recipient address rejected"
- # Need a way to blacklist properly
- # 0 0 * * * root journalctl -q --since="25 hours ago" -u postfix -t postfix/smtpd -g "NOQUEUE:"
- 0 0 * * * root journalctl -q --since="25 hours ago" -u postfix -t postfix/smtp -g "status=bounced"
- ''
- ];
- };
-
- environment.systemPackages = [ pkgs.bindfs ];
-
- services.zrepl = {
- enable = true;
- config = let
- redis_dump = pkgs.writeScript "redis-dump" ''
- #! ${pkgs.stdenv.shell}
- ${pkgs.redis}/bin/redis-cli bgsave
- '';
- in ''
- jobs:
- - type: push
- # must not change
- name: "backup-to-dilion"
- filesystems:
- "zpool/root": true
- "zpool/root/etc": true
- "zpool/root/var<": true
- connect:
- type: ssh+stdinserver
- host: dilion.immae.eu
- user: backup
- port: 22
- identity_file: ${config.secrets.fullPaths."zrepl_backup/identity"}
- snapshotting:
- type: periodic
- prefix: zrepl_
- interval: 1h
- #hooks:
- # - type: mysql-lock-tables
- # dsn: "${config.myEnv.zrepl_backup.mysql.user}:${config.myEnv.zrepl_backup.mysql.password}@tcp(localhost)/"
- # filesystems:
- # "zpool/root/var": true
- # - type: command
- # path: ${redis_dump}
- # err_is_fatal: false
- # filesystems:
- # "zpool/root/var": true
- send:
- encrypted: true
- pruning:
- keep_sender:
- - type: regex
- regex: "^manual_.*"
- - type: grid
- grid: 24x1h | 7x1d | 4x7d | 6x30d
- regex: "^zrepl_.*"
- keep_receiver:
- - type: regex
- regex: "^manual_.*"
- - type: grid
- grid: 6x4h | 7x1d | 4x7d | 6x30d
- regex: "^zrepl_.*"
- '';
- };
- # This value determines the NixOS release with which your system is
- # to be compatible, in order to avoid breaking some software such as
- # database servers. You should change this only after NixOS release
- # notes say you should.
- # https://nixos.org/nixos/manual/release-notes.html
- system.stateVersion = "20.03"; # Did you read the comment?
-}
diff --git a/modules/private/system/monitoring-1.nix b/modules/private/system/monitoring-1.nix
deleted file mode 100644
index dea5f45..0000000
--- a/modules/private/system/monitoring-1.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{ config, pkgs, resources, ... }:
-{
- deployment = {
- targetUser = "root";
- targetHost = config.hostEnv.ips.main.ip4;
- substituteOnDestination = true;
- };
- # ssh-keyscan monitoring-1 | nix-shell -p ssh-to-age --run ssh-to-age
- secrets.ageKeys = [ "age1dn4lzhgxusqrpjjnzm7w8ml39ptf326htuzmpqdqs2gg3wq7cqzqxuvx8k" ];
- boot.kernelPackages = pkgs.linuxPackages_latest;
- myEnv = import ../../../nixops/secrets/environment.nix;
-
- imports = [ ] ++ builtins.attrValues (import ../..);
-
- myServices.monitoring.enable = true;
- myServices.monitoring.master = true;
- myServices.status.enable = true;
- networking = {
- firewall.enable = true;
- interfaces."ens3".ipv4.addresses = pkgs.lib.attrsets.mapAttrsToList
- (n: ips: { address = ips.ip4; prefixLength = 32; })
- (pkgs.lib.attrsets.filterAttrs (n: v: n != "main") config.hostEnv.ips);
- interfaces."ens3".ipv6.addresses = pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
- (n: ips: map (ip: { address = ip; prefixLength = (if n == "main" && ip == pkgs.lib.head ips.ip6 then 64 else 128); }) (ips.ip6 or []))
- config.hostEnv.ips);
- defaultGateway6 = { address = "fe80::1"; interface = "ens3"; };
- };
- boot.loader.grub.device = "nodev";
- fileSystems."/" = { device = "/dev/sda1"; fsType = "ext4"; };
- myServices.mailRelay.enable = true;
-
- security.pki.certificateFiles = [
- (pkgs.fetchurl {
- url = "http://downloads.e.eriomem.net/eriomemca.pem";
- sha256 = "1ixx4c6j3m26j8dp9a3dkvxc80v1nr5aqgmawwgs06bskasqkvvh";
- })
- ];
-
- services.netdata.enable = true;
- services.netdata.config.web."allow dashboard from" = "localhost";
- services.netdata.config.web."allow badges from" = "*";
- services.netdata.config.web."allow streaming from" = "*";
- services.netdata.config.web."allow netdata.conf from" = "fd*";
- services.netdata.config.web."allow management from" = "fd*";
- networking.firewall.allowedTCPPorts = [ 19999 ];
- environment.etc."netdata/stream.conf".source = config.secrets.fullPaths."netdata-stream.conf";
-
- secrets.keys = {
- "netdata-stream.conf" = {
- user = config.services.netdata.user;
- group = config.services.netdata.group;
- permissions = "0400";
- text = builtins.concatStringsSep "\n" (pkgs.lib.mapAttrsToList (_: key: ''
- [${key}]
- enabled = yes
- default history = 3600
- default memory = ram
- health enabled by default = auto
- '') config.myEnv.monitoring.netdata_keys);
- };
- };
- users.users."${config.services.netdata.user}".extraGroups = [ "keys" ];
- # This value determines the NixOS release with which your system is
- # to be compatible, in order to avoid breaking some software such as
- # database servers. You should change this only after NixOS release
- # notes say you should.
- # https://nixos.org/nixos/manual/release-notes.html
- system.stateVersion = "20.03"; # Did you read the comment?
-}
diff --git a/modules/private/system/quatresaisons.nix b/modules/private/system/quatresaisons.nix
deleted file mode 100644
index 82db70f..0000000
--- a/modules/private/system/quatresaisons.nix
+++ /dev/null
@@ -1,436 +0,0 @@
-{ config, pkgs, lib, ... }:
-let
- serverSpecificConfig = config.myEnv.serverSpecific.quatresaisons;
- yarnModules = pkgs.yarn2nix-moretea.mkYarnModules rec {
- name = "landing";
- pname = name;
- version = "v1.0.0";
- packageJSON = "${pkgs.sources.webapps-landing}/package.json";
- yarnLock = "${pkgs.sources.webapps-landing}/yarn.lock";
- yarnNix = ../websites/tools/tools/landing/yarn-packages.nix;
- };
- toLanding = landingConfig: pkgs.stdenv.mkDerivation rec {
- pname = "landing";
- version = "v1.0.0";
- src = pkgs.sources.webapps-landing;
-
- buildInputs = [ yarnModules pkgs.yarn2nix-moretea.yarn ];
- configurePhase = ''
- ln -s ${yarnModules}/node_modules .
- '';
- buildPhase = ''
- yarn build
- '';
- installPhase = ''
- cp -a dist $out
- cp -f ${landingConfig} $out/config.yml
- ln -s service-worker.js $out/worker.js
- '';
- };
- normalUsers = serverSpecificConfig.users;
- sponsoredUser = pkgs.writeScriptBin "sponsored_user" ''
- #!/usr/bin/env bash
-
- set -euo pipefail
- [ -z "''${SUDO_USER+x}" ] && echo "Must be run with sudo" && exit 1
-
- mygroup=$(id -ng $SUDO_USER)
-
- sponsored=$(getent group $mygroup | cut -d':' -f4)
-
- echo "Sponsored users: ''${sponsored:-}"
-
- log () {
- touch /var/log/sponsored_users
- chmod go-rwx /var/log/sponsored_users
- echo "`date` $mygroup $1" | LANG=C cat -v | tr '\012' ' ' | sed 's:$:\x0a:' >> /var/log/sponsored_users
- }
-
- create_user () {
- log "creates $1: $2"
- useradd -m -G users,$mygroup -g $mygroup -p '!' "$1"
- touch /var/lib/nixos/sponsored_users
- chmod go-rwx /var/lib/nixos/sponsored_users
- echo "$mygroup $1 $2" >> /var/lib/nixos/sponsored_users
- (${pkgs.openldap}/bin/ldapadd -c -D cn=root,dc=salle-s,dc=org \
- -y ${config.secrets.fullPaths."ldap/sync_password"} 2>/dev/null >/dev/null || true) </dev/null >/dev/null || true
-
- # Remove obsolete users
- ${pkgs.openldap}/bin/ldapsearch -LLL ${com} -s one -b "ou=users,dc=salle-s,dc=org" "uid" |\
- grep "^uid" | ${pkgs.gnused}/bin/sed -e "s/uid: //" | while read ldapuser; do
-
- for user in ${builtins.concatStringsSep " " (builtins.attrNames normalUsers)}; do
- if [ "$user" = "$ldapuser" ]; then
- continue 2
- fi
- done
- ${pkgs.openldap}/bin/ldapdelete -r ${com} uid=$ldapuser,ou=users,dc=salle-s,dc=org
- done
-
- # Subusers
- if [ -f /var/lib/nixos/sponsored_users ]; then
- cat /var/lib/nixos/sponsored_users | while read mainUser subUser name; do
- (${pkgs.openldap}/bin/ldapadd -c ${com} 2>/dev/null >/dev/null || true) <s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedVhost
- Protocols h2 http/1.1
- AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
- '' ];
- ips =
- let ips = config.hostEnv.ips.main;
- in [ips.ip4] ++ (ips.ip6 or []);
-
- fallbackVhost = {
- certName = "quatresaisons";
- hosts = [ "quatresaisons.immae.eu" ];
- root = pkgs.runCommand "empty" {} "mkdir $out && touch $out/index.html";
- extraConfig = [ "DirectoryIndex index.html" ];
- };
- vhostConfs.salle-s = {
- certName = "quatresaisons";
- addToCerts = true;
- hosts = [ "salle-s.org" ];
- root = toLanding ./quatresaisons/landing.yml;
- extraConfig = [
- ''
-
- AllowOverride None
- Require all granted
- DirectoryIndex index.html
-
- ''
- ];
- };
- vhostConfs.tools = {
- certName = "quatresaisons";
- addToCerts = true;
- hosts = [ "4c.salle-s.org" "quatresaisons.salle-s.org" "quatre-saisons.salle-s.org" ];
- root = toLanding ./quatresaisons/landing_4c.yml;
- extraConfig = [
- ''
- Alias /charte ${serverSpecificConfig.charte_path}
-
- AllowOverride None
- Require all granted
- DirectoryIndex index.html index.txt
-
-
-
- AllowOverride None
- Require all granted
- DirectoryIndex index.html
-
- ''
- ];
- };
- };
- system.activationScripts.httpd = ''
- install -d -m 0750 -o wwwrun -g wwwrun /var/lib/php
- install -d -m 0750 -o wwwrun -g wwwrun /var/lib/php/sessions
- '';
-
- services.phpfpm = {
- phpOptions = ''
- session.save_path = "/var/lib/php/sessions"
- post_max_size = 20M
- ; 15 days (seconds)
- session.gc_maxlifetime = 1296000
- ; 30 days (minutes)
- session.cache_expire = 43200
- '';
- settings = {
- log_level = "notice";
- };
- };
-
-}
diff --git a/modules/private/system/quatresaisons/databases.nix b/modules/private/system/quatresaisons/databases.nix
deleted file mode 100644
index f7b27e0..0000000
--- a/modules/private/system/quatresaisons/databases.nix
+++ /dev/null
@@ -1,147 +0,0 @@
-{ pkgs, config, lib, ... }:
-{
- config = let
- serverSpecificConfig = config.myEnv.serverSpecific.quatresaisons;
- phpLdapAdmin = pkgs.webapps.phpldapadmin.override { config = config.secrets.fullPaths."webapps/tools-ldap"; };
- in {
- services.postgresql.enable = true;
- services.postgresql.package = pkgs.postgresql_12;
- services.postgresql.ensureUsers = [
- { name = "naemon"; }
- ];
- secrets.keys = {
- "ldap/password" = {
- permissions = "0400";
- user = "openldap";
- group = "openldap";
- text = "rootpw ${serverSpecificConfig.ldap_root_pw}";
- };
- "webapps/tools-ldap" = {
- user = "wwwrun";
- group = "wwwrun";
- permissions = "0400";
- text = ''
- custom->appearance['show_clear_password'] = true;
- $config->custom->appearance['hide_template_warning'] = true;
- $config->custom->appearance['theme'] = "tango";
- $config->custom->appearance['minimalMode'] = false;
- $config->custom->appearance['tree'] = 'AJAXTree';
-
- $servers = new Datastore();
-
- $servers->newServer('ldap_pla');
- $servers->setValue('server','name','LDAP');
- $servers->setValue('server','host','ldap://localhost');
- $servers->setValue('login','auth_type','cookie');
- $servers->setValue('login','bind_id','${serverSpecificConfig.ldap_phpldapadmin_dn}');
- $servers->setValue('login','bind_pass','${serverSpecificConfig.ldap_phpldapadmin_password}');
- $servers->setValue('appearance','pla_password_hash','ssha');
- $servers->setValue('login','attr','uid');
- $servers->setValue('login','fallback_dn',true);
- '';
- };
- };
-
- users.users.openldap.extraGroups = [ "keys" ];
- services.openldap = {
- enable = true;
- dataDir = "/var/lib/openldap";
- urlList = [ "ldap://localhost" ];
- logLevel = "none";
- extraConfig = ''
- pidfile /run/slapd/slapd.pid
- argsfile /run/slapd/slapd.args
-
- moduleload back_hdb
- backend hdb
- '';
-
- extraDatabaseConfig = ''
- moduleload memberof
- overlay memberof
-
- moduleload syncprov
- overlay syncprov
- syncprov-checkpoint 100 10
-
- index objectClass eq
- index uid pres,eq
- #index uidMember pres,eq
- index mail pres,sub,eq
- index cn pres,sub,eq
- index sn pres,sub,eq
- index dc eq
- index member eq
- index memberOf eq
-
- # No one must access that information except root
- access to attrs=description
- by * none
-
- access to attrs=entry,uid filter="(uid=*)"
- by dn.exact="${serverSpecificConfig.ldap_phpldapadmin_dn}" read
- by * break
-
- access to dn.subtree="ou=users,dc=salle-s,dc=org"
- by dn.subtree="ou=services,dc=salle-s,dc=org" read
- by * break
-
- access to *
- by self read
- by anonymous auth
- by * break
- '';
- rootpwFile = config.secrets.fullPaths."ldap/password";
- suffix = "dc=salle-s,dc=org";
- rootdn = "cn=root,dc=salle-s,dc=org";
- database = "hdb";
- };
-
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.tools.extraConfig = [
- ''
- Alias /ldap "${phpLdapAdmin}/htdocs"
-
- DirectoryIndex index.php
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.ldap.socket}|fcgi://localhost"
-
-
- AllowOverride None
- Require all granted
-
- ''
- ];
- services.phpfpm.pools.ldap = {
- user = "wwwrun";
- group = "wwwrun";
- settings =
- let
- basedir = builtins.concatStringsSep ":" [ phpLdapAdmin config.secrets.fullPaths."webapps/tools-ldap" ];
- in {
- "listen.owner" = "wwwrun";
- "listen.group" = "wwwrun";
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "LdapPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp:/var/lib/php/sessions/phpldapadmin";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/phpldapadmin";
- };
- phpPackage = pkgs.php72;
- };
- system.activationScripts.ldap = {
- deps = [ "users" ];
- text = ''
- install -m 0755 -o wwwrun -g wwwrun -d /var/lib/php/sessions/phpldapadmin
- '';
- };
- systemd.services.phpfpm-ldap = {
- after = lib.mkAfter [ "openldap.service" ];
- wants = [ "openldap.service" ];
- };
- };
-}
diff --git a/modules/private/system/quatresaisons/landing.yml b/modules/private/system/quatresaisons/landing.yml
deleted file mode 100644
index cf4ba87..0000000
--- a/modules/private/system/quatresaisons/landing.yml
+++ /dev/null
@@ -1,32 +0,0 @@
----
-# Homepage configuration
-# See https://fontawesome.com/icons for icons options
-
-title: "Websites dashboard"
-subtitle: "Salle-S"
-footer: false
-#footer: 'Created with ❤️ with bulma , vuejs & font awesome // Fork me on
' # set false if you want to hide it.
-
-# Optional navbar
-# links: [] # Allows for navbar (dark mode, layout, and search) without any links
-links: []
-
-# Services
-# First level array represent a group.
-# Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed).
-services:
- - name: "Quatramaran"
- items:
- - name: "Roundcube"
- logo: "assets/tools/roundcube.svg"
- url: "https://quatramaran.salle-s.org/roundcube/"
- - name: "Les dessous de paillasse"
- url: "https://dessous-de-paillasse.salle-s.org"
- - name: "Quatre Saisons"
- items:
- - name: "Charte d’utilisation"
- icon: "fas fa-scroll"
- url: "https://4c.salle-s.org/charte/"
- - name: "Nextcloud"
- logo: "assets/tools/nextcloud.png"
- url: "https://nextcloud.4c.salle-s.org"
diff --git a/modules/private/system/quatresaisons/landing_4c.yml b/modules/private/system/quatresaisons/landing_4c.yml
deleted file mode 100644
index 0b9f6b6..0000000
--- a/modules/private/system/quatresaisons/landing_4c.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-# Homepage configuration
-# See https://fontawesome.com/icons for icons options
-
-title: "Websites dashboard"
-subtitle: "Quatre saisons"
-footer: false
-#footer: 'Created with ❤️ with bulma , vuejs & font awesome // Fork me on
' # set false if you want to hide it.
-
-# Optional navbar
-# links: [] # Allows for navbar (dark mode, layout, and search) without any links
-links: []
-
-# Services
-# First level array represent a group.
-# Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed).
-services:
- - items:
- - name: "Charte d’utilisation"
- icon: "fas fa-scroll"
- url: "https://4c.salle-s.org/charte/"
- - name: "Nextcloud"
- logo: "assets/tools/nextcloud.png"
- url: "https://nextcloud.4c.salle-s.org"
diff --git a/modules/private/system/quatresaisons/nextcloud.nix b/modules/private/system/quatresaisons/nextcloud.nix
deleted file mode 100644
index 89d69d5..0000000
--- a/modules/private/system/quatresaisons/nextcloud.nix
+++ /dev/null
@@ -1,141 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- nextcloud = pkgs.webapps.nextcloud.withApps (a: [
- a.apporder a.audioplayer a.bookmarks a.calendar a.carnet a.circles
- a.contacts a.cookbook a.deck a.extract a.files_markdown
- a.files_readmemd a.flowupload a.gpxedit a.gpxpod a.keeweb a.maps
- a.metadata a.music a.notes a.ocsms a.passman a.polls a.spreed
- a.social a.tasks
- ]);
- varDir = "/var/lib/nextcloud";
- phpFpm = rec {
- basedir = builtins.concatStringsSep ":" ([ nextcloud varDir ] ++ nextcloud.apps);
- pool = {
- "listen.owner" = "wwwrun";
- "listen.group" = "wwwrun";
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[output_buffering]" = "0";
- "php_admin_value[max_execution_time]" = "1800";
- "php_admin_value[zend_extension]" = "opcache";
- #already enabled by default?
- #"php_value[opcache.enable]" = "1";
- "php_value[opcache.enable_cli]" = "1";
- "php_value[opcache.interned_strings_buffer]" = "8";
- "php_value[opcache.max_accelerated_files]" = "10000";
- "php_value[opcache.memory_consumption]" = "128";
- "php_value[opcache.save_comments]" = "1";
- "php_value[opcache.revalidate_freq]" = "1";
- "php_admin_value[memory_limit]" = "512M";
-
- "php_admin_value[open_basedir]" = "/run/wrappers/bin/sendmail:${basedir}:/proc/meminfo:/dev/urandom:/proc/self/fd:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- };
- };
-in {
- config = {
- services.postgresql.ensureDatabases = [ "nextcloud" ];
- services.postgresql.ensureUsers = [
- { name = "nextcloud"; ensurePermissions = { "DATABASE nextcloud" = "ALL PRIVILEGES"; }; }
- ];
- services.websites.env.production.modules = [ "proxy_fcgi" ];
-
- services.websites.env.production.vhostConfs.cloud = {
- certName = "quatresaisons";
- addToCerts = true;
- hosts = ["nextcloud.4c.salle-s.org" ];
- root = nextcloud;
- extraConfig =
- [
- ''
- SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
-
- AcceptPathInfo On
- DirectoryIndex index.php
- Options FollowSymlinks
- Require all granted
- AllowOverride all
-
-
- Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
-
-
- CGIPassAuth on
- SetHandler "proxy:unix:${config.services.phpfpm.pools.nextcloud.socket}|fcgi://localhost"
-
-
-
- ''
- ];
- };
- services.websites.env.production.vhostConfs.cloud_wait = let
- content = pkgs.writeText "contenu" ''
- nextcloud est un service qui a besoin de pérennité du nom
- "nextcloud.salle-s.org", on va peut-etre y arriver, c'est une
- question de jours, voir le message informatique.internet:8017
- '';
- in {
- certName = "quatresaisons";
- addToCerts = true;
- hosts = ["nextcloud.salle-s.org" ];
- root = content;
- extraConfig =
- [
- ''
- Alias / ${content}
- ''
- ];
- };
-
- users.users.root.packages = let
- occ = pkgs.writeScriptBin "nextcloud-occ" ''
- #! ${pkgs.stdenv.shell}
- cd ${nextcloud}
- NEXTCLOUD_CONFIG_DIR="${nextcloud}/config" \
- exec \
- sudo -E -u wwwrun ${pkgs.php74}/bin/php \
- -c ${pkgs.php74}/etc/php.ini \
- occ $*
- '';
- in [ occ ];
-
- system.activationScripts.nextcloud = {
- deps = [ "users" ];
- text = let
- confs = lib.attrsets.mapAttrs (n: v: pkgs.writeText "${n}.json" (builtins.toJSON v)) nextcloud.otherConfig;
- in
- ''
- install -m 0755 -o wwwrun -g wwwrun -d ${varDir}
- install -m 0755 -o wwwrun -g wwwrun -d ${varDir}/config
- install -m 0750 -o wwwrun -g wwwrun -d ${varDir}/phpSessions
- ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (n: v:
- "install -D -m 0644 -o wwwrun -g wwwrun -T ${v} ${varDir}/config/${n}.json"
- ) confs)}
- '';
- };
- services.phpfpm.pools.nextcloud = {
- user = "wwwrun";
- group = "wwwrun";
- settings = phpFpm.pool;
- phpPackage = pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache all.imagick ]);
- };
-
- services.cron = {
- enable = true;
- systemCronJobs = let
- script = pkgs.writeScriptBin "nextcloud-cron" ''
- #! ${pkgs.stdenv.shell}
- export LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive
- export PATH=/run/wrappers/bin:$PATH
- ${pkgs.php74}/bin/php -d memory_limit=512M -f ${nextcloud}/cron.php
- '';
- in [
- ''
- */15 * * * * wwwrun ${script}/bin/nextcloud-cron
- ''
- ];
- };
- };
-}
diff --git a/modules/private/tasks/default.nix b/modules/private/tasks/default.nix
deleted file mode 100644
index 6480255..0000000
--- a/modules/private/tasks/default.nix
+++ /dev/null
@@ -1,355 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.tasks;
- server_vardir = config.services.taskserver.dataDir;
- fqdn = "task.immae.eu";
- user = config.services.taskserver.user;
- env = config.myEnv.tools.task;
- group = config.services.taskserver.group;
- taskserver-user-certs = pkgs.runCommand "taskserver-user-certs" {} ''
- mkdir -p $out/bin
- cat > $out/bin/taskserver-user-certs <<"EOF"
- #!/usr/bin/env bash
-
- user=$1
-
- silent_certtool() {
- if ! output="$("${pkgs.gnutls.bin}/bin/certtool" "$@" 2>&1)"; then
- echo "GNUTLS certtool invocation failed with output:" >&2
- echo "$output" >&2
- fi
- }
-
- silent_certtool -p \
- --bits 4096 \
- --outfile "${server_vardir}/userkeys/$user.key.pem"
- ${pkgs.gnused}/bin/sed -i -n -e '/^-----BEGIN RSA PRIVATE KEY-----$/,$p' "${server_vardir}/userkeys/$user.key.pem"
-
- silent_certtool -c \
- --template "${pkgs.writeText "taskserver-ca.template" ''
- tls_www_client
- encryption_key
- signing_key
- expiration_days = 3650
- ''}" \
- --load-ca-certificate "${server_vardir}/keys/ca.cert" \
- --load-ca-privkey "${server_vardir}/keys/ca.key" \
- --load-privkey "${server_vardir}/userkeys/$user.key.pem" \
- --outfile "${server_vardir}/userkeys/$user.cert.pem"
- EOF
- chmod a+x $out/bin/taskserver-user-certs
- patchShebangs $out/bin/taskserver-user-certs
- '';
- taskwarrior-web = pkgs.webapps.taskwarrior-web;
- socketsDir = "/run/taskwarrior-web";
- varDir = "/var/lib/taskwarrior-web";
- taskwebPages = let
- uidPages = lib.attrsets.zipAttrs (
- lib.lists.flatten
- (lib.attrsets.mapAttrsToList (k: c: map (v: { "${v}" = k; }) c.uid) env.taskwarrior-web)
- );
- pages = lib.attrsets.mapAttrs (uid: items:
- if lib.lists.length items == 1 then
- ''
-
-
-
-
-
-
- ''
- else
- ''
-
-
- To-do list disponibles
-
-
-
-
-
- ${builtins.concatStringsSep "\n" (map (item: "${item} ") items)}
-
-
-
- ''
- ) uidPages;
- in
- pkgs.runCommand "taskwerver-pages" {} ''
- mkdir -p $out/
- ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (k: v: "cp ${pkgs.writeText k v} $out/${k}.html") pages)}
- echo "Please login" > $out/index.html
- '';
-in {
- options.myServices.tasks = {
- enable = lib.mkEnableOption "my tasks service";
- };
-
- config = lib.mkIf cfg.enable {
- secrets.keys = {
- "webapps/tools-taskwarrior-web" = {
- user = "wwwrun";
- group = "wwwrun";
- permissions = "0400";
- text = ''
- SetEnv TASKD_HOST "${fqdn}:${toString config.services.taskserver.listenPort}"
- SetEnv TASKD_VARDIR "${server_vardir}"
- SetEnv TASKD_LDAP_HOST "ldaps://${env.ldap.host}"
- SetEnv TASKD_LDAP_DN "${env.ldap.dn}"
- SetEnv TASKD_LDAP_PASSWORD "${env.ldap.password}"
- SetEnv TASKD_LDAP_BASE "${env.ldap.base}"
- SetEnv TASKD_LDAP_FILTER "${env.ldap.filter}"
- '';
- };
- } // (lib.mapAttrs' (name: userConfig: lib.nameValuePair "webapps/tools-taskwarrior/${name}-taskrc" {
- inherit user group;
- permissions = "0400";
- text = let
- credentials = "${userConfig.org}/${name}/${userConfig.key}";
- dateFormat = userConfig.date;
- in ''
- data.location=${varDir}/${name}
- taskd.certificate=${server_vardir}/userkeys/taskwarrior-web.cert.pem
- taskd.key=${server_vardir}/userkeys/taskwarrior-web.key.pem
- # IdenTrust DST Root CA X3
- # obtained here: https://letsencrypt.org/fr/certificates/
- taskd.ca=${pkgs.writeText "ca.cert" ''
- -----BEGIN CERTIFICATE-----
- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
- TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
- cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
- WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
- ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
- MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
- h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
- 0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
- A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
- T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
- B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
- B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
- KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
- OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
- jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
- qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
- rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
- HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
- hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
- ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
- 3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
- NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
- ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
- TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
- jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
- oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
- 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
- mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
- emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
- -----END CERTIFICATE-----''}
- taskd.server=${fqdn}:${toString config.services.taskserver.listenPort}
- taskd.credentials=${credentials}
- dateformat=${dateFormat}
- '';
- }) env.taskwarrior-web);
- services.websites.env.tools.watchPaths = [ config.secrets.fullPaths."webapps/tools-taskwarrior-web" ];
- services.websites.env.tools.modules = [ "proxy_fcgi" "sed" ];
- services.websites.env.tools.vhostConfs.task = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [ "task.immae.eu" ];
- root = ./www;
- extraConfig = [ ''
-
- DirectoryIndex index.php
- Use LDAPConnect
- Require ldap-group cn=users,cn=taskwarrior,ou=services,dc=immae,dc=eu
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.tasks.socket}|fcgi://localhost"
-
- Include ${config.secrets.fullPaths."webapps/tools-taskwarrior-web"}
-
- ''
- ''
-
- ProxyPass "unix://${socketsDir}/%{folderName}.sock|http://localhost-%{folderName}/"
- ProxyPassReverse "unix://${socketsDir}/%{folderName}.sock|http://localhost-%{folderName}/"
- ProxyPassReverse http://${fqdn}/
-
- SetOutputFilter Sed
- OutputSed "s|/ajax|/taskweb/%{folderName}/ajax|g"
- OutputSed "s|\([^x]\)/tasks|\1/taskweb/%{folderName}/tasks|g"
- OutputSed "s|\([^x]\)/projects|\1/taskweb/%{folderName}/projects|g"
- OutputSed "s|http://${fqdn}/|/taskweb/%{folderName}/|g"
- OutputSed "s|/img/relax.jpg|/taskweb/%{folderName}/img/relax.jpg|g"
-
- ''
- ''
- Alias /taskweb ${taskwebPages}
-
- DirectoryIndex index.html
- Require all granted
-
-
- RewriteEngine on
- RewriteRule ^/taskweb$ /taskweb/ [R=301,L]
- RedirectMatch permanent ^/taskweb/([^/]+)$ /taskweb/$1/
-
- RewriteCond %{LA-U:REMOTE_USER} !=""
- RewriteCond ${taskwebPages}/%{LA-U:REMOTE_USER}.html -f
- RewriteRule ^/taskweb/?$ ${taskwebPages}/%{LA-U:REMOTE_USER}.html [L]
-
-
- Use LDAPConnect
- Require ldap-group cn=users,cn=taskwarrior,ou=services,dc=immae,dc=eu
-
- ''
- ] ++ (lib.attrsets.mapAttrsToList (k: v: ''
-
- ${builtins.concatStringsSep "\n" (map (uid: "Require ldap-attribute uid=${uid}") v.uid)}
-
- Use Taskwarrior ${k}
-
- '') env.taskwarrior-web);
- };
- services.phpfpm.pools = {
- tasks = {
- user = user;
- group = group;
- settings = {
- "listen.owner" = "wwwrun";
- "listen.group" = "wwwrun";
- "pm" = "dynamic";
- "pm.max_children" = "60";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "10";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "TaskPHPSESSID";
- "php_admin_value[open_basedir]" = "${./www}:/tmp:${server_vardir}:/etc/profiles/per-user/${user}/bin/";
- };
- phpEnv = {
- PATH = "/etc/profiles/per-user/${user}/bin";
- };
- phpPackage = pkgs.php72;
- };
- };
-
- security.acme.certs."task" = config.myServices.certificates.certConfig // {
- inherit user group;
- domain = fqdn;
- postRun = ''
- systemctl restart taskserver.service
- '';
- };
-
- users.users.${user} = {
- extraGroups = [ "keys" ];
- packages = [ taskserver-user-certs ];
- };
-
- system.activationScripts.taskserver = {
- deps = [ "users" ];
- text = ''
- install -m 0750 -o ${user} -g ${group} -d ${server_vardir}
- install -m 0750 -o ${user} -g ${group} -d ${server_vardir}/userkeys
- install -m 0750 -o ${user} -g ${group} -d ${server_vardir}/keys
-
- if [ ! -e "${server_vardir}/keys/ca.key" ]; then
- silent_certtool() {
- if ! output="$("${pkgs.gnutls.bin}/bin/certtool" "$@" 2>&1)"; then
- echo "GNUTLS certtool invocation failed with output:" >&2
- echo "$output" >&2
- fi
- }
-
- silent_certtool -p \
- --bits 4096 \
- --outfile "${server_vardir}/keys/ca.key"
-
- silent_certtool -s \
- --template "${pkgs.writeText "taskserver-ca.template" ''
- cn = ${fqdn}
- expiration_days = -1
- cert_signing_key
- ca
- ''}" \
- --load-privkey "${server_vardir}/keys/ca.key" \
- --outfile "${server_vardir}/keys/ca.cert"
-
- chown :${group} "${server_vardir}/keys/ca.key"
- chmod g+r "${server_vardir}/keys/ca.key"
- fi
- '';
- };
-
- services.taskserver = {
- enable = true;
- allowedClientIDs = [ "^task [2-9]" "^Mirakel [1-9]" ];
- inherit fqdn;
- listenHost = "::";
- pki.manual.ca.cert = "${server_vardir}/keys/ca.cert";
- pki.manual.server.cert = "${config.security.acme.certs.task.directory}/fullchain.pem";
- pki.manual.server.crl = "${config.security.acme.certs.task.directory}/invalid.crl";
- pki.manual.server.key = "${config.security.acme.certs.task.directory}/key.pem";
- requestLimit = 104857600;
- };
-
- system.activationScripts.taskwarrior-web = {
- deps = [ "users" ];
- text = ''
- if [ ! -f ${server_vardir}/userkeys/taskwarrior-web.cert.pem ]; then
- ${taskserver-user-certs}/bin/taskserver-user-certs taskwarrior-web
- chown taskd:taskd ${server_vardir}/userkeys/taskwarrior-web.cert.pem ${server_vardir}/userkeys/taskwarrior-web.key.pem
- fi
- '';
- };
-
- systemd.slices.taskwarrior = {
- description = "Taskwarrior slice";
- };
-
- systemd.services = (lib.attrsets.mapAttrs' (name: userConfig:
- lib.attrsets.nameValuePair "taskwarrior-web-${name}" {
- description = "Taskwarrior webapp for ${name}";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
- path = [ pkgs.taskwarrior ];
-
- environment.TASKRC = config.secrets.fullPaths."webapps/tools-taskwarrior/${name}-taskrc";
- environment.BUNDLE_PATH = "${taskwarrior-web.gems}/${taskwarrior-web.gems.ruby.gemPath}";
- environment.BUNDLE_GEMFILE = "${taskwarrior-web.gems.confFiles}/Gemfile";
- environment.LC_ALL = "fr_FR.UTF-8";
-
- script = ''
- exec ${taskwarrior-web.gems}/${taskwarrior-web.gems.ruby.gemPath}/bin/bundle exec thin start -R config.ru -S ${socketsDir}/${name}.sock
- '';
-
- serviceConfig = {
- Slice = "taskwarrior.slice";
- User = user;
- PrivateTmp = true;
- Restart = "always";
- TimeoutSec = 60;
- Type = "simple";
- WorkingDirectory = taskwarrior-web;
- StateDirectoryMode = 0750;
- StateDirectory = assert lib.strings.hasPrefix "/var/lib/" varDir;
- (lib.strings.removePrefix "/var/lib/" varDir + "/${name}");
- RuntimeDirectoryPreserve = "yes";
- RuntimeDirectory = assert lib.strings.hasPrefix "/run/" socketsDir;
- lib.strings.removePrefix "/run/" socketsDir;
- };
-
- unitConfig.RequiresMountsFor = varDir;
- }) env.taskwarrior-web) // {
- taskserver-ca.postStart = ''
- chown :${group} "${server_vardir}/keys/ca.key"
- chmod g+r "${server_vardir}/keys/ca.key"
- '';
- taskserver-ca.serviceConfig.Slice = "taskwarrior.slice";
- taskserver-init.serviceConfig.Slice = "taskwarrior.slice";
- taskserver.serviceConfig.Slice = "taskwarrior.slice";
- };
-
- };
-}
diff --git a/modules/private/tasks/www/index.php b/modules/private/tasks/www/index.php
deleted file mode 100644
index 49ccd24..0000000
--- a/modules/private/tasks/www/index.php
+++ /dev/null
@@ -1,168 +0,0 @@
- $value) {
- if ($key !== "count") {
- $entries[] = explode(":", $value);
- }
-}
-
-if (isset($_GET["file"])) {
- $basecert = $vardir . "/userkeys/" . $ldap_user;
- if (!file_exists($basecert . ".cert.pem")) {
- exec("taskserver-user-certs $ldap_user");
- }
- $certificate = file_get_contents($basecert . ".cert.pem");
- $cert_key = file_get_contents($basecert . ".key.pem");
-
- // IdenTrust DST Root CA X3
- // obtained here: https://letsencrypt.org/fr/certificates/
- $server_cert = "-----BEGIN CERTIFICATE-----
-MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
-TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
-cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
-WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
-ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
-MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
-h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
-0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
-A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
-T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
-B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
-B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
-KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
-OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
-jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
-qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
-rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
-HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
-hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
-ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
-3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
-NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
-ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
-TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
-jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
-oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
-4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
-mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
-emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
------END CERTIFICATE-----";
-
- $file = $_GET["file"];
- switch($file) {
- case "ca.cert.pem":
- $content = $server_cert;
- $name = "ca.cert.pem";
- $type = "application/x-x509-ca-cert";
- break;
- case "cert.pem":
- $content = $certificate;
- $name = $ldap_user . ".cert.pem";
- $type = "application/x-x509-ca-cert";
- break;
- case "key.pem":
- $content = $cert_key;
- $name = $ldap_user . ".key.pem";
- $type = "application/x-x509-ca-cert";
- break;
- case "mirakel";
- foreach ($entries as $entry) {
- list($org, $user, $key) = $entry;
- if ($key == $_GET["key"]) { break; }
- }
- $name = $user . ".mirakel";
- $type = "text/plain";
- $content = "username: $user
-org: $org
-user key: $key
-server: $host
-client.cert:
-$certificate
-Client.key:
-$cert_key
-ca.cert:
-$server_cert
-";
- break;
- default:
- die("invalid file name");
- break;
- }
-
- header("Content-Type: $type");
- header('Content-Disposition: attachment; filename="' . $name . '"');
- header('Content-Transfer-Encoding: binary');
- header('Accept-Ranges: bytes');
- header('Cache-Control: private');
- header('Pragma: private');
- echo $content;
- exit;
-}
-?>
-
-
- Taskwarrior configuration
-
-
-
-For command line interface, download the files, put them near your Taskwarrior
-configuration files, and add that to your Taskwarrior configuration:
-
-taskd.certificate=/path/to/.cert.pem
-taskd.key=/path/to/.key.pem
-taskd.server=
- 1) {
- echo "# Chose one of them\n";
- foreach($entries as $entry) {
- list($org, $user, $key) = $entry;
- echo "# taskd.credentials=$org/$user/$key\n";
- }
-} else { ?>
-taskd.credentials=//
-
-taskd.ca=/path/to/ca.cert.pem
-
-For Mirakel, download and import the file:
-
-For Android Taskwarrior app, see instructions here .
-
-
-
diff --git a/modules/private/vpn/default.nix b/modules/private/vpn/default.nix
deleted file mode 100644
index d4b197d..0000000
--- a/modules/private/vpn/default.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{ config, pkgs, lib, ... }:
-let
- cfg = config.myServices.vpn;
-in
-{
- options.myServices = {
- vpn.enable = lib.mkEnableOption "Enable vpn service";
- };
-
- config = lib.mkIf cfg.enable {
- secrets.keys = {
- "tinc/key.priv" = {
- user = "root";
- group = "root";
- permissions = "0400";
- text = config.myEnv.vpn.eldiron.privateKey;
- };
- "tinc/key.pub" = {
- user = "root";
- group = "root";
- permissions = "0400";
- text = config.myEnv.vpn.eldiron.publicKey;
- };
- };
- networking.firewall.allowedTCPPorts = [ 655 1194 ];
- system.activationScripts.tinc = let
- configFiles = pkgs.runCommand "tinc-files" {
- mainInterface = "eth0";
- hostName = "ImmaeEu";
- network = "Immae";
- keyFile = config.secrets.fullPaths."tinc/key.priv";
- } ''
- mkdir -p $out
- for i in ${./tinc}/*; do
- substituteAll $i $out/$(basename $i)
- done
- '';
- in ''
- install -m750 -o root -g root -d /var/lib/tinc/ /var/lib/tinc/Immae
- install -m700 -o root -g root -t /var/lib/tinc/Immae ${configFiles}/{host-*,tinc-*}
- install -m400 -o root -g root -t /var/lib/tinc/Immae ${configFiles}/tinc.conf
- if [ ! -d /var/lib/tinc/Immae/hosts ]; then
- ${pkgs.git}/bin/git clone -b master https://git.immae.eu/perso/Immae/Config/tinc/hosts /var/lib/tinc/Immae/hosts
- fi
- '';
-
- systemd.slices.tinc = {
- description = "Tinc slice";
- };
-
- systemd.services.tinc-Immae = {
- description = "Tinc Daemon - Immae";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
- path = [ pkgs.tinc pkgs.bashInteractive pkgs.iproute pkgs.gnused pkgs.gawk pkgs.git pkgs.glibc ];
- serviceConfig = {
- Slice = "tinc.slice";
- Type = "simple";
- Restart = "always";
- RestartSec = "3";
- ExecStart = "${pkgs.tinc}/bin/tincd -d1 -D -c /var/lib/tinc/Immae --pidfile /run/tinc.Immae.pid";
- };
- };
- };
-}
diff --git a/modules/private/vpn/tinc/host-down b/modules/private/vpn/tinc/host-down
deleted file mode 100755
index 1e79bd3..0000000
--- a/modules/private/vpn/tinc/host-down
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env bash
-
-SUBDOMAIN=$(echo "$NODE" | sed -e "s/\([A-Z][a-z0-9]*\)/\L\1 /g;" | awk '{ for (i=NF; i>1; i--) printf("%s.",$i); print $1; }')
-NODEIPS=`getent hosts ${SUBDOMAIN}.immae.eu | cut -d' ' -f1 | tr "\\n" ' '`
-for NODEIP in $NODEIPS; do
- ip neigh del proxy $NODEIP dev @mainInterface@
-done
diff --git a/modules/private/vpn/tinc/host-up b/modules/private/vpn/tinc/host-up
deleted file mode 100755
index 2f7cee2..0000000
--- a/modules/private/vpn/tinc/host-up
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env bash
-
-SUBDOMAIN=$(echo "$NODE" | sed -e "s/\([A-Z][a-z0-9]*\)/\L\1 /g;" | awk '{ for (i=NF; i>1; i--) printf("%s.",$i); print $1; }')
-while [ -z "$NODEIPS" ]; do
- NODEIPS=`getent hosts ${SUBDOMAIN}.immae.eu | cut -d' ' -f1 | tr "\\n" ' '`
- sleep 5
-done
-for NODEIP in $NODEIPS; do
- ip neigh add proxy $NODEIP dev @mainInterface@
-done
-(cd /var/lib/tinc/@network@/hosts && git pull -q origin master) || true
diff --git a/modules/private/vpn/tinc/tinc-down b/modules/private/vpn/tinc/tinc-down
deleted file mode 100755
index 1cc45c0..0000000
--- a/modules/private/vpn/tinc/tinc-down
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-# This file closes down the tap device.
-
-echo 0 > /proc/sys/net/ipv6/conf/@mainInterface@/proxy_ndp
-echo 0 > /proc/sys/net/ipv6/conf/all/forwarding
-
-GWIP=`getent hosts gw.vpn.immae.eu | head -n1 | cut -d' ' -f1`
-
-ip neigh del proxy $GWIP dev eth0
-
-ip -6 addr del $GWIP/96 dev $INTERFACE
-ip -6 link set $INTERFACE down
diff --git a/modules/private/vpn/tinc/tinc-up b/modules/private/vpn/tinc/tinc-up
deleted file mode 100755
index 26c1ec3..0000000
--- a/modules/private/vpn/tinc/tinc-up
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env bash
-
-echo 1 > /proc/sys/net/ipv6/conf/@mainInterface@/proxy_ndp
-echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
-
-SUBNET=`getent hosts sn.vpn.immae.eu | head -n1 | cut -d' ' -f1`
-GWIP=`getent hosts gw.vpn.immae.eu | head -n1 | cut -d' ' -f1`
-
-ip -6 link set $INTERFACE up mtu 1280 txqueuelen 1000
-
-ip -6 addr add $GWIP/96 dev $INTERFACE
-ip -6 route add $SUBNET/80 dev $INTERFACE
-
-ip neigh add proxy $GWIP dev @mainInterface@
diff --git a/modules/private/vpn/tinc/tinc.conf b/modules/private/vpn/tinc/tinc.conf
deleted file mode 100644
index 7a4f103..0000000
--- a/modules/private/vpn/tinc/tinc.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-BindToAddress = * 655
-BindToAddress = * 1194
-
-Name = @hostName@
-Interface = vpn6
-
-Mode = switch
-
-Device = /dev/net/tun
-GraphDumpFile = /var/lib/tinc/@network@/tinc_graph
-PrivateKeyFile = @keyFile@
diff --git a/modules/private/websites/_www/googleb6d69446ff4ca3e5.html b/modules/private/websites/_www/googleb6d69446ff4ca3e5.html
deleted file mode 100644
index ff6dbf3..0000000
--- a/modules/private/websites/_www/googleb6d69446ff4ca3e5.html
+++ /dev/null
@@ -1 +0,0 @@
-google-site-verification: googleb6d69446ff4ca3e5.html
\ No newline at end of file
diff --git a/modules/private/websites/_www/index.htm b/modules/private/websites/_www/index.htm
deleted file mode 100644
index 0274251..0000000
--- a/modules/private/websites/_www/index.htm
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Hello World HTML
-
-
- It works!
-
-
diff --git a/modules/private/websites/_www/maintenance_immae.html b/modules/private/websites/_www/maintenance_immae.html
deleted file mode 100644
index 90f265f..0000000
--- a/modules/private/websites/_www/maintenance_immae.html
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
- Maintenance
-
-
-
-
-
-
- Erreur serveur ou maintenance en cours !
-
-
Une mise à jour ou une opération de maintenance est en cours sur le site. Retentez dans quelques instants ou patientez, la page se rechargera automatiquement.
-
-
-
-
- Server error or website in maintenance!
-
-
An update or a maintenance is on track on the website. Please try again in a few seconds or wait, the page will reload automatically.
-
-
-
-
diff --git a/modules/private/websites/_www/nossl.html b/modules/private/websites/_www/nossl.html
deleted file mode 100644
index 4401a80..0000000
--- a/modules/private/websites/_www/nossl.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- No SSL site
-
-
- No SSL on this site
- Use for wifi networks with login page that doesn't work well with
- https.
-
-
diff --git a/modules/private/websites/bakeer/cloud.nix b/modules/private/websites/bakeer/cloud.nix
deleted file mode 100644
index bf78317..0000000
--- a/modules/private/websites/bakeer/cloud.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.bakeer.cloud;
- nextcloud = config.myServices.tools.cloud.farm.package;
-in {
- options.myServices.websites.bakeer.cloud.enable = lib.mkEnableOption "enable Bakeer’s cloud";
-
- config = lib.mkIf cfg.enable {
- myServices.tools.cloud.farm.instances = [ "bakeer" ];
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.bakeer = {
- certName = "bakeer";
- certMainHost = "bakeer.immae.eu";
- addToCerts = true;
- hosts = ["bakeer.immae.eu" "baxsolution.immae.eu"];
- root = nextcloud;
- extraConfig = [
- config.myServices.tools.cloud.farm.vhosts.bakeer
- ];
- };
- };
-}
-
diff --git a/modules/private/websites/capitaines/discourse_static/discourse.png b/modules/private/websites/capitaines/discourse_static/discourse.png
deleted file mode 100644
index 91ce42d..0000000
Binary files a/modules/private/websites/capitaines/discourse_static/discourse.png and /dev/null differ
diff --git a/modules/private/websites/capitaines/discourse_static/index.html b/modules/private/websites/capitaines/discourse_static/index.html
deleted file mode 100644
index 4c2ead0..0000000
--- a/modules/private/websites/capitaines/discourse_static/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- This instance is now closed - Discourse
-
-
-
-
-
-
Sorry, this instance is closed now.
-
-
-
diff --git a/modules/private/websites/capitaines/landing_pages.nix b/modules/private/websites/capitaines/landing_pages.nix
deleted file mode 100644
index edba8b9..0000000
--- a/modules/private/websites/capitaines/landing_pages.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ lib, config, ... }:
-let
- cfg = config.myServices.websites.capitaines.landing_pages;
- certName = "capitaines";
- domain = "capitaines.fr";
-in {
- options.myServices.websites.capitaines.landing_pages.enable = lib.mkEnableOption "enable Capitaines's landing pages";
-
- config = lib.mkIf cfg.enable {
- services.websites.env.production.vhostConfs.capitaines_mastodon = rec {
- inherit certName;
- certMainHost = "mastodon.${domain}";
- hosts = [ certMainHost ];
- root = ./mastodon_static;
- extraConfig = [
- ''
- ErrorDocument 404 /index.html
-
- DirectoryIndex index.html
- Options Indexes FollowSymLinks MultiViews Includes
- Require all granted
-
- ''
- ];
- };
-
- services.websites.env.production.vhostConfs.capitaines_discourse = {
- inherit certName;
- addToCerts = true;
- hosts = [ "discourse.${domain}" ];
- root = ./discourse_static;
- extraConfig = [
- ''
- ErrorDocument 404 /index.html
-
- DirectoryIndex index.html
- Options Indexes FollowSymLinks MultiViews Includes
- Require all granted
-
- ''
- ];
- };
-
- services.websites.env.production.vhostConfs.capitaines = {
- inherit certName;
- addToCerts = true;
- hosts = [ domain ];
- root = ../_www;
- extraConfig = [ ''
-
- DirectoryIndex index.htm
- Require all granted
-
- '' ];
- };
- };
-}
diff --git a/modules/private/websites/capitaines/mastodon_static/index.html b/modules/private/websites/capitaines/mastodon_static/index.html
deleted file mode 100644
index fae4152..0000000
--- a/modules/private/websites/capitaines/mastodon_static/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
- This instance is now closed - Mastodon
-
-
-
-
-
-
Sorry, this instance is closed now.
-
-
-
diff --git a/modules/private/websites/capitaines/mastodon_static/oops.png b/modules/private/websites/capitaines/mastodon_static/oops.png
deleted file mode 100644
index 0abddad..0000000
Binary files a/modules/private/websites/capitaines/mastodon_static/oops.png and /dev/null differ
diff --git a/modules/private/websites/chloe/app/default.nix b/modules/private/websites/chloe/app/default.nix
deleted file mode 100644
index d23e3e0..0000000
--- a/modules/private/websites/chloe/app/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ environment ? "prod"
-, varDir ? "/var/lib/chloe_${environment}"
-, spip, stdenv, sassc, sources }:
-let
- siteDir = stdenv.mkDerivation {
- version = sources.websites-chloe-app.version;
- pname = "chloe";
- src = sources.websites-chloe-app;
- buildPhase = ''
- make
- '';
- installPhase = ''
- cp -a . $out
- '';
- buildInputs = [ sassc ];
- };
-in
-spip.override {
- ldap = true;
- siteName = "chloe";
- inherit environment siteDir varDir;
-}
diff --git a/modules/private/websites/chloe/config/chmod.php b/modules/private/websites/chloe/config/chmod.php
deleted file mode 100644
index aae16cd..0000000
--- a/modules/private/websites/chloe/config/chmod.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/private/websites/chloe/config/connect.php b/modules/private/websites/chloe/config/connect.php
deleted file mode 100644
index 18b0933..0000000
--- a/modules/private/websites/chloe/config/connect.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/modules/private/websites/chloe/config/ldap.php b/modules/private/websites/chloe/config/ldap.php
deleted file mode 100644
index 825b7ed..0000000
--- a/modules/private/websites/chloe/config/ldap.php
+++ /dev/null
@@ -1,9 +0,0 @@
- array('sAMAccountName','uid','login','userid','cn','sn'),'nom' => 'cn','email' => 'mail','bio' => 'description',);
-$GLOBALS['ldap_search'] = getenv("SPIP_LDAP_SEARCH");
-?>
diff --git a/modules/private/websites/chloe/integration.nix b/modules/private/websites/chloe/integration.nix
deleted file mode 100644
index 533568e..0000000
--- a/modules/private/websites/chloe/integration.nix
+++ /dev/null
@@ -1,104 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- apacheUser = config.services.httpd.Inte.user;
- apacheGroup = config.services.httpd.Inte.group;
- ccfg = config.myEnv.websites.chloe.integration;
- webRoot = "/var/lib/ftp/immae/chloe";
- varDir = "/var/lib/ftp/immae/chloe_var";
- cfg = config.myServices.websites.chloe.integration;
-in {
- options.myServices.websites.chloe.integration.enable = lib.mkEnableOption "enable Chloe's website in integration";
-
- config = lib.mkIf cfg.enable {
- secrets.keys."websites/chloe/integration" = {
- user = apacheUser;
- group = apacheGroup;
- permissions = "0400";
- text = ''
- SetEnv SPIP_CONFIG_DIR "${./config}"
- SetEnv SPIP_VAR_DIR "${varDir}"
- SetEnv SPIP_SITE "chloe-dev"
- SetEnv SPIP_LDAP_BASE "dc=immae,dc=eu"
- SetEnv SPIP_LDAP_HOST "ldaps://ldap.immae.eu"
- SetEnv SPIP_LDAP_SEARCH_DN "${ccfg.ldap.dn}"
- SetEnv SPIP_LDAP_SEARCH_PW "${ccfg.ldap.password}"
- SetEnv SPIP_LDAP_SEARCH "${ccfg.ldap.filter}"
- SetEnv SPIP_MYSQL_HOST "${ccfg.mysql.host}"
- SetEnv SPIP_MYSQL_PORT "${ccfg.mysql.port}"
- SetEnv SPIP_MYSQL_DB "${ccfg.mysql.database}"
- SetEnv SPIP_MYSQL_USER "${ccfg.mysql.user}"
- SetEnv SPIP_MYSQL_PASSWORD "${ccfg.mysql.password}"
- '';
- };
- systemd.services.phpfpm-chloe_integration.after = lib.mkAfter [ "mysql.service" ];
- systemd.services.phpfpm-chloe_integration.wants = [ "mysql.service" ];
- services.phpfpm.pools.chloe_integration = {
- user = config.services.httpd.Inte.user;
- group = config.services.httpd.Inte.group;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- # "php_admin_flag[log_errors]" = "on";
- "php_admin_value[open_basedir]" = "${../../../../pkgs/webapps/spip/spip_mes_options.php}:${./config}:${webRoot}:${varDir}:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
- };
- phpPackage = pkgs.php72;
- };
- system.activationScripts.chloe_integration = {
- deps = [ "wrappers" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d ${varDir} ${varDir}/IMG ${varDir}/tmp ${varDir}/local
- install -m 0750 -o ${apacheUser} -g ${apacheGroup} -d ${varDir}/phpSessions
- '';
- };
- services.websites.env.integration.modules = [ "proxy_fcgi" ];
- services.websites.env.integration.vhostConfs.chloe_integration = {
- certName = "integration";
- addToCerts = true;
- hosts = ["test.chc.immae.dev" ];
- root = webRoot;
- extraConfig = [
- ''
- Include ${config.secrets.fullPaths."websites/chloe/integration"}
-
- RewriteEngine On
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.chloe_integration.socket}|fcgi://localhost"
-
-
-
- DirectoryIndex index.php index.htm index.html
- Options -Indexes +FollowSymLinks +MultiViews +Includes
- Include ${webRoot}/htaccess.txt
-
- AllowOverride AuthConfig FileInfo Limit
- Require all granted
-
-
-
- Require all denied
-
-
-
- Require all denied
-
-
-
- Use LDAPConnect
- Require ldap-group cn=chc.immae.dev,cn=httpd,ou=services,dc=immae,dc=eu
- ErrorDocument 401 " "
-
- ''
- ];
- };
- services.websites.env.integration.watchPaths = [
- config.secrets.fullPaths."websites/chloe/integration"
- ];
- };
-}
diff --git a/modules/private/websites/chloe/production.nix b/modules/private/websites/chloe/production.nix
deleted file mode 100644
index 211232c..0000000
--- a/modules/private/websites/chloe/production.nix
+++ /dev/null
@@ -1,112 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
- ccfg = config.myEnv.websites.chloe.production;
- app = pkgs.callPackage ./app {
- inherit (ccfg) environment;
- inherit (pkgs.webapps) spip;
- varDir = "/var/lib/chloe_production";
- };
- cfg = config.myServices.websites.chloe.production;
-in {
- options.myServices.websites.chloe.production.enable = lib.mkEnableOption "enable Chloe's website in production";
-
- config = lib.mkIf cfg.enable {
- secrets.keys."websites/chloe/production" = {
- user = apacheUser;
- group = apacheGroup;
- permissions = "0400";
- text = ''
- SetEnv SPIP_CONFIG_DIR "${./config}"
- SetEnv SPIP_VAR_DIR "${app.varDir}"
- SetEnv SPIP_SITE "chloe-${app.environment}"
- SetEnv SPIP_LDAP_BASE "dc=immae,dc=eu"
- SetEnv SPIP_LDAP_HOST "ldaps://ldap.immae.eu"
- SetEnv SPIP_LDAP_SEARCH_DN "${ccfg.ldap.dn}"
- SetEnv SPIP_LDAP_SEARCH_PW "${ccfg.ldap.password}"
- SetEnv SPIP_LDAP_SEARCH "${ccfg.ldap.filter}"
- SetEnv SPIP_MYSQL_HOST "${ccfg.mysql.host}"
- SetEnv SPIP_MYSQL_PORT "${ccfg.mysql.port}"
- SetEnv SPIP_MYSQL_DB "${ccfg.mysql.database}"
- SetEnv SPIP_MYSQL_USER "${ccfg.mysql.user}"
- SetEnv SPIP_MYSQL_PASSWORD "${ccfg.mysql.password}"
- '';
- };
- services.webstats.sites = [ { name = "osteopathe-cc.fr"; } ];
-
- systemd.services.phpfpm-chloe_production.after = lib.mkAfter [ "mysql.service" ];
- systemd.services.phpfpm-chloe_production.wants = [ "mysql.service" ];
- services.phpfpm.pools.chloe_production = {
- user = config.services.httpd.Prod.user;
- group = config.services.httpd.Prod.group;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- # "php_admin_flag[log_errors]" = "on";
- "php_admin_value[open_basedir]" = "${app.spipConfig}:${./config}:${app}:${app.varDir}:/tmp";
- "php_admin_value[session.save_path]" = "${app.varDir}/phpSessions";
- "pm" = "dynamic";
- "pm.max_children" = "20";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "3";
- };
- phpPackage = pkgs.php72;
- };
- system.activationScripts.chloe_production = {
- deps = [ "wrappers" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d ${app.varDir} ${app.varDir}/IMG ${app.varDir}/tmp ${app.varDir}/local
- install -m 0750 -o ${apacheUser} -g ${apacheGroup} -d ${app.varDir}/phpSessions
- '';
- };
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.chloe = {
- certName = "chloe";
- certMainHost = "osteopathe-cc.fr";
- hosts = ["osteopathe-cc.fr" "www.osteopathe-cc.fr" ];
- root = app.webRoot;
- extraConfig = [
- ''
- Use Stats osteopathe-cc.fr
-
- RewriteEngine On
- RewriteCond "%{HTTP_HOST}" "!^www\.osteopathe-cc\.fr$" [NC]
- RewriteRule ^(.+)$ https://www.osteopathe-cc.fr$1 [R=302,L]
-
- Include ${config.secrets.fullPaths."websites/chloe/production"}
-
- RewriteEngine On
- RewriteRule ^/news.rss /spip.php?page=backend&id_rubrique=1
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.chloe_production.socket}|fcgi://localhost"
-
-
-
- DirectoryIndex index.php index.htm index.html
- Options -Indexes +FollowSymLinks +MultiViews +Includes
- Include ${app.webRoot}/htaccess.txt
-
- AllowOverride AuthConfig FileInfo Limit
- Require all granted
-
-
-
- Require all denied
-
-
-
- Require all denied
-
- ''
- ];
- };
- services.websites.env.production.watchPaths = [
- config.secrets.fullPaths."websites/chloe/production"
- ];
- };
-}
diff --git a/modules/private/websites/cip-ca/sympa.nix b/modules/private/websites/cip-ca/sympa.nix
deleted file mode 100644
index bb66fc6..0000000
--- a/modules/private/websites/cip-ca/sympa.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, config, ... }:
-let
- cfg = config.myServices.websites.cip-ca.sympa;
-in
-{
- options.myServices.websites.cip-ca.sympa.enable = lib.mkEnableOption "enable cip-ca’s sympa website";
- config = lib.mkIf cfg.enable {
- services.websites.env.tools.vhostConfs.cipca_sympa = {
- certName = "cip-ca";
- certMainHost = "mail.cip-ca.fr";
- hosts = [ "mail.cip-ca.fr" ];
- root = null;
- extraConfig = [
- ''
- Alias /static-sympa/ /var/lib/sympa/static_content/
-
- Require all granted
- AllowOverride none
-
-
- SetHandler "proxy:unix:/run/sympa/wwsympa.socket|fcgi://"
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/commons/adminer.nix b/modules/private/websites/commons/adminer.nix
deleted file mode 100644
index eae6a9a..0000000
--- a/modules/private/websites/commons/adminer.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-{ config, callPackage }:
-callPackage ../tools/tools/adminer.nix {
- forcePhpSocket = config.services.phpfpm.pools.adminer.socket;
-}
diff --git a/modules/private/websites/connexionswing/app/default.nix b/modules/private/websites/connexionswing/app/default.nix
deleted file mode 100644
index b14b03b..0000000
--- a/modules/private/websites/connexionswing/app/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ environment, varDir, secretsPath
-, composerEnv, fetchurl, fetchgit, sources }:
-let
- app = composerEnv.buildPackage (
- import ./php-packages.nix { inherit composerEnv fetchurl fetchgit; } //
- rec {
- pname = "connexionswing";
- name = "${pname}-${version}";
- version = sources.websites-connexionswing-app.version;
- src = sources.websites-connexionswing-app;
- noDev = (environment == "prod");
- preInstall = ''
- export SYMFONY_ENV="${environment}"
- '';
- postInstall = ''
- cd $out
- ${if environment == "prod" then "php ./bin/console assetic:dump --env=prod --no-debug" else ""}
- rm app/config/parameters.yml
- ln -sf ${secretsPath} app/config/parameters.yml
- rm -rf var/{logs,cache}
- ln -sf ${varDir}/var/{logs,cache} var/
- ln -sf ${varDir}/{medias,uploads} web/images/
- '';
- passthru = {
- inherit varDir environment;
- webRoot = "${app}/web";
- };
- });
-in app
diff --git a/modules/private/websites/connexionswing/app/php-packages.nix b/modules/private/websites/connexionswing/app/php-packages.nix
deleted file mode 100644
index 10bb737..0000000
--- a/modules/private/websites/connexionswing/app/php-packages.nix
+++ /dev/null
@@ -1,597 +0,0 @@
-# Generated with composer2nix and adapted to return only the list of
-# packages
-{ composerEnv, fetchurl, fetchgit ? null }:
-{
- packages = {
- "behat/transliterator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "behat-transliterator-826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c";
- src = fetchurl {
- url = https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c;
- sha256 = "1mgc9azx79fkrxahji3xwbgqhlcnvh3xk6llqdvhjb7vgzj4bqq0";
- };
- };
- };
- "components/bootstrap" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "components-bootstrap-670295b9d6170a79acc8586a15e729bf24128275";
- src = fetchurl {
- url = https://api.github.com/repos/components/bootstrap/zipball/670295b9d6170a79acc8586a15e729bf24128275;
- sha256 = "0lcq9cjnywvf1nd8k99flgcf2dmfgyyxzsvcpip8xiibmh5x04p9";
- };
- };
- };
- "components/jquery" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "components-jquery-5dd7297d7603e11e53bdcca2a71074d92de37b8f";
- src = fetchurl {
- url = https://api.github.com/repos/components/jquery/zipball/5dd7297d7603e11e53bdcca2a71074d92de37b8f;
- sha256 = "1maplw3yic1pzbwwl2amjlivipsi1w0r8bq7i0mmjaqf7wij506i";
- };
- };
- };
- "components/jqueryui" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "components-jqueryui-44ecf3794cc56b65954cc19737234a3119d036cc";
- src = fetchurl {
- url = https://api.github.com/repos/components/jqueryui/zipball/44ecf3794cc56b65954cc19737234a3119d036cc;
- sha256 = "1y0ppxk44jkxbh38i05sg0zcgk927s5wy6sjngwr5qifibqbcbhk";
- };
- };
- };
- "composer/ca-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "composer-ca-bundle-d2c0a83b7533d6912e8d516756ebd34f893e9169";
- src = fetchurl {
- url = https://api.github.com/repos/composer/ca-bundle/zipball/d2c0a83b7533d6912e8d516756ebd34f893e9169;
- sha256 = "1as399dzrfbjnifb87j1g5cvrbacyddbay8fv59i56xx1bdq7lwc";
- };
- };
- };
- "doctrine/annotations" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-annotations-54cacc9b81758b14e3ce750f205a393d52339e97";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97;
- sha256 = "1wi5skihqbcinlkrkr15nmmvqkn2gydqib8xl232abdvfq1q0w24";
- };
- };
- };
- "doctrine/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-cache-eb152c5100571c7a45470ff2a35095ab3f3b900b";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/cache/zipball/eb152c5100571c7a45470ff2a35095ab3f3b900b;
- sha256 = "0iq0qqv1smlqz63jhj2fpjy54c5dwfwxyf5c89iky6i0yb81gwyd";
- };
- };
- };
- "doctrine/collections" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-collections-1a4fb7e902202c33cce8c55989b945612943c2ba";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba;
- sha256 = "0fkiwkx7zbmfnh4p21za807lh1n7g1f4lpgy8y59g4r5krvpl90w";
- };
- };
- };
- "doctrine/common" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-common-4acb8f89626baafede6ee5475bc5844096eba8a9";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/common/zipball/4acb8f89626baafede6ee5475bc5844096eba8a9;
- sha256 = "0qjqframvg81z3lwqaj5haanqj9v3dfbj170pxmwlgmrfsbr16zh";
- };
- };
- };
- "doctrine/dbal" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-dbal-729340d8d1eec8f01bff708e12e449a3415af873";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/dbal/zipball/729340d8d1eec8f01bff708e12e449a3415af873;
- sha256 = "184p8h0n6mcm0y6vfyh0z6qcxmmf8h5z4vdvxd4ycmx0531lnhj3";
- };
- };
- };
- "doctrine/doctrine-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-bundle-703fad32e4c8cbe609caf45a71a1d4266c830f0f";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineBundle/zipball/703fad32e4c8cbe609caf45a71a1d4266c830f0f;
- sha256 = "0v2f63j22i3im8jbmv7spi8j42fay6dnxjvbxnbwj190ajxl6sdp";
- };
- };
- };
- "doctrine/doctrine-cache-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-cache-bundle-4c8e363f96427924e7e519c5b5119b4f54512697";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/4c8e363f96427924e7e519c5b5119b4f54512697;
- sha256 = "1irm04iijzq6gziknwyb10a9s0xbzh04xs5i2d6aac86cc29187c";
- };
- };
- };
- "doctrine/doctrine-migrations-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-migrations-bundle-a9e506369f931351a2a6dd2aef588a822802b1b7";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/a9e506369f931351a2a6dd2aef588a822802b1b7;
- sha256 = "1jgrqsgdwcm2g8rml76qr6b19s1vxfbnrp43qr6n1g9kbx7y9wg9";
- };
- };
- };
- "doctrine/inflector" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-inflector-90b2128806bfde671b6952ab8bea493942c1fdae";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae;
- sha256 = "01vmclj3k7xil51jg329fznshh8d07pvm4mr89lvfn1d7fyrq6qw";
- };
- };
- };
- "doctrine/instantiator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-instantiator-8e884e78f9f0eb1329e445619e04456e64d8051d";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d;
- sha256 = "15dcja45rnwya431pcm826l68k1g8f1fabl7rih69alcdyvdlln4";
- };
- };
- };
- "doctrine/lexer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-lexer-83893c552fd2045dd78aef794c31e694c37c0b8c";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c;
- sha256 = "0cyh3vwcl163cx1vrcwmhlh5jg9h47xwiqgzc6rwscxw0ppd1v74";
- };
- };
- };
- "doctrine/migrations" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-migrations-c81147c0f2938a6566594455367e095150547f72";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/migrations/zipball/c81147c0f2938a6566594455367e095150547f72;
- sha256 = "0x8hvxbm3f40sx25nq8zlh1kr936pagghzp89l0gdy5bar7cdzi5";
- };
- };
- };
- "doctrine/orm" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-orm-810a7baf81462a5ddf10e8baa8cb94b6eec02754";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/doctrine2/zipball/810a7baf81462a5ddf10e8baa8cb94b6eec02754;
- sha256 = "1hmkc7917kgnav9hmlgvlp7qwm3zjj910ci71g9yqwjh6s28wrf1";
- };
- };
- };
- "fig/link-util" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "fig-link-util-1a07821801a148be4add11ab0603e4af55a72fac";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac;
- sha256 = "0ky1pq4a17br5zvcychjghgwr6wpkgp409hdv0ljdk3ks90w5w64";
- };
- };
- };
- "friendsofsymfony/jsrouting-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "friendsofsymfony-jsrouting-bundle-49c1069132dcef371fb526351569deabeb6f0d8e";
- src = fetchurl {
- url = https://api.github.com/repos/FriendsOfSymfony/FOSJsRoutingBundle/zipball/49c1069132dcef371fb526351569deabeb6f0d8e;
- sha256 = "0ymmxhxbjnzj8bk3zq55vq0xvsaq82348v321gy2jyi90d19p5j7";
- };
- };
- };
- "gedmo/doctrine-extensions" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "gedmo-doctrine-extensions-1e400fbd05b7e5f912f55fe95805450f7d3bed60";
- src = fetchurl {
- url = https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/1e400fbd05b7e5f912f55fe95805450f7d3bed60;
- sha256 = "14hmivynyzc1c9l5kxj9gbwjrkv9m9lrjjx2r1m74wdhi5p0p20v";
- };
- };
- };
- "immae/connexionswing-ckeditor-component" = {
- targetDir = "";
- src = fetchgit {
- name = "immae-connexionswing-ckeditor-component-3b35bd273a79f6b01fda7a246aed64aca147ea7a";
- url = "https://git.immae.eu/perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git";
- rev = "3b35bd273a79f6b01fda7a246aed64aca147ea7a";
- sha256 = "1w0y6k28ci73n0db9gwvqg7grzvh1z718ys9v1ik8cla7zw83bni";
- };
- };
- "immae/jquery-touchswipe" = {
- targetDir = "";
- src = fetchgit {
- name = "immae-jquery-touchswipe-3e15949df974d6612d76dc9ee75cd976dbcc2114";
- url = "https://git.immae.eu/perso/Immae/Projets/packagist/jquery-touchswipe.git";
- rev = "3e15949df974d6612d76dc9ee75cd976dbcc2114";
- sha256 = "1pnvki1j3a65cdwwqs0id790ni813lh3r0m7556gdn0hsqa1cc4d";
- };
- };
- "incenteev/composer-parameter-handler" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "incenteev-composer-parameter-handler-933c45a34814f27f2345c11c37d46b3ca7303550";
- src = fetchurl {
- url = https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550;
- sha256 = "1zqdwlcl790kjyz4rkpva35xkfsp8kslds82fzznj0yigkgnbifm";
- };
- };
- };
- "jdorn/sql-formatter" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "jdorn-sql-formatter-64990d96e0959dff8e059dfcdc1af130728d92bc";
- src = fetchurl {
- url = https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc;
- sha256 = "1dnmkm8mxylvxjwi0bdkzrlklncqx92fa4fwqp5bh2ypj8gaagzi";
- };
- };
- };
- "kriswallsmith/assetic" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "kriswallsmith-assetic-e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1";
- src = fetchurl {
- url = https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1;
- sha256 = "1dqk4zvx8fgqf8rb81sj9bipl5431jib2b9kcvxyig5fw99irpf8";
- };
- };
- };
- "monolog/monolog" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "monolog-monolog-fd8c787753b3a2ad11bc60c063cff1358a32a3b4";
- src = fetchurl {
- url = https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4;
- sha256 = "0avf3y8raw23krwdb7kw9qb5bsr5ls4i7qd2vh7hcds3qjixg3h9";
- };
- };
- };
- "ocramius/proxy-manager" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "ocramius-proxy-manager-57e9272ec0e8deccf09421596e0e2252df440e11";
- src = fetchurl {
- url = https://api.github.com/repos/Ocramius/ProxyManager/zipball/57e9272ec0e8deccf09421596e0e2252df440e11;
- sha256 = "10crhcnhz42b01i6lv6ysgc7awp7yw82p4i2a4sg6bjihw677yps";
- };
- };
- };
- "paragonie/random_compat" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "paragonie-random_compat-258c89a6b97de7dfaf5b8c7607d0478e236b04fb";
- src = fetchurl {
- url = https://api.github.com/repos/paragonie/random_compat/zipball/258c89a6b97de7dfaf5b8c7607d0478e236b04fb;
- sha256 = "11arrici2mgfj7r847wm423pqrvfj9wn9jcgyxnq4rzyahaxz5l1";
- };
- };
- };
- "psr/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-cache-d11b50ad223250cf17b86e38383413f5a6764bf8";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8;
- sha256 = "06i2k3dx3b4lgn9a4v1dlgv8l9wcl4kl7vzhh63lbji0q96hv8qz";
- };
- };
- };
- "psr/container" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-container-b7ce3b176482dbbc1245ebf52b181af44c2cf55f";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f;
- sha256 = "0rkz64vgwb0gfi09klvgay4qnw993l1dc03vyip7d7m2zxi6cy4j";
- };
- };
- };
- "psr/link" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-link-eea8e8662d5cd3ae4517c9b864493f59fca95562";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562;
- sha256 = "091k4p9irkqnmq9b0p792wz1hb7dm4rafpjilw9im9xhsxgkmr13";
- };
- };
- };
- "psr/log" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-log-4ebe3a8bf773a19edfe0a84b6585ba3d401b724d";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d;
- sha256 = "1mlcv17fjw39bjpck176ah1z393b6pnbw3jqhhrblj27c70785md";
- };
- };
- };
- "psr/simple-cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-simple-cache-408d5eafb83c57f6365a3ca330ff23aa4a5fa39b";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b;
- sha256 = "1djgzclkamjxi9jy4m9ggfzgq1vqxaga2ip7l3cj88p7rwkzjxgw";
- };
- };
- };
- "ricbra/robots-txt-bundle" = {
- targetDir = "Ricbra/Bundle/RobotsTxtBundle";
- src = composerEnv.buildZipPackage {
- name = "ricbra-robots-txt-bundle-80d122a708893a762041464890e59a76babd6c22";
- src = fetchurl {
- url = https://api.github.com/repos/ricbra/robots-txt-bundle/zipball/80d122a708893a762041464890e59a76babd6c22;
- sha256 = "0w3lfzy1ys0bwl3shy4ychldfd711w1p2y13i1az2z2gh731d0ad";
- };
- };
- };
- "robloach/component-installer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "robloach-component-installer-908a859aa7c4949ba9ad67091e67bac10b66d3d7";
- src = fetchurl {
- url = https://api.github.com/repos/RobLoach/component-installer/zipball/908a859aa7c4949ba9ad67091e67bac10b66d3d7;
- sha256 = "19y5sv4k338bihzmm8iac6q43r18vxhmbpvrdhz8jn39r51ampq9";
- };
- };
- };
- "sensio/distribution-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensio-distribution-bundle-eb6266b3b472e4002538610b28a0a04bcf94891a";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/eb6266b3b472e4002538610b28a0a04bcf94891a;
- sha256 = "0wyffqj924lz9cv0vbahyngjw1g850v0p34swygzzgp3cr0ank13";
- };
- };
- };
- "sensio/framework-extra-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensio-framework-extra-bundle-bb907234df776b68922eb4b25bfa061683597b6a";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/bb907234df776b68922eb4b25bfa061683597b6a;
- sha256 = "011hcljjcfq5qy4a7mlf0hwqxyb58yci40ini0n5rqandcyk2nck";
- };
- };
- };
- "sensiolabs/security-checker" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensiolabs-security-checker-dc270d5fec418cc6ac983671dba5d80ffaffb142";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/security-checker/zipball/dc270d5fec418cc6ac983671dba5d80ffaffb142;
- sha256 = "0fnshyd6f8j91a7y604nh6sqgscjl48mfa0727g2r4hkdfz8hpd1";
- };
- };
- };
- "swiftmailer/swiftmailer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "swiftmailer-swiftmailer-7ffc1ea296ed14bf8260b6ef11b80208dbadba91";
- src = fetchurl {
- url = https://api.github.com/repos/swiftmailer/swiftmailer/zipball/7ffc1ea296ed14bf8260b6ef11b80208dbadba91;
- sha256 = "1vl5pzgvr2yfrj1yfs02mi917b0gr56v76ibi40r51a3346zhp6v";
- };
- };
- };
- "symfony/assetic-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-assetic-bundle-2e0a23a4874838e26de6f025e02fc63328921a4c";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/assetic-bundle/zipball/2e0a23a4874838e26de6f025e02fc63328921a4c;
- sha256 = "17rxrkyzxa6x5nn7qhhhdgx4z0nlznnq5fifza4wv9znca8bbwyc";
- };
- };
- };
- "symfony/monolog-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-monolog-bundle-8781649349fe418d51d194f8c9d212c0b97c40dd";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/monolog-bundle/zipball/8781649349fe418d51d194f8c9d212c0b97c40dd;
- sha256 = "0wcqhg1vfdj3mxacr3fxpgqwy1rk9znjg9bmzx4jymk8l16i7bq8";
- };
- };
- };
- "symfony/polyfill-apcu" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-apcu-9b83bd010112ec196410849e840d9b9fefcb15ad";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-apcu/zipball/9b83bd010112ec196410849e840d9b9fefcb15ad;
- sha256 = "0iiiqbn0bs0zqc95nz8l1qa5ysy0iifx4f27r9wnhzsh6f1h02mv";
- };
- };
- };
- "symfony/polyfill-intl-icu" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-intl-icu-80ee17ae83c10cd513e5144f91a73607a21edb4e";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/80ee17ae83c10cd513e5144f91a73607a21edb4e;
- sha256 = "1hck9bn8zfb1pmx2yccf4w5dd9rbmvwii7hncin6px6nasi6wzvv";
- };
- };
- };
- "symfony/polyfill-mbstring" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-mbstring-3296adf6a6454a050679cde90f95350ad604b171";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171;
- sha256 = "02wyx9fjx9lyc5q5d3bnn8aw9xag8im2wqanmbkljwd5vmx9k9b2";
- };
- };
- };
- "symfony/polyfill-php56" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-php56-af98553c84912459db3f636329567809d639a8f6";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-php56/zipball/af98553c84912459db3f636329567809d639a8f6;
- sha256 = "1l1ydsd7cq3s97cpgl4fw1qxc2wmv27yfxa3q8ng9p66ypzvkw42";
- };
- };
- };
- "symfony/polyfill-php70" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-php70-77454693d8f10dd23bb24955cffd2d82db1007a6";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-php70/zipball/77454693d8f10dd23bb24955cffd2d82db1007a6;
- sha256 = "146d620ca725iqdh7j0dqb99h20d4vs641c9vjy9x4jws3rgj905";
- };
- };
- };
- "symfony/polyfill-util" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-util-1a5ad95d9436cbff3296034fe9f8d586dce3fb3a";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-util/zipball/1a5ad95d9436cbff3296034fe9f8d586dce3fb3a;
- sha256 = "0l7w4dlr7y3qijpaiq7hfhbhv1qqz9jjknr1n6k4vrss2a8d1sxk";
- };
- };
- };
- "symfony/swiftmailer-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-swiftmailer-bundle-c4808f5169efc05567be983909d00f00521c53ec";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec;
- sha256 = "0jmd3slhb3gf3c3krmk2a9fi4ixdxvqlimdkfpj0sfaaq0115y01";
- };
- };
- };
- "symfony/symfony" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-symfony-4babd75194d45f7a4412560038924f3008c67ef2";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/symfony/zipball/4babd75194d45f7a4412560038924f3008c67ef2;
- sha256 = "1347qp994yg6k91v5gwdwnn202bz92m0pj4090b59z5nqxh7463d";
- };
- };
- };
- "twig/extensions" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "twig-extensions-d188c76168b853481cc75879ea045bf93d718e9c";
- src = fetchurl {
- url = https://api.github.com/repos/twigphp/Twig-extensions/zipball/d188c76168b853481cc75879ea045bf93d718e9c;
- sha256 = "0d6wywys5fqzi3m8g8h3sb5phl5y3a7vfc95n214mqp0iwrcmzwm";
- };
- };
- };
- "twig/twig" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "twig-twig-b48680b6eb7d16b5025b9bfc4108d86f6b8af86f";
- src = fetchurl {
- url = https://api.github.com/repos/twigphp/Twig/zipball/b48680b6eb7d16b5025b9bfc4108d86f6b8af86f;
- sha256 = "1q82f246wq7whl11lx00n0skwmllppvpzg20x6q4frmw44dc6v9a";
- };
- };
- };
- "willdurand/jsonp-callback-validator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "willdurand-jsonp-callback-validator-1a7d388bb521959e612ef50c5c7b1691b097e909";
- src = fetchurl {
- url = https://api.github.com/repos/willdurand/JsonpCallbackValidator/zipball/1a7d388bb521959e612ef50c5c7b1691b097e909;
- sha256 = "19ds8f3nbss4b2xvqkcjkcvz0l4c5nhrm8w8yxc8a508r0jmd9in";
- };
- };
- };
- "zendframework/zend-code" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-code-95033f061b083e16cdee60530ec260d7d628b887";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-code/zipball/95033f061b083e16cdee60530ec260d7d628b887;
- sha256 = "0h77qf267l2sp9wg3n61dpgpf6wh6p5jssy8mrg7vlns2j03f9f5";
- };
- };
- };
- "zendframework/zend-eventmanager" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-eventmanager-a5e2583a211f73604691586b8406ff7296a946dd";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd;
- sha256 = "08a05gn40hfdy2zhz4gcd3r6q7m7zcaks5kpvb9dx1awgx0pzr8n";
- };
- };
- };
- };
- devPackages = {
- "doctrine/data-fixtures" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-data-fixtures-17fa5bfe6ff52e35cb3d9ec37c934a2f4bd1fa2e";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/data-fixtures/zipball/17fa5bfe6ff52e35cb3d9ec37c934a2f4bd1fa2e;
- sha256 = "15k7vl58kwh02g0a93rab82ifbgmc91srgminzlkjq5kx8agh7ab";
- };
- };
- };
- "doctrine/doctrine-fixtures-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-fixtures-bundle-74b8cc70a4a25b774628ee59f4cdf3623a146273";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/74b8cc70a4a25b774628ee59f4cdf3623a146273;
- sha256 = "1bbflq8k6izwqgp9ka2gyb5y96a80b4lnlc5wrgc5gnih7hqidlf";
- };
- };
- };
- "sensio/generator-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensio-generator-bundle-28cbaa244bd0816fd8908b93f90380bcd7b67a65";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65;
- sha256 = "1j09y037xk843q8gcyfmwgy6dmn0h67pd5jnsvhj08h92ssbl0c3";
- };
- };
- };
- "symfony/phpunit-bridge" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-phpunit-bridge-7470518370113785f67a7fd8e6e1667661e88805";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/phpunit-bridge/zipball/7470518370113785f67a7fd8e6e1667661e88805;
- sha256 = "0jd28ag0wks9sv62rkwsbx68csvdl5gabbz2h01hkqpa23gdkhs9";
- };
- };
- };
- };
-}
diff --git a/modules/private/websites/connexionswing/integration.nix b/modules/private/websites/connexionswing/integration.nix
deleted file mode 100644
index 9cf2b94..0000000
--- a/modules/private/websites/connexionswing/integration.nix
+++ /dev/null
@@ -1,141 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- secrets = config.myEnv.websites.connexionswing.integration;
- webRoot = "/var/lib/ftp/immae/connexionswing/web";
- varDir = "/var/lib/ftp/immae/connexionswing_var";
- cfg = config.myServices.websites.connexionswing.integration;
- pcfg = config.services.phpApplication;
-in {
- options.myServices.websites.connexionswing.integration.enable = lib.mkEnableOption "enable Connexionswing's website in integration";
-
- config = lib.mkIf cfg.enable {
- services.phpApplication.apps.connexionswing_integration = {
- websiteEnv = "integration";
- httpdUser = config.services.httpd.Inte.user;
- httpdGroup = config.services.httpd.Inte.group;
- inherit webRoot varDir;
- varDirPaths = {
- "medias" = "0700";
- "uploads" = "0700";
- "var" = "0700";
- };
- app = "/var/lib/ftp/immae/connexionswing";
- serviceDeps = [ "mysql.service" ];
- preStartActions = [
- "./bin/console --env=dev cache:clear --no-warmup"
- ];
- phpOpenbasedir = [ "/tmp" "/run/wrappers/bin/sendmail" ];
- phpPool = {
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- #"php_admin_flag[log_errors]" = "on";
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
- };
- phpEnv = {
- SYMFONY_DEBUG_MODE = "\"yes\"";
- };
- phpWatchFiles = [
- config.secrets.fullPaths."websites/connexionswing/integration"
- ];
- phpPackage = pkgs.php72;
- };
-
- secrets.keys."websites/connexionswing/integration" = {
- user = config.services.httpd.Inte.user;
- group = config.services.httpd.Inte.group;
- permissions = "0400";
- text = ''
- # This file is auto-generated during the composer install
- parameters:
- database_host: ${secrets.mysql.host}
- database_port: ${secrets.mysql.port}
- database_name: ${secrets.mysql.database}
- database_user: ${secrets.mysql.user}
- database_password: ${secrets.mysql.password}
- database_server_version: ${pkgs.mariadb.mysqlVersion}
- mailer_transport: sendmail
- mailer_host: null
- mailer_user: null
- mailer_password: null
- subscription_email: ${secrets.email}
- allow_robots: true
- secret: ${secrets.secret}
- '';
- };
-
- services.websites.env.integration.vhostConfs.connexionswing_integration = {
- certName = "integration";
- addToCerts = true;
- hosts = ["connexionswing.cs.immae.dev" "sandetludo.cs.immae.dev" ];
- root = webRoot;
- extraConfig = [
- ''
-
- SetHandler "proxy:unix:${pcfg.phpListenPaths.connexionswing_integration}|fcgi://localhost"
-
-
-
- Options FollowSymLinks
- AllowOverride None
- Require all granted
-
-
-
- Options FollowSymLinks
- AllowOverride None
- Require all granted
-
-
-
- Use LDAPConnect
- Require ldap-group cn=cs.immae.dev,cn=httpd,ou=services,dc=immae,dc=eu
- ErrorDocument 401 " "
-
-
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- DirectoryIndex app_dev.php
-
-
- Options -MultiViews
-
-
-
- RewriteEngine On
-
- RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
- RewriteRule ^(.*) - [E=BASE:%1]
-
- # Maintenance script
- RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
- RewriteCond %{SCRIPT_FILENAME} !maintenance.php
- RewriteRule ^.*$ %{ENV:BASE}/maintenance.php [R=503,L]
- ErrorDocument 503 /maintenance.php
-
- # Sets the HTTP_AUTHORIZATION header removed by Apache
- RewriteCond %{HTTP:Authorization} .
- RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
-
- RewriteCond %{ENV:REDIRECT_STATUS} ^$
- RewriteRule ^app_dev\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
-
- # If the requested filename exists, simply serve it.
- # We only want to let Apache serve files and not directories.
- RewriteCond %{REQUEST_FILENAME} -f
- RewriteRule ^ - [L]
-
- # Rewrite all other queries to the front controller.
- RewriteRule ^ %{ENV:BASE}/app_dev.php [L]
-
-
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/connexionswing/production.nix b/modules/private/websites/connexionswing/production.nix
deleted file mode 100644
index 4b0407f..0000000
--- a/modules/private/websites/connexionswing/production.nix
+++ /dev/null
@@ -1,110 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- secrets = config.myEnv.websites.connexionswing.production;
- app = pkgs.callPackage ./app {
- composerEnv = pkgs.composerEnv.override { php = pkgs.php72; };
- environment = secrets.environment;
- varDir = "/var/lib/connexionswing_production";
- secretsPath = config.secrets.fullPaths."websites/connexionswing/production";
- };
- cfg = config.myServices.websites.connexionswing.production;
- pcfg = config.services.phpApplication;
-in {
- options.myServices.websites.connexionswing.production.enable = lib.mkEnableOption "enable Connexionswing's website in production";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "connexionswing.com"; } ];
- services.phpApplication.apps.connexionswing_production = {
- websiteEnv = "production";
- httpdUser = config.services.httpd.Prod.user;
- httpdGroup = config.services.httpd.Prod.group;
- inherit (app) webRoot varDir;
- varDirPaths = {
- "medias" = "0700";
- "uploads" = "0700";
- "var" = "0700";
- };
- inherit app;
- serviceDeps = [ "mysql.service" ];
- preStartActions = [
- "./bin/console --env=${app.environment} cache:clear --no-warmup"
- ];
- phpOpenbasedir = [ "/tmp" "/run/wrappers/bin/sendmail" ];
- phpPool = {
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- #"php_admin_flag[log_errors]" = "on";
- "pm" = "dynamic";
- "pm.max_children" = "20";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "3";
- };
- phpWatchFiles = [
- config.secrets.fullPaths."websites/connexionswing/production"
- ];
- phpPackage = pkgs.php72;
- };
-
- secrets.keys."websites/connexionswing/production" = {
- user = config.services.httpd.Prod.user;
- group = config.services.httpd.Prod.group;
- permissions = "0400";
- text = ''
- # This file is auto-generated during the composer install
- parameters:
- database_host: ${secrets.mysql.host}
- database_port: ${secrets.mysql.port}
- database_name: ${secrets.mysql.database}
- database_user: ${secrets.mysql.user}
- database_password: ${secrets.mysql.password}
- database_server_version: ${pkgs.mariadb.mysqlVersion}
- mailer_transport: sendmail
- mailer_host: null
- mailer_user: null
- mailer_password: null
- subscription_email: ${secrets.email}
- allow_robots: true
- secret: ${secrets.secret}
- services:
- swiftmailer.mailer.default.transport:
- class: Swift_SendmailTransport
- arguments: ['/run/wrappers/bin/sendmail -bs']
- '';
- };
-
- services.websites.env.production.vhostConfs.connexionswing_production = {
- certName = "connexionswing";
- certMainHost = "connexionswing.com";
- hosts = ["connexionswing.com" "sandetludo.com" "www.connexionswing.com" "www.sandetludo.com" ];
- root = app.webRoot;
- extraConfig = [
- ''
-
- SetHandler "proxy:unix:${pcfg.phpListenPaths.connexionswing_production}|fcgi://localhost"
-
-
-
- Options FollowSymLinks
- AllowOverride None
- Require all granted
-
-
-
- Options FollowSymLinks
- AllowOverride None
- Require all granted
-
-
- Use Stats connexionswing.com
-
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/default.nix b/modules/private/websites/default.nix
deleted file mode 100644
index 4864034..0000000
--- a/modules/private/websites/default.nix
+++ /dev/null
@@ -1,324 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- www_root = ./_www;
- theme_root = pkgs.webapps.apache-theme.theme;
- apacheConfig = {
- cache = {
- # This setting permits to ignore time-based cache for files in the
- # nix store:
- # If a client requires an If-Modified-Since from timestamp 1, then
- # this header is removed, and if the response contains a
- # too old Last-Modified tag, then it is removed too
- extraConfig = ''
-
- RequestHeader unset If-Modified-Since
-
- Header unset Last-Modified "expr=%{LAST_MODIFIED} < 19991231235959"
- '';
- };
- gzip = {
- modules = [ "deflate" "filter" ];
- extraConfig = ''
- AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
- '';
- };
- macros = {
- modules = [ "macro" ];
- };
- stats = {
- extraConfig = ''
-
- Alias /webstats ${config.services.webstats.dataDir}/%{domain}
-
- DirectoryIndex index.html
- AllowOverride None
- Require all granted
-
-
- Use LDAPConnect
- Require ldap-group cn=%{domain},ou=stats,cn=httpd,ou=services,dc=immae,dc=eu
-
-
- '';
- };
- ldap = {
- modules = [ "ldap" "authnz_ldap" ];
- extraConfig = ''
-
- LDAPSharedCacheSize 500000
- LDAPCacheEntries 1024
- LDAPCacheTTL 600
- LDAPOpCacheEntries 1024
- LDAPOpCacheTTL 600
-
-
- Include ${config.secrets.fullPaths."apache-ldap"}
- '';
- };
- global = {
- extraConfig = ''
- ErrorDocument 500 /maintenance_immae.html
- ErrorDocument 501 /maintenance_immae.html
- ErrorDocument 502 /maintenance_immae.html
- ErrorDocument 503 /maintenance_immae.html
- ErrorDocument 504 /maintenance_immae.html
- Alias /maintenance_immae.html ${www_root}/maintenance_immae.html
- ProxyPass /maintenance_immae.html !
-
- AliasMatch "(.*)/googleb6d69446ff4ca3e5.html" ${www_root}/googleb6d69446ff4ca3e5.html
-
- AllowOverride None
- Require all granted
-
- '';
- };
- apaxy = {
- extraConfig = (pkgs.webapps.apache-theme.override { inherit theme_root; }).apacheConfig;
- };
- http2 = {
- modules = [ "http2" ];
- extraConfig = ''
- Protocols h2 http/1.1
- '';
- };
- customLog = {
- extraConfig = ''
- LogFormat "%{Host}i:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedVhost
- '';
- };
- };
- makeModules = lib.lists.flatten (lib.attrsets.mapAttrsToList (n: v: v.modules or []) apacheConfig);
- makeExtraConfig = (builtins.filter (x: x != null) (lib.attrsets.mapAttrsToList (n: v: v.extraConfig or null) apacheConfig));
- moomin = let
- lines = lib.splitString "\n" (lib.fileContents ./moomin.txt);
- pad = width: str: let
- padWidth = width - lib.stringLength str;
- padding = lib.concatStrings (lib.genList (lib.const "0") padWidth);
- in lib.optionalString (padWidth > 0) padding + str;
- in
- lib.imap0 (i: e: ''Header always set "X-Moomin-${pad 2 (builtins.toString i)}" "${e}"'') lines;
-in
-{
- options.myServices.websites.enable = lib.mkEnableOption "enable websites";
-
- config = lib.mkIf config.myServices.websites.enable {
- users.users.wwwrun.extraGroups = [ "keys" ];
- networking.firewall.allowedTCPPorts = [ 80 443 ];
-
- secrets.keys."apache-ldap" = {
- user = "wwwrun";
- group = "wwwrun";
- permissions = "0400";
- text = ''
-
-
- AuthLDAPURL ldap://ldap.immae.eu:389/dc=immae,dc=eu STARTTLS
- AuthLDAPBindDN cn=httpd,ou=services,dc=immae,dc=eu
- AuthLDAPBindPassword "${config.myEnv.httpd.ldap.password}"
- AuthType Basic
- AuthName "Authentification requise (Acces LDAP)"
- AuthBasicProvider ldap
-
-
- '';
- };
-
- system.activationScripts = {
- httpd = ''
- install -d -m 0755 /var/lib/acme/acme-challenges
- install -d -m 0750 -o wwwrun -g wwwrun /var/lib/php/sessions
- '';
- };
-
- services.phpfpm = {
- phpOptions = ''
- session.save_path = "/var/lib/php/sessions"
- post_max_size = 20M
- ; 15 days (seconds)
- session.gc_maxlifetime = 1296000
- ; 30 days (minutes)
- session.cache_expire = 43200
- '';
- settings = {
- log_level = "notice";
- };
- };
-
- services.filesWatcher.httpdProd.paths = [ config.secrets.fullPaths."apache-ldap" ];
- services.filesWatcher.httpdInte.paths = [ config.secrets.fullPaths."apache-ldap" ];
- services.filesWatcher.httpdTools.paths = [ config.secrets.fullPaths."apache-ldap" ];
-
- services.websites.env.production = {
- enable = true;
- adminAddr = "httpd@immae.eu";
- httpdName = "Prod";
- ips =
- let ips = config.myEnv.servers.eldiron.ips.production;
- in [ips.ip4] ++ (ips.ip6 or []);
- modules = makeModules;
- extraConfig = makeExtraConfig;
- fallbackVhost = {
- certName = "eldiron";
- hosts = ["eldiron.immae.eu" ];
- root = www_root;
- extraConfig = [ "DirectoryIndex index.htm" ];
- };
- };
-
- services.websites.env.integration = {
- enable = true;
- adminAddr = "httpd@immae.eu";
- httpdName = "Inte";
- ips =
- let ips = config.myEnv.servers.eldiron.ips.integration;
- in [ips.ip4] ++ (ips.ip6 or []);
- modules = makeModules;
- extraConfig = makeExtraConfig ++ moomin;
- fallbackVhost = {
- certName = "eldiron";
- hosts = ["eldiron.immae.eu" ];
- root = www_root;
- extraConfig = [ "DirectoryIndex index.htm" ];
- };
- };
-
- services.websites.env.tools = {
- enable = true;
- adminAddr = "httpd@immae.eu";
- httpdName = "Tools";
- ips =
- let ips = config.myEnv.servers.eldiron.ips.main;
- in [ips.ip4] ++ (ips.ip6 or []);
- modules = makeModules;
- extraConfig = makeExtraConfig ++
- [ ''
- RedirectMatch ^/licen[cs]es?_et_tip(ping)?$ https://www.immae.eu/licences_et_tip.html
- RedirectMatch ^/licen[cs]es?_and_tip(ping)?$ https://www.immae.eu/licenses_and_tipping.html
- RedirectMatch ^/licen[cs]es?$ https://www.immae.eu/licenses_and_tipping.html
- RedirectMatch ^/tip(ping)?$ https://www.immae.eu/licenses_and_tipping.html
- RedirectMatch ^/(mentions|mentions_legales|legal)$ https://www.immae.eu/mentions.html
- RedirectMatch ^/CGU$ https://www.immae.eu/CGU
- ''
- ];
- nosslVhost = {
- enable = true;
- host = "nossl.immae.eu";
- };
- fallbackVhost = {
- certName = "eldiron";
- hosts = ["eldiron.immae.eu" ];
- root = www_root;
- extraConfig = [ "DirectoryIndex index.htm" ];
- };
- };
-
- myServices.websites = {
- bakeer.cloud.enable = true;
- capitaines.landing_pages.enable = true;
-
- chloe = {
- integration.enable = true;
- production.enable = true;
- };
-
- cip-ca = {
- sympa.enable = true;
- };
-
- connexionswing = {
- integration.enable = true;
- production.enable = true;
- };
-
- denise = {
- evariste.enable = true;
- denisejerome.enable = true;
- oms.enable = true;
- bingo.enable = true;
- aventuriers.enable = true;
- production.enable = true;
- };
-
- emilia = {
- moodle.enable = false;
- atelierfringant.enable = true;
- };
-
- florian = {
- app.enable = true;
- integration.enable = true;
- production.enable = true;
- };
-
- immae = {
- production.enable = true;
- release.enable = true;
- temp.enable = true;
- };
-
- isabelle = {
- aten_integration.enable = true;
- aten_production.enable = true;
- iridologie.enable = true;
- };
-
- jerome.naturaloutil.enable = true;
-
- leila.production.enable = true;
-
- ludivine = {
- integration.enable = true;
- production.enable = true;
- };
-
- nassime.production.enable = true;
-
- nath.villon.enable = true;
-
- papa = {
- surveillance.enable = true;
- maison_bbc.enable = true;
- };
-
- patrick_fodella = {
- ecolyeu.enable = true;
- altermondia.enable = true;
- };
-
- piedsjaloux = {
- integration.enable = true;
- production.enable = true;
- };
-
- ressourcerie_banon.production.enable = true;
- ressourcerie_banon.cryptpad.enable = true;
- ressourcerie_banon.cloud.enable = true;
-
- richie.production.enable = true;
-
- syden.peertube.enable = true;
-
- telio_tortay.production.enable = true;
-
- tools.assets.enable = true;
- tools.cloud.enable = true;
- tools.commento.enable = true;
- tools.cryptpad.enable = true;
- tools.dav.enable = true;
- tools.db.enable = true;
- tools.diaspora.enable = true;
- tools.etherpad-lite.enable = true;
- tools.git.enable = true;
- tools.mastodon.enable = true;
- tools.mediagoblin.enable = true;
- tools.peertube.enable = true;
- tools.performance.enable = true;
- tools.tools.enable = true;
- tools.email.enable = true;
- tools.stats.enable = false;
-
- games.codenames.enable = true;
- games.terraforming-mars.enable = true;
- };
- };
-}
diff --git a/modules/private/websites/denise/aventuriers.nix b/modules/private/websites/denise/aventuriers.nix
deleted file mode 100644
index 2bbf7bf..0000000
--- a/modules/private/websites/denise/aventuriers.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib, config, pkgs, ... }:
-let
- cfg = config.myServices.websites.denise.aventuriers;
- varDir = "/var/lib/buildbot/outputs/denise/aventuriers";
-in {
- options.myServices.websites.denise.aventuriers.enable = lib.mkEnableOption "enable Denise's Aventuriers website";
-
- config = lib.mkIf cfg.enable {
- services.websites.env.production.vhostConfs.denise_aventuriers = {
- certName = "denise";
- addToCerts = true;
- hosts = [ "aventuriers.syanni.eu" ];
- root = varDir;
- extraConfig = [
- ''
-
- DirectoryIndex aventuriers.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/denise/bingo.nix b/modules/private/websites/denise/bingo.nix
deleted file mode 100644
index 9130462..0000000
--- a/modules/private/websites/denise/bingo.nix
+++ /dev/null
@@ -1,100 +0,0 @@
-{ lib, config, pkgs, ... }:
-let
- cfg = config.myServices.websites.denise.bingo;
- varDir = "/var/lib/buildbot/outputs/denise/bingo";
- varDirBeta = "/var/lib/buildbot/outputs/denise/bingo_beta";
- socket = "/run/denise_bingo/socket.sock";
- socket_beta = "/run/denise_bingo_beta/socket.sock";
-in {
- options.myServices.websites.denise.bingo.enable = lib.mkEnableOption "enable Denise's bingo website";
-
- config = lib.mkIf cfg.enable {
- services.websites.env.production.vhostConfs.denise_bingo = {
- certName = "denise";
- addToCerts = true;
- hosts = [ "bingo.syanni.eu" ];
- root = null;
- extraConfig = [
- ''
- ProxyPreserveHost on
- ProxyVia On
- ProxyRequests Off
- ProxyPassMatch ^/.well-known/acme-challenge !
- ProxyPass / unix://${socket}|http://bingo.syanni.eu/
- ProxyPassReverse / unix://${socket}|http://bingo.syanni.eu/
- ''
- ];
- };
-
- systemd.services.denise-bingo = {
- description = "Denise bingo website";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
-
- serviceConfig = {
- Type = "simple";
- WorkingDirectory = varDir;
- ExecStart = let
- python = pkgs.python3.withPackages (p: [ p.gunicorn p.flask p.matplotlib p.unidecode ]);
- in
- "${python}/bin/gunicorn -w4 -p /run/denise_bingo/gunicorn.pid --bind unix:${socket} app:app";
- User = "wwwrun";
- Restart = "always";
- RestartSec = "5s";
- PIDFile = "/run/denise_bingo/gunicorn.pid";
- RuntimeDirectory = "denise_bingo";
- StandardOutput = "journal";
- StandardError = "inherit";
- };
- };
-
- security.sudo.extraRules = [
- {
- commands = [
- { options = [ "NOPASSWD" ]; command = "${pkgs.systemd}/bin/systemctl restart denise-bingo-beta.service"; }
- { options = [ "NOPASSWD" ]; command = "${pkgs.systemd}/bin/systemctl restart denise-bingo.service"; }
- ];
- users = ["buildbot"];
- runAs = "root";
- }
- ];
- services.websites.env.integration.vhostConfs.denise_bingo_beta = {
- certName = "denise";
- addToCerts = true;
- hosts = [ "beta.bingo.syanni.eu" ];
- root = null;
- extraConfig = [
- ''
- ProxyPreserveHost on
- ProxyVia On
- ProxyRequests Off
- ProxyPassMatch ^/.well-known/acme-challenge !
- ProxyPass / unix://${socket_beta}|http://beta.bingo.syanni.eu/
- ProxyPassReverse / unix://${socket_beta}|http://beta.bingo.syanni.eu/
- ''
- ];
- };
-
- systemd.services.denise-bingo-beta = {
- description = "Denise bingo beta website";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
-
- serviceConfig = {
- Type = "simple";
- WorkingDirectory = varDirBeta;
- ExecStart = let
- python = pkgs.python3.withPackages (p: [ p.gunicorn p.flask ]);
- in
- "${python}/bin/gunicorn -w4 -p /run/denise_bingo_beta/gunicorn.pid --bind unix:${socket_beta} app:app";
- User = "wwwrun";
- Restart = "always";
- RestartSec = "5s";
- PIDFile = "/run/denise_bingo_beta/gunicorn.pid";
- RuntimeDirectory = "denise_bingo_beta";
- StandardOutput = "journal";
- StandardError = "inherit";
- };
- };
- };
-}
diff --git a/modules/private/websites/denise/denisejerome.nix b/modules/private/websites/denise/denisejerome.nix
deleted file mode 100644
index a75e591..0000000
--- a/modules/private/websites/denise/denisejerome.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib, config, ... }:
-let
- cfg = config.myServices.websites.denise.denisejerome;
- varDir = "/var/lib/ftp/denise/denisejerome";
- env = config.myEnv.websites.denisejerome;
-in {
- options.myServices.websites.denise.denisejerome.enable = lib.mkEnableOption "enable Denise Jerome's website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "denisejerome.piedsjaloux.fr"; } ];
-
- services.websites.env.production.vhostConfs.denise_denisejerome = {
- certName = "denise";
- certMainHost = "denisejerome.piedsjaloux.fr";
- hosts = ["denisejerome.piedsjaloux.fr" ];
- root = varDir;
- extraConfig = [
- ''
- Use Stats denisejerome.piedsjaloux.fr
-
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride AuthConfig
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/denise/evariste.nix b/modules/private/websites/denise/evariste.nix
deleted file mode 100644
index 42f9b2e..0000000
--- a/modules/private/websites/denise/evariste.nix
+++ /dev/null
@@ -1,104 +0,0 @@
-{ lib, config, pkgs, ... }:
-let
- cfg = config.myServices.websites.denise.evariste;
- nsiVarDir = "/var/lib/ftp/denise/nsievariste";
- stmgVarDir = "/var/lib/ftp/denise/stmgevariste";
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
-in {
- options.myServices.websites.denise.evariste.enable = lib.mkEnableOption "enable NSI/STMG Evariste website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [
- { name = "nsievariste.immae.eu"; }
- { name = "stmgevariste.immae.eu"; }
- ];
-
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- system.activationScripts.denise_evariste = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/php/sessions/denise_nsievariste
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/php/sessions/denise_stmgevariste
- '';
- };
- services.phpfpm.pools.denise_nsievariste = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
-
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[open_basedir]" = "/var/lib/php/sessions/denise_nsievariste:${nsiVarDir}:/tmp";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/denise_nsievariste";
- };
- phpPackage = pkgs.php72;
- };
- services.websites.env.production.vhostConfs.denise_nsievariste = {
- certName = "denise_evariste";
- addToCerts = true;
- certMainHost = "nsievariste.immae.eu";
- hosts = ["nsievariste.immae.eu" ];
- root = nsiVarDir;
- extraConfig = [
- ''
- Use Stats nsievariste.immae.eu
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.denise_nsievariste.socket}|fcgi://localhost"
-
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
-
- services.phpfpm.pools.denise_stmgevariste = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
-
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[open_basedir]" = "/var/lib/php/sessions/denise_stmgevariste:${stmgVarDir}:/tmp";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/denise_stmgevariste";
- };
- phpPackage = pkgs.php72;
- };
- services.websites.env.production.vhostConfs.denise_stmgevariste = {
- certName = "denise_evariste";
- addToCerts = true;
- hosts = ["stmgevariste.immae.eu" ];
- root = stmgVarDir;
- extraConfig = [
- ''
- Use Stats stmgevariste.immae.eu
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.denise_stmgevariste.socket}|fcgi://localhost"
-
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/denise/oms.nix b/modules/private/websites/denise/oms.nix
deleted file mode 100644
index 2f18037..0000000
--- a/modules/private/websites/denise/oms.nix
+++ /dev/null
@@ -1,100 +0,0 @@
-{ lib, config, pkgs, ... }:
-let
- cfg = config.myServices.websites.denise.oms;
- varDir = "/var/lib/buildbot/outputs/denise/oms";
- varDirBeta = "/var/lib/buildbot/outputs/denise/oms_beta";
- socket = "/run/denise_oms/socket.sock";
- socket_beta = "/run/denise_oms_beta/socket.sock";
-in {
- options.myServices.websites.denise.oms.enable = lib.mkEnableOption "enable Denise's OMS website";
-
- config = lib.mkIf cfg.enable {
- services.websites.env.production.vhostConfs.denise_oms = {
- certName = "denise";
- addToCerts = true;
- hosts = [ "oms.syanni.eu" ];
- root = null;
- extraConfig = [
- ''
- ProxyPreserveHost on
- ProxyVia On
- ProxyRequests Off
- ProxyPassMatch ^/.well-known/acme-challenge !
- ProxyPass / unix://${socket}|http://oms.syanni.eu/
- ProxyPassReverse / unix://${socket}|http://oms.syanni.eu/
- ''
- ];
- };
-
- systemd.services.denise-oms = {
- description = "Denise OMS website";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
-
- serviceConfig = {
- Type = "simple";
- WorkingDirectory = varDir;
- ExecStart = let
- python = pkgs.python3.withPackages (p: [ p.gunicorn p.flask p.matplotlib p.unidecode ]);
- in
- "${python}/bin/gunicorn -w4 -p /run/denise_oms/gunicorn.pid --bind unix:${socket} app:app";
- User = "wwwrun";
- Restart = "always";
- RestartSec = "5s";
- PIDFile = "/run/denise_oms/gunicorn.pid";
- RuntimeDirectory = "denise_oms";
- StandardOutput = "journal";
- StandardError = "inherit";
- };
- };
-
- security.sudo.extraRules = [
- {
- commands = [
- { options = [ "NOPASSWD" ]; command = "${pkgs.systemd}/bin/systemctl restart denise-oms-beta.service"; }
- { options = [ "NOPASSWD" ]; command = "${pkgs.systemd}/bin/systemctl restart denise-oms.service"; }
- ];
- users = ["buildbot"];
- runAs = "root";
- }
- ];
- services.websites.env.integration.vhostConfs.denise_oms_beta = {
- certName = "denise";
- addToCerts = true;
- hosts = [ "beta.oms.syanni.eu" ];
- root = null;
- extraConfig = [
- ''
- ProxyPreserveHost on
- ProxyVia On
- ProxyRequests Off
- ProxyPassMatch ^/.well-known/acme-challenge !
- ProxyPass / unix://${socket_beta}|http://beta.oms.syanni.eu/
- ProxyPassReverse / unix://${socket_beta}|http://beta.oms.syanni.eu/
- ''
- ];
- };
-
- systemd.services.denise-oms-beta = {
- description = "Denise OMS beta website";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
-
- serviceConfig = {
- Type = "simple";
- WorkingDirectory = varDirBeta;
- ExecStart = let
- python = pkgs.python3.withPackages (p: [ p.gunicorn p.flask p.matplotlib p.unidecode ]);
- in
- "${python}/bin/gunicorn -w4 -p /run/denise_oms_beta/gunicorn.pid --bind unix:${socket_beta} app:app";
- User = "wwwrun";
- Restart = "always";
- RestartSec = "5s";
- PIDFile = "/run/denise_oms_beta/gunicorn.pid";
- RuntimeDirectory = "denise_oms_beta";
- StandardOutput = "journal";
- StandardError = "inherit";
- };
- };
- };
-}
diff --git a/modules/private/websites/denise/production.nix b/modules/private/websites/denise/production.nix
deleted file mode 100644
index 9b28e9e..0000000
--- a/modules/private/websites/denise/production.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib, config, pkgs, ... }:
-let
- cfg = config.myServices.websites.denise.production;
-in {
- options.myServices.websites.denise.production.enable = lib.mkEnableOption "enable Denise's website";
-
- config = lib.mkIf cfg.enable {
- services.websites.env.production.vhostConfs.denise_production = {
- certName = "denise";
- addToCerts = true;
- hosts = [ "syanni.eu" "www.syanni.eu" ];
- root = ../_www;
- extraConfig = [
- ''
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride AuthConfig
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/emilia/atelierfringant.nix b/modules/private/websites/emilia/atelierfringant.nix
deleted file mode 100644
index b47452f..0000000
--- a/modules/private/websites/emilia/atelierfringant.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.emilia.atelierfringant;
- varDir = "/var/lib/ftp/emilia/atelierfringant";
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
-in {
- options.myServices.websites.emilia.atelierfringant.enable = lib.mkEnableOption "enable Émilia's website";
-
- config = lib.mkIf cfg.enable {
- system.activationScripts.emilia_atelierfringant = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/ftp/emilia/atelierfringant
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/php/sessions/emilia
- '';
- };
- systemd.services.phpfpm-emilia_atelierfringant.after = lib.mkAfter [ "mysql.service" ];
- systemd.services.phpfpm-emilia_atelierfringant.wants = [ "mysql.service" ];
- services.phpfpm.pools.emilia_atelierfringant = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
-
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[open_basedir]" = "/var/lib/php/sessions/emilia:${varDir}:/tmp";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/emilia";
- };
- phpOptions = config.services.phpfpm.phpOptions + ''
- disable_functions = "mail"
- '';
- phpPackage = pkgs.php72;
- };
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.emilia_atelierfringant = {
- certName = "emilia";
- certMainHost = "atelierfringant.org";
- hosts = ["atelierfringant.org" "www.atelierfringant.org" ];
- root = varDir;
- extraConfig = [
- ''
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.emilia_atelierfringant.socket}|fcgi://localhost"
-
-
-
- AllowOverride None
- Require all denied
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride all
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/emilia/moodle.nix b/modules/private/websites/emilia/moodle.nix
deleted file mode 100644
index 779c460..0000000
--- a/modules/private/websites/emilia/moodle.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.emilia.moodle;
- env = config.myEnv.websites.emilia;
- varDir = "/var/lib/emilia_moodle";
- siteDir = ./moodle;
- # php_admin_value[upload_max_filesize] = 50000000
- # php_admin_value[post_max_size] = 50000000
- configFile = ''
- dbtype = 'pgsql';
- $CFG->dblibrary = 'native';
- $CFG->dbhost = '${env.postgresql.host}';
- $CFG->dbname = '${env.postgresql.database}';
- $CFG->dbuser = '${env.postgresql.user}';
- $CFG->dbpass = '${env.postgresql.password}';
- $CFG->prefix = 'mdl_';
- $CFG->dboptions = array (
- 'dbpersist' => 0,
- 'dbport' => '${env.postgreesql.port}',
- 'dbsocket' => '${env.postgresql.password}',
- );
-
- $CFG->wwwroot = 'https://www.saison-photo.org';
- $CFG->dataroot = '${varDir}';
- $CFG->admin = 'admin';
-
- $CFG->directorypermissions = 02777;
-
- require_once(__DIR__ . '/lib/setup.php');
-
- // There is no php closing tag in this file,
- // it is intentional because it prevents trailing whitespace problems!
- '';
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
-in {
- options.myServices.websites.emilia.moodle.enable = lib.mkEnableOption "enable Emilia's website";
-
- config = lib.mkIf cfg.enable {
- system.activationScripts.emilia_moodle = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d ${varDir}
- '';
- services.websites.env.production.vhostConfs.emilia_moodle = {
- certName = "emilia";
- certMainHost = "saison-photo.org";
- hosts = [ "saison-photo.org" "www.saison-photo.org" ];
- root = siteDir;
- extraConfig = [
- ''
-
- DirectoryIndex pause.html
- Options Indexes FollowSymLinks MultiViews Includes
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/emilia/moodle/pause.html b/modules/private/websites/emilia/moodle/pause.html
deleted file mode 100644
index 8b99c59..0000000
--- a/modules/private/websites/emilia/moodle/pause.html
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- Pause
-
-
-
-
-
- Site web en pause !
-
-
Le site et les cours de photographie sont actuellement en pause.
-
-
-
-
diff --git a/modules/private/websites/florian/app.nix b/modules/private/websites/florian/app.nix
deleted file mode 100644
index 2df344f..0000000
--- a/modules/private/websites/florian/app.nix
+++ /dev/null
@@ -1,142 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; };
- secrets = config.myEnv.websites.tellesflorian.integration;
- webRoot = "/var/lib/ftp/immae/florian/web";
- cfg = config.myServices.websites.florian.app;
- pcfg = config.services.phpApplication;
-in {
- options.myServices.websites.florian.app.enable = lib.mkEnableOption "enable Florian's app in integration";
-
- config = lib.mkIf cfg.enable {
- services.phpApplication.apps.florian_app = {
- websiteEnv = "integration";
- httpdUser = config.services.httpd.Inte.user;
- httpdGroup = config.services.httpd.Inte.group;
- inherit webRoot;
- varDir = "/var/lib/ftp/immae/florian_var";
- varDirPaths = {
- "var" = "0700";
- };
- app = "/var/lib/ftp/immae/florian";
- serviceDeps = [ "mysql.service" ];
- preStartActions = [
- "./bin/console --env=dev cache:clear --no-warmup"
- ];
- phpOpenbasedir = [ "/tmp" ];
- phpPool = {
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- #"php_admin_flag[log_errors]" = "on";
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
- };
- phpEnv = {
- SYMFONY_DEBUG_MODE = "\"yes\"";
- };
- phpWatchFiles = [
- config.secrets.fullPaths."websites/florian/app"
- ];
- phpPackage = pkgs.php72;
- };
-
- secrets.keys = {
- "websites/florian/app_passwords" = {
- user = config.services.httpd.Inte.user;
- group = config.services.httpd.Inte.group;
- permissions = "0400";
- text = ''
- invite:${secrets.invite_passwords}
- '';
- };
- "websites/florian/app" = {
- user = config.services.httpd.Inte.user;
- group = config.services.httpd.Inte.group;
- permissions = "0400";
- text = ''
- # This file is auto-generated during the composer install
- parameters:
- database_host: ${secrets.mysql.host}
- database_port: ${secrets.mysql.port}
- database_name: ${secrets.mysql.database}
- database_user: ${secrets.mysql.user}
- database_password: ${secrets.mysql.password}
- mailer_transport: smtp
- mailer_host: 127.0.0.1
- mailer_user: null
- mailer_password: null
- secret: ${secrets.secret}
- '';
- };
- };
-
- services.websites.env.integration.modules = adminer.apache.modules;
- services.websites.env.integration.vhostConfs.florian_app = {
- certName = "integration";
- addToCerts = true;
- hosts = [ "app.tellesflorian.com" ];
- root = webRoot;
- extraConfig = [
- ''
-
- SetHandler "proxy:unix:${pcfg.phpListenPaths.florian_app}|fcgi://localhost"
-
-
-
- AuthBasicProvider file ldap
- Use LDAPConnect
- Require ldap-group cn=app.tellesflorian.com,cn=httpd,ou=services,dc=immae,dc=eu
-
- AuthUserFile "${config.secrets.fullPaths."websites/florian/app_passwords"}"
- Require user "invite"
-
- ErrorDocument 401 " "
-
-
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- DirectoryIndex app_dev.php
-
-
- Options -MultiViews
-
-
-
- RewriteEngine On
-
- RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
- RewriteRule ^(.*) - [E=BASE:%1]
-
- # Maintenance script
- RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
- RewriteCond %{SCRIPT_FILENAME} !maintenance.php
- RewriteRule ^.*$ %{ENV:BASE}/maintenance.php [R=503,L]
- ErrorDocument 503 /maintenance.php
-
- # Sets the HTTP_AUTHORIZATION header removed by Apache
- RewriteCond %{HTTP:Authorization} .
- RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
-
- RewriteCond %{ENV:REDIRECT_STATUS} ^$
- RewriteRule ^app_dev\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
-
- # If the requested filename exists, simply serve it.
- # We only want to let Apache serve files and not directories.
- RewriteCond %{REQUEST_FILENAME} -f
- RewriteRule ^ - [L]
-
- # Rewrite all other queries to the front controller.
- RewriteRule ^ %{ENV:BASE}/app_dev.php [L]
-
-
-
- ''
- (adminer.apache.vhostConf null)
- ];
- };
- };
-}
diff --git a/modules/private/websites/florian/app/default.nix b/modules/private/websites/florian/app/default.nix
deleted file mode 100644
index 28a7ec1..0000000
--- a/modules/private/websites/florian/app/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ environment, varDir, secretsPath
-, composerEnv, fetchurl, sources }:
-let
- app = composerEnv.buildPackage (
- import ./php-packages.nix { inherit composerEnv fetchurl; } //
- rec {
- version = sources.websites-florian-app.version;
- pname = "tellesflorian";
- name = "${pname}-${version}";
- src = sources.websites-florian-app;
- noDev = (environment == "prod");
- preInstall = ''
- export SYMFONY_ENV="${environment}"
- '';
- postInstall = ''
- cd $out
- rm app/config/parameters.yml
- ln -sf ${secretsPath} app/config/parameters.yml
- rm -rf var/{logs,cache}
- ln -sf ${varDir}/var/{logs,cache,sessions} var/
- '';
- passthru = {
- inherit varDir environment;
- webRoot = "${app}/web";
- };
- });
-in app
diff --git a/modules/private/websites/florian/app/php-packages.nix b/modules/private/websites/florian/app/php-packages.nix
deleted file mode 100644
index 0c7e00c..0000000
--- a/modules/private/websites/florian/app/php-packages.nix
+++ /dev/null
@@ -1,389 +0,0 @@
-# Generated with composer2nix and adapted to return only the list of
-# packages
-{ composerEnv, fetchurl }:
-{
- packages = {
- "composer/ca-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "composer-ca-bundle-943b2c4fcad1ef178d16a713c2468bf7e579c288";
- src = fetchurl {
- url = https://api.github.com/repos/composer/ca-bundle/zipball/943b2c4fcad1ef178d16a713c2468bf7e579c288;
- sha256 = "1gljia7akifp57w4rjzyh1km23kwymmvglz0mgafdgqzczcw0m6w";
- };
- };
- };
- "doctrine/annotations" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-annotations-f25c8aab83e0c3e976fd7d19875f198ccf2f7535";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535;
- sha256 = "08vm22fqq8r4bg2fk06y4inqnc8x0yfmsss28w5ra2011x2phq4z";
- };
- };
- };
- "doctrine/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-cache-eb152c5100571c7a45470ff2a35095ab3f3b900b";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/cache/zipball/eb152c5100571c7a45470ff2a35095ab3f3b900b;
- sha256 = "0iq0qqv1smlqz63jhj2fpjy54c5dwfwxyf5c89iky6i0yb81gwyd";
- };
- };
- };
- "doctrine/collections" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-collections-6c1e4eef75f310ea1b3e30945e9f06e652128b8a";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a;
- sha256 = "1dkxr2vjycykpcnnmq68rcnn1ww0kbpizd5pxxm6x9i2ilj8cbn7";
- };
- };
- };
- "doctrine/common" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-common-7bce00698899aa2c06fe7365c76e4d78ddb15fa3";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/common/zipball/7bce00698899aa2c06fe7365c76e4d78ddb15fa3;
- sha256 = "12yizcsxsbhhi8hwaik4zalr12n5nxbpld05zygqhx6miyr92jyd";
- };
- };
- };
- "doctrine/dbal" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-dbal-729340d8d1eec8f01bff708e12e449a3415af873";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/dbal/zipball/729340d8d1eec8f01bff708e12e449a3415af873;
- sha256 = "184p8h0n6mcm0y6vfyh0z6qcxmmf8h5z4vdvxd4ycmx0531lnhj3";
- };
- };
- };
- "doctrine/doctrine-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-bundle-eb6e4fb904a459be28872765ab6e2d246aac7c87";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineBundle/zipball/eb6e4fb904a459be28872765ab6e2d246aac7c87;
- sha256 = "0kkisgyblc9hf9x3zpbb1wif51fa8mi6svyd44nls38k9k93dp17";
- };
- };
- };
- "doctrine/doctrine-cache-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-cache-bundle-9baecbd6bfdd1123b0cf8c1b88fee0170a84ddd1";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/9baecbd6bfdd1123b0cf8c1b88fee0170a84ddd1;
- sha256 = "08bqz18vk4673pnm2r2pcph6pdchc36zajnma1p9c6dp21sv7iki";
- };
- };
- };
- "doctrine/inflector" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-inflector-90b2128806bfde671b6952ab8bea493942c1fdae";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae;
- sha256 = "01vmclj3k7xil51jg329fznshh8d07pvm4mr89lvfn1d7fyrq6qw";
- };
- };
- };
- "doctrine/instantiator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-instantiator-8e884e78f9f0eb1329e445619e04456e64d8051d";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d;
- sha256 = "15dcja45rnwya431pcm826l68k1g8f1fabl7rih69alcdyvdlln4";
- };
- };
- };
- "doctrine/lexer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-lexer-83893c552fd2045dd78aef794c31e694c37c0b8c";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c;
- sha256 = "0cyh3vwcl163cx1vrcwmhlh5jg9h47xwiqgzc6rwscxw0ppd1v74";
- };
- };
- };
- "doctrine/orm" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-orm-810a7baf81462a5ddf10e8baa8cb94b6eec02754";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/doctrine2/zipball/810a7baf81462a5ddf10e8baa8cb94b6eec02754;
- sha256 = "1hmkc7917kgnav9hmlgvlp7qwm3zjj910ci71g9yqwjh6s28wrf1";
- };
- };
- };
- "fig/link-util" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "fig-link-util-1a07821801a148be4add11ab0603e4af55a72fac";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac;
- sha256 = "0ky1pq4a17br5zvcychjghgwr6wpkgp409hdv0ljdk3ks90w5w64";
- };
- };
- };
- "incenteev/composer-parameter-handler" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "incenteev-composer-parameter-handler-933c45a34814f27f2345c11c37d46b3ca7303550";
- src = fetchurl {
- url = https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550;
- sha256 = "1zqdwlcl790kjyz4rkpva35xkfsp8kslds82fzznj0yigkgnbifm";
- };
- };
- };
- "jdorn/sql-formatter" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "jdorn-sql-formatter-64990d96e0959dff8e059dfcdc1af130728d92bc";
- src = fetchurl {
- url = https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc;
- sha256 = "1dnmkm8mxylvxjwi0bdkzrlklncqx92fa4fwqp5bh2ypj8gaagzi";
- };
- };
- };
- "monolog/monolog" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "monolog-monolog-fd8c787753b3a2ad11bc60c063cff1358a32a3b4";
- src = fetchurl {
- url = https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4;
- sha256 = "0avf3y8raw23krwdb7kw9qb5bsr5ls4i7qd2vh7hcds3qjixg3h9";
- };
- };
- };
- "paragonie/random_compat" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "paragonie-random_compat-5da4d3c796c275c55f057af5a643ae297d96b4d8";
- src = fetchurl {
- url = https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8;
- sha256 = "1hp6pin4923c300yi85m7qk04gsrbygv52wv5zm7giyyf0k0g073";
- };
- };
- };
- "psr/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-cache-d11b50ad223250cf17b86e38383413f5a6764bf8";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8;
- sha256 = "06i2k3dx3b4lgn9a4v1dlgv8l9wcl4kl7vzhh63lbji0q96hv8qz";
- };
- };
- };
- "psr/container" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-container-b7ce3b176482dbbc1245ebf52b181af44c2cf55f";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f;
- sha256 = "0rkz64vgwb0gfi09klvgay4qnw993l1dc03vyip7d7m2zxi6cy4j";
- };
- };
- };
- "psr/link" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-link-eea8e8662d5cd3ae4517c9b864493f59fca95562";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562;
- sha256 = "091k4p9irkqnmq9b0p792wz1hb7dm4rafpjilw9im9xhsxgkmr13";
- };
- };
- };
- "psr/log" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-log-4ebe3a8bf773a19edfe0a84b6585ba3d401b724d";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d;
- sha256 = "1mlcv17fjw39bjpck176ah1z393b6pnbw3jqhhrblj27c70785md";
- };
- };
- };
- "psr/simple-cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-simple-cache-408d5eafb83c57f6365a3ca330ff23aa4a5fa39b";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b;
- sha256 = "1djgzclkamjxi9jy4m9ggfzgq1vqxaga2ip7l3cj88p7rwkzjxgw";
- };
- };
- };
- "sensio/distribution-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensio-distribution-bundle-eb6266b3b472e4002538610b28a0a04bcf94891a";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/eb6266b3b472e4002538610b28a0a04bcf94891a;
- sha256 = "0wyffqj924lz9cv0vbahyngjw1g850v0p34swygzzgp3cr0ank13";
- };
- };
- };
- "sensio/framework-extra-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensio-framework-extra-bundle-bf4940572e43af679aaa13be98f3446a1c237bd8";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/bf4940572e43af679aaa13be98f3446a1c237bd8;
- sha256 = "1kb1n5w3kfc0kf4pslqdx5pgp0g4hmaag0i00wvjj2n3pjfm5lhf";
- };
- };
- };
- "sensiolabs/security-checker" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensiolabs-security-checker-dc270d5fec418cc6ac983671dba5d80ffaffb142";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/security-checker/zipball/dc270d5fec418cc6ac983671dba5d80ffaffb142;
- sha256 = "0fnshyd6f8j91a7y604nh6sqgscjl48mfa0727g2r4hkdfz8hpd1";
- };
- };
- };
- "swiftmailer/swiftmailer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "swiftmailer-swiftmailer-7ffc1ea296ed14bf8260b6ef11b80208dbadba91";
- src = fetchurl {
- url = https://api.github.com/repos/swiftmailer/swiftmailer/zipball/7ffc1ea296ed14bf8260b6ef11b80208dbadba91;
- sha256 = "1vl5pzgvr2yfrj1yfs02mi917b0gr56v76ibi40r51a3346zhp6v";
- };
- };
- };
- "symfony/monolog-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-monolog-bundle-8781649349fe418d51d194f8c9d212c0b97c40dd";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/monolog-bundle/zipball/8781649349fe418d51d194f8c9d212c0b97c40dd;
- sha256 = "0wcqhg1vfdj3mxacr3fxpgqwy1rk9znjg9bmzx4jymk8l16i7bq8";
- };
- };
- };
- "symfony/polyfill-apcu" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-apcu-e8ae2136ddb53dea314df56fcd88e318ab936c00";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-apcu/zipball/e8ae2136ddb53dea314df56fcd88e318ab936c00;
- sha256 = "07wdszb9ircnidjk3fp3cvcrggxv3sfm996jzd0a9pm6vfz9hymv";
- };
- };
- };
- "symfony/polyfill-intl-icu" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-intl-icu-254919c03761d46c29291616576ed003f10e91c1";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/254919c03761d46c29291616576ed003f10e91c1;
- sha256 = "01yivzv7p55fzrkkyvgd57zpyz82zn1qp0h6nzr77k01rkv3w0ds";
- };
- };
- };
- "symfony/polyfill-mbstring" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-mbstring-78be803ce01e55d3491c1397cf1c64beb9c1b63b";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b;
- sha256 = "0cqr8ni6wpbaxa9gyr40y5bsv54pa2g8kdarlfw3qg2rgzmk0yz1";
- };
- };
- };
- "symfony/polyfill-php56" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-php56-ebc999ce5f14204c5150b9bd15f8f04e621409d8";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-php56/zipball/ebc999ce5f14204c5150b9bd15f8f04e621409d8;
- sha256 = "0b2j56l6d6rdggx7vr20d527df4pjfp4lgxpglsgbf5912rcyf83";
- };
- };
- };
- "symfony/polyfill-php70" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-php70-3532bfcd8f933a7816f3a0a59682fc404776600f";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f;
- sha256 = "151m76lc9w0kxnnwk4zdcjlmj7fppibnp8jisgpvvq32ml3fizdi";
- };
- };
- };
- "symfony/polyfill-util" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-util-e17c808ec4228026d4f5a8832afa19be85979563";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-util/zipball/e17c808ec4228026d4f5a8832afa19be85979563;
- sha256 = "17sdpdidc0b701f9rippjv1grfci7wrdpy2i1inlwwpr6zy782cq";
- };
- };
- };
- "symfony/swiftmailer-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-swiftmailer-bundle-c4808f5169efc05567be983909d00f00521c53ec";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec;
- sha256 = "0jmd3slhb3gf3c3krmk2a9fi4ixdxvqlimdkfpj0sfaaq0115y01";
- };
- };
- };
- "symfony/symfony" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-symfony-874d4d659774d7bab90538072c83ed532dd17dc5";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/symfony/zipball/874d4d659774d7bab90538072c83ed532dd17dc5;
- sha256 = "02rsn3sc34jh107n576jfbh666k06y44yr7hw61nir0d864k8api";
- };
- };
- };
- "twig/twig" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "twig-twig-9c24f2cd39dc1906b76879e099970b7e53724601";
- src = fetchurl {
- url = https://api.github.com/repos/twigphp/Twig/zipball/9c24f2cd39dc1906b76879e099970b7e53724601;
- sha256 = "0brfj2lahrrw1322zy6jyd380hjks1ynzzkmq3875a282gzrfkdz";
- };
- };
- };
- };
- devPackages = {
- "sensio/generator-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensio-generator-bundle-28cbaa244bd0816fd8908b93f90380bcd7b67a65";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65;
- sha256 = "1j09y037xk843q8gcyfmwgy6dmn0h67pd5jnsvhj08h92ssbl0c3";
- };
- };
- };
- "symfony/phpunit-bridge" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-phpunit-bridge-32b06d2b0babf3216e55acfce42249321a304f03";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/phpunit-bridge/zipball/32b06d2b0babf3216e55acfce42249321a304f03;
- sha256 = "0vw4q3lvz8gfs0r93ds8yymz8586k0czwa01c7d172rc8x02v0qq";
- };
- };
- };
- };
-}
diff --git a/modules/private/websites/florian/integration.nix b/modules/private/websites/florian/integration.nix
deleted file mode 100644
index 8ac1f46..0000000
--- a/modules/private/websites/florian/integration.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; };
- cfg = config.myServices.websites.florian.integration;
- varDir = "/var/lib/ftp/florian/www.ft.immae.dev";
- env = config.myEnv.websites.florian;
-in {
- options.myServices.websites.florian.integration.enable = lib.mkEnableOption "enable Florian's website integration";
-
- config = lib.mkIf cfg.enable {
- security.acme.certs."ftp".extraDomains."ft.immae.dev" = null;
-
- services.websites.env.integration.modules = adminer.apache.modules;
- services.websites.env.integration.vhostConfs.florian_integration = {
- certName = "integration";
- addToCerts = true;
- hosts = [ "www.ft.immae.dev" ];
- root = varDir;
- extraConfig = [
- (adminer.apache.vhostConf null)
- ''
- ServerAdmin ${env.server_admin}
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/florian/production.nix b/modules/private/websites/florian/production.nix
deleted file mode 100644
index 1c5ffa6..0000000
--- a/modules/private/websites/florian/production.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; };
- cfg = config.myServices.websites.florian.production;
- varDir = "/var/lib/ftp/florian/tellesflorian.com";
- env = config.myEnv.websites.florian;
-in {
- options.myServices.websites.florian.production.enable = lib.mkEnableOption "enable Florian's website production";
-
- config = lib.mkIf cfg.enable {
- security.acme.certs."ftp".extraDomains."tellesflorian.com" = null;
-
- services.websites.env.production.modules = adminer.apache.modules;
- services.websites.env.production.vhostConfs.florian_production = {
- certName = "florian";
- certMainHost = "tellesflorian.com";
- hosts = [ "tellesflorian.com" "www.tellesflorian.com" ];
- root = varDir;
- extraConfig = [
- (adminer.apache.vhostConf null)
- ''
- ServerAdmin ${env.server_admin}
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/immae/chatons/immae-eu.properties b/modules/private/websites/immae/chatons/immae-eu.properties
deleted file mode 100644
index 32b2d47..0000000
--- a/modules/private/websites/immae/chatons/immae-eu.properties
+++ /dev/null
@@ -1,46 +0,0 @@
-# https://framagit.org/chatons/chatonsinfos/-/blob/master/MODELES/organization.properties
-
-# [File]
-file.class = organization
-file.protocol = ChatonsInfos-0.1
-file.datetime = 2021-01-11T22:23:00
-file.generator = Immae avec ses doigts
-
-# [Organisation]
-organization.country.name = France
-organization.country.code = FR
-organization.name = ImmaeEu
-organization.description = ImmaeEu est un CHATONS des Alpes Maritimes
-organization.website = https://www.immae.eu
-organization.logo = https://assets.immae.eu/logo.jpg
-organization.socialnetworks.diaspora = https://diaspora.immae.eu/people/1a185f29cc76cb35
-organization.socialnetworks.facebook = https://www.facebook.com/ismael.bouya
-organization.socialnetworks.mastodon = https://mastodon.immae.eu/@immae
-organization.socialnetworks.peertube = https://peertube.immae.eu/accounts/immae/
-organization.socialnetworks.twitter = https://twitter.com/_immae
-organization.chatrooms.xmpp = ismael@immae.fr
-organization.chatrooms.irc = immae@freenode
-organization.chatrooms.matrix = @immae:matrix.org
-organization.owner.name = Ismaël Bouya
-organization.owner.website = https://www.immae.eu
-organization.owner.logo = https://assets.immae.eu/logo.jpg
-organization.contact.url = https://www.immae.eu/contacts_fr.html
-organization.contact.email = contact@mail.immae.eu
-organization.legal.url = https://www.immae.eu/mentions.html
-organization.guide.technical = https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/
-organization.status.level = ACTIVE
-organization.status.description = En activité
-organization.startdate = 01/01/2019
-
-organization.memberof.chatons.startdate = 01/07/2019
-organization.memberof.chatons.status.level = ACTIVE
-organization.memberof.chatons.status.description = Participe au collectif
-
-# [Subs]
-# Un lien vers un fichier properties complémentaire (type URL, optionnel, ex. https://www.chapril.org/.well-known/chapril.properties).
-subs.etherpad = https://www.immae.eu/.well-known/chatonsinfos/service-etherpad.properties
-
-
-# [Metrics]
-#metrics.http.total.2020 =
-
diff --git a/modules/private/websites/immae/chatons/service-etherpad.properties b/modules/private/websites/immae/chatons/service-etherpad.properties
deleted file mode 100644
index cfcab1d..0000000
--- a/modules/private/websites/immae/chatons/service-etherpad.properties
+++ /dev/null
@@ -1,164 +0,0 @@
-# service.properties
-
-# [File]
-# Classe du fichier (valeur parmi Federation/Organization/Service/Device, obligatoire).
-file.class = service
-
-# Version de l'ontologie utilisée utilisé (type STRING, recommandé).
-file.protocol = ChatonsInfos-0.1
-
-# Date et horaire de génération du fichier (type DATETIME, recommandé).
-file.datetime = 2021-01-04T00:01:00
-
-# Nom du générateur du fichier (type STRING, recommandé). Exemple : Florian avec ses doigts
-file.generator = Immae avec ses doigts
-
-
-# [Service]
-# Nom du service (type STRING, obligatoire). Exemple : Pad Exemple
-service.name = Etherpard
-
-# Description du service (type STRING, recommandé).
-service.description = Éditeur de texte collaboratif en temps réel. on peut y écrire simultanément.
-
-# Lien du site web du service (type URL, recommandé). Exemple : https://pad.exemple.ext
-service.website = https://ether.immae.eu
-
-# Lien du logo du service (type URL, recommandé, ex. https://www.chapril.org/.well-known/statoolinfos/chapril-logo-mini.png.
-service.logo = https://ether.immae.eu/favicon.ico
-
-# Lien de la page web des mentions légales du service (type URL, recommandé). Exemple : https://pad.exemple.ext/cgu.html
-service.legal.url = https://www.immae.eu/mentions.html
-
-# Lien de la documentation web du service (type URL, recommandé).
-service.guide.technical = https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/
-
-# Lien des aides web pour le service (type URL, recommandé).
-service.guide.user =
-
-# Lien de la page de support du service (type URL, recommandé). Exemple : https://exemple.ext/contact.html
-service.contact.url = https://www.immae.eu/contacts_fr.html
-
-# Courriel du support du service (type EMAIL, recommandé). Exemple : contact@exemple.ext
-service.contact.email = contact@mail.immae.eu
-
-# Date d'ouverture du service (type DATE, recommandé). Exemple : 20/03/2020
-service.startdate = 01/01/2019
-
-# Date de fermeture du service (type DATE, optionnel).
-service.enddate =
-
-# Statut du service (un parmi {OK,WARNING,ALERT,ERROR,OVER,VOID}, obligatoire).
-service.status.level = OK
-
-# Description du statut du service (type STRING, optionnel, exemple : mise à jour en cours)
-service.status.description = OK
-
-# Inscriptions requises pour utiliser le service (parmi None;Free;Member;Client, obligatoire).
-service.registration = None
-
-# [Software]
-# Nom du logiciel (type STRING, obligatoire).
-software.name = Etherpad
-
-# Lien du site web du logiciel (type URL, recommandé).
-software.website = https://etherpad.org/
-
-# Lien web vers la licence du logiciel (type URL, obligatoire).
-software.license.url = https://github.com/ether/etherpad-lite/blob/develop/LICENSE
-
-# Nom de la licence du logiciel (type STRING, obligatoire).
-software.license.name = Apache License Version 2.0
-
-# Version du logiciel (type STRING, recommandé).
-software.version = 1.8.3
-
-# Lien web vers les sources du logiciel (type URL, recommandé).
-software.source.url = https://github.com/ether/etherpad-lite
-
-# Liste de modules optionnels installés (type VALUES, optionnel, ex. Nextcloud-Calendar,Nextcloud-Talk).
-software.modules = ep_align,ep_bookmark,ep_colors,ep_comments_page,ep_cursortrace,ep_delete_empty_pads,ep_embedmedia,ep_font_size,ep_headings2,ep_immae_buttons,ep_ldapauth,ep_line_height,ep_markdown,ep_mypads,ep_page_view,ep_previewimages,ep_ruler,ep_scrollto,ep_set_title_on_pad,ep_subscript_and_superscript,ep_timesliderdiff
-
-
-# [Host]
-# Nom de l'hébergeur de la machine qui fait tourner le service, dans le cas d'un auto-hébergement c'est vous ! (type STRING, obligatoire). Exemple : OVH.
-host.name = Hetzner
-
-# Description de l'hébergeur (type STRING, optionnel).
-host.description =
-
-# Type de serveur (un parmi NANO, PHYSICAL, VIRTUAL, SHARED, CLOUD, obligatoire, ex. PHYSICAL).
-# NANO : nano-ordinateur (Raspberry Pi, Olimex…)
-# PHYSICAL : machine physique
-# VIRTUAL : machine virtuelle
-# SHARED : hébergement mutualisé
-# CLOUD : infrastructure multi-serveurs
-host.server.type = PHYSICAL
-
-# Type d'hébergement (un parmi HOME, HOSTEDBAY, HOSTEDSERVER, OUTSOURCED, obligatoire, ex. HOSTEDSERVER).
-# HOME : hébergement à domicile
-# HOSTEDBAY : serveur personnel hébergé dans une baie d'un fournisseur
-# HOSTEDSERVER : serveur d'un fournisseur
-# OUTSOURCED : infrastructure totalement sous-traitée
-host.provider.type = HOSTEDSERVER
-
-# Si vous avez du mal à remplir les champs précédents, ce tableau pourra vous aider :
-# NANO PHYSICAL VIRTUAL SHARED CLOUD
-# HOME pm pm vm shared cloud
-# HOSTEDBAY -- pm vm shared cloud
-# HOSTEDSERVER -- pm vm shared cloud
-# OUTSOURCED -- -- vps shared cloud
-# Légendes : pm : physical machine ; vm : virtual machine ; vps : virtual private server.
-
-# Pays de l'hébergeur (type STRING, recommandé). Exemple : France
-host.country.name = Allemagne
-
-# Code pays de l'hébergeur (type STRING, recommandé). Exemple : FR
-host.country.code = DE
-
-
-
-# [Subs]
-# Un lien vers un fichier properties complémentaire (type URL, optionnel). Exemple : https://
-subs.foo =
-
-# [Metrics]
-# Nom du métrique (type STRING, recommandé).
-metrics.http.total.name = Nombre total de requêtes HTTP
-
-# Description du métrique (type STRING, recommandé).
-metrics.http.total.description = Somme des requêtes HTTP ipv4 et ipv6.
-
-# Métrique à valeur anuelle (type NUMERIC, optionnel).
-metrics.http.total.2020 =
-
-# Métrique à valeur mensuelle (type MONTHS, optionnel).
-metrics.http.total.2020.months=
-
-# Métrique à valeur hebdomadaire (type WEEKS, optionnel).
-metrics.http.total.2020.weeks=
-
-# Métrique à valeur quotidienne (type DAYS, optionnel).
-metrics.http.total.2020.days=
-
-
-# Nom du métrique (type STRING, recommandé).
-metrics.visitors.total.name = Nombre total de visiteurs
-
-# Description du métrique (type STRING, recommandé).
-metrics.visitors.total.description =
-
-# Métrique à valeur anuelle (type NUMERIC, optionnel).
-metrics.visitors.total.2020 =
-
-# Métrique à valeur mensuelle (type MONTHS, optionnel).
-metrics.visitors.total.2020.months=
-
-# Métrique à valeur hebdomadaire (type WEEKS, optionnel).
-metrics.visitors.total.2020.weeks=
-
-# Métrique à valeur quotidienne (type DAYS, optionnel).
-metrics.visitors.total.2020.days=
-
-
-# [Metrics spécifiques au service]
diff --git a/modules/private/websites/immae/eurl/certificates/2021-certificate.crt b/modules/private/websites/immae/eurl/certificates/2021-certificate.crt
deleted file mode 100644
index 671534c..0000000
--- a/modules/private/websites/immae/eurl/certificates/2021-certificate.crt
+++ /dev/null
@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDyzCCArOgAwIBAgIUXNW7Lmte+fa5YxI7Gdznl7ZaLPIwDQYJKoZIhvcNAQEL
-BQAwdTELMAkGA1UEBhMCRlIxGDAWBgNVBAgMD0FscGVzLU1hcml0aW1lczEPMA0G
-A1UEBwwGR3Jhc3NlMRUwEwYDVQQKDAxJbW1hZUV1IEVVUkwxJDAiBgkqhkiG9w0B
-CQEWFWNvbnRhY3RAbWFpbC5pbW1hZS5ldTAeFw0yMTAxMTkwMDI5MDlaFw0yMjAx
-MTkwMDI5MDlaMHUxCzAJBgNVBAYTAkZSMRgwFgYDVQQIDA9BbHBlcy1NYXJpdGlt
-ZXMxDzANBgNVBAcMBkdyYXNzZTEVMBMGA1UECgwMSW1tYWVFdSBFVVJMMSQwIgYJ
-KoZIhvcNAQkBFhVjb250YWN0QG1haWwuaW1tYWUuZXUwggEiMA0GCSqGSIb3DQEB
-AQUAA4IBDwAwggEKAoIBAQDeyWKvTu2kuJ2HSgRzZZL6yFNHUXGgcl/q8vlRKFI4
-P0yHwcEwDCaCXquqS09WN99H55aNTjHfnu70dZXogyWHGk4vlaUkGiUoCAYK5tFU
-34fzpZuInhBL8nRY0pRV4H2t02jQMyiYowZXTqR86BRocbXZ4TY5EwD/hlrH6iDc
-pIlC7cVnWV4J5qXX9fXALbpXseD9PF0/y2tP5dM658jBL9KdW1PqlPGudvB44Z+a
-pE8XCXF9PGrVBNN7aPmizOb42scx/2XghX1DYCikiUf8m+FGjidxGlXmj4B6Dukp
-b7RxdkY7p97svH91uMQuUvDW5d93ZiatHNeYuAl8yI39AgMBAAGjUzBRMB0GA1Ud
-DgQWBBSgsFwzEybKyLF/Bkuz7FA5SwfwPTAfBgNVHSMEGDAWgBSgsFwzEybKyLF/
-Bkuz7FA5SwfwPTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQDX
-Wij/gDT+7N/pSSVWImiYoe+/KsAJd0TLs39GJkvW0114RXKINYNU8exNY7rKMVCl
-TKePEevSo5CCartNfLXGIr3uqPlR+V3XF6KmyMSiB6k+GukoUtUg2Bp7ESGlpZXi
-wkHYclk0NIzxWyUrzNdflxu3gPU278qFMbUIlbdWNsHtrLbpHypelPQ+IaEbNoWV
-Q+M8Vg6ifsDmhp7TqFXpIoGa6CIxXuknDOidBpeE9kPjVu0kKrjXQULirNl3eEe6
-H1XUQ7lSdt/l3N1cHTj70x2xIi6fdwPQRqhXILrIuST+C0wpPiqPCv1rfcwh0PvU
-mZVZ/+83y3Zuo9lVqkbB
------END CERTIFICATE-----
diff --git a/modules/private/websites/immae/matrix/client b/modules/private/websites/immae/matrix/client
deleted file mode 100644
index 2769de5..0000000
--- a/modules/private/websites/immae/matrix/client
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "m.homeserver": {
- "base_url": "https://immae.ems.host"
- },
- "m.identity_server": {
- "base_url": "https://vector.im"
- }
-}
diff --git a/modules/private/websites/immae/matrix/server b/modules/private/websites/immae/matrix/server
deleted file mode 100644
index 449155a..0000000
--- a/modules/private/websites/immae/matrix/server
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "m.server": "immae.ems.host:443"
-}
diff --git a/modules/private/websites/immae/production.nix b/modules/private/websites/immae/production.nix
deleted file mode 100644
index 8b4998f..0000000
--- a/modules/private/websites/immae/production.nix
+++ /dev/null
@@ -1,137 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.immae.production;
- varDir = "/var/lib/buildbot/outputs/immae/blog";
- coursDir = "/var/lib/buildbot/outputs/immae/cours";
- rechercheDir = "/var/lib/buildbot/outputs/immae/recherche";
- recettesDir = "/var/lib/buildbot/outputs/immae/recettes";
- historyDir = "/var/lib/buildbot/outputs/immae/history";
- docsDir = "/var/lib/buildbot/outputs/immae/docs/";
- env = config.myEnv.websites.immae;
-in {
- options.myServices.websites.immae.production.enable = lib.mkEnableOption "enable Immae's website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "www.immae.eu"; } ];
-
- services.websites.env.production.vhostConfs.immae_production = {
- certName = "immae";
- addToCerts = true;
- certMainHost = "www.immae.eu";
- hosts = [ "www.immae.eu" "immae.eu" ];
- root = varDir;
- extraConfig = [
- ''
- Use Stats www.immae.eu
- Header always set Strict-Transport-Security "max-age=31536000"
-
-
- Header always set Referrer-Policy "strict-origin-when-cross-origin"
- RequestHeader set X-Forwarded-Proto "https"
-
- RewriteRule ^(.*)$ https://mastodon.immae.eu%{REQUEST_URI} [QSA,L]
-
-
- RewriteEngine On
- RewriteCond "%{REQUEST_URI}" "!^/.well-known/(webfinger|host-meta)"
- RewriteCond "%{HTTP_HOST}" "!^www\.immae\.eu$" [NC]
- RewriteRule ^(.+)$ https://www.immae.eu$1 [R=302,L]
-
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
-
-
- Alias /.well-known/chatonsinfos ${./chatons}
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
-
- Alias /.well-known/matrix ${./matrix}
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
- Header always set Access-Control-Allow-Origin "*"
-
-
- Alias /cours ${coursDir}
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
-
-
- Alias /docs ${docsDir}
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
-
-
- Alias /eurl ${./eurl}
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
-
- Alias /recherche ${rechercheDir}
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
-
-
- Alias /recettes ${recettesDir}
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
-
-
- Alias /history ${historyDir}
-
- DirectoryIndex index.html
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
-
- services.websites.env.production.vhostConfs.immae_fr = {
- certName = "immae";
- addToCerts = true;
- hosts = [ "www.immae.fr" "immae.fr" ];
- root = null;
- extraConfig = [ ''
- RedirectMatch 301 ^/((?!\.well-known.*$).*)$ https://www.immae.eu/chapeaux/
- '' ];
- };
-
- services.websites.env.production.vhostConfs.immae_bouya = {
- certName = "immae";
- addToCerts = true;
- hosts = [ "bouya.org" "www.bouya.org" ];
- root = rechercheDir;
- extraConfig = [ ''
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
-
- '' ];
- };
- };
-}
diff --git a/modules/private/websites/immae/release.nix b/modules/private/websites/immae/release.nix
deleted file mode 100644
index d06af87..0000000
--- a/modules/private/websites/immae/release.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.immae.release;
- varDir = "/var/lib/ftp/release.immae.eu";
- env = config.myEnv.websites.release;
-in {
- options.myServices.websites.immae.release.enable = lib.mkEnableOption "enable Release' website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "release.immae.eu"; } ];
-
- services.websites.env.production.vhostConfs.immae_release = {
- certName = "immae";
- addToCerts = true;
- hosts = [ "release.immae.eu" ];
- root = varDir;
- extraConfig = [
- ''
- Use Stats release.immae.eu
-
- Use Apaxy "${varDir}" "title .duplicity-ignore"
-
- Use LDAPConnect
- Options Indexes
- AllowOverride All
- Require all granted
-
-
-
- Use LDAPConnect
- Options Indexes FollowSymlinks
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/immae/temp.nix b/modules/private/websites/immae/temp.nix
deleted file mode 100644
index 19aef1a..0000000
--- a/modules/private/websites/immae/temp.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.immae.temp;
- varDir = "/var/lib/immae_temp";
- env = config.myEnv.websites.immae.temp;
-in {
- options.myServices.websites.immae.temp.enable = lib.mkEnableOption "enable Temp' website";
-
- config = lib.mkIf cfg.enable {
- services.websites.env.production.vhostConfs.immae_temp = {
- certName = "immae";
- addToCerts = true;
- hosts = [ "temp.immae.eu" ];
- root = null;
- extraConfig = [ ''
- ProxyVia On
- ProxyRequests Off
- ProxyPreserveHost On
- ProxyPass / unix:///run/surfer/listen.sock|http://temp.immae.eu/
- ProxyPassReverse / unix:///run/surfer/listen.sock|http://temp.immae.eu/
-
- Options FollowSymLinks MultiViews
- AllowOverride None
- Require all granted
-
- '' ];
- };
-
- secrets.keys."webapps/surfer" = {
- permissions = "0400";
- user = "wwwrun";
- group = "wwwrun";
- text = ''
- CLOUDRON_LDAP_URL=ldaps://${env.ldap.host}
- CLOUDRON_LDAP_USERS_BASE_DN=${env.ldap.base}
- TOKENSTORE_FILE=/var/lib/surfer/tokens.json
- CLOUDRON_LDAP_BIND_DN=${env.ldap.dn}
- CLOUDRON_LDAP_BIND_PASSWORD=${env.ldap.password}
- CLOUDRON_LDAP_USERS_BASE_DN=${env.ldap.base}
- CLOUDRON_LDAP_FILTER="${env.ldap.filter}"
- LISTEN=/run/surfer/listen.sock
- '';
- };
-
- systemd.services.surfer = {
- description = "Surfer";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
-
- script = ''
- exec ${pkgs.webapps.surfer}/bin/surfer-server ${varDir}
- '';
- serviceConfig = {
- EnvironmentFile = config.secrets.fullPaths."webapps/surfer";
- User = "wwwrun";
- Group = "wwwrun";
- StateDirectory = "surfer";
- RuntimeDirectory = "surfer";
- Type = "simple";
- };
- };
- };
-}
-
diff --git a/modules/private/websites/isabelle/aten_app/default.nix b/modules/private/websites/isabelle/aten_app/default.nix
deleted file mode 100644
index f967b9a..0000000
--- a/modules/private/websites/isabelle/aten_app/default.nix
+++ /dev/null
@@ -1,61 +0,0 @@
-{ environment ? "prod"
-, varDir ? "/var/lib/aten_${environment}"
-, composerEnv, fetchgit, runCommand, nodejs-10_x, jq, libsass, python, fetchurl, yarn2nix-moretea, yarn, sources }:
-let
- yarn2nix-moretea' = yarn2nix-moretea.override({
- yarn = yarn.override({ nodejs = nodejs-10_x; });
- nodejs = nodejs-10_x;
- });
- packagesource = sources.websites-isabelle-aten;
- packagejson = runCommand "package.json" { buildInputs = [ jq ]; } ''
- cat ${packagesource}/package.json | jq -r '.version = "v1.0.0"|.name="aten"' > $out
- '';
- yarnModules = yarn2nix-moretea'.mkYarnModules rec {
- name = "aten-yarn";
- pname = name;
- version = "v1.0.0";
- packageJSON = packagejson;
- yarnLock = "${packagesource}/yarn.lock";
- yarnNix = ./yarn-packages.nix;
- pkgConfig = {
- node-sass = {
- buildInputs = [ libsass python ];
- postInstall = let
- nodeHeaders = fetchurl {
- url = "https://nodejs.org/download/release/v${nodejs-10_x.version}/node-v${nodejs-10_x.version}-headers.tar.gz";
- sha256 = "15hkcbs328d3rc1s14rmky8lh8d3rr86l8k0bia0ggxzwl23lj9c";
- };
- in
- ''
- node scripts/build.js --tarball=${nodeHeaders}
- '';
- };
- };
- };
- app = composerEnv.buildPackage (
- import ./php-packages.nix { inherit composerEnv fetchurl fetchgit; } //
- rec {
- version = packagesource.version;
- pname = "aten";
- name = "${pname}-${version}";
- src = packagesource;
- noDev = (environment == "prod");
- preInstall = ''
- export SYMFONY_ENV="${environment}"
- export APP_ENV="${environment}"
- '';
- postInstall = ''
- ln -sf ${yarnModules}/node_modules .
- yarn run --offline encore production
- rm -rf var/{log,cache}
- ln -sf ${varDir}/{log,cache} var/
- '';
- buildInputs = [ yarnModules yarn2nix-moretea'.yarn ];
- passthru = {
- inherit varDir;
- inherit environment;
- webRoot = "${app}/public";
- };
- }
- );
-in app
diff --git a/modules/private/websites/isabelle/aten_app/php-packages.nix b/modules/private/websites/isabelle/aten_app/php-packages.nix
deleted file mode 100644
index 3647938..0000000
--- a/modules/private/websites/isabelle/aten_app/php-packages.nix
+++ /dev/null
@@ -1,740 +0,0 @@
-# Generated with composer2nix and adapted to return only the list of
-# packages
-{ composerEnv, fetchurl, fetchgit ? null }:
-{
- packages = {
- "behat/transliterator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "behat-transliterator-826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c";
- src = fetchurl {
- url = https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c;
- sha256 = "1mgc9azx79fkrxahji3xwbgqhlcnvh3xk6llqdvhjb7vgzj4bqq0";
- };
- };
- };
- "doctrine/annotations" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-annotations-c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5;
- sha256 = "0b80xpqd3j99xgm0c41kbgy0k6knrfnd29223c93295sb12112g7";
- };
- };
- };
- "doctrine/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-cache-d768d58baee9a4862ca783840eca1b9add7a7f57";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57;
- sha256 = "1kljhw4gqp12iz88h6ymsrlfir2fis7icn6dffyizfc1csyb4s2i";
- };
- };
- };
- "doctrine/collections" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-collections-a01ee38fcd999f34d9bfbcee59dbda5105449cbf";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf;
- sha256 = "0d36zc21ka0pdac9xpkxsgf5zzw9gp0m9lk3r3xs5y70j0lkkkis";
- };
- };
- };
- "doctrine/common" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-common-30e33f60f64deec87df728c02b107f82cdafad9d";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/common/zipball/30e33f60f64deec87df728c02b107f82cdafad9d;
- sha256 = "0s4vv14ibyx62a9aj3wn5cs2bbxd72fajmfmi8qb5l11gx0375na";
- };
- };
- };
- "doctrine/dbal" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-dbal-22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/dbal/zipball/22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9;
- sha256 = "0kbahs699jd8pxf512dgg7arv49dc7qzi3mx8snxqm4h15n5brnj";
- };
- };
- };
- "doctrine/doctrine-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-bundle-82d2c63cd09acbde2332f55d9aa7b28aefe4983d";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineBundle/zipball/82d2c63cd09acbde2332f55d9aa7b28aefe4983d;
- sha256 = "0gzrigv360rp50yxpwidbkf8vlagym0w1if010yz5xcfrz37cpn3";
- };
- };
- };
- "doctrine/doctrine-cache-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-cache-bundle-5514c90d9fb595e1095e6d66ebb98ce9ef049927";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/5514c90d9fb595e1095e6d66ebb98ce9ef049927;
- sha256 = "04njrfhw4fc2ifacd9h0wd9i14l7ycv3hanbqrw5ilsai02j6asa";
- };
- };
- };
- "doctrine/doctrine-migrations-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-migrations-bundle-49fa399181db4bf4f9f725126bd1cb65c4398dce";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49fa399181db4bf4f9f725126bd1cb65c4398dce;
- sha256 = "1a73xjhjrjlvkh8d253kfc2rbxd2h4hwafhv5078dy7rg6x9blyn";
- };
- };
- };
- "doctrine/event-manager" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-event-manager-a520bc093a0170feeb6b14e9d83f3a14452e64b3";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3;
- sha256 = "165cxvw4idqj01l63nya2whpdb3fz6ld54rx198b71bzwfrydl88";
- };
- };
- };
- "doctrine/inflector" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-inflector-5527a48b7313d15261292c149e55e26eae771b0a";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a;
- sha256 = "0ng6vlwjr8h6hqwa32ynykz1mhlfsff5hirjidlk086ab6njppa5";
- };
- };
- };
- "doctrine/instantiator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-instantiator-185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda;
- sha256 = "1mah9a6mb30qad1zryzjain2dxw29d8h4bjkbcs3srpm3p891msy";
- };
- };
- };
- "doctrine/lexer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-lexer-83893c552fd2045dd78aef794c31e694c37c0b8c";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c;
- sha256 = "0cyh3vwcl163cx1vrcwmhlh5jg9h47xwiqgzc6rwscxw0ppd1v74";
- };
- };
- };
- "doctrine/migrations" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-migrations-215438c0eef3e5f9b7da7d09c6b90756071b43e6";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/migrations/zipball/215438c0eef3e5f9b7da7d09c6b90756071b43e6;
- sha256 = "0k6sgw65vji9rgib10mq2m634m41a67inspkrcw4qixig2lnb3ld";
- };
- };
- };
- "doctrine/orm" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-orm-434820973cadf2da2d66e7184be370084cc32ca8";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/orm/zipball/434820973cadf2da2d66e7184be370084cc32ca8;
- sha256 = "114fyq8kaf5qzfkp8sdygqflf3z94va1cs5c3scycfpg9cmi4gls";
- };
- };
- };
- "doctrine/persistence" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-persistence-c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/persistence/zipball/c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38;
- sha256 = "0xdm5n38rjas1mlyxc15sg1as5h7y012mdb0j9lr6cvphgnaxxv7";
- };
- };
- };
- "doctrine/reflection" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-reflection-02538d3f95e88eb397a5f86274deb2c6175c2ab6";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6;
- sha256 = "12n9zik4lxb9lx1jf0nbvg9vl9nv958a7z1yjx48scfxd1d1sxjy";
- };
- };
- };
- "gedmo/doctrine-extensions" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "gedmo-doctrine-extensions-87c78ff9fd4b90460386f753d95622f6fbbfcb27";
- src = fetchurl {
- url = https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/87c78ff9fd4b90460386f753d95622f6fbbfcb27;
- sha256 = "1i33xy9s18rncc1fllwi2qi7hrxj8g762fvgl9np7xndxa7kclyb";
- };
- };
- };
- "giggsey/libphonenumber-for-php" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "giggsey-libphonenumber-for-php-a71f260c2efce10ded8af030a20fa13edfb0e9be";
- src = fetchurl {
- url = https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/a71f260c2efce10ded8af030a20fa13edfb0e9be;
- sha256 = "15id03c1msyhri7j4i63r535g3g56n3x99i8301as63w7m1ybfj5";
- };
- };
- };
- "giggsey/locale" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "giggsey-locale-da6845720b5d104d319d7e84576f54e44dd9e4f5";
- src = fetchurl {
- url = https://api.github.com/repos/giggsey/Locale/zipball/da6845720b5d104d319d7e84576f54e44dd9e4f5;
- sha256 = "0gc8im06h5l794a0drd74s3inps22jr1zr5wnw0b89m06d4nw42j";
- };
- };
- };
- "jdorn/sql-formatter" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "jdorn-sql-formatter-64990d96e0959dff8e059dfcdc1af130728d92bc";
- src = fetchurl {
- url = https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc;
- sha256 = "1dnmkm8mxylvxjwi0bdkzrlklncqx92fa4fwqp5bh2ypj8gaagzi";
- };
- };
- };
- "ocramius/package-versions" = {
- targetDir = "";
- needsModifyRights = true;
- src = composerEnv.buildZipPackage {
- name = "ocramius-package-versions-4489d5002c49d55576fa0ba786f42dbb009be46f";
- src = fetchurl {
- url = https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f;
- sha256 = "039c404g9597x45xh04bnn8kmcyknkbnr57yb9s7vf29vfrg4881";
- };
- };
- };
- "ocramius/proxy-manager" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "ocramius-proxy-manager-14b137b06b0f911944132df9d51e445a35920ab1";
- src = fetchurl {
- url = https://api.github.com/repos/Ocramius/ProxyManager/zipball/14b137b06b0f911944132df9d51e445a35920ab1;
- sha256 = "10y5msgh2jdlw4w075fasv40yq01szjy15m3f0wgc89hlfmqz0sn";
- };
- };
- };
- "opensoft/doctrine-postgres-types" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "opensoft-doctrine-postgres-types-7e69bdfeb2ae61c2f1e90872370cdf0135fb3006";
- src = fetchurl {
- url = https://api.github.com/repos/opensoft/doctrine-postgres-types/zipball/7e69bdfeb2ae61c2f1e90872370cdf0135fb3006;
- sha256 = "1v9rjq82dxnpnb6bir6irkj54324a02qlybayvq2gf2807241bjj";
- };
- };
- };
- "presta/sitemap-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "presta-sitemap-bundle-16a2c0eae7320e3647013e48026a6a6bd14f75df";
- src = fetchurl {
- url = https://api.github.com/repos/prestaconcept/PrestaSitemapBundle/zipball/16a2c0eae7320e3647013e48026a6a6bd14f75df;
- sha256 = "1hqh144awazafa2vpv091h9pyqrppbalcvzf9c1n6h387jwwj5l8";
- };
- };
- };
- "psr/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-cache-d11b50ad223250cf17b86e38383413f5a6764bf8";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8;
- sha256 = "06i2k3dx3b4lgn9a4v1dlgv8l9wcl4kl7vzhh63lbji0q96hv8qz";
- };
- };
- };
- "psr/container" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-container-b7ce3b176482dbbc1245ebf52b181af44c2cf55f";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f;
- sha256 = "0rkz64vgwb0gfi09klvgay4qnw993l1dc03vyip7d7m2zxi6cy4j";
- };
- };
- };
- "psr/log" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-log-6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd;
- sha256 = "1i351p3gd1pgjcjxv7mwwkiw79f1xiqr38irq22156h05zlcx80d";
- };
- };
- };
- "psr/simple-cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-simple-cache-408d5eafb83c57f6365a3ca330ff23aa4a5fa39b";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b;
- sha256 = "1djgzclkamjxi9jy4m9ggfzgq1vqxaga2ip7l3cj88p7rwkzjxgw";
- };
- };
- };
- "sensio/framework-extra-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensio-framework-extra-bundle-1fdf591c4b388e62dbb2579de89c1560b33f865d";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/1fdf591c4b388e62dbb2579de89c1560b33f865d;
- sha256 = "0hhw3lsvgm78rqphgmdrg2inc9997lwx0290x71hsixk08khnlb1";
- };
- };
- };
- "symfony/asset" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-asset-fb06338fd3762f8615b51a58e5e9299ccca03876";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/asset/zipball/fb06338fd3762f8615b51a58e5e9299ccca03876;
- sha256 = "19fbnz2h4z5nxzcy8n3bfbcjwgncabwdlxh70qfkr7bswpsxr6p3";
- };
- };
- };
- "symfony/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-cache-5c4b50d6ba4f1c8955c3454444c1e3cfddaaad41";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/cache/zipball/5c4b50d6ba4f1c8955c3454444c1e3cfddaaad41;
- sha256 = "1wn2rd3n5nj300vsygh60vbjh2k9lh7s9c3ayl614hahrfcfb29s";
- };
- };
- };
- "symfony/config" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-config-005d9a083d03f588677d15391a716b1ac9b887c0";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/config/zipball/005d9a083d03f588677d15391a716b1ac9b887c0;
- sha256 = "1h20qhkzsl5xwzs3rg1yyaq5yn8rg92krfzmpmfgv7d3jp1v03as";
- };
- };
- };
- "symfony/console" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-console-4dff24e5d01e713818805c1862d2e3f901ee7dd0";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/console/zipball/4dff24e5d01e713818805c1862d2e3f901ee7dd0;
- sha256 = "016l3hxcbvyxz3kkkynk12gi8949hl3x09dwsh0x5wqikgnp64c2";
- };
- };
- };
- "symfony/contracts" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-contracts-1aa7ab2429c3d594dd70689604b5cf7421254cdf";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf;
- sha256 = "0jhav49lngmrjg4r5kdpmc7lhmasn2fzkmbvhw62l4i1vnm5r5bm";
- };
- };
- };
- "symfony/debug" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-debug-e0a2b92ee0b5b934f973d90c2f58e18af109d276";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/debug/zipball/e0a2b92ee0b5b934f973d90c2f58e18af109d276;
- sha256 = "0yzyaprsrmbc93gzwr1wdjx05kin7b4hqy5w74zkcxyab09pan7f";
- };
- };
- };
- "symfony/dependency-injection" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-dependency-injection-e4adc57a48d3fa7f394edfffa9e954086d7740e5";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/dependency-injection/zipball/e4adc57a48d3fa7f394edfffa9e954086d7740e5;
- sha256 = "0g8ssf7qm0jf0anvflp033xwdim9z4g73k3kz1vs3smw4pffl6nv";
- };
- };
- };
- "symfony/doctrine-bridge" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-doctrine-bridge-3466c911438e176c20e1943c529131889432d12f";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/doctrine-bridge/zipball/3466c911438e176c20e1943c529131889432d12f;
- sha256 = "0qq644z7l9j9fyydlj68p9f43a9i20rnmxy8pkq5sn4r0yn06bb8";
- };
- };
- };
- "symfony/event-dispatcher" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-event-dispatcher-921f49c3158a276d27c0d770a5a347a3b718b328";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/event-dispatcher/zipball/921f49c3158a276d27c0d770a5a347a3b718b328;
- sha256 = "05i8syqbzhh11cf2i9d64s8b5x41mfsribfa62rvc0mhbqk7ifzf";
- };
- };
- };
- "symfony/filesystem" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-filesystem-2f4c8b999b3b7cadb2a69390b01af70886753710";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/filesystem/zipball/2f4c8b999b3b7cadb2a69390b01af70886753710;
- sha256 = "1gi14q8gf250a3rzmr6arb08ljpzpfg868vm0z21fgmf0zh0dqr6";
- };
- };
- };
- "symfony/finder" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-finder-e53d477d7b5c4982d0e1bfd2298dbee63d01441d";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/finder/zipball/e53d477d7b5c4982d0e1bfd2298dbee63d01441d;
- sha256 = "1mpxwgvfqzng36xbdvda6nk1zidyr9dgswccmr4z15k0i9gi0qsj";
- };
- };
- };
- "symfony/flex" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-flex-955774ecf07b10230bb5b44e150ba078b45f68fa";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/flex/zipball/955774ecf07b10230bb5b44e150ba078b45f68fa;
- sha256 = "069v1s810mq5kqvx68x87lmlz0h9b2kgla1znnibnbh6j6k4qg6d";
- };
- };
- };
- "symfony/form" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-form-5ab767b7732154ca6f45c92e30e081178edf30ad";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/form/zipball/5ab767b7732154ca6f45c92e30e081178edf30ad;
- sha256 = "1g65a7hl1kk6rpa6q52fyzy6vkjafr3233hi2qiggyp0qys20kcc";
- };
- };
- };
- "symfony/framework-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-framework-bundle-eb32d67140510f04fe9cc5fb9ad38fda09591db1";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/framework-bundle/zipball/eb32d67140510f04fe9cc5fb9ad38fda09591db1;
- sha256 = "06dpqppwyngq1frww0q0zjs0gj8na0fi67czlhqf2x2lizgz6wjd";
- };
- };
- };
- "symfony/http-foundation" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-http-foundation-1b31f3017fadd8cb05cf2c8aebdbf3b12a943851";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/http-foundation/zipball/1b31f3017fadd8cb05cf2c8aebdbf3b12a943851;
- sha256 = "0s6mx79gl6sp39bk8213xcdzx4ld5xim38s8lckm7wqnkvx94mfl";
- };
- };
- };
- "symfony/http-kernel" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-http-kernel-b39ceffc0388232c309cbde3a7c3685f2ec0a624";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/http-kernel/zipball/b39ceffc0388232c309cbde3a7c3685f2ec0a624;
- sha256 = "17rb1hl9r8rlqw1cv9qx2ckvz81g2ylppirq035mya1a848y5ym5";
- };
- };
- };
- "symfony/inflector" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-inflector-f9a637c0359f74404d44cf0da0a3ce53bae0787e";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/inflector/zipball/f9a637c0359f74404d44cf0da0a3ce53bae0787e;
- sha256 = "1sp1pk716biyplqpakcpq71ik2h2m1bvsz9cfj9zd63y2723xna3";
- };
- };
- };
- "symfony/intl" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-intl-748a1c54903344385f88fef75da293915b16a207";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/intl/zipball/748a1c54903344385f88fef75da293915b16a207;
- sha256 = "1vwa2n7fglxs8rv1yrbxn6vgizg73asimg794igk27i90xdybfmc";
- };
- };
- };
- "symfony/lts" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-lts-c1affae45b78aee036effa1759237e7fa96d4af2";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/lts/zipball/c1affae45b78aee036effa1759237e7fa96d4af2;
- sha256 = "0vk9pn4xl7ascvllak0gschdd1w2mxma3ng04j3r1n13zccxc33s";
- };
- };
- };
- "symfony/options-resolver" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-options-resolver-a9c38e8a3da2c03b3e71fdffa6efb0bda51390ba";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/options-resolver/zipball/a9c38e8a3da2c03b3e71fdffa6efb0bda51390ba;
- sha256 = "1fjjlp09mwkjcxg98bihqlq4miq24k13691051f5p39lcy03zmb3";
- };
- };
- };
- "symfony/orm-pack" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-orm-pack-1b58f752cd917a08c9c8df020781d9c46a2275b1";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/orm-pack/zipball/1b58f752cd917a08c9c8df020781d9c46a2275b1;
- sha256 = "1sk8jchaw29lmpq76yb24mc1csmifnkvbjdrgjdgqs6x5i39plli";
- };
- };
- };
- "symfony/polyfill-intl-icu" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-intl-icu-f22a90256d577c7ef7efad8df1f0201663d57644";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/f22a90256d577c7ef7efad8df1f0201663d57644;
- sha256 = "0x7h8l248l1gc07xmvfixq6p80ifdaa29qympfq3jzfb79k69slq";
- };
- };
- };
- "symfony/polyfill-mbstring" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-mbstring-c79c051f5b3a46be09205c73b80b346e4153e494";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494;
- sha256 = "18v2777cky55ah6xi4dh383mp4iddwzmnvx81qd86y1kgfykwhpi";
- };
- };
- };
- "symfony/property-access" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-property-access-b6df4e1849f389468edb36e2e59877d4a8170723";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/property-access/zipball/b6df4e1849f389468edb36e2e59877d4a8170723;
- sha256 = "16pbnv3x56gp5wxakmbphf3d4igkjyr3v693n3cjm62h72z4dxf3";
- };
- };
- };
- "symfony/routing" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-routing-649460207e77da6c545326c7f53618d23ad2c866";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/routing/zipball/649460207e77da6c545326c7f53618d23ad2c866;
- sha256 = "1qjkgghs0kp4lk4711d3gx26vvilrrrjbbz02navzfqy4xjrf0sw";
- };
- };
- };
- "symfony/translation" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-translation-c0e2191e9bed845946ab3d99767513b56ca7dcd6";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/translation/zipball/c0e2191e9bed845946ab3d99767513b56ca7dcd6;
- sha256 = "0gzq7f2izsiam9blha85bzvg7x6zc4f3x3bkwhzma6x6ipjfkla2";
- };
- };
- };
- "symfony/twig-bridge" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-twig-bridge-2e928d6c8244e7f3b32bcfac5814095a83179e60";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/twig-bridge/zipball/2e928d6c8244e7f3b32bcfac5814095a83179e60;
- sha256 = "1f902j8b0lyqjss9r2mf7j63apv5z8ki57vmcdcw5jlqagbmw1y1";
- };
- };
- };
- "symfony/twig-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-twig-bundle-024820cbb4aeffc4843c4170b69c057fb4840fb3";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/twig-bundle/zipball/024820cbb4aeffc4843c4170b69c057fb4840fb3;
- sha256 = "1qqfpxw228lc024whpr4j6aa6k9ly290nxz9c9ds826lllg2l1zh";
- };
- };
- };
- "symfony/validator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-validator-cd35bb14a0e81bd99835e36cac4db1e72ad1939b";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/validator/zipball/cd35bb14a0e81bd99835e36cac4db1e72ad1939b;
- sha256 = "1809yz483mv5mmrw14v3b371dmjab7i455gxkrqm0z8n0wjdn6i3";
- };
- };
- };
- "symfony/var-exporter" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-var-exporter-a39222e357362424b61dcde50e2f7b5a7d3306db";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/var-exporter/zipball/a39222e357362424b61dcde50e2f7b5a7d3306db;
- sha256 = "1ys2sc3ivgfxq7kj8cydxqh5179d3niqxsy10lgg18c5a6bsj41j";
- };
- };
- };
- "symfony/webpack-encore-pack" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-webpack-encore-pack-8d7f51379d7ae17aea7cf501d910a11896895ac4";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/webpack-encore-pack/zipball/8d7f51379d7ae17aea7cf501d910a11896895ac4;
- sha256 = "0k6xavcyihx45dsrm1r2r1lbn7vryy463akz66w4gycx5dcqrw0j";
- };
- };
- };
- "symfony/yaml" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-yaml-c41175c801e3edfda90f32e292619d10c27103d7";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/yaml/zipball/c41175c801e3edfda90f32e292619d10c27103d7;
- sha256 = "0bh9365mmvzhdk1m0b1xarlg0swx9pv916m7xifcmdrxn67w552p";
- };
- };
- };
- "twig/twig" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "twig-twig-a11dd39f5b6589e14f0ff3b36675d06047c589b1";
- src = fetchurl {
- url = https://api.github.com/repos/twigphp/Twig/zipball/a11dd39f5b6589e14f0ff3b36675d06047c589b1;
- sha256 = "0rnwam9379gj5m4ik0fh6c81dbr7kwj2b3x1gnmpf6awa5fm261n";
- };
- };
- };
- "zendframework/zend-code" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-code-c21db169075c6ec4b342149f446e7b7b724f95eb";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-code/zipball/c21db169075c6ec4b342149f446e7b7b724f95eb;
- sha256 = "031mfsahjkl63348020wq05273kvszx0dv2766zmzncnd6fcggw1";
- };
- };
- };
- "zendframework/zend-eventmanager" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-eventmanager-a5e2583a211f73604691586b8406ff7296a946dd";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd;
- sha256 = "08a05gn40hfdy2zhz4gcd3r6q7m7zcaks5kpvb9dx1awgx0pzr8n";
- };
- };
- };
- };
- devPackages = {
- "nikic/php-parser" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "nikic-php-parser-8aae5b59b83bb4d0dbf07b0a835f2680a658f610";
- src = fetchurl {
- url = https://api.github.com/repos/nikic/PHP-Parser/zipball/8aae5b59b83bb4d0dbf07b0a835f2680a658f610;
- sha256 = "103ix4bsvrwyc4wxh9cqd38xffn25kq3phnpgk8b3z7dqvvr2pss";
- };
- };
- };
- "symfony/dotenv" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-dotenv-97f135ab40f969cbeae27d482ff63acbc33dbe2a";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/dotenv/zipball/97f135ab40f969cbeae27d482ff63acbc33dbe2a;
- sha256 = "1jwpxb4w0mi5p89k51l1g84hnnj9s8kjl9jsx3xj39hhc3dy44pc";
- };
- };
- };
- "symfony/maker-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-maker-bundle-24b19cccad0c658eca516b35b08668d123fabf92";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/maker-bundle/zipball/24b19cccad0c658eca516b35b08668d123fabf92;
- sha256 = "1wm17jl3gk0m5ma7nz40y7ryxgm0qncrxcrqdqg5x6afwla85grp";
- };
- };
- };
- "symfony/polyfill-php72" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-php72-9050816e2ca34a8e916c3a0ae8b9c2fccf68b631";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631;
- sha256 = "1smd08fw64mf89s9ma099ayfjlz26wrix9hfr6kh5w4d0rzrhmlw";
- };
- };
- };
- "symfony/profiler-pack" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-profiler-pack-99c4370632c2a59bb0444852f92140074ef02209";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/profiler-pack/zipball/99c4370632c2a59bb0444852f92140074ef02209;
- sha256 = "12xisnrqq6q5l0v8bric0p23bsaxh50x43fq7wn2adnsz24nv9pi";
- };
- };
- };
- "symfony/stopwatch" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-stopwatch-ec076716412274e51f8a7ea675d9515e5c311123";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/stopwatch/zipball/ec076716412274e51f8a7ea675d9515e5c311123;
- sha256 = "0fzh2bh7lm8f222hk5ihfkpi697babfrz1r0dghlws17hfbgzgax";
- };
- };
- };
- "symfony/var-dumper" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-var-dumper-db61258540350725f4beb6b84006e32398acd120";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/var-dumper/zipball/db61258540350725f4beb6b84006e32398acd120;
- sha256 = "0pw3hf4mcc1q9miswrjbgr32x0a2dfjvpi16pjzw173xmf79i4iz";
- };
- };
- };
- "symfony/web-profiler-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-web-profiler-bundle-198cb0a6b85346bbab5e1bc74a0eb175b9fa2d08";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/web-profiler-bundle/zipball/198cb0a6b85346bbab5e1bc74a0eb175b9fa2d08;
- sha256 = "0r4r3zf22860mdx8b2l72ghz8liyi3l39cc1934b2lkh2kghlsi6";
- };
- };
- };
- };
-}
diff --git a/modules/private/websites/isabelle/aten_app/yarn-packages.nix b/modules/private/websites/isabelle/aten_app/yarn-packages.nix
deleted file mode 100644
index c16d9dc..0000000
--- a/modules/private/websites/isabelle/aten_app/yarn-packages.nix
+++ /dev/null
@@ -1,7871 +0,0 @@
-{fetchurl, linkFarm}: rec {
- offline_cache = linkFarm "offline" packages;
- packages = [
-
- {
- name = "_symfony_webpack_encore___webpack_encore_0.19.0.tgz";
- path = fetchurl {
- name = "_symfony_webpack_encore___webpack_encore_0.19.0.tgz";
- url = "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-0.19.0.tgz";
- sha1 = "f0725dbbede5ff9d9fdbd7a07f84accafc83ca14";
- };
- }
-
- {
- name = "_types_node___node_10.5.3.tgz";
- path = fetchurl {
- name = "_types_node___node_10.5.3.tgz";
- url = "https://registry.yarnpkg.com/@types/node/-/node-10.5.3.tgz";
- sha1 = "5bcfaf088ad17894232012877669634c06b20cc5";
- };
- }
-
- {
- name = "_types_tapable___tapable_0.2.5.tgz";
- path = fetchurl {
- name = "_types_tapable___tapable_0.2.5.tgz";
- url = "https://registry.yarnpkg.com/@types/tapable/-/tapable-0.2.5.tgz";
- sha1 = "2443fc12da514c81346b1a665675559cee21fa75";
- };
- }
-
- {
- name = "_types_uglify_js___uglify_js_3.0.3.tgz";
- path = fetchurl {
- name = "_types_uglify_js___uglify_js_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.0.3.tgz";
- sha1 = "801a5ca1dc642861f47c46d14b700ed2d610840b";
- };
- }
-
- {
- name = "_types_webpack___webpack_3.8.14.tgz";
- path = fetchurl {
- name = "_types_webpack___webpack_3.8.14.tgz";
- url = "https://registry.yarnpkg.com/@types/webpack/-/webpack-3.8.14.tgz";
- sha1 = "e2bfdf7f604b3f7dc776eaa17446d7f7538f3de7";
- };
- }
-
- {
- name = "abbrev___abbrev_1.1.1.tgz";
- path = fetchurl {
- name = "abbrev___abbrev_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz";
- sha1 = "f8f2c887ad10bf67f634f005b6987fed3179aac8";
- };
- }
-
- {
- name = "accepts___accepts_1.3.5.tgz";
- path = fetchurl {
- name = "accepts___accepts_1.3.5.tgz";
- url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz";
- sha1 = "eb777df6011723a3b14e8a72c0805c8e86746bd2";
- };
- }
-
- {
- name = "acorn_dynamic_import___acorn_dynamic_import_2.0.2.tgz";
- path = fetchurl {
- name = "acorn_dynamic_import___acorn_dynamic_import_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz";
- sha1 = "c752bd210bef679501b6c6cb7fc84f8f47158cc4";
- };
- }
-
- {
- name = "acorn___acorn_4.0.13.tgz";
- path = fetchurl {
- name = "acorn___acorn_4.0.13.tgz";
- url = "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz";
- sha1 = "105495ae5361d697bd195c825192e1ad7f253787";
- };
- }
-
- {
- name = "acorn___acorn_5.7.1.tgz";
- path = fetchurl {
- name = "acorn___acorn_5.7.1.tgz";
- url = "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz";
- sha1 = "f095829297706a7c9776958c0afc8930a9b9d9d8";
- };
- }
-
- {
- name = "adjust_sourcemap_loader___adjust_sourcemap_loader_1.2.0.tgz";
- path = fetchurl {
- name = "adjust_sourcemap_loader___adjust_sourcemap_loader_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.2.0.tgz";
- sha1 = "e33fde95e50db9f2a802e3647e311d2fc5000c69";
- };
- }
-
- {
- name = "ajv_keywords___ajv_keywords_3.2.0.tgz";
- path = fetchurl {
- name = "ajv_keywords___ajv_keywords_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz";
- sha1 = "e86b819c602cf8821ad637413698f1dec021847a";
- };
- }
-
- {
- name = "ajv___ajv_4.11.8.tgz";
- path = fetchurl {
- name = "ajv___ajv_4.11.8.tgz";
- url = "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz";
- sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
- };
- }
-
- {
- name = "ajv___ajv_5.5.2.tgz";
- path = fetchurl {
- name = "ajv___ajv_5.5.2.tgz";
- url = "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz";
- sha1 = "73b5eeca3fab653e3d3f9422b341ad42205dc965";
- };
- }
-
- {
- name = "ajv___ajv_6.5.2.tgz";
- path = fetchurl {
- name = "ajv___ajv_6.5.2.tgz";
- url = "https://registry.yarnpkg.com/ajv/-/ajv-6.5.2.tgz";
- sha1 = "678495f9b82f7cca6be248dd92f59bff5e1f4360";
- };
- }
-
- {
- name = "align_text___align_text_0.1.4.tgz";
- path = fetchurl {
- name = "align_text___align_text_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz";
- sha1 = "0cd90a561093f35d0a99256c22b7069433fad117";
- };
- }
-
- {
- name = "alphanum_sort___alphanum_sort_1.0.2.tgz";
- path = fetchurl {
- name = "alphanum_sort___alphanum_sort_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz";
- sha1 = "97a1119649b211ad33691d9f9f486a8ec9fbe0a3";
- };
- }
-
- {
- name = "amdefine___amdefine_1.0.1.tgz";
- path = fetchurl {
- name = "amdefine___amdefine_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz";
- sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
- };
- }
-
- {
- name = "ansi_html___ansi_html_0.0.7.tgz";
- path = fetchurl {
- name = "ansi_html___ansi_html_0.0.7.tgz";
- url = "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz";
- sha1 = "813584021962a9e9e6fd039f940d12f56ca7859e";
- };
- }
-
- {
- name = "ansi_regex___ansi_regex_2.1.1.tgz";
- path = fetchurl {
- name = "ansi_regex___ansi_regex_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
- sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
- };
- }
-
- {
- name = "ansi_regex___ansi_regex_3.0.0.tgz";
- path = fetchurl {
- name = "ansi_regex___ansi_regex_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
- sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
- };
- }
-
- {
- name = "ansi_styles___ansi_styles_2.2.1.tgz";
- path = fetchurl {
- name = "ansi_styles___ansi_styles_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz";
- sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
- };
- }
-
- {
- name = "ansi_styles___ansi_styles_3.2.1.tgz";
- path = fetchurl {
- name = "ansi_styles___ansi_styles_3.2.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz";
- sha1 = "41fbb20243e50b12be0f04b8dedbf07520ce841d";
- };
- }
-
- {
- name = "anymatch___anymatch_2.0.0.tgz";
- path = fetchurl {
- name = "anymatch___anymatch_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz";
- sha1 = "bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb";
- };
- }
-
- {
- name = "aproba___aproba_1.2.0.tgz";
- path = fetchurl {
- name = "aproba___aproba_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
- sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
- };
- }
-
- {
- name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
- path = fetchurl {
- name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
- url = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
- sha1 = "4b35c2944f062a8bfcda66410760350fe9ddfc21";
- };
- }
-
- {
- name = "argparse___argparse_1.0.10.tgz";
- path = fetchurl {
- name = "argparse___argparse_1.0.10.tgz";
- url = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz";
- sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911";
- };
- }
-
- {
- name = "arr_diff___arr_diff_2.0.0.tgz";
- path = fetchurl {
- name = "arr_diff___arr_diff_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz";
- sha1 = "8f3b827f955a8bd669697e4a4256ac3ceae356cf";
- };
- }
-
- {
- name = "arr_diff___arr_diff_4.0.0.tgz";
- path = fetchurl {
- name = "arr_diff___arr_diff_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz";
- sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
- };
- }
-
- {
- name = "arr_flatten___arr_flatten_1.1.0.tgz";
- path = fetchurl {
- name = "arr_flatten___arr_flatten_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz";
- sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1";
- };
- }
-
- {
- name = "arr_union___arr_union_3.1.0.tgz";
- path = fetchurl {
- name = "arr_union___arr_union_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz";
- sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
- };
- }
-
- {
- name = "array_find_index___array_find_index_1.0.2.tgz";
- path = fetchurl {
- name = "array_find_index___array_find_index_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz";
- sha1 = "df010aa1287e164bbda6f9723b0a96a1ec4187a1";
- };
- }
-
- {
- name = "array_flatten___array_flatten_1.1.1.tgz";
- path = fetchurl {
- name = "array_flatten___array_flatten_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz";
- sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
- };
- }
-
- {
- name = "array_flatten___array_flatten_2.1.1.tgz";
- path = fetchurl {
- name = "array_flatten___array_flatten_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz";
- sha1 = "426bb9da84090c1838d812c8150af20a8331e296";
- };
- }
-
- {
- name = "array_includes___array_includes_3.0.3.tgz";
- path = fetchurl {
- name = "array_includes___array_includes_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz";
- sha1 = "184b48f62d92d7452bb31b323165c7f8bd02266d";
- };
- }
-
- {
- name = "array_union___array_union_1.0.2.tgz";
- path = fetchurl {
- name = "array_union___array_union_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz";
- sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
- };
- }
-
- {
- name = "array_uniq___array_uniq_1.0.3.tgz";
- path = fetchurl {
- name = "array_uniq___array_uniq_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz";
- sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
- };
- }
-
- {
- name = "array_unique___array_unique_0.2.1.tgz";
- path = fetchurl {
- name = "array_unique___array_unique_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz";
- sha1 = "a1d97ccafcbc2625cc70fadceb36a50c58b01a53";
- };
- }
-
- {
- name = "array_unique___array_unique_0.3.2.tgz";
- path = fetchurl {
- name = "array_unique___array_unique_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz";
- sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
- };
- }
-
- {
- name = "asn1.js___asn1.js_4.10.1.tgz";
- path = fetchurl {
- name = "asn1.js___asn1.js_4.10.1.tgz";
- url = "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz";
- sha1 = "b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0";
- };
- }
-
- {
- name = "asn1___asn1_0.2.3.tgz";
- path = fetchurl {
- name = "asn1___asn1_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz";
- sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
- };
- }
-
- {
- name = "assert_plus___assert_plus_1.0.0.tgz";
- path = fetchurl {
- name = "assert_plus___assert_plus_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
- sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
- };
- }
-
- {
- name = "assert_plus___assert_plus_0.2.0.tgz";
- path = fetchurl {
- name = "assert_plus___assert_plus_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz";
- sha1 = "d74e1b87e7affc0db8aadb7021f3fe48101ab234";
- };
- }
-
- {
- name = "assert___assert_1.4.1.tgz";
- path = fetchurl {
- name = "assert___assert_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz";
- sha1 = "99912d591836b5a6f5b345c0f07eefc08fc65d91";
- };
- }
-
- {
- name = "assign_symbols___assign_symbols_1.0.0.tgz";
- path = fetchurl {
- name = "assign_symbols___assign_symbols_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz";
- sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
- };
- }
-
- {
- name = "async_each___async_each_1.0.1.tgz";
- path = fetchurl {
- name = "async_each___async_each_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz";
- sha1 = "19d386a1d9edc6e7c1c85d388aedbcc56d33602d";
- };
- }
-
- {
- name = "async_foreach___async_foreach_0.1.3.tgz";
- path = fetchurl {
- name = "async_foreach___async_foreach_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz";
- sha1 = "36121f845c0578172de419a97dbeb1d16ec34542";
- };
- }
-
- {
- name = "async___async_1.5.2.tgz";
- path = fetchurl {
- name = "async___async_1.5.2.tgz";
- url = "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz";
- sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
- };
- }
-
- {
- name = "async___async_2.6.1.tgz";
- path = fetchurl {
- name = "async___async_2.6.1.tgz";
- url = "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz";
- sha1 = "b245a23ca71930044ec53fa46aa00a3e87c6a610";
- };
- }
-
- {
- name = "asynckit___asynckit_0.4.0.tgz";
- path = fetchurl {
- name = "asynckit___asynckit_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
- sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
- };
- }
-
- {
- name = "atob___atob_2.1.1.tgz";
- path = fetchurl {
- name = "atob___atob_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz";
- sha1 = "ae2d5a729477f289d60dd7f96a6314a22dd6c22a";
- };
- }
-
- {
- name = "autoprefixer___autoprefixer_6.7.7.tgz";
- path = fetchurl {
- name = "autoprefixer___autoprefixer_6.7.7.tgz";
- url = "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz";
- sha1 = "1dbd1c835658e35ce3f9984099db00585c782014";
- };
- }
-
- {
- name = "aws_sign2___aws_sign2_0.6.0.tgz";
- path = fetchurl {
- name = "aws_sign2___aws_sign2_0.6.0.tgz";
- url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz";
- sha1 = "14342dd38dbcc94d0e5b87d763cd63612c0e794f";
- };
- }
-
- {
- name = "aws_sign2___aws_sign2_0.7.0.tgz";
- path = fetchurl {
- name = "aws_sign2___aws_sign2_0.7.0.tgz";
- url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
- sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
- };
- }
-
- {
- name = "aws4___aws4_1.7.0.tgz";
- path = fetchurl {
- name = "aws4___aws4_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz";
- sha1 = "d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289";
- };
- }
-
- {
- name = "babel_code_frame___babel_code_frame_6.26.0.tgz";
- path = fetchurl {
- name = "babel_code_frame___babel_code_frame_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz";
- sha1 = "63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b";
- };
- }
-
- {
- name = "babel_core___babel_core_6.26.3.tgz";
- path = fetchurl {
- name = "babel_core___babel_core_6.26.3.tgz";
- url = "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz";
- sha1 = "b2e2f09e342d0f0c88e2f02e067794125e75c207";
- };
- }
-
- {
- name = "babel_generator___babel_generator_6.26.1.tgz";
- path = fetchurl {
- name = "babel_generator___babel_generator_6.26.1.tgz";
- url = "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz";
- sha1 = "1844408d3b8f0d35a404ea7ac180f087a601bd90";
- };
- }
-
- {
- name = "babel_helper_builder_binary_assignment_operator_visitor___babel_helper_builder_binary_assignment_operator_visitor_6.24.1.tgz";
- path = fetchurl {
- name = "babel_helper_builder_binary_assignment_operator_visitor___babel_helper_builder_binary_assignment_operator_visitor_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz";
- sha1 = "cce4517ada356f4220bcae8a02c2b346f9a56664";
- };
- }
-
- {
- name = "babel_helper_call_delegate___babel_helper_call_delegate_6.24.1.tgz";
- path = fetchurl {
- name = "babel_helper_call_delegate___babel_helper_call_delegate_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz";
- sha1 = "ece6aacddc76e41c3461f88bfc575bd0daa2df8d";
- };
- }
-
- {
- name = "babel_helper_define_map___babel_helper_define_map_6.26.0.tgz";
- path = fetchurl {
- name = "babel_helper_define_map___babel_helper_define_map_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz";
- sha1 = "a5f56dab41a25f97ecb498c7ebaca9819f95be5f";
- };
- }
-
- {
- name = "babel_helper_explode_assignable_expression___babel_helper_explode_assignable_expression_6.24.1.tgz";
- path = fetchurl {
- name = "babel_helper_explode_assignable_expression___babel_helper_explode_assignable_expression_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz";
- sha1 = "f25b82cf7dc10433c55f70592d5746400ac22caa";
- };
- }
-
- {
- name = "babel_helper_function_name___babel_helper_function_name_6.24.1.tgz";
- path = fetchurl {
- name = "babel_helper_function_name___babel_helper_function_name_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz";
- sha1 = "d3475b8c03ed98242a25b48351ab18399d3580a9";
- };
- }
-
- {
- name = "babel_helper_get_function_arity___babel_helper_get_function_arity_6.24.1.tgz";
- path = fetchurl {
- name = "babel_helper_get_function_arity___babel_helper_get_function_arity_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz";
- sha1 = "8f7782aa93407c41d3aa50908f89b031b1b6853d";
- };
- }
-
- {
- name = "babel_helper_hoist_variables___babel_helper_hoist_variables_6.24.1.tgz";
- path = fetchurl {
- name = "babel_helper_hoist_variables___babel_helper_hoist_variables_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz";
- sha1 = "1ecb27689c9d25513eadbc9914a73f5408be7a76";
- };
- }
-
- {
- name = "babel_helper_optimise_call_expression___babel_helper_optimise_call_expression_6.24.1.tgz";
- path = fetchurl {
- name = "babel_helper_optimise_call_expression___babel_helper_optimise_call_expression_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz";
- sha1 = "f7a13427ba9f73f8f4fa993c54a97882d1244257";
- };
- }
-
- {
- name = "babel_helper_regex___babel_helper_regex_6.26.0.tgz";
- path = fetchurl {
- name = "babel_helper_regex___babel_helper_regex_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz";
- sha1 = "325c59f902f82f24b74faceed0363954f6495e72";
- };
- }
-
- {
- name = "babel_helper_remap_async_to_generator___babel_helper_remap_async_to_generator_6.24.1.tgz";
- path = fetchurl {
- name = "babel_helper_remap_async_to_generator___babel_helper_remap_async_to_generator_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz";
- sha1 = "5ec581827ad723fecdd381f1c928390676e4551b";
- };
- }
-
- {
- name = "babel_helper_replace_supers___babel_helper_replace_supers_6.24.1.tgz";
- path = fetchurl {
- name = "babel_helper_replace_supers___babel_helper_replace_supers_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz";
- sha1 = "bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a";
- };
- }
-
- {
- name = "babel_helpers___babel_helpers_6.24.1.tgz";
- path = fetchurl {
- name = "babel_helpers___babel_helpers_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz";
- sha1 = "3471de9caec388e5c850e597e58a26ddf37602b2";
- };
- }
-
- {
- name = "babel_loader___babel_loader_7.1.5.tgz";
- path = fetchurl {
- name = "babel_loader___babel_loader_7.1.5.tgz";
- url = "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz";
- sha1 = "e3ee0cd7394aa557e013b02d3e492bfd07aa6d68";
- };
- }
-
- {
- name = "babel_messages___babel_messages_6.23.0.tgz";
- path = fetchurl {
- name = "babel_messages___babel_messages_6.23.0.tgz";
- url = "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz";
- sha1 = "f3cdf4703858035b2a2951c6ec5edf6c62f2630e";
- };
- }
-
- {
- name = "babel_plugin_check_es2015_constants___babel_plugin_check_es2015_constants_6.22.0.tgz";
- path = fetchurl {
- name = "babel_plugin_check_es2015_constants___babel_plugin_check_es2015_constants_6.22.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz";
- sha1 = "35157b101426fd2ffd3da3f75c7d1e91835bbf8a";
- };
- }
-
- {
- name = "babel_plugin_syntax_async_functions___babel_plugin_syntax_async_functions_6.13.0.tgz";
- path = fetchurl {
- name = "babel_plugin_syntax_async_functions___babel_plugin_syntax_async_functions_6.13.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz";
- sha1 = "cad9cad1191b5ad634bf30ae0872391e0647be95";
- };
- }
-
- {
- name = "babel_plugin_syntax_exponentiation_operator___babel_plugin_syntax_exponentiation_operator_6.13.0.tgz";
- path = fetchurl {
- name = "babel_plugin_syntax_exponentiation_operator___babel_plugin_syntax_exponentiation_operator_6.13.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz";
- sha1 = "9ee7e8337290da95288201a6a57f4170317830de";
- };
- }
-
- {
- name = "babel_plugin_syntax_trailing_function_commas___babel_plugin_syntax_trailing_function_commas_6.22.0.tgz";
- path = fetchurl {
- name = "babel_plugin_syntax_trailing_function_commas___babel_plugin_syntax_trailing_function_commas_6.22.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz";
- sha1 = "ba0360937f8d06e40180a43fe0d5616fff532cf3";
- };
- }
-
- {
- name = "babel_plugin_transform_async_to_generator___babel_plugin_transform_async_to_generator_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_async_to_generator___babel_plugin_transform_async_to_generator_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz";
- sha1 = "6536e378aff6cb1d5517ac0e40eb3e9fc8d08761";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_arrow_functions___babel_plugin_transform_es2015_arrow_functions_6.22.0.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_arrow_functions___babel_plugin_transform_es2015_arrow_functions_6.22.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz";
- sha1 = "452692cb711d5f79dc7f85e440ce41b9f244d221";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_block_scoped_functions___babel_plugin_transform_es2015_block_scoped_functions_6.22.0.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_block_scoped_functions___babel_plugin_transform_es2015_block_scoped_functions_6.22.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz";
- sha1 = "bbc51b49f964d70cb8d8e0b94e820246ce3a6141";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_block_scoping___babel_plugin_transform_es2015_block_scoping_6.26.0.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_block_scoping___babel_plugin_transform_es2015_block_scoping_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz";
- sha1 = "d70f5299c1308d05c12f463813b0a09e73b1895f";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_classes___babel_plugin_transform_es2015_classes_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_classes___babel_plugin_transform_es2015_classes_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz";
- sha1 = "5a4c58a50c9c9461e564b4b2a3bfabc97a2584db";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_computed_properties___babel_plugin_transform_es2015_computed_properties_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_computed_properties___babel_plugin_transform_es2015_computed_properties_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz";
- sha1 = "6fe2a8d16895d5634f4cd999b6d3480a308159b3";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_destructuring___babel_plugin_transform_es2015_destructuring_6.23.0.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_destructuring___babel_plugin_transform_es2015_destructuring_6.23.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz";
- sha1 = "997bb1f1ab967f682d2b0876fe358d60e765c56d";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_duplicate_keys___babel_plugin_transform_es2015_duplicate_keys_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_duplicate_keys___babel_plugin_transform_es2015_duplicate_keys_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz";
- sha1 = "73eb3d310ca969e3ef9ec91c53741a6f1576423e";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_for_of___babel_plugin_transform_es2015_for_of_6.23.0.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_for_of___babel_plugin_transform_es2015_for_of_6.23.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz";
- sha1 = "f47c95b2b613df1d3ecc2fdb7573623c75248691";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_function_name___babel_plugin_transform_es2015_function_name_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_function_name___babel_plugin_transform_es2015_function_name_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz";
- sha1 = "834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_literals___babel_plugin_transform_es2015_literals_6.22.0.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_literals___babel_plugin_transform_es2015_literals_6.22.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz";
- sha1 = "4f54a02d6cd66cf915280019a31d31925377ca2e";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_modules_amd___babel_plugin_transform_es2015_modules_amd_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_modules_amd___babel_plugin_transform_es2015_modules_amd_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz";
- sha1 = "3b3e54017239842d6d19c3011c4bd2f00a00d154";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_modules_commonjs___babel_plugin_transform_es2015_modules_commonjs_6.26.2.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_modules_commonjs___babel_plugin_transform_es2015_modules_commonjs_6.26.2.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz";
- sha1 = "58a793863a9e7ca870bdc5a881117ffac27db6f3";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_modules_systemjs___babel_plugin_transform_es2015_modules_systemjs_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_modules_systemjs___babel_plugin_transform_es2015_modules_systemjs_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz";
- sha1 = "ff89a142b9119a906195f5f106ecf305d9407d23";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_modules_umd___babel_plugin_transform_es2015_modules_umd_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_modules_umd___babel_plugin_transform_es2015_modules_umd_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz";
- sha1 = "ac997e6285cd18ed6176adb607d602344ad38468";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_object_super___babel_plugin_transform_es2015_object_super_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_object_super___babel_plugin_transform_es2015_object_super_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz";
- sha1 = "24cef69ae21cb83a7f8603dad021f572eb278f8d";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_parameters___babel_plugin_transform_es2015_parameters_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_parameters___babel_plugin_transform_es2015_parameters_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz";
- sha1 = "57ac351ab49caf14a97cd13b09f66fdf0a625f2b";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_shorthand_properties___babel_plugin_transform_es2015_shorthand_properties_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_shorthand_properties___babel_plugin_transform_es2015_shorthand_properties_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz";
- sha1 = "24f875d6721c87661bbd99a4622e51f14de38aa0";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_spread___babel_plugin_transform_es2015_spread_6.22.0.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_spread___babel_plugin_transform_es2015_spread_6.22.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz";
- sha1 = "d6d68a99f89aedc4536c81a542e8dd9f1746f8d1";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_sticky_regex___babel_plugin_transform_es2015_sticky_regex_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_sticky_regex___babel_plugin_transform_es2015_sticky_regex_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz";
- sha1 = "00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_template_literals___babel_plugin_transform_es2015_template_literals_6.22.0.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_template_literals___babel_plugin_transform_es2015_template_literals_6.22.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz";
- sha1 = "a84b3450f7e9f8f1f6839d6d687da84bb1236d8d";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_typeof_symbol___babel_plugin_transform_es2015_typeof_symbol_6.23.0.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_typeof_symbol___babel_plugin_transform_es2015_typeof_symbol_6.23.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz";
- sha1 = "dec09f1cddff94b52ac73d505c84df59dcceb372";
- };
- }
-
- {
- name = "babel_plugin_transform_es2015_unicode_regex___babel_plugin_transform_es2015_unicode_regex_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_es2015_unicode_regex___babel_plugin_transform_es2015_unicode_regex_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz";
- sha1 = "d38b12f42ea7323f729387f18a7c5ae1faeb35e9";
- };
- }
-
- {
- name = "babel_plugin_transform_exponentiation_operator___babel_plugin_transform_exponentiation_operator_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_exponentiation_operator___babel_plugin_transform_exponentiation_operator_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz";
- sha1 = "2ab0c9c7f3098fa48907772bb813fe41e8de3a0e";
- };
- }
-
- {
- name = "babel_plugin_transform_regenerator___babel_plugin_transform_regenerator_6.26.0.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_regenerator___babel_plugin_transform_regenerator_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz";
- sha1 = "e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f";
- };
- }
-
- {
- name = "babel_plugin_transform_strict_mode___babel_plugin_transform_strict_mode_6.24.1.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_strict_mode___babel_plugin_transform_strict_mode_6.24.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz";
- sha1 = "d5faf7aa578a65bbe591cf5edae04a0c67020758";
- };
- }
-
- {
- name = "babel_preset_env___babel_preset_env_1.7.0.tgz";
- path = fetchurl {
- name = "babel_preset_env___babel_preset_env_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz";
- sha1 = "dea79fa4ebeb883cd35dab07e260c1c9c04df77a";
- };
- }
-
- {
- name = "babel_register___babel_register_6.26.0.tgz";
- path = fetchurl {
- name = "babel_register___babel_register_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz";
- sha1 = "6ed021173e2fcb486d7acb45c6009a856f647071";
- };
- }
-
- {
- name = "babel_runtime___babel_runtime_6.26.0.tgz";
- path = fetchurl {
- name = "babel_runtime___babel_runtime_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz";
- sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
- };
- }
-
- {
- name = "babel_template___babel_template_6.26.0.tgz";
- path = fetchurl {
- name = "babel_template___babel_template_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz";
- sha1 = "de03e2d16396b069f46dd9fff8521fb1a0e35e02";
- };
- }
-
- {
- name = "babel_traverse___babel_traverse_6.26.0.tgz";
- path = fetchurl {
- name = "babel_traverse___babel_traverse_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz";
- sha1 = "46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee";
- };
- }
-
- {
- name = "babel_types___babel_types_6.26.0.tgz";
- path = fetchurl {
- name = "babel_types___babel_types_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz";
- sha1 = "a3b073f94ab49eb6fa55cd65227a334380632497";
- };
- }
-
- {
- name = "babylon___babylon_6.18.0.tgz";
- path = fetchurl {
- name = "babylon___babylon_6.18.0.tgz";
- url = "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz";
- sha1 = "af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3";
- };
- }
-
- {
- name = "balanced_match___balanced_match_0.4.2.tgz";
- path = fetchurl {
- name = "balanced_match___balanced_match_0.4.2.tgz";
- url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz";
- sha1 = "cb3f3e3c732dc0f01ee70b403f302e61d7709838";
- };
- }
-
- {
- name = "balanced_match___balanced_match_1.0.0.tgz";
- path = fetchurl {
- name = "balanced_match___balanced_match_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
- sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
- };
- }
-
- {
- name = "base64_js___base64_js_1.3.0.tgz";
- path = fetchurl {
- name = "base64_js___base64_js_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz";
- sha1 = "cab1e6118f051095e58b5281aea8c1cd22bfc0e3";
- };
- }
-
- {
- name = "base___base_0.11.2.tgz";
- path = fetchurl {
- name = "base___base_0.11.2.tgz";
- url = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz";
- sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f";
- };
- }
-
- {
- name = "batch___batch_0.6.1.tgz";
- path = fetchurl {
- name = "batch___batch_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz";
- sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
- };
- }
-
- {
- name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
- path = fetchurl {
- name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
- sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
- };
- }
-
- {
- name = "big.js___big.js_3.2.0.tgz";
- path = fetchurl {
- name = "big.js___big.js_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz";
- sha1 = "a5fc298b81b9e0dca2e458824784b65c52ba588e";
- };
- }
-
- {
- name = "binary_extensions___binary_extensions_1.11.0.tgz";
- path = fetchurl {
- name = "binary_extensions___binary_extensions_1.11.0.tgz";
- url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz";
- sha1 = "46aa1751fb6a2f93ee5e689bb1087d4b14c6c205";
- };
- }
-
- {
- name = "block_stream___block_stream_0.0.9.tgz";
- path = fetchurl {
- name = "block_stream___block_stream_0.0.9.tgz";
- url = "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz";
- sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
- };
- }
-
- {
- name = "bn.js___bn.js_4.11.8.tgz";
- path = fetchurl {
- name = "bn.js___bn.js_4.11.8.tgz";
- url = "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz";
- sha1 = "2cde09eb5ee341f484746bb0309b3253b1b1442f";
- };
- }
-
- {
- name = "body_parser___body_parser_1.18.2.tgz";
- path = fetchurl {
- name = "body_parser___body_parser_1.18.2.tgz";
- url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz";
- sha1 = "87678a19d84b47d859b83199bd59bce222b10454";
- };
- }
-
- {
- name = "bonjour___bonjour_3.5.0.tgz";
- path = fetchurl {
- name = "bonjour___bonjour_3.5.0.tgz";
- url = "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz";
- sha1 = "8e890a183d8ee9a2393b3844c691a42bcf7bc9f5";
- };
- }
-
- {
- name = "boolbase___boolbase_1.0.0.tgz";
- path = fetchurl {
- name = "boolbase___boolbase_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz";
- sha1 = "68dff5fbe60c51eb37725ea9e3ed310dcc1e776e";
- };
- }
-
- {
- name = "boom___boom_2.10.1.tgz";
- path = fetchurl {
- name = "boom___boom_2.10.1.tgz";
- url = "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz";
- sha1 = "39c8918ceff5799f83f9492a848f625add0c766f";
- };
- }
-
- {
- name = "bootstrap___bootstrap_4.1.3.tgz";
- path = fetchurl {
- name = "bootstrap___bootstrap_4.1.3.tgz";
- url = "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.1.3.tgz";
- sha1 = "0eb371af2c8448e8c210411d0cb824a6409a12be";
- };
- }
-
- {
- name = "brace_expansion___brace_expansion_1.1.11.tgz";
- path = fetchurl {
- name = "brace_expansion___brace_expansion_1.1.11.tgz";
- url = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz";
- sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd";
- };
- }
-
- {
- name = "braces___braces_1.8.5.tgz";
- path = fetchurl {
- name = "braces___braces_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz";
- sha1 = "ba77962e12dff969d6b76711e914b737857bf6a7";
- };
- }
-
- {
- name = "braces___braces_2.3.2.tgz";
- path = fetchurl {
- name = "braces___braces_2.3.2.tgz";
- url = "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz";
- sha1 = "5979fd3f14cd531565e5fa2df1abfff1dfaee729";
- };
- }
-
- {
- name = "brorand___brorand_1.1.0.tgz";
- path = fetchurl {
- name = "brorand___brorand_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz";
- sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f";
- };
- }
-
- {
- name = "browserify_aes___browserify_aes_1.2.0.tgz";
- path = fetchurl {
- name = "browserify_aes___browserify_aes_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz";
- sha1 = "326734642f403dabc3003209853bb70ad428ef48";
- };
- }
-
- {
- name = "browserify_cipher___browserify_cipher_1.0.1.tgz";
- path = fetchurl {
- name = "browserify_cipher___browserify_cipher_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz";
- sha1 = "8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0";
- };
- }
-
- {
- name = "browserify_des___browserify_des_1.0.2.tgz";
- path = fetchurl {
- name = "browserify_des___browserify_des_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz";
- sha1 = "3af4f1f59839403572f1c66204375f7a7f703e9c";
- };
- }
-
- {
- name = "browserify_rsa___browserify_rsa_4.0.1.tgz";
- path = fetchurl {
- name = "browserify_rsa___browserify_rsa_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz";
- sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524";
- };
- }
-
- {
- name = "browserify_sign___browserify_sign_4.0.4.tgz";
- path = fetchurl {
- name = "browserify_sign___browserify_sign_4.0.4.tgz";
- url = "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz";
- sha1 = "aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298";
- };
- }
-
- {
- name = "browserify_zlib___browserify_zlib_0.2.0.tgz";
- path = fetchurl {
- name = "browserify_zlib___browserify_zlib_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
- sha1 = "2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f";
- };
- }
-
- {
- name = "browserslist___browserslist_1.7.7.tgz";
- path = fetchurl {
- name = "browserslist___browserslist_1.7.7.tgz";
- url = "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz";
- sha1 = "0bd76704258be829b2398bb50e4b62d1a166b0b9";
- };
- }
-
- {
- name = "browserslist___browserslist_3.2.8.tgz";
- path = fetchurl {
- name = "browserslist___browserslist_3.2.8.tgz";
- url = "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz";
- sha1 = "b0005361d6471f0f5952797a76fc985f1f978fc6";
- };
- }
-
- {
- name = "buffer_indexof___buffer_indexof_1.1.1.tgz";
- path = fetchurl {
- name = "buffer_indexof___buffer_indexof_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz";
- sha1 = "52fabcc6a606d1a00302802648ef68f639da268c";
- };
- }
-
- {
- name = "buffer_xor___buffer_xor_1.0.3.tgz";
- path = fetchurl {
- name = "buffer_xor___buffer_xor_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz";
- sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9";
- };
- }
-
- {
- name = "buffer___buffer_4.9.1.tgz";
- path = fetchurl {
- name = "buffer___buffer_4.9.1.tgz";
- url = "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz";
- sha1 = "6d1bb601b07a4efced97094132093027c95bc298";
- };
- }
-
- {
- name = "builtin_modules___builtin_modules_1.1.1.tgz";
- path = fetchurl {
- name = "builtin_modules___builtin_modules_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz";
- sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
- };
- }
-
- {
- name = "builtin_status_codes___builtin_status_codes_3.0.0.tgz";
- path = fetchurl {
- name = "builtin_status_codes___builtin_status_codes_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
- sha1 = "85982878e21b98e1c66425e03d0174788f569ee8";
- };
- }
-
- {
- name = "bytes___bytes_3.0.0.tgz";
- path = fetchurl {
- name = "bytes___bytes_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz";
- sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
- };
- }
-
- {
- name = "cache_base___cache_base_1.0.1.tgz";
- path = fetchurl {
- name = "cache_base___cache_base_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz";
- sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2";
- };
- }
-
- {
- name = "camelcase_keys___camelcase_keys_2.1.0.tgz";
- path = fetchurl {
- name = "camelcase_keys___camelcase_keys_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz";
- sha1 = "308beeaffdf28119051efa1d932213c91b8f92e7";
- };
- }
-
- {
- name = "camelcase___camelcase_1.2.1.tgz";
- path = fetchurl {
- name = "camelcase___camelcase_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz";
- sha1 = "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39";
- };
- }
-
- {
- name = "camelcase___camelcase_2.1.1.tgz";
- path = fetchurl {
- name = "camelcase___camelcase_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz";
- sha1 = "7c1d16d679a1bbe59ca02cacecfb011e201f5a1f";
- };
- }
-
- {
- name = "camelcase___camelcase_3.0.0.tgz";
- path = fetchurl {
- name = "camelcase___camelcase_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz";
- sha1 = "32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a";
- };
- }
-
- {
- name = "camelcase___camelcase_4.1.0.tgz";
- path = fetchurl {
- name = "camelcase___camelcase_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz";
- sha1 = "d545635be1e33c542649c69173e5de6acfae34dd";
- };
- }
-
- {
- name = "caniuse_api___caniuse_api_1.6.1.tgz";
- path = fetchurl {
- name = "caniuse_api___caniuse_api_1.6.1.tgz";
- url = "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz";
- sha1 = "b534e7c734c4f81ec5fbe8aca2ad24354b962c6c";
- };
- }
-
- {
- name = "caniuse_db___caniuse_db_1.0.30000871.tgz";
- path = fetchurl {
- name = "caniuse_db___caniuse_db_1.0.30000871.tgz";
- url = "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000871.tgz";
- sha1 = "f1995c1fe31892649a7605957a80c92518423d4d";
- };
- }
-
- {
- name = "caniuse_lite___caniuse_lite_1.0.30000865.tgz";
- path = fetchurl {
- name = "caniuse_lite___caniuse_lite_1.0.30000865.tgz";
- url = "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz";
- sha1 = "70026616e8afe6e1442f8bb4e1092987d81a2f25";
- };
- }
-
- {
- name = "caseless___caseless_0.12.0.tgz";
- path = fetchurl {
- name = "caseless___caseless_0.12.0.tgz";
- url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
- sha1 = "1b681c21ff84033c826543090689420d187151dc";
- };
- }
-
- {
- name = "center_align___center_align_0.1.3.tgz";
- path = fetchurl {
- name = "center_align___center_align_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz";
- sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad";
- };
- }
-
- {
- name = "chalk___chalk_1.1.3.tgz";
- path = fetchurl {
- name = "chalk___chalk_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz";
- sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
- };
- }
-
- {
- name = "chalk___chalk_2.4.1.tgz";
- path = fetchurl {
- name = "chalk___chalk_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz";
- sha1 = "18c49ab16a037b6eb0152cc83e3471338215b66e";
- };
- }
-
- {
- name = "chokidar___chokidar_2.0.4.tgz";
- path = fetchurl {
- name = "chokidar___chokidar_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz";
- sha1 = "356ff4e2b0e8e43e322d18a372460bbcf3accd26";
- };
- }
-
- {
- name = "chownr___chownr_1.0.1.tgz";
- path = fetchurl {
- name = "chownr___chownr_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz";
- sha1 = "e2a75042a9551908bebd25b8523d5f9769d79181";
- };
- }
-
- {
- name = "cipher_base___cipher_base_1.0.4.tgz";
- path = fetchurl {
- name = "cipher_base___cipher_base_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz";
- sha1 = "8760e4ecc272f4c363532f926d874aae2c1397de";
- };
- }
-
- {
- name = "clap___clap_1.2.3.tgz";
- path = fetchurl {
- name = "clap___clap_1.2.3.tgz";
- url = "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz";
- sha1 = "4f36745b32008492557f46412d66d50cb99bce51";
- };
- }
-
- {
- name = "class_utils___class_utils_0.3.6.tgz";
- path = fetchurl {
- name = "class_utils___class_utils_0.3.6.tgz";
- url = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz";
- sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463";
- };
- }
-
- {
- name = "clean_webpack_plugin___clean_webpack_plugin_0.1.19.tgz";
- path = fetchurl {
- name = "clean_webpack_plugin___clean_webpack_plugin_0.1.19.tgz";
- url = "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-0.1.19.tgz";
- sha1 = "ceda8bb96b00fe168e9b080272960d20fdcadd6d";
- };
- }
-
- {
- name = "cliui___cliui_2.1.0.tgz";
- path = fetchurl {
- name = "cliui___cliui_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz";
- sha1 = "4b475760ff80264c762c3a1719032e91c7fea0d1";
- };
- }
-
- {
- name = "cliui___cliui_3.2.0.tgz";
- path = fetchurl {
- name = "cliui___cliui_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz";
- sha1 = "120601537a916d29940f934da3b48d585a39213d";
- };
- }
-
- {
- name = "clone_deep___clone_deep_2.0.2.tgz";
- path = fetchurl {
- name = "clone_deep___clone_deep_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz";
- sha1 = "00db3a1e173656730d1188c3d6aced6d7ea97713";
- };
- }
-
- {
- name = "clone___clone_1.0.4.tgz";
- path = fetchurl {
- name = "clone___clone_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz";
- sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
- };
- }
-
- {
- name = "co___co_4.6.0.tgz";
- path = fetchurl {
- name = "co___co_4.6.0.tgz";
- url = "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz";
- sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
- };
- }
-
- {
- name = "coa___coa_1.0.4.tgz";
- path = fetchurl {
- name = "coa___coa_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz";
- sha1 = "a9ef153660d6a86a8bdec0289a5c684d217432fd";
- };
- }
-
- {
- name = "code_point_at___code_point_at_1.1.0.tgz";
- path = fetchurl {
- name = "code_point_at___code_point_at_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz";
- sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
- };
- }
-
- {
- name = "collection_visit___collection_visit_1.0.0.tgz";
- path = fetchurl {
- name = "collection_visit___collection_visit_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz";
- sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
- };
- }
-
- {
- name = "color_convert___color_convert_1.9.2.tgz";
- path = fetchurl {
- name = "color_convert___color_convert_1.9.2.tgz";
- url = "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz";
- sha1 = "49881b8fba67df12a96bdf3f56c0aab9e7913147";
- };
- }
-
- {
- name = "color_name___color_name_1.1.1.tgz";
- path = fetchurl {
- name = "color_name___color_name_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz";
- sha1 = "4b1415304cf50028ea81643643bd82ea05803689";
- };
- }
-
- {
- name = "color_name___color_name_1.1.3.tgz";
- path = fetchurl {
- name = "color_name___color_name_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz";
- sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
- };
- }
-
- {
- name = "color_string___color_string_0.3.0.tgz";
- path = fetchurl {
- name = "color_string___color_string_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz";
- sha1 = "27d46fb67025c5c2fa25993bfbf579e47841b991";
- };
- }
-
- {
- name = "color___color_0.11.4.tgz";
- path = fetchurl {
- name = "color___color_0.11.4.tgz";
- url = "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz";
- sha1 = "6d7b5c74fb65e841cd48792ad1ed5e07b904d764";
- };
- }
-
- {
- name = "colormin___colormin_1.1.2.tgz";
- path = fetchurl {
- name = "colormin___colormin_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz";
- sha1 = "ea2f7420a72b96881a38aae59ec124a6f7298133";
- };
- }
-
- {
- name = "colors___colors_1.1.2.tgz";
- path = fetchurl {
- name = "colors___colors_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz";
- sha1 = "168a4701756b6a7f51a12ce0c97bfa28c084ed63";
- };
- }
-
- {
- name = "combined_stream___combined_stream_1.0.6.tgz";
- path = fetchurl {
- name = "combined_stream___combined_stream_1.0.6.tgz";
- url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz";
- sha1 = "723e7df6e801ac5613113a7e445a9b69cb632818";
- };
- }
-
- {
- name = "commondir___commondir_1.0.1.tgz";
- path = fetchurl {
- name = "commondir___commondir_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz";
- sha1 = "ddd800da0c66127393cca5950ea968a3aaf1253b";
- };
- }
-
- {
- name = "component_emitter___component_emitter_1.2.1.tgz";
- path = fetchurl {
- name = "component_emitter___component_emitter_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz";
- sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
- };
- }
-
- {
- name = "compressible___compressible_2.0.14.tgz";
- path = fetchurl {
- name = "compressible___compressible_2.0.14.tgz";
- url = "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz";
- sha1 = "326c5f507fbb055f54116782b969a81b67a29da7";
- };
- }
-
- {
- name = "compression___compression_1.7.3.tgz";
- path = fetchurl {
- name = "compression___compression_1.7.3.tgz";
- url = "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz";
- sha1 = "27e0e176aaf260f7f2c2813c3e440adb9f1993db";
- };
- }
-
- {
- name = "concat_map___concat_map_0.0.1.tgz";
- path = fetchurl {
- name = "concat_map___concat_map_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
- sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
- };
- }
-
- {
- name = "connect_history_api_fallback___connect_history_api_fallback_1.5.0.tgz";
- path = fetchurl {
- name = "connect_history_api_fallback___connect_history_api_fallback_1.5.0.tgz";
- url = "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz";
- sha1 = "b06873934bc5e344fef611a196a6faae0aee015a";
- };
- }
-
- {
- name = "console_browserify___console_browserify_1.1.0.tgz";
- path = fetchurl {
- name = "console_browserify___console_browserify_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz";
- sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
- };
- }
-
- {
- name = "console_control_strings___console_control_strings_1.1.0.tgz";
- path = fetchurl {
- name = "console_control_strings___console_control_strings_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz";
- sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
- };
- }
-
- {
- name = "constants_browserify___constants_browserify_1.0.0.tgz";
- path = fetchurl {
- name = "constants_browserify___constants_browserify_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz";
- sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
- };
- }
-
- {
- name = "content_disposition___content_disposition_0.5.2.tgz";
- path = fetchurl {
- name = "content_disposition___content_disposition_0.5.2.tgz";
- url = "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz";
- sha1 = "0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4";
- };
- }
-
- {
- name = "content_type___content_type_1.0.4.tgz";
- path = fetchurl {
- name = "content_type___content_type_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
- sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
- };
- }
-
- {
- name = "convert_source_map___convert_source_map_0.3.5.tgz";
- path = fetchurl {
- name = "convert_source_map___convert_source_map_0.3.5.tgz";
- url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz";
- sha1 = "f1d802950af7dd2631a1febe0596550c86ab3190";
- };
- }
-
- {
- name = "convert_source_map___convert_source_map_1.5.1.tgz";
- path = fetchurl {
- name = "convert_source_map___convert_source_map_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz";
- sha1 = "b8278097b9bc229365de5c62cf5fcaed8b5599e5";
- };
- }
-
- {
- name = "cookie_signature___cookie_signature_1.0.6.tgz";
- path = fetchurl {
- name = "cookie_signature___cookie_signature_1.0.6.tgz";
- url = "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz";
- sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
- };
- }
-
- {
- name = "cookie___cookie_0.3.1.tgz";
- path = fetchurl {
- name = "cookie___cookie_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz";
- sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
- };
- }
-
- {
- name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
- path = fetchurl {
- name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
- sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
- };
- }
-
- {
- name = "core_js___core_js_2.5.7.tgz";
- path = fetchurl {
- name = "core_js___core_js_2.5.7.tgz";
- url = "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz";
- sha1 = "f972608ff0cead68b841a16a932d0b183791814e";
- };
- }
-
- {
- name = "core_util_is___core_util_is_1.0.2.tgz";
- path = fetchurl {
- name = "core_util_is___core_util_is_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
- sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
- };
- }
-
- {
- name = "create_ecdh___create_ecdh_4.0.3.tgz";
- path = fetchurl {
- name = "create_ecdh___create_ecdh_4.0.3.tgz";
- url = "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz";
- sha1 = "c9111b6f33045c4697f144787f9254cdc77c45ff";
- };
- }
-
- {
- name = "create_hash___create_hash_1.2.0.tgz";
- path = fetchurl {
- name = "create_hash___create_hash_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz";
- sha1 = "889078af11a63756bcfb59bd221996be3a9ef196";
- };
- }
-
- {
- name = "create_hmac___create_hmac_1.1.7.tgz";
- path = fetchurl {
- name = "create_hmac___create_hmac_1.1.7.tgz";
- url = "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz";
- sha1 = "69170c78b3ab957147b2b8b04572e47ead2243ff";
- };
- }
-
- {
- name = "cross_spawn___cross_spawn_3.0.1.tgz";
- path = fetchurl {
- name = "cross_spawn___cross_spawn_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz";
- sha1 = "1256037ecb9f0c5f79e3d6ef135e30770184b982";
- };
- }
-
- {
- name = "cross_spawn___cross_spawn_5.1.0.tgz";
- path = fetchurl {
- name = "cross_spawn___cross_spawn_5.1.0.tgz";
- url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz";
- sha1 = "e8bd0efee58fcff6f8f94510a0a554bbfa235449";
- };
- }
-
- {
- name = "cryptiles___cryptiles_2.0.5.tgz";
- path = fetchurl {
- name = "cryptiles___cryptiles_2.0.5.tgz";
- url = "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz";
- sha1 = "3bdfecdc608147c1c67202fa291e7dca59eaa3b8";
- };
- }
-
- {
- name = "crypto_browserify___crypto_browserify_3.12.0.tgz";
- path = fetchurl {
- name = "crypto_browserify___crypto_browserify_3.12.0.tgz";
- url = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
- sha1 = "396cf9f3137f03e4b8e532c58f698254e00f80ec";
- };
- }
-
- {
- name = "css_color_names___css_color_names_0.0.4.tgz";
- path = fetchurl {
- name = "css_color_names___css_color_names_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz";
- sha1 = "808adc2e79cf84738069b646cb20ec27beb629e0";
- };
- }
-
- {
- name = "css_loader___css_loader_0.26.4.tgz";
- path = fetchurl {
- name = "css_loader___css_loader_0.26.4.tgz";
- url = "https://registry.yarnpkg.com/css-loader/-/css-loader-0.26.4.tgz";
- sha1 = "b61e9e30db94303e6ffc892f10ecd09ad025a1fd";
- };
- }
-
- {
- name = "css_select___css_select_1.2.0.tgz";
- path = fetchurl {
- name = "css_select___css_select_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz";
- sha1 = "2b3a110539c5355f1cd8d314623e870b121ec858";
- };
- }
-
- {
- name = "css_selector_tokenizer___css_selector_tokenizer_0.7.0.tgz";
- path = fetchurl {
- name = "css_selector_tokenizer___css_selector_tokenizer_0.7.0.tgz";
- url = "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz";
- sha1 = "e6988474ae8c953477bf5e7efecfceccd9cf4c86";
- };
- }
-
- {
- name = "css_what___css_what_2.1.0.tgz";
- path = fetchurl {
- name = "css_what___css_what_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz";
- sha1 = "9467d032c38cfaefb9f2d79501253062f87fa1bd";
- };
- }
-
- {
- name = "css___css_2.2.3.tgz";
- path = fetchurl {
- name = "css___css_2.2.3.tgz";
- url = "https://registry.yarnpkg.com/css/-/css-2.2.3.tgz";
- sha1 = "f861f4ba61e79bedc962aa548e5780fd95cbc6be";
- };
- }
-
- {
- name = "cssesc___cssesc_0.1.0.tgz";
- path = fetchurl {
- name = "cssesc___cssesc_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz";
- sha1 = "c814903e45623371a0477b40109aaafbeeaddbb4";
- };
- }
-
- {
- name = "cssnano___cssnano_3.10.0.tgz";
- path = fetchurl {
- name = "cssnano___cssnano_3.10.0.tgz";
- url = "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz";
- sha1 = "4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38";
- };
- }
-
- {
- name = "csso___csso_2.3.2.tgz";
- path = fetchurl {
- name = "csso___csso_2.3.2.tgz";
- url = "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz";
- sha1 = "ddd52c587033f49e94b71fc55569f252e8ff5f85";
- };
- }
-
- {
- name = "currently_unhandled___currently_unhandled_0.4.1.tgz";
- path = fetchurl {
- name = "currently_unhandled___currently_unhandled_0.4.1.tgz";
- url = "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz";
- sha1 = "988df33feab191ef799a61369dd76c17adf957ea";
- };
- }
-
- {
- name = "d___d_1.0.0.tgz";
- path = fetchurl {
- name = "d___d_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz";
- sha1 = "754bb5bfe55451da69a58b94d45f4c5b0462d58f";
- };
- }
-
- {
- name = "dashdash___dashdash_1.14.1.tgz";
- path = fetchurl {
- name = "dashdash___dashdash_1.14.1.tgz";
- url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
- sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
- };
- }
-
- {
- name = "date_now___date_now_0.1.4.tgz";
- path = fetchurl {
- name = "date_now___date_now_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz";
- sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
- };
- }
-
- {
- name = "debug___debug_2.6.9.tgz";
- path = fetchurl {
- name = "debug___debug_2.6.9.tgz";
- url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
- sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
- };
- }
-
- {
- name = "debug___debug_3.1.0.tgz";
- path = fetchurl {
- name = "debug___debug_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz";
- sha1 = "5bb5a0672628b64149566ba16819e61518c67261";
- };
- }
-
- {
- name = "decamelize___decamelize_1.2.0.tgz";
- path = fetchurl {
- name = "decamelize___decamelize_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
- sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
- };
- }
-
- {
- name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
- path = fetchurl {
- name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
- sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
- };
- }
-
- {
- name = "deep_equal___deep_equal_1.0.1.tgz";
- path = fetchurl {
- name = "deep_equal___deep_equal_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz";
- sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5";
- };
- }
-
- {
- name = "deep_extend___deep_extend_0.6.0.tgz";
- path = fetchurl {
- name = "deep_extend___deep_extend_0.6.0.tgz";
- url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz";
- sha1 = "c4fa7c95404a17a9c3e8ca7e1537312b736330ac";
- };
- }
-
- {
- name = "define_properties___define_properties_1.1.2.tgz";
- path = fetchurl {
- name = "define_properties___define_properties_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz";
- sha1 = "83a73f2fea569898fb737193c8f873caf6d45c94";
- };
- }
-
- {
- name = "define_property___define_property_0.2.5.tgz";
- path = fetchurl {
- name = "define_property___define_property_0.2.5.tgz";
- url = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz";
- sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
- };
- }
-
- {
- name = "define_property___define_property_1.0.0.tgz";
- path = fetchurl {
- name = "define_property___define_property_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz";
- sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
- };
- }
-
- {
- name = "define_property___define_property_2.0.2.tgz";
- path = fetchurl {
- name = "define_property___define_property_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz";
- sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d";
- };
- }
-
- {
- name = "defined___defined_1.0.0.tgz";
- path = fetchurl {
- name = "defined___defined_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz";
- sha1 = "c98d9bcef75674188e110969151199e39b1fa693";
- };
- }
-
- {
- name = "del___del_3.0.0.tgz";
- path = fetchurl {
- name = "del___del_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz";
- sha1 = "53ecf699ffcbcb39637691ab13baf160819766e5";
- };
- }
-
- {
- name = "delayed_stream___delayed_stream_1.0.0.tgz";
- path = fetchurl {
- name = "delayed_stream___delayed_stream_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
- sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
- };
- }
-
- {
- name = "delegates___delegates_1.0.0.tgz";
- path = fetchurl {
- name = "delegates___delegates_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz";
- sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
- };
- }
-
- {
- name = "depd___depd_1.1.1.tgz";
- path = fetchurl {
- name = "depd___depd_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz";
- sha1 = "5783b4e1c459f06fa5ca27f991f3d06e7a310359";
- };
- }
-
- {
- name = "depd___depd_1.1.2.tgz";
- path = fetchurl {
- name = "depd___depd_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
- sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
- };
- }
-
- {
- name = "des.js___des.js_1.0.0.tgz";
- path = fetchurl {
- name = "des.js___des.js_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz";
- sha1 = "c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc";
- };
- }
-
- {
- name = "destroy___destroy_1.0.4.tgz";
- path = fetchurl {
- name = "destroy___destroy_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
- sha1 = "978857442c44749e4206613e37946205826abd80";
- };
- }
-
- {
- name = "detect_indent___detect_indent_4.0.0.tgz";
- path = fetchurl {
- name = "detect_indent___detect_indent_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz";
- sha1 = "f76d064352cdf43a1cb6ce619c4ee3a9475de208";
- };
- }
-
- {
- name = "detect_libc___detect_libc_1.0.3.tgz";
- path = fetchurl {
- name = "detect_libc___detect_libc_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz";
- sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
- };
- }
-
- {
- name = "detect_node___detect_node_2.0.3.tgz";
- path = fetchurl {
- name = "detect_node___detect_node_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz";
- sha1 = "a2033c09cc8e158d37748fbde7507832bd6ce127";
- };
- }
-
- {
- name = "diffie_hellman___diffie_hellman_5.0.3.tgz";
- path = fetchurl {
- name = "diffie_hellman___diffie_hellman_5.0.3.tgz";
- url = "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz";
- sha1 = "40e8ee98f55a2149607146921c63e1ae5f3d2875";
- };
- }
-
- {
- name = "dns_equal___dns_equal_1.0.0.tgz";
- path = fetchurl {
- name = "dns_equal___dns_equal_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz";
- sha1 = "b39e7f1da6eb0a75ba9c17324b34753c47e0654d";
- };
- }
-
- {
- name = "dns_packet___dns_packet_1.3.1.tgz";
- path = fetchurl {
- name = "dns_packet___dns_packet_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz";
- sha1 = "12aa426981075be500b910eedcd0b47dd7deda5a";
- };
- }
-
- {
- name = "dns_txt___dns_txt_2.0.2.tgz";
- path = fetchurl {
- name = "dns_txt___dns_txt_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz";
- sha1 = "b91d806f5d27188e4ab3e7d107d881a1cc4642b6";
- };
- }
-
- {
- name = "dom_converter___dom_converter_0.1.4.tgz";
- path = fetchurl {
- name = "dom_converter___dom_converter_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz";
- sha1 = "a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b";
- };
- }
-
- {
- name = "dom_serializer___dom_serializer_0.1.0.tgz";
- path = fetchurl {
- name = "dom_serializer___dom_serializer_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz";
- sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
- };
- }
-
- {
- name = "domain_browser___domain_browser_1.2.0.tgz";
- path = fetchurl {
- name = "domain_browser___domain_browser_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz";
- sha1 = "3d31f50191a6749dd1375a7f522e823d42e54eda";
- };
- }
-
- {
- name = "domelementtype___domelementtype_1.3.0.tgz";
- path = fetchurl {
- name = "domelementtype___domelementtype_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz";
- sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2";
- };
- }
-
- {
- name = "domelementtype___domelementtype_1.1.3.tgz";
- path = fetchurl {
- name = "domelementtype___domelementtype_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz";
- sha1 = "bd28773e2642881aec51544924299c5cd822185b";
- };
- }
-
- {
- name = "domhandler___domhandler_2.1.0.tgz";
- path = fetchurl {
- name = "domhandler___domhandler_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz";
- sha1 = "d2646f5e57f6c3bab11cf6cb05d3c0acf7412594";
- };
- }
-
- {
- name = "domutils___domutils_1.1.6.tgz";
- path = fetchurl {
- name = "domutils___domutils_1.1.6.tgz";
- url = "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz";
- sha1 = "bddc3de099b9a2efacc51c623f28f416ecc57485";
- };
- }
-
- {
- name = "domutils___domutils_1.5.1.tgz";
- path = fetchurl {
- name = "domutils___domutils_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz";
- sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
- };
- }
-
- {
- name = "ecc_jsbn___ecc_jsbn_0.1.1.tgz";
- path = fetchurl {
- name = "ecc_jsbn___ecc_jsbn_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz";
- sha1 = "0fc73a9ed5f0d53c38193398523ef7e543777505";
- };
- }
-
- {
- name = "ee_first___ee_first_1.1.1.tgz";
- path = fetchurl {
- name = "ee_first___ee_first_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
- sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
- };
- }
-
- {
- name = "electron_to_chromium___electron_to_chromium_1.3.52.tgz";
- path = fetchurl {
- name = "electron_to_chromium___electron_to_chromium_1.3.52.tgz";
- url = "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.52.tgz";
- sha1 = "d2d9f1270ba4a3b967b831c40ef71fb4d9ab5ce0";
- };
- }
-
- {
- name = "elliptic___elliptic_6.4.0.tgz";
- path = fetchurl {
- name = "elliptic___elliptic_6.4.0.tgz";
- url = "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz";
- sha1 = "cac9af8762c85836187003c8dfe193e5e2eae5df";
- };
- }
-
- {
- name = "emojis_list___emojis_list_2.1.0.tgz";
- path = fetchurl {
- name = "emojis_list___emojis_list_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz";
- sha1 = "4daa4d9db00f9819880c79fa457ae5b09a1fd389";
- };
- }
-
- {
- name = "encodeurl___encodeurl_1.0.2.tgz";
- path = fetchurl {
- name = "encodeurl___encodeurl_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
- sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
- };
- }
-
- {
- name = "enhanced_resolve___enhanced_resolve_3.4.1.tgz";
- path = fetchurl {
- name = "enhanced_resolve___enhanced_resolve_3.4.1.tgz";
- url = "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz";
- sha1 = "0421e339fd71419b3da13d129b3979040230476e";
- };
- }
-
- {
- name = "entities___entities_1.1.1.tgz";
- path = fetchurl {
- name = "entities___entities_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz";
- sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0";
- };
- }
-
- {
- name = "errno___errno_0.1.7.tgz";
- path = fetchurl {
- name = "errno___errno_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz";
- sha1 = "4684d71779ad39af177e3f007996f7c67c852618";
- };
- }
-
- {
- name = "error_ex___error_ex_1.3.2.tgz";
- path = fetchurl {
- name = "error_ex___error_ex_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz";
- sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf";
- };
- }
-
- {
- name = "error_stack_parser___error_stack_parser_2.0.2.tgz";
- path = fetchurl {
- name = "error_stack_parser___error_stack_parser_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz";
- sha1 = "4ae8dbaa2bf90a8b450707b9149dcabca135520d";
- };
- }
-
- {
- name = "es_abstract___es_abstract_1.12.0.tgz";
- path = fetchurl {
- name = "es_abstract___es_abstract_1.12.0.tgz";
- url = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz";
- sha1 = "9dbbdd27c6856f0001421ca18782d786bf8a6165";
- };
- }
-
- {
- name = "es_to_primitive___es_to_primitive_1.1.1.tgz";
- path = fetchurl {
- name = "es_to_primitive___es_to_primitive_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz";
- sha1 = "45355248a88979034b6792e19bb81f2b7975dd0d";
- };
- }
-
- {
- name = "es5_ext___es5_ext_0.10.45.tgz";
- path = fetchurl {
- name = "es5_ext___es5_ext_0.10.45.tgz";
- url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz";
- sha1 = "0bfdf7b473da5919d5adf3bd25ceb754fccc3653";
- };
- }
-
- {
- name = "es6_iterator___es6_iterator_2.0.3.tgz";
- path = fetchurl {
- name = "es6_iterator___es6_iterator_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz";
- sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
- };
- }
-
- {
- name = "es6_map___es6_map_0.1.5.tgz";
- path = fetchurl {
- name = "es6_map___es6_map_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz";
- sha1 = "9136e0503dcc06a301690f0bb14ff4e364e949f0";
- };
- }
-
- {
- name = "es6_set___es6_set_0.1.5.tgz";
- path = fetchurl {
- name = "es6_set___es6_set_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz";
- sha1 = "d2b3ec5d4d800ced818db538d28974db0a73ccb1";
- };
- }
-
- {
- name = "es6_symbol___es6_symbol_3.1.1.tgz";
- path = fetchurl {
- name = "es6_symbol___es6_symbol_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz";
- sha1 = "bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77";
- };
- }
-
- {
- name = "es6_weak_map___es6_weak_map_2.0.2.tgz";
- path = fetchurl {
- name = "es6_weak_map___es6_weak_map_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz";
- sha1 = "5e3ab32251ffd1538a1f8e5ffa1357772f92d96f";
- };
- }
-
- {
- name = "escape_html___escape_html_1.0.3.tgz";
- path = fetchurl {
- name = "escape_html___escape_html_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
- sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
- };
- }
-
- {
- name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
- path = fetchurl {
- name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
- sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
- };
- }
-
- {
- name = "escope___escope_3.6.0.tgz";
- path = fetchurl {
- name = "escope___escope_3.6.0.tgz";
- url = "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz";
- sha1 = "e01975e812781a163a6dadfdd80398dc64c889c3";
- };
- }
-
- {
- name = "esprima___esprima_2.7.3.tgz";
- path = fetchurl {
- name = "esprima___esprima_2.7.3.tgz";
- url = "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz";
- sha1 = "96e3b70d5779f6ad49cd032673d1c312767ba581";
- };
- }
-
- {
- name = "esrecurse___esrecurse_4.2.1.tgz";
- path = fetchurl {
- name = "esrecurse___esrecurse_4.2.1.tgz";
- url = "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz";
- sha1 = "007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf";
- };
- }
-
- {
- name = "estraverse___estraverse_4.2.0.tgz";
- path = fetchurl {
- name = "estraverse___estraverse_4.2.0.tgz";
- url = "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz";
- sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
- };
- }
-
- {
- name = "esutils___esutils_2.0.2.tgz";
- path = fetchurl {
- name = "esutils___esutils_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz";
- sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
- };
- }
-
- {
- name = "etag___etag_1.8.1.tgz";
- path = fetchurl {
- name = "etag___etag_1.8.1.tgz";
- url = "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz";
- sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
- };
- }
-
- {
- name = "event_emitter___event_emitter_0.3.5.tgz";
- path = fetchurl {
- name = "event_emitter___event_emitter_0.3.5.tgz";
- url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz";
- sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39";
- };
- }
-
- {
- name = "eventemitter3___eventemitter3_3.1.0.tgz";
- path = fetchurl {
- name = "eventemitter3___eventemitter3_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz";
- sha1 = "090b4d6cdbd645ed10bf750d4b5407942d7ba163";
- };
- }
-
- {
- name = "events___events_1.1.1.tgz";
- path = fetchurl {
- name = "events___events_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz";
- sha1 = "9ebdb7635ad099c70dcc4c2a1f5004288e8bd924";
- };
- }
-
- {
- name = "eventsource___eventsource_0.1.6.tgz";
- path = fetchurl {
- name = "eventsource___eventsource_0.1.6.tgz";
- url = "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz";
- sha1 = "0acede849ed7dd1ccc32c811bb11b944d4f29232";
- };
- }
-
- {
- name = "evp_bytestokey___evp_bytestokey_1.0.3.tgz";
- path = fetchurl {
- name = "evp_bytestokey___evp_bytestokey_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
- sha1 = "7fcbdb198dc71959432efe13842684e0525acb02";
- };
- }
-
- {
- name = "execa___execa_0.7.0.tgz";
- path = fetchurl {
- name = "execa___execa_0.7.0.tgz";
- url = "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz";
- sha1 = "944becd34cc41ee32a63a9faf27ad5a65fc59777";
- };
- }
-
- {
- name = "expand_brackets___expand_brackets_0.1.5.tgz";
- path = fetchurl {
- name = "expand_brackets___expand_brackets_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz";
- sha1 = "df07284e342a807cd733ac5af72411e581d1177b";
- };
- }
-
- {
- name = "expand_brackets___expand_brackets_2.1.4.tgz";
- path = fetchurl {
- name = "expand_brackets___expand_brackets_2.1.4.tgz";
- url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz";
- sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
- };
- }
-
- {
- name = "expand_range___expand_range_1.8.2.tgz";
- path = fetchurl {
- name = "expand_range___expand_range_1.8.2.tgz";
- url = "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz";
- sha1 = "a299effd335fe2721ebae8e257ec79644fc85337";
- };
- }
-
- {
- name = "express___express_4.16.3.tgz";
- path = fetchurl {
- name = "express___express_4.16.3.tgz";
- url = "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz";
- sha1 = "6af8a502350db3246ecc4becf6b5a34d22f7ed53";
- };
- }
-
- {
- name = "extend_shallow___extend_shallow_2.0.1.tgz";
- path = fetchurl {
- name = "extend_shallow___extend_shallow_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz";
- sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
- };
- }
-
- {
- name = "extend_shallow___extend_shallow_3.0.2.tgz";
- path = fetchurl {
- name = "extend_shallow___extend_shallow_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz";
- sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
- };
- }
-
- {
- name = "extend___extend_3.0.2.tgz";
- path = fetchurl {
- name = "extend___extend_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
- sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
- };
- }
-
- {
- name = "extglob___extglob_0.3.2.tgz";
- path = fetchurl {
- name = "extglob___extglob_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz";
- sha1 = "2e18ff3d2f49ab2765cec9023f011daa8d8349a1";
- };
- }
-
- {
- name = "extglob___extglob_2.0.4.tgz";
- path = fetchurl {
- name = "extglob___extglob_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz";
- sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543";
- };
- }
-
- {
- name = "extract_text_webpack_plugin___extract_text_webpack_plugin_3.0.2.tgz";
- path = fetchurl {
- name = "extract_text_webpack_plugin___extract_text_webpack_plugin_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz";
- sha1 = "5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7";
- };
- }
-
- {
- name = "extsprintf___extsprintf_1.3.0.tgz";
- path = fetchurl {
- name = "extsprintf___extsprintf_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
- sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
- };
- }
-
- {
- name = "extsprintf___extsprintf_1.4.0.tgz";
- path = fetchurl {
- name = "extsprintf___extsprintf_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
- sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
- };
- }
-
- {
- name = "fast_deep_equal___fast_deep_equal_1.1.0.tgz";
- path = fetchurl {
- name = "fast_deep_equal___fast_deep_equal_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz";
- sha1 = "c053477817c86b51daa853c81e059b733d023614";
- };
- }
-
- {
- name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz";
- path = fetchurl {
- name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz";
- sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
- };
- }
-
- {
- name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
- path = fetchurl {
- name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
- sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
- };
- }
-
- {
- name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
- path = fetchurl {
- name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
- sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
- };
- }
-
- {
- name = "fastparse___fastparse_1.1.1.tgz";
- path = fetchurl {
- name = "fastparse___fastparse_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz";
- sha1 = "d1e2643b38a94d7583b479060e6c4affc94071f8";
- };
- }
-
- {
- name = "faye_websocket___faye_websocket_0.10.0.tgz";
- path = fetchurl {
- name = "faye_websocket___faye_websocket_0.10.0.tgz";
- url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz";
- sha1 = "4e492f8d04dfb6f89003507f6edbf2d501e7c6f4";
- };
- }
-
- {
- name = "faye_websocket___faye_websocket_0.11.1.tgz";
- path = fetchurl {
- name = "faye_websocket___faye_websocket_0.11.1.tgz";
- url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz";
- sha1 = "f0efe18c4f56e4f40afc7e06c719fd5ee6188f38";
- };
- }
-
- {
- name = "file_loader___file_loader_0.10.1.tgz";
- path = fetchurl {
- name = "file_loader___file_loader_0.10.1.tgz";
- url = "https://registry.yarnpkg.com/file-loader/-/file-loader-0.10.1.tgz";
- sha1 = "815034119891fc6441fb5a64c11bc93c22ddd842";
- };
- }
-
- {
- name = "filename_regex___filename_regex_2.0.1.tgz";
- path = fetchurl {
- name = "filename_regex___filename_regex_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz";
- sha1 = "c1c4b9bee3e09725ddb106b75c1e301fe2f18b26";
- };
- }
-
- {
- name = "fill_range___fill_range_2.2.4.tgz";
- path = fetchurl {
- name = "fill_range___fill_range_2.2.4.tgz";
- url = "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz";
- sha1 = "eb1e773abb056dcd8df2bfdf6af59b8b3a936565";
- };
- }
-
- {
- name = "fill_range___fill_range_4.0.0.tgz";
- path = fetchurl {
- name = "fill_range___fill_range_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz";
- sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
- };
- }
-
- {
- name = "finalhandler___finalhandler_1.1.1.tgz";
- path = fetchurl {
- name = "finalhandler___finalhandler_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz";
- sha1 = "eebf4ed840079c83f4249038c9d703008301b105";
- };
- }
-
- {
- name = "find_cache_dir___find_cache_dir_1.0.0.tgz";
- path = fetchurl {
- name = "find_cache_dir___find_cache_dir_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz";
- sha1 = "9288e3e9e3cc3748717d39eade17cf71fc30ee6f";
- };
- }
-
- {
- name = "find_up___find_up_1.1.2.tgz";
- path = fetchurl {
- name = "find_up___find_up_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz";
- sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f";
- };
- }
-
- {
- name = "find_up___find_up_2.1.0.tgz";
- path = fetchurl {
- name = "find_up___find_up_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz";
- sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
- };
- }
-
- {
- name = "flatten___flatten_1.0.2.tgz";
- path = fetchurl {
- name = "flatten___flatten_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz";
- sha1 = "dae46a9d78fbe25292258cc1e780a41d95c03782";
- };
- }
-
- {
- name = "follow_redirects___follow_redirects_1.5.1.tgz";
- path = fetchurl {
- name = "follow_redirects___follow_redirects_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.1.tgz";
- sha1 = "67a8f14f5a1f67f962c2c46469c79eaec0a90291";
- };
- }
-
- {
- name = "for_in___for_in_0.1.8.tgz";
- path = fetchurl {
- name = "for_in___for_in_0.1.8.tgz";
- url = "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz";
- sha1 = "d8773908e31256109952b1fdb9b3fa867d2775e1";
- };
- }
-
- {
- name = "for_in___for_in_1.0.2.tgz";
- path = fetchurl {
- name = "for_in___for_in_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz";
- sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
- };
- }
-
- {
- name = "for_own___for_own_0.1.5.tgz";
- path = fetchurl {
- name = "for_own___for_own_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz";
- sha1 = "5265c681a4f294dabbf17c9509b6763aa84510ce";
- };
- }
-
- {
- name = "for_own___for_own_1.0.0.tgz";
- path = fetchurl {
- name = "for_own___for_own_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz";
- sha1 = "c63332f415cedc4b04dbfe70cf836494c53cb44b";
- };
- }
-
- {
- name = "foreach___foreach_2.0.5.tgz";
- path = fetchurl {
- name = "foreach___foreach_2.0.5.tgz";
- url = "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz";
- sha1 = "0bee005018aeb260d0a3af3ae658dd0136ec1b99";
- };
- }
-
- {
- name = "forever_agent___forever_agent_0.6.1.tgz";
- path = fetchurl {
- name = "forever_agent___forever_agent_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
- sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
- };
- }
-
- {
- name = "form_data___form_data_2.1.4.tgz";
- path = fetchurl {
- name = "form_data___form_data_2.1.4.tgz";
- url = "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz";
- sha1 = "33c183acf193276ecaa98143a69e94bfee1750d1";
- };
- }
-
- {
- name = "form_data___form_data_2.3.2.tgz";
- path = fetchurl {
- name = "form_data___form_data_2.3.2.tgz";
- url = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz";
- sha1 = "4970498be604c20c005d4f5c23aecd21d6b49099";
- };
- }
-
- {
- name = "forwarded___forwarded_0.1.2.tgz";
- path = fetchurl {
- name = "forwarded___forwarded_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz";
- sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
- };
- }
-
- {
- name = "fragment_cache___fragment_cache_0.2.1.tgz";
- path = fetchurl {
- name = "fragment_cache___fragment_cache_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz";
- sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
- };
- }
-
- {
- name = "fresh___fresh_0.5.2.tgz";
- path = fetchurl {
- name = "fresh___fresh_0.5.2.tgz";
- url = "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz";
- sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
- };
- }
-
- {
- name = "friendly_errors_webpack_plugin___friendly_errors_webpack_plugin_1.7.0.tgz";
- path = fetchurl {
- name = "friendly_errors_webpack_plugin___friendly_errors_webpack_plugin_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz";
- sha1 = "efc86cbb816224565861a1be7a9d84d0aafea136";
- };
- }
-
- {
- name = "fs_extra___fs_extra_2.1.2.tgz";
- path = fetchurl {
- name = "fs_extra___fs_extra_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz";
- sha1 = "046c70163cef9aad46b0e4a7fa467fb22d71de35";
- };
- }
-
- {
- name = "fs_minipass___fs_minipass_1.2.5.tgz";
- path = fetchurl {
- name = "fs_minipass___fs_minipass_1.2.5.tgz";
- url = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz";
- sha1 = "06c277218454ec288df77ada54a03b8702aacb9d";
- };
- }
-
- {
- name = "fs.realpath___fs.realpath_1.0.0.tgz";
- path = fetchurl {
- name = "fs.realpath___fs.realpath_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
- sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
- };
- }
-
- {
- name = "fsevents___fsevents_1.2.4.tgz";
- path = fetchurl {
- name = "fsevents___fsevents_1.2.4.tgz";
- url = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz";
- sha1 = "f41dcb1af2582af3692da36fc55cbd8e1041c426";
- };
- }
-
- {
- name = "fstream___fstream_1.0.11.tgz";
- path = fetchurl {
- name = "fstream___fstream_1.0.11.tgz";
- url = "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz";
- sha1 = "5c1fb1f117477114f0632a0eb4b71b3cb0fd3171";
- };
- }
-
- {
- name = "function_bind___function_bind_1.1.1.tgz";
- path = fetchurl {
- name = "function_bind___function_bind_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
- sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
- };
- }
-
- {
- name = "gauge___gauge_2.7.4.tgz";
- path = fetchurl {
- name = "gauge___gauge_2.7.4.tgz";
- url = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz";
- sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
- };
- }
-
- {
- name = "gaze___gaze_1.1.3.tgz";
- path = fetchurl {
- name = "gaze___gaze_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz";
- sha1 = "c441733e13b927ac8c0ff0b4c3b033f28812924a";
- };
- }
-
- {
- name = "get_caller_file___get_caller_file_1.0.3.tgz";
- path = fetchurl {
- name = "get_caller_file___get_caller_file_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz";
- sha1 = "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a";
- };
- }
-
- {
- name = "get_stdin___get_stdin_4.0.1.tgz";
- path = fetchurl {
- name = "get_stdin___get_stdin_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz";
- sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe";
- };
- }
-
- {
- name = "get_stream___get_stream_3.0.0.tgz";
- path = fetchurl {
- name = "get_stream___get_stream_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz";
- sha1 = "8e943d1358dc37555054ecbe2edb05aa174ede14";
- };
- }
-
- {
- name = "get_value___get_value_2.0.6.tgz";
- path = fetchurl {
- name = "get_value___get_value_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz";
- sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
- };
- }
-
- {
- name = "getpass___getpass_0.1.7.tgz";
- path = fetchurl {
- name = "getpass___getpass_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
- sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
- };
- }
-
- {
- name = "glob_base___glob_base_0.3.0.tgz";
- path = fetchurl {
- name = "glob_base___glob_base_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz";
- sha1 = "dbb164f6221b1c0b1ccf82aea328b497df0ea3c4";
- };
- }
-
- {
- name = "glob_parent___glob_parent_2.0.0.tgz";
- path = fetchurl {
- name = "glob_parent___glob_parent_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz";
- sha1 = "81383d72db054fcccf5336daa902f182f6edbb28";
- };
- }
-
- {
- name = "glob_parent___glob_parent_3.1.0.tgz";
- path = fetchurl {
- name = "glob_parent___glob_parent_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz";
- sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae";
- };
- }
-
- {
- name = "glob___glob_6.0.4.tgz";
- path = fetchurl {
- name = "glob___glob_6.0.4.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz";
- sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
- };
- }
-
- {
- name = "glob___glob_7.1.2.tgz";
- path = fetchurl {
- name = "glob___glob_7.1.2.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz";
- sha1 = "c19c9df9a028702d678612384a6552404c636d15";
- };
- }
-
- {
- name = "globals___globals_9.18.0.tgz";
- path = fetchurl {
- name = "globals___globals_9.18.0.tgz";
- url = "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz";
- sha1 = "aa3896b3e69b487f17e31ed2143d69a8e30c2d8a";
- };
- }
-
- {
- name = "globby___globby_6.1.0.tgz";
- path = fetchurl {
- name = "globby___globby_6.1.0.tgz";
- url = "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz";
- sha1 = "f5a6d70e8395e21c858fb0489d64df02424d506c";
- };
- }
-
- {
- name = "globule___globule_1.2.1.tgz";
- path = fetchurl {
- name = "globule___globule_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz";
- sha1 = "5dffb1b191f22d20797a9369b49eab4e9839696d";
- };
- }
-
- {
- name = "graceful_fs___graceful_fs_4.1.11.tgz";
- path = fetchurl {
- name = "graceful_fs___graceful_fs_4.1.11.tgz";
- url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz";
- sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658";
- };
- }
-
- {
- name = "handle_thing___handle_thing_1.2.5.tgz";
- path = fetchurl {
- name = "handle_thing___handle_thing_1.2.5.tgz";
- url = "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz";
- sha1 = "fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4";
- };
- }
-
- {
- name = "har_schema___har_schema_1.0.5.tgz";
- path = fetchurl {
- name = "har_schema___har_schema_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz";
- sha1 = "d263135f43307c02c602afc8fe95970c0151369e";
- };
- }
-
- {
- name = "har_schema___har_schema_2.0.0.tgz";
- path = fetchurl {
- name = "har_schema___har_schema_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
- sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
- };
- }
-
- {
- name = "har_validator___har_validator_4.2.1.tgz";
- path = fetchurl {
- name = "har_validator___har_validator_4.2.1.tgz";
- url = "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz";
- sha1 = "33481d0f1bbff600dd203d75812a6a5fba002e2a";
- };
- }
-
- {
- name = "har_validator___har_validator_5.0.3.tgz";
- path = fetchurl {
- name = "har_validator___har_validator_5.0.3.tgz";
- url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz";
- sha1 = "ba402c266194f15956ef15e0fcf242993f6a7dfd";
- };
- }
-
- {
- name = "has_ansi___has_ansi_2.0.0.tgz";
- path = fetchurl {
- name = "has_ansi___has_ansi_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz";
- sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
- };
- }
-
- {
- name = "has_flag___has_flag_1.0.0.tgz";
- path = fetchurl {
- name = "has_flag___has_flag_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz";
- sha1 = "9d9e793165ce017a00f00418c43f942a7b1d11fa";
- };
- }
-
- {
- name = "has_flag___has_flag_2.0.0.tgz";
- path = fetchurl {
- name = "has_flag___has_flag_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz";
- sha1 = "e8207af1cc7b30d446cc70b734b5e8be18f88d51";
- };
- }
-
- {
- name = "has_flag___has_flag_3.0.0.tgz";
- path = fetchurl {
- name = "has_flag___has_flag_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz";
- sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
- };
- }
-
- {
- name = "has_unicode___has_unicode_2.0.1.tgz";
- path = fetchurl {
- name = "has_unicode___has_unicode_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz";
- sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
- };
- }
-
- {
- name = "has_value___has_value_0.3.1.tgz";
- path = fetchurl {
- name = "has_value___has_value_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz";
- sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
- };
- }
-
- {
- name = "has_value___has_value_1.0.0.tgz";
- path = fetchurl {
- name = "has_value___has_value_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz";
- sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
- };
- }
-
- {
- name = "has_values___has_values_0.1.4.tgz";
- path = fetchurl {
- name = "has_values___has_values_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz";
- sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
- };
- }
-
- {
- name = "has_values___has_values_1.0.0.tgz";
- path = fetchurl {
- name = "has_values___has_values_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz";
- sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
- };
- }
-
- {
- name = "has___has_1.0.3.tgz";
- path = fetchurl {
- name = "has___has_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
- sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
- };
- }
-
- {
- name = "hash_base___hash_base_3.0.4.tgz";
- path = fetchurl {
- name = "hash_base___hash_base_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz";
- sha1 = "5fc8686847ecd73499403319a6b0a3f3f6ae4918";
- };
- }
-
- {
- name = "hash.js___hash.js_1.1.5.tgz";
- path = fetchurl {
- name = "hash.js___hash.js_1.1.5.tgz";
- url = "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz";
- sha1 = "e38ab4b85dfb1e0c40fe9265c0e9b54854c23812";
- };
- }
-
- {
- name = "hawk___hawk_3.1.3.tgz";
- path = fetchurl {
- name = "hawk___hawk_3.1.3.tgz";
- url = "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz";
- sha1 = "078444bd7c1640b0fe540d2c9b73d59678e8e1c4";
- };
- }
-
- {
- name = "hmac_drbg___hmac_drbg_1.0.1.tgz";
- path = fetchurl {
- name = "hmac_drbg___hmac_drbg_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
- sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1";
- };
- }
-
- {
- name = "hoek___hoek_2.16.3.tgz";
- path = fetchurl {
- name = "hoek___hoek_2.16.3.tgz";
- url = "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz";
- sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed";
- };
- }
-
- {
- name = "home_or_tmp___home_or_tmp_2.0.0.tgz";
- path = fetchurl {
- name = "home_or_tmp___home_or_tmp_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz";
- sha1 = "e36c3f2d2cae7d746a857e38d18d5f32a7882db8";
- };
- }
-
- {
- name = "hosted_git_info___hosted_git_info_2.7.1.tgz";
- path = fetchurl {
- name = "hosted_git_info___hosted_git_info_2.7.1.tgz";
- url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz";
- sha1 = "97f236977bd6e125408930ff6de3eec6281ec047";
- };
- }
-
- {
- name = "hpack.js___hpack.js_2.1.6.tgz";
- path = fetchurl {
- name = "hpack.js___hpack.js_2.1.6.tgz";
- url = "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz";
- sha1 = "87774c0949e513f42e84575b3c45681fade2a0b2";
- };
- }
-
- {
- name = "html_comment_regex___html_comment_regex_1.1.1.tgz";
- path = fetchurl {
- name = "html_comment_regex___html_comment_regex_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz";
- sha1 = "668b93776eaae55ebde8f3ad464b307a4963625e";
- };
- }
-
- {
- name = "html_entities___html_entities_1.2.1.tgz";
- path = fetchurl {
- name = "html_entities___html_entities_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz";
- sha1 = "0df29351f0721163515dfb9e5543e5f6eed5162f";
- };
- }
-
- {
- name = "htmlparser2___htmlparser2_3.3.0.tgz";
- path = fetchurl {
- name = "htmlparser2___htmlparser2_3.3.0.tgz";
- url = "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz";
- sha1 = "cc70d05a59f6542e43f0e685c982e14c924a9efe";
- };
- }
-
- {
- name = "http_deceiver___http_deceiver_1.2.7.tgz";
- path = fetchurl {
- name = "http_deceiver___http_deceiver_1.2.7.tgz";
- url = "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz";
- sha1 = "fa7168944ab9a519d337cb0bec7284dc3e723d87";
- };
- }
-
- {
- name = "http_errors___http_errors_1.6.2.tgz";
- path = fetchurl {
- name = "http_errors___http_errors_1.6.2.tgz";
- url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz";
- sha1 = "0a002cc85707192a7e7946ceedc11155f60ec736";
- };
- }
-
- {
- name = "http_errors___http_errors_1.6.3.tgz";
- path = fetchurl {
- name = "http_errors___http_errors_1.6.3.tgz";
- url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz";
- sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
- };
- }
-
- {
- name = "http_parser_js___http_parser_js_0.4.13.tgz";
- path = fetchurl {
- name = "http_parser_js___http_parser_js_0.4.13.tgz";
- url = "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz";
- sha1 = "3bd6d6fde6e3172c9334c3b33b6c193d80fe1137";
- };
- }
-
- {
- name = "http_proxy_middleware___http_proxy_middleware_0.17.4.tgz";
- path = fetchurl {
- name = "http_proxy_middleware___http_proxy_middleware_0.17.4.tgz";
- url = "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz";
- sha1 = "642e8848851d66f09d4f124912846dbaeb41b833";
- };
- }
-
- {
- name = "http_proxy___http_proxy_1.17.0.tgz";
- path = fetchurl {
- name = "http_proxy___http_proxy_1.17.0.tgz";
- url = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz";
- sha1 = "7ad38494658f84605e2f6db4436df410f4e5be9a";
- };
- }
-
- {
- name = "http_signature___http_signature_1.1.1.tgz";
- path = fetchurl {
- name = "http_signature___http_signature_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz";
- sha1 = "df72e267066cd0ac67fb76adf8e134a8fbcf91bf";
- };
- }
-
- {
- name = "http_signature___http_signature_1.2.0.tgz";
- path = fetchurl {
- name = "http_signature___http_signature_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
- sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
- };
- }
-
- {
- name = "https_browserify___https_browserify_1.0.0.tgz";
- path = fetchurl {
- name = "https_browserify___https_browserify_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz";
- sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73";
- };
- }
-
- {
- name = "iconv_lite___iconv_lite_0.4.19.tgz";
- path = fetchurl {
- name = "iconv_lite___iconv_lite_0.4.19.tgz";
- url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz";
- sha1 = "f7468f60135f5e5dad3399c0a81be9a1603a082b";
- };
- }
-
- {
- name = "iconv_lite___iconv_lite_0.4.23.tgz";
- path = fetchurl {
- name = "iconv_lite___iconv_lite_0.4.23.tgz";
- url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz";
- sha1 = "297871f63be507adcfbfca715d0cd0eed84e9a63";
- };
- }
-
- {
- name = "icss_replace_symbols___icss_replace_symbols_1.1.0.tgz";
- path = fetchurl {
- name = "icss_replace_symbols___icss_replace_symbols_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz";
- sha1 = "06ea6f83679a7749e386cfe1fe812ae5db223ded";
- };
- }
-
- {
- name = "ieee754___ieee754_1.1.12.tgz";
- path = fetchurl {
- name = "ieee754___ieee754_1.1.12.tgz";
- url = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz";
- sha1 = "50bf24e5b9c8bb98af4964c941cdb0918da7b60b";
- };
- }
-
- {
- name = "ignore_walk___ignore_walk_3.0.1.tgz";
- path = fetchurl {
- name = "ignore_walk___ignore_walk_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz";
- sha1 = "a83e62e7d272ac0e3b551aaa82831a19b69f82f8";
- };
- }
-
- {
- name = "import_local___import_local_1.0.0.tgz";
- path = fetchurl {
- name = "import_local___import_local_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz";
- sha1 = "5e4ffdc03f4fe6c009c6729beb29631c2f8227bc";
- };
- }
-
- {
- name = "in_publish___in_publish_2.0.0.tgz";
- path = fetchurl {
- name = "in_publish___in_publish_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz";
- sha1 = "e20ff5e3a2afc2690320b6dc552682a9c7fadf51";
- };
- }
-
- {
- name = "indent_string___indent_string_2.1.0.tgz";
- path = fetchurl {
- name = "indent_string___indent_string_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz";
- sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80";
- };
- }
-
- {
- name = "indexes_of___indexes_of_1.0.1.tgz";
- path = fetchurl {
- name = "indexes_of___indexes_of_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz";
- sha1 = "f30f716c8e2bd346c7b67d3df3915566a7c05607";
- };
- }
-
- {
- name = "indexof___indexof_0.0.1.tgz";
- path = fetchurl {
- name = "indexof___indexof_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz";
- sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
- };
- }
-
- {
- name = "inflight___inflight_1.0.6.tgz";
- path = fetchurl {
- name = "inflight___inflight_1.0.6.tgz";
- url = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
- sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
- };
- }
-
- {
- name = "inherits___inherits_2.0.3.tgz";
- path = fetchurl {
- name = "inherits___inherits_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
- sha1 = "633c2c83e3da42a502f52466022480f4208261de";
- };
- }
-
- {
- name = "inherits___inherits_2.0.1.tgz";
- path = fetchurl {
- name = "inherits___inherits_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz";
- sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
- };
- }
-
- {
- name = "ini___ini_1.3.5.tgz";
- path = fetchurl {
- name = "ini___ini_1.3.5.tgz";
- url = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz";
- sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927";
- };
- }
-
- {
- name = "internal_ip___internal_ip_1.2.0.tgz";
- path = fetchurl {
- name = "internal_ip___internal_ip_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz";
- sha1 = "ae9fbf93b984878785d50a8de1b356956058cf5c";
- };
- }
-
- {
- name = "interpret___interpret_1.1.0.tgz";
- path = fetchurl {
- name = "interpret___interpret_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz";
- sha1 = "7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614";
- };
- }
-
- {
- name = "invariant___invariant_2.2.4.tgz";
- path = fetchurl {
- name = "invariant___invariant_2.2.4.tgz";
- url = "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz";
- sha1 = "610f3c92c9359ce1db616e538008d23ff35158e6";
- };
- }
-
- {
- name = "invert_kv___invert_kv_1.0.0.tgz";
- path = fetchurl {
- name = "invert_kv___invert_kv_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz";
- sha1 = "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6";
- };
- }
-
- {
- name = "ip___ip_1.1.5.tgz";
- path = fetchurl {
- name = "ip___ip_1.1.5.tgz";
- url = "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz";
- sha1 = "bdded70114290828c0a039e72ef25f5aaec4354a";
- };
- }
-
- {
- name = "ipaddr.js___ipaddr.js_1.8.0.tgz";
- path = fetchurl {
- name = "ipaddr.js___ipaddr.js_1.8.0.tgz";
- url = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz";
- sha1 = "eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e";
- };
- }
-
- {
- name = "is_absolute_url___is_absolute_url_2.1.0.tgz";
- path = fetchurl {
- name = "is_absolute_url___is_absolute_url_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz";
- sha1 = "50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6";
- };
- }
-
- {
- name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
- path = fetchurl {
- name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
- url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
- sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
- };
- }
-
- {
- name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
- path = fetchurl {
- name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
- sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656";
- };
- }
-
- {
- name = "is_arrayish___is_arrayish_0.2.1.tgz";
- path = fetchurl {
- name = "is_arrayish___is_arrayish_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
- sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
- };
- }
-
- {
- name = "is_binary_path___is_binary_path_1.0.1.tgz";
- path = fetchurl {
- name = "is_binary_path___is_binary_path_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz";
- sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
- };
- }
-
- {
- name = "is_buffer___is_buffer_1.1.6.tgz";
- path = fetchurl {
- name = "is_buffer___is_buffer_1.1.6.tgz";
- url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
- sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
- };
- }
-
- {
- name = "is_builtin_module___is_builtin_module_1.0.0.tgz";
- path = fetchurl {
- name = "is_builtin_module___is_builtin_module_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
- sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
- };
- }
-
- {
- name = "is_callable___is_callable_1.1.4.tgz";
- path = fetchurl {
- name = "is_callable___is_callable_1.1.4.tgz";
- url = "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz";
- sha1 = "1e1adf219e1eeb684d691f9d6a05ff0d30a24d75";
- };
- }
-
- {
- name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
- path = fetchurl {
- name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
- sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
- };
- }
-
- {
- name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
- path = fetchurl {
- name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
- sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7";
- };
- }
-
- {
- name = "is_date_object___is_date_object_1.0.1.tgz";
- path = fetchurl {
- name = "is_date_object___is_date_object_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz";
- sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
- };
- }
-
- {
- name = "is_descriptor___is_descriptor_0.1.6.tgz";
- path = fetchurl {
- name = "is_descriptor___is_descriptor_0.1.6.tgz";
- url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz";
- sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca";
- };
- }
-
- {
- name = "is_descriptor___is_descriptor_1.0.2.tgz";
- path = fetchurl {
- name = "is_descriptor___is_descriptor_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz";
- sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec";
- };
- }
-
- {
- name = "is_dotfile___is_dotfile_1.0.3.tgz";
- path = fetchurl {
- name = "is_dotfile___is_dotfile_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz";
- sha1 = "a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1";
- };
- }
-
- {
- name = "is_equal_shallow___is_equal_shallow_0.1.3.tgz";
- path = fetchurl {
- name = "is_equal_shallow___is_equal_shallow_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz";
- sha1 = "2238098fc221de0bcfa5d9eac4c45d638aa1c534";
- };
- }
-
- {
- name = "is_extendable___is_extendable_0.1.1.tgz";
- path = fetchurl {
- name = "is_extendable___is_extendable_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz";
- sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
- };
- }
-
- {
- name = "is_extendable___is_extendable_1.0.1.tgz";
- path = fetchurl {
- name = "is_extendable___is_extendable_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz";
- sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4";
- };
- }
-
- {
- name = "is_extglob___is_extglob_1.0.0.tgz";
- path = fetchurl {
- name = "is_extglob___is_extglob_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz";
- sha1 = "ac468177c4943405a092fc8f29760c6ffc6206c0";
- };
- }
-
- {
- name = "is_extglob___is_extglob_2.1.1.tgz";
- path = fetchurl {
- name = "is_extglob___is_extglob_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz";
- sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
- };
- }
-
- {
- name = "is_finite___is_finite_1.0.2.tgz";
- path = fetchurl {
- name = "is_finite___is_finite_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz";
- sha1 = "cc6677695602be550ef11e8b4aa6305342b6d0aa";
- };
- }
-
- {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
- path = fetchurl {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
- sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
- };
- }
-
- {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
- path = fetchurl {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
- sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
- };
- }
-
- {
- name = "is_glob___is_glob_2.0.1.tgz";
- path = fetchurl {
- name = "is_glob___is_glob_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz";
- sha1 = "d096f926a3ded5600f3fdfd91198cb0888c2d863";
- };
- }
-
- {
- name = "is_glob___is_glob_3.1.0.tgz";
- path = fetchurl {
- name = "is_glob___is_glob_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz";
- sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
- };
- }
-
- {
- name = "is_glob___is_glob_4.0.0.tgz";
- path = fetchurl {
- name = "is_glob___is_glob_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz";
- sha1 = "9521c76845cc2610a85203ddf080a958c2ffabc0";
- };
- }
-
- {
- name = "is_number___is_number_2.1.0.tgz";
- path = fetchurl {
- name = "is_number___is_number_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz";
- sha1 = "01fcbbb393463a548f2f466cce16dece49db908f";
- };
- }
-
- {
- name = "is_number___is_number_3.0.0.tgz";
- path = fetchurl {
- name = "is_number___is_number_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz";
- sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
- };
- }
-
- {
- name = "is_number___is_number_4.0.0.tgz";
- path = fetchurl {
- name = "is_number___is_number_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz";
- sha1 = "0026e37f5454d73e356dfe6564699867c6a7f0ff";
- };
- }
-
- {
- name = "is_path_cwd___is_path_cwd_1.0.0.tgz";
- path = fetchurl {
- name = "is_path_cwd___is_path_cwd_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz";
- sha1 = "d225ec23132e89edd38fda767472e62e65f1106d";
- };
- }
-
- {
- name = "is_path_in_cwd___is_path_in_cwd_1.0.1.tgz";
- path = fetchurl {
- name = "is_path_in_cwd___is_path_in_cwd_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz";
- sha1 = "5ac48b345ef675339bd6c7a48a912110b241cf52";
- };
- }
-
- {
- name = "is_path_inside___is_path_inside_1.0.1.tgz";
- path = fetchurl {
- name = "is_path_inside___is_path_inside_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz";
- sha1 = "8ef5b7de50437a3fdca6b4e865ef7aa55cb48036";
- };
- }
-
- {
- name = "is_plain_obj___is_plain_obj_1.1.0.tgz";
- path = fetchurl {
- name = "is_plain_obj___is_plain_obj_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz";
- sha1 = "71a50c8429dfca773c92a390a4a03b39fcd51d3e";
- };
- }
-
- {
- name = "is_plain_object___is_plain_object_2.0.4.tgz";
- path = fetchurl {
- name = "is_plain_object___is_plain_object_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz";
- sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677";
- };
- }
-
- {
- name = "is_posix_bracket___is_posix_bracket_0.1.1.tgz";
- path = fetchurl {
- name = "is_posix_bracket___is_posix_bracket_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz";
- sha1 = "3334dc79774368e92f016e6fbc0a88f5cd6e6bc4";
- };
- }
-
- {
- name = "is_primitive___is_primitive_2.0.0.tgz";
- path = fetchurl {
- name = "is_primitive___is_primitive_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz";
- sha1 = "207bab91638499c07b2adf240a41a87210034575";
- };
- }
-
- {
- name = "is_regex___is_regex_1.0.4.tgz";
- path = fetchurl {
- name = "is_regex___is_regex_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz";
- sha1 = "5517489b547091b0930e095654ced25ee97e9491";
- };
- }
-
- {
- name = "is_stream___is_stream_1.1.0.tgz";
- path = fetchurl {
- name = "is_stream___is_stream_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
- sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
- };
- }
-
- {
- name = "is_svg___is_svg_2.1.0.tgz";
- path = fetchurl {
- name = "is_svg___is_svg_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz";
- sha1 = "cf61090da0d9efbcab8722deba6f032208dbb0e9";
- };
- }
-
- {
- name = "is_symbol___is_symbol_1.0.1.tgz";
- path = fetchurl {
- name = "is_symbol___is_symbol_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz";
- sha1 = "3cc59f00025194b6ab2e38dbae6689256b660572";
- };
- }
-
- {
- name = "is_typedarray___is_typedarray_1.0.0.tgz";
- path = fetchurl {
- name = "is_typedarray___is_typedarray_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
- sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
- };
- }
-
- {
- name = "is_utf8___is_utf8_0.2.1.tgz";
- path = fetchurl {
- name = "is_utf8___is_utf8_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz";
- sha1 = "4b0da1442104d1b336340e80797e865cf39f7d72";
- };
- }
-
- {
- name = "is_windows___is_windows_1.0.2.tgz";
- path = fetchurl {
- name = "is_windows___is_windows_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz";
- sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d";
- };
- }
-
- {
- name = "is_wsl___is_wsl_1.1.0.tgz";
- path = fetchurl {
- name = "is_wsl___is_wsl_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz";
- sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d";
- };
- }
-
- {
- name = "isarray___isarray_0.0.1.tgz";
- path = fetchurl {
- name = "isarray___isarray_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz";
- sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
- };
- }
-
- {
- name = "isarray___isarray_1.0.0.tgz";
- path = fetchurl {
- name = "isarray___isarray_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
- sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
- };
- }
-
- {
- name = "isexe___isexe_2.0.0.tgz";
- path = fetchurl {
- name = "isexe___isexe_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
- sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
- };
- }
-
- {
- name = "isobject___isobject_2.1.0.tgz";
- path = fetchurl {
- name = "isobject___isobject_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz";
- sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
- };
- }
-
- {
- name = "isobject___isobject_3.0.1.tgz";
- path = fetchurl {
- name = "isobject___isobject_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz";
- sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
- };
- }
-
- {
- name = "isstream___isstream_0.1.2.tgz";
- path = fetchurl {
- name = "isstream___isstream_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
- sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
- };
- }
-
- {
- name = "jquery___jquery_3.3.1.tgz";
- path = fetchurl {
- name = "jquery___jquery_3.3.1.tgz";
- url = "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz";
- sha1 = "958ce29e81c9790f31be7792df5d4d95fc57fbca";
- };
- }
-
- {
- name = "js_base64___js_base64_2.4.8.tgz";
- path = fetchurl {
- name = "js_base64___js_base64_2.4.8.tgz";
- url = "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.8.tgz";
- sha1 = "57a9b130888f956834aa40c5b165ba59c758f033";
- };
- }
-
- {
- name = "js_tokens___js_tokens_4.0.0.tgz";
- path = fetchurl {
- name = "js_tokens___js_tokens_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz";
- sha1 = "19203fb59991df98e3a287050d4647cdeaf32499";
- };
- }
-
- {
- name = "js_tokens___js_tokens_3.0.2.tgz";
- path = fetchurl {
- name = "js_tokens___js_tokens_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz";
- sha1 = "9866df395102130e38f7f996bceb65443209c25b";
- };
- }
-
- {
- name = "js_yaml___js_yaml_3.7.0.tgz";
- path = fetchurl {
- name = "js_yaml___js_yaml_3.7.0.tgz";
- url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz";
- sha1 = "5c967ddd837a9bfdca5f2de84253abe8a1c03b80";
- };
- }
-
- {
- name = "jsbn___jsbn_0.1.1.tgz";
- path = fetchurl {
- name = "jsbn___jsbn_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
- sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
- };
- }
-
- {
- name = "jsesc___jsesc_1.3.0.tgz";
- path = fetchurl {
- name = "jsesc___jsesc_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz";
- sha1 = "46c3fec8c1892b12b0833db9bc7622176dbab34b";
- };
- }
-
- {
- name = "jsesc___jsesc_0.5.0.tgz";
- path = fetchurl {
- name = "jsesc___jsesc_0.5.0.tgz";
- url = "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz";
- sha1 = "e7dee66e35d6fc16f710fe91d5cf69f70f08911d";
- };
- }
-
- {
- name = "json_loader___json_loader_0.5.7.tgz";
- path = fetchurl {
- name = "json_loader___json_loader_0.5.7.tgz";
- url = "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz";
- sha1 = "dca14a70235ff82f0ac9a3abeb60d337a365185d";
- };
- }
-
- {
- name = "json_schema_traverse___json_schema_traverse_0.3.1.tgz";
- path = fetchurl {
- name = "json_schema_traverse___json_schema_traverse_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz";
- sha1 = "349a6d44c53a51de89b40805c5d5e59b417d3340";
- };
- }
-
- {
- name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
- path = fetchurl {
- name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
- url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
- sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
- };
- }
-
- {
- name = "json_schema___json_schema_0.2.3.tgz";
- path = fetchurl {
- name = "json_schema___json_schema_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
- sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
- };
- }
-
- {
- name = "json_stable_stringify___json_stable_stringify_1.0.1.tgz";
- path = fetchurl {
- name = "json_stable_stringify___json_stable_stringify_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
- sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
- };
- }
-
- {
- name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
- path = fetchurl {
- name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
- url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
- sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
- };
- }
-
- {
- name = "json3___json3_3.3.2.tgz";
- path = fetchurl {
- name = "json3___json3_3.3.2.tgz";
- url = "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz";
- sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
- };
- }
-
- {
- name = "json5___json5_0.5.1.tgz";
- path = fetchurl {
- name = "json5___json5_0.5.1.tgz";
- url = "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz";
- sha1 = "1eade7acc012034ad84e2396767ead9fa5495821";
- };
- }
-
- {
- name = "jsonfile___jsonfile_2.4.0.tgz";
- path = fetchurl {
- name = "jsonfile___jsonfile_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz";
- sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8";
- };
- }
-
- {
- name = "jsonify___jsonify_0.0.0.tgz";
- path = fetchurl {
- name = "jsonify___jsonify_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz";
- sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
- };
- }
-
- {
- name = "jsprim___jsprim_1.4.1.tgz";
- path = fetchurl {
- name = "jsprim___jsprim_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
- sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
- };
- }
-
- {
- name = "killable___killable_1.0.0.tgz";
- path = fetchurl {
- name = "killable___killable_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz";
- sha1 = "da8b84bd47de5395878f95d64d02f2449fe05e6b";
- };
- }
-
- {
- name = "kind_of___kind_of_3.2.2.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_3.2.2.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz";
- sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
- };
- }
-
- {
- name = "kind_of___kind_of_4.0.0.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz";
- sha1 = "20813df3d712928b207378691a45066fae72dd57";
- };
- }
-
- {
- name = "kind_of___kind_of_5.1.0.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_5.1.0.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz";
- sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d";
- };
- }
-
- {
- name = "kind_of___kind_of_6.0.2.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_6.0.2.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz";
- sha1 = "01146b36a6218e64e58f3a8d66de5d7fc6f6d051";
- };
- }
-
- {
- name = "lazy_cache___lazy_cache_1.0.4.tgz";
- path = fetchurl {
- name = "lazy_cache___lazy_cache_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz";
- sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e";
- };
- }
-
- {
- name = "lcid___lcid_1.0.0.tgz";
- path = fetchurl {
- name = "lcid___lcid_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz";
- sha1 = "308accafa0bc483a3867b4b6f2b9506251d1b835";
- };
- }
-
- {
- name = "load_json_file___load_json_file_1.1.0.tgz";
- path = fetchurl {
- name = "load_json_file___load_json_file_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz";
- sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0";
- };
- }
-
- {
- name = "load_json_file___load_json_file_2.0.0.tgz";
- path = fetchurl {
- name = "load_json_file___load_json_file_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz";
- sha1 = "7947e42149af80d696cbf797bcaabcfe1fe29ca8";
- };
- }
-
- {
- name = "loader_runner___loader_runner_2.3.0.tgz";
- path = fetchurl {
- name = "loader_runner___loader_runner_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz";
- sha1 = "f482aea82d543e07921700d5a46ef26fdac6b8a2";
- };
- }
-
- {
- name = "loader_utils___loader_utils_1.1.0.tgz";
- path = fetchurl {
- name = "loader_utils___loader_utils_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz";
- sha1 = "c98aef488bcceda2ffb5e2de646d6a754429f5cd";
- };
- }
-
- {
- name = "locate_path___locate_path_2.0.0.tgz";
- path = fetchurl {
- name = "locate_path___locate_path_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz";
- sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
- };
- }
-
- {
- name = "lodash._baseassign___lodash._baseassign_3.2.0.tgz";
- path = fetchurl {
- name = "lodash._baseassign___lodash._baseassign_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz";
- sha1 = "8c38a099500f215ad09e59f1722fd0c52bfe0a4e";
- };
- }
-
- {
- name = "lodash._basecopy___lodash._basecopy_3.0.1.tgz";
- path = fetchurl {
- name = "lodash._basecopy___lodash._basecopy_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz";
- sha1 = "8da0e6a876cf344c0ad8a54882111dd3c5c7ca36";
- };
- }
-
- {
- name = "lodash._bindcallback___lodash._bindcallback_3.0.1.tgz";
- path = fetchurl {
- name = "lodash._bindcallback___lodash._bindcallback_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz";
- sha1 = "e531c27644cf8b57a99e17ed95b35c748789392e";
- };
- }
-
- {
- name = "lodash._createassigner___lodash._createassigner_3.1.1.tgz";
- path = fetchurl {
- name = "lodash._createassigner___lodash._createassigner_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz";
- sha1 = "838a5bae2fdaca63ac22dee8e19fa4e6d6970b11";
- };
- }
-
- {
- name = "lodash._getnative___lodash._getnative_3.9.1.tgz";
- path = fetchurl {
- name = "lodash._getnative___lodash._getnative_3.9.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz";
- sha1 = "570bc7dede46d61cdcde687d65d3eecbaa3aaff5";
- };
- }
-
- {
- name = "lodash._isiterateecall___lodash._isiterateecall_3.0.9.tgz";
- path = fetchurl {
- name = "lodash._isiterateecall___lodash._isiterateecall_3.0.9.tgz";
- url = "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz";
- sha1 = "5203ad7ba425fae842460e696db9cf3e6aac057c";
- };
- }
-
- {
- name = "lodash.assign___lodash.assign_3.2.0.tgz";
- path = fetchurl {
- name = "lodash.assign___lodash.assign_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz";
- sha1 = "3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa";
- };
- }
-
- {
- name = "lodash.assign___lodash.assign_4.2.0.tgz";
- path = fetchurl {
- name = "lodash.assign___lodash.assign_4.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz";
- sha1 = "0d99f3ccd7a6d261d19bdaeb9245005d285808e7";
- };
- }
-
- {
- name = "lodash.camelcase___lodash.camelcase_4.3.0.tgz";
- path = fetchurl {
- name = "lodash.camelcase___lodash.camelcase_4.3.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz";
- sha1 = "b28aa6288a2b9fc651035c7711f65ab6190331a6";
- };
- }
-
- {
- name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
- path = fetchurl {
- name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz";
- sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef";
- };
- }
-
- {
- name = "lodash.debounce___lodash.debounce_4.0.8.tgz";
- path = fetchurl {
- name = "lodash.debounce___lodash.debounce_4.0.8.tgz";
- url = "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz";
- sha1 = "82d79bff30a67c4005ffd5e2515300ad9ca4d7af";
- };
- }
-
- {
- name = "lodash.defaults___lodash.defaults_3.1.2.tgz";
- path = fetchurl {
- name = "lodash.defaults___lodash.defaults_3.1.2.tgz";
- url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz";
- sha1 = "c7308b18dbf8bc9372d701a73493c61192bd2e2c";
- };
- }
-
- {
- name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
- path = fetchurl {
- name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
- sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
- };
- }
-
- {
- name = "lodash.isarguments___lodash.isarguments_3.1.0.tgz";
- path = fetchurl {
- name = "lodash.isarguments___lodash.isarguments_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz";
- sha1 = "2f573d85c6a24289ff00663b491c1d338ff3458a";
- };
- }
-
- {
- name = "lodash.isarray___lodash.isarray_3.0.4.tgz";
- path = fetchurl {
- name = "lodash.isarray___lodash.isarray_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz";
- sha1 = "79e4eb88c36a8122af86f844aa9bcd851b5fbb55";
- };
- }
-
- {
- name = "lodash.keys___lodash.keys_3.1.2.tgz";
- path = fetchurl {
- name = "lodash.keys___lodash.keys_3.1.2.tgz";
- url = "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz";
- sha1 = "4dbc0472b156be50a0b286855d1bd0b0c656098a";
- };
- }
-
- {
- name = "lodash.memoize___lodash.memoize_4.1.2.tgz";
- path = fetchurl {
- name = "lodash.memoize___lodash.memoize_4.1.2.tgz";
- url = "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz";
- sha1 = "bcc6c49a42a2840ed997f323eada5ecd182e0bfe";
- };
- }
-
- {
- name = "lodash.mergewith___lodash.mergewith_4.6.1.tgz";
- path = fetchurl {
- name = "lodash.mergewith___lodash.mergewith_4.6.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz";
- sha1 = "639057e726c3afbdb3e7d42741caa8d6e4335927";
- };
- }
-
- {
- name = "lodash.restparam___lodash.restparam_3.6.1.tgz";
- path = fetchurl {
- name = "lodash.restparam___lodash.restparam_3.6.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz";
- sha1 = "936a4e309ef330a7645ed4145986c85ae5b20805";
- };
- }
-
- {
- name = "lodash.tail___lodash.tail_4.1.1.tgz";
- path = fetchurl {
- name = "lodash.tail___lodash.tail_4.1.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz";
- sha1 = "d2333a36d9e7717c8ad2f7cacafec7c32b444664";
- };
- }
-
- {
- name = "lodash.uniq___lodash.uniq_4.5.0.tgz";
- path = fetchurl {
- name = "lodash.uniq___lodash.uniq_4.5.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz";
- sha1 = "d0225373aeb652adc1bc82e4945339a842754773";
- };
- }
-
- {
- name = "lodash___lodash_4.17.10.tgz";
- path = fetchurl {
- name = "lodash___lodash_4.17.10.tgz";
- url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz";
- sha1 = "1b7793cf7259ea38fb3661d4d38b3260af8ae4e7";
- };
- }
-
- {
- name = "loglevel___loglevel_1.6.1.tgz";
- path = fetchurl {
- name = "loglevel___loglevel_1.6.1.tgz";
- url = "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz";
- sha1 = "e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa";
- };
- }
-
- {
- name = "longest___longest_1.0.1.tgz";
- path = fetchurl {
- name = "longest___longest_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz";
- sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097";
- };
- }
-
- {
- name = "loose_envify___loose_envify_1.4.0.tgz";
- path = fetchurl {
- name = "loose_envify___loose_envify_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz";
- sha1 = "71ee51fa7be4caec1a63839f7e682d8132d30caf";
- };
- }
-
- {
- name = "loud_rejection___loud_rejection_1.6.0.tgz";
- path = fetchurl {
- name = "loud_rejection___loud_rejection_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz";
- sha1 = "5b46f80147edee578870f086d04821cf998e551f";
- };
- }
-
- {
- name = "lru_cache___lru_cache_4.1.3.tgz";
- path = fetchurl {
- name = "lru_cache___lru_cache_4.1.3.tgz";
- url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz";
- sha1 = "a1175cf3496dfc8436c156c334b4955992bce69c";
- };
- }
-
- {
- name = "make_dir___make_dir_1.3.0.tgz";
- path = fetchurl {
- name = "make_dir___make_dir_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz";
- sha1 = "79c1033b80515bd6d24ec9933e860ca75ee27f0c";
- };
- }
-
- {
- name = "map_cache___map_cache_0.2.2.tgz";
- path = fetchurl {
- name = "map_cache___map_cache_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz";
- sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
- };
- }
-
- {
- name = "map_obj___map_obj_1.0.1.tgz";
- path = fetchurl {
- name = "map_obj___map_obj_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz";
- sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d";
- };
- }
-
- {
- name = "map_visit___map_visit_1.0.0.tgz";
- path = fetchurl {
- name = "map_visit___map_visit_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz";
- sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
- };
- }
-
- {
- name = "math_expression_evaluator___math_expression_evaluator_1.2.17.tgz";
- path = fetchurl {
- name = "math_expression_evaluator___math_expression_evaluator_1.2.17.tgz";
- url = "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz";
- sha1 = "de819fdbcd84dccd8fae59c6aeb79615b9d266ac";
- };
- }
-
- {
- name = "math_random___math_random_1.0.1.tgz";
- path = fetchurl {
- name = "math_random___math_random_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz";
- sha1 = "8b3aac588b8a66e4975e3cdea67f7bb329601fac";
- };
- }
-
- {
- name = "md5.js___md5.js_1.3.4.tgz";
- path = fetchurl {
- name = "md5.js___md5.js_1.3.4.tgz";
- url = "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz";
- sha1 = "e9bdbde94a20a5ac18b04340fc5764d5b09d901d";
- };
- }
-
- {
- name = "media_typer___media_typer_0.3.0.tgz";
- path = fetchurl {
- name = "media_typer___media_typer_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
- sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
- };
- }
-
- {
- name = "mem___mem_1.1.0.tgz";
- path = fetchurl {
- name = "mem___mem_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz";
- sha1 = "5edd52b485ca1d900fe64895505399a0dfa45f76";
- };
- }
-
- {
- name = "memory_fs___memory_fs_0.4.1.tgz";
- path = fetchurl {
- name = "memory_fs___memory_fs_0.4.1.tgz";
- url = "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz";
- sha1 = "3a9a20b8462523e447cfbc7e8bb80ed667bfc552";
- };
- }
-
- {
- name = "meow___meow_3.7.0.tgz";
- path = fetchurl {
- name = "meow___meow_3.7.0.tgz";
- url = "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz";
- sha1 = "72cb668b425228290abbfa856892587308a801fb";
- };
- }
-
- {
- name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
- path = fetchurl {
- name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
- sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
- };
- }
-
- {
- name = "methods___methods_1.1.2.tgz";
- path = fetchurl {
- name = "methods___methods_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz";
- sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
- };
- }
-
- {
- name = "micromatch___micromatch_2.3.11.tgz";
- path = fetchurl {
- name = "micromatch___micromatch_2.3.11.tgz";
- url = "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz";
- sha1 = "86677c97d1720b363431d04d0d15293bd38c1565";
- };
- }
-
- {
- name = "micromatch___micromatch_3.1.10.tgz";
- path = fetchurl {
- name = "micromatch___micromatch_3.1.10.tgz";
- url = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz";
- sha1 = "70859bc95c9840952f359a068a3fc49f9ecfac23";
- };
- }
-
- {
- name = "miller_rabin___miller_rabin_4.0.1.tgz";
- path = fetchurl {
- name = "miller_rabin___miller_rabin_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz";
- sha1 = "f080351c865b0dc562a8462966daa53543c78a4d";
- };
- }
-
- {
- name = "mime_db___mime_db_1.35.0.tgz";
- path = fetchurl {
- name = "mime_db___mime_db_1.35.0.tgz";
- url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz";
- sha1 = "0569d657466491283709663ad379a99b90d9ab47";
- };
- }
-
- {
- name = "mime_types___mime_types_2.1.19.tgz";
- path = fetchurl {
- name = "mime_types___mime_types_2.1.19.tgz";
- url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz";
- sha1 = "71e464537a7ef81c15f2db9d97e913fc0ff606f0";
- };
- }
-
- {
- name = "mime___mime_1.4.1.tgz";
- path = fetchurl {
- name = "mime___mime_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz";
- sha1 = "121f9ebc49e3766f311a76e1fa1c8003c4b03aa6";
- };
- }
-
- {
- name = "mime___mime_1.6.0.tgz";
- path = fetchurl {
- name = "mime___mime_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
- sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
- };
- }
-
- {
- name = "mimic_fn___mimic_fn_1.2.0.tgz";
- path = fetchurl {
- name = "mimic_fn___mimic_fn_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz";
- sha1 = "820c86a39334640e99516928bd03fca88057d022";
- };
- }
-
- {
- name = "minimalistic_assert___minimalistic_assert_1.0.1.tgz";
- path = fetchurl {
- name = "minimalistic_assert___minimalistic_assert_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
- sha1 = "2e194de044626d4a10e7f7fbc00ce73e83e4d5c7";
- };
- }
-
- {
- name = "minimalistic_crypto_utils___minimalistic_crypto_utils_1.0.1.tgz";
- path = fetchurl {
- name = "minimalistic_crypto_utils___minimalistic_crypto_utils_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
- sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a";
- };
- }
-
- {
- name = "minimatch___minimatch_3.0.4.tgz";
- path = fetchurl {
- name = "minimatch___minimatch_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
- sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
- };
- }
-
- {
- name = "minimist___minimist_0.0.8.tgz";
- path = fetchurl {
- name = "minimist___minimist_0.0.8.tgz";
- url = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz";
- sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
- };
- }
-
- {
- name = "minimist___minimist_1.2.0.tgz";
- path = fetchurl {
- name = "minimist___minimist_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz";
- sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
- };
- }
-
- {
- name = "minipass___minipass_2.3.3.tgz";
- path = fetchurl {
- name = "minipass___minipass_2.3.3.tgz";
- url = "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz";
- sha1 = "a7dcc8b7b833f5d368759cce544dccb55f50f233";
- };
- }
-
- {
- name = "minizlib___minizlib_1.1.0.tgz";
- path = fetchurl {
- name = "minizlib___minizlib_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz";
- sha1 = "11e13658ce46bc3a70a267aac58359d1e0c29ceb";
- };
- }
-
- {
- name = "mixin_deep___mixin_deep_1.3.1.tgz";
- path = fetchurl {
- name = "mixin_deep___mixin_deep_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz";
- sha1 = "a49e7268dce1a0d9698e45326c5626df3543d0fe";
- };
- }
-
- {
- name = "mixin_object___mixin_object_2.0.1.tgz";
- path = fetchurl {
- name = "mixin_object___mixin_object_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz";
- sha1 = "4fb949441dab182540f1fe035ba60e1947a5e57e";
- };
- }
-
- {
- name = "mkdirp___mkdirp_0.5.1.tgz";
- path = fetchurl {
- name = "mkdirp___mkdirp_0.5.1.tgz";
- url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz";
- sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
- };
- }
-
- {
- name = "ms___ms_2.0.0.tgz";
- path = fetchurl {
- name = "ms___ms_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
- sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
- };
- }
-
- {
- name = "multicast_dns_service_types___multicast_dns_service_types_1.1.0.tgz";
- path = fetchurl {
- name = "multicast_dns_service_types___multicast_dns_service_types_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz";
- sha1 = "899f11d9686e5e05cb91b35d5f0e63b773cfc901";
- };
- }
-
- {
- name = "multicast_dns___multicast_dns_6.2.3.tgz";
- path = fetchurl {
- name = "multicast_dns___multicast_dns_6.2.3.tgz";
- url = "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz";
- sha1 = "a0ec7bd9055c4282f790c3c82f4e28db3b31b229";
- };
- }
-
- {
- name = "nan___nan_2.10.0.tgz";
- path = fetchurl {
- name = "nan___nan_2.10.0.tgz";
- url = "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz";
- sha1 = "96d0cd610ebd58d4b4de9cc0c6828cda99c7548f";
- };
- }
-
- {
- name = "nanomatch___nanomatch_1.2.13.tgz";
- path = fetchurl {
- name = "nanomatch___nanomatch_1.2.13.tgz";
- url = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz";
- sha1 = "b87a8aa4fc0de8fe6be88895b38983ff265bd119";
- };
- }
-
- {
- name = "needle___needle_2.2.1.tgz";
- path = fetchurl {
- name = "needle___needle_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz";
- sha1 = "b5e325bd3aae8c2678902fa296f729455d1d3a7d";
- };
- }
-
- {
- name = "negotiator___negotiator_0.6.1.tgz";
- path = fetchurl {
- name = "negotiator___negotiator_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz";
- sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
- };
- }
-
- {
- name = "neo_async___neo_async_2.5.1.tgz";
- path = fetchurl {
- name = "neo_async___neo_async_2.5.1.tgz";
- url = "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz";
- sha1 = "acb909e327b1e87ec9ef15f41b8a269512ad41ee";
- };
- }
-
- {
- name = "next_tick___next_tick_1.0.0.tgz";
- path = fetchurl {
- name = "next_tick___next_tick_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz";
- sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c";
- };
- }
-
- {
- name = "node_forge___node_forge_0.7.5.tgz";
- path = fetchurl {
- name = "node_forge___node_forge_0.7.5.tgz";
- url = "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz";
- sha1 = "6c152c345ce11c52f465c2abd957e8639cd674df";
- };
- }
-
- {
- name = "node_gyp___node_gyp_3.7.0.tgz";
- path = fetchurl {
- name = "node_gyp___node_gyp_3.7.0.tgz";
- url = "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.7.0.tgz";
- sha1 = "789478e8f6c45e277aa014f3e28f958f286f9203";
- };
- }
-
- {
- name = "node_libs_browser___node_libs_browser_2.1.0.tgz";
- path = fetchurl {
- name = "node_libs_browser___node_libs_browser_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz";
- sha1 = "5f94263d404f6e44767d726901fff05478d600df";
- };
- }
-
- {
- name = "node_pre_gyp___node_pre_gyp_0.10.3.tgz";
- path = fetchurl {
- name = "node_pre_gyp___node_pre_gyp_0.10.3.tgz";
- url = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz";
- sha1 = "3070040716afdc778747b61b6887bf78880b80fc";
- };
- }
-
- {
- name = "node_sass___node_sass_4.9.2.tgz";
- path = fetchurl {
- name = "node_sass___node_sass_4.9.2.tgz";
- url = "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.2.tgz";
- sha1 = "5e63fe6bd0f2ae3ac9d6c14ede8620e2b8bdb437";
- };
- }
-
- {
- name = "nopt___nopt_3.0.6.tgz";
- path = fetchurl {
- name = "nopt___nopt_3.0.6.tgz";
- url = "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz";
- sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
- };
- }
-
- {
- name = "nopt___nopt_4.0.1.tgz";
- path = fetchurl {
- name = "nopt___nopt_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz";
- sha1 = "d0d4685afd5415193c8c7505602d0d17cd64474d";
- };
- }
-
- {
- name = "normalize_package_data___normalize_package_data_2.4.0.tgz";
- path = fetchurl {
- name = "normalize_package_data___normalize_package_data_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
- sha1 = "12f95a307d58352075a04907b84ac8be98ac012f";
- };
- }
-
- {
- name = "normalize_path___normalize_path_2.1.1.tgz";
- path = fetchurl {
- name = "normalize_path___normalize_path_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz";
- sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
- };
- }
-
- {
- name = "normalize_range___normalize_range_0.1.2.tgz";
- path = fetchurl {
- name = "normalize_range___normalize_range_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz";
- sha1 = "2d10c06bdfd312ea9777695a4d28439456b75942";
- };
- }
-
- {
- name = "normalize_url___normalize_url_1.9.1.tgz";
- path = fetchurl {
- name = "normalize_url___normalize_url_1.9.1.tgz";
- url = "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz";
- sha1 = "2cc0d66b31ea23036458436e3620d85954c66c3c";
- };
- }
-
- {
- name = "npm_bundled___npm_bundled_1.0.3.tgz";
- path = fetchurl {
- name = "npm_bundled___npm_bundled_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz";
- sha1 = "7e71703d973af3370a9591bafe3a63aca0be2308";
- };
- }
-
- {
- name = "npm_packlist___npm_packlist_1.1.11.tgz";
- path = fetchurl {
- name = "npm_packlist___npm_packlist_1.1.11.tgz";
- url = "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz";
- sha1 = "84e8c683cbe7867d34b1d357d893ce29e28a02de";
- };
- }
-
- {
- name = "npm_run_path___npm_run_path_2.0.2.tgz";
- path = fetchurl {
- name = "npm_run_path___npm_run_path_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz";
- sha1 = "35a9232dfa35d7067b4cb2ddf2357b1871536c5f";
- };
- }
-
- {
- name = "npmlog___npmlog_4.1.2.tgz";
- path = fetchurl {
- name = "npmlog___npmlog_4.1.2.tgz";
- url = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz";
- sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
- };
- }
-
- {
- name = "nth_check___nth_check_1.0.1.tgz";
- path = fetchurl {
- name = "nth_check___nth_check_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz";
- sha1 = "9929acdf628fc2c41098deab82ac580cf149aae4";
- };
- }
-
- {
- name = "num2fraction___num2fraction_1.2.2.tgz";
- path = fetchurl {
- name = "num2fraction___num2fraction_1.2.2.tgz";
- url = "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz";
- sha1 = "6f682b6a027a4e9ddfa4564cd2589d1d4e669ede";
- };
- }
-
- {
- name = "number_is_nan___number_is_nan_1.0.1.tgz";
- path = fetchurl {
- name = "number_is_nan___number_is_nan_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz";
- sha1 = "097b602b53422a522c1afb8790318336941a011d";
- };
- }
-
- {
- name = "oauth_sign___oauth_sign_0.8.2.tgz";
- path = fetchurl {
- name = "oauth_sign___oauth_sign_0.8.2.tgz";
- url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz";
- sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
- };
- }
-
- {
- name = "object_assign___object_assign_4.1.1.tgz";
- path = fetchurl {
- name = "object_assign___object_assign_4.1.1.tgz";
- url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
- sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
- };
- }
-
- {
- name = "object_copy___object_copy_0.1.0.tgz";
- path = fetchurl {
- name = "object_copy___object_copy_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz";
- sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
- };
- }
-
- {
- name = "object_keys___object_keys_1.0.12.tgz";
- path = fetchurl {
- name = "object_keys___object_keys_1.0.12.tgz";
- url = "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz";
- sha1 = "09c53855377575310cca62f55bb334abff7b3ed2";
- };
- }
-
- {
- name = "object_path___object_path_0.9.2.tgz";
- path = fetchurl {
- name = "object_path___object_path_0.9.2.tgz";
- url = "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz";
- sha1 = "0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5";
- };
- }
-
- {
- name = "object_visit___object_visit_1.0.1.tgz";
- path = fetchurl {
- name = "object_visit___object_visit_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz";
- sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
- };
- }
-
- {
- name = "object.omit___object.omit_2.0.1.tgz";
- path = fetchurl {
- name = "object.omit___object.omit_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz";
- sha1 = "1a9c744829f39dbb858c76ca3579ae2a54ebd1fa";
- };
- }
-
- {
- name = "object.pick___object.pick_1.3.0.tgz";
- path = fetchurl {
- name = "object.pick___object.pick_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz";
- sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
- };
- }
-
- {
- name = "obuf___obuf_1.1.2.tgz";
- path = fetchurl {
- name = "obuf___obuf_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz";
- sha1 = "09bea3343d41859ebd446292d11c9d4db619084e";
- };
- }
-
- {
- name = "on_finished___on_finished_2.3.0.tgz";
- path = fetchurl {
- name = "on_finished___on_finished_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
- sha1 = "20f1336481b083cd75337992a16971aa2d906947";
- };
- }
-
- {
- name = "on_headers___on_headers_1.0.1.tgz";
- path = fetchurl {
- name = "on_headers___on_headers_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz";
- sha1 = "928f5d0f470d49342651ea6794b0857c100693f7";
- };
- }
-
- {
- name = "once___once_1.4.0.tgz";
- path = fetchurl {
- name = "once___once_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
- sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
- };
- }
-
- {
- name = "open_iconic___open_iconic_1.1.1.tgz";
- path = fetchurl {
- name = "open_iconic___open_iconic_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/open-iconic/-/open-iconic-1.1.1.tgz";
- sha1 = "9dcfc8c7cd3c61cdb4a236b1a347894c97adc0c6";
- };
- }
-
- {
- name = "opn___opn_5.3.0.tgz";
- path = fetchurl {
- name = "opn___opn_5.3.0.tgz";
- url = "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz";
- sha1 = "64871565c863875f052cfdf53d3e3cb5adb53b1c";
- };
- }
-
- {
- name = "original___original_1.0.1.tgz";
- path = fetchurl {
- name = "original___original_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/original/-/original-1.0.1.tgz";
- sha1 = "b0a53ff42ba997a8c9cd1fb5daaeb42b9d693190";
- };
- }
-
- {
- name = "os_browserify___os_browserify_0.3.0.tgz";
- path = fetchurl {
- name = "os_browserify___os_browserify_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz";
- sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27";
- };
- }
-
- {
- name = "os_homedir___os_homedir_1.0.2.tgz";
- path = fetchurl {
- name = "os_homedir___os_homedir_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz";
- sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
- };
- }
-
- {
- name = "os_locale___os_locale_1.4.0.tgz";
- path = fetchurl {
- name = "os_locale___os_locale_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz";
- sha1 = "20f9f17ae29ed345e8bde583b13d2009803c14d9";
- };
- }
-
- {
- name = "os_locale___os_locale_2.1.0.tgz";
- path = fetchurl {
- name = "os_locale___os_locale_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz";
- sha1 = "42bc2900a6b5b8bd17376c8e882b65afccf24bf2";
- };
- }
-
- {
- name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
- path = fetchurl {
- name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
- sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
- };
- }
-
- {
- name = "osenv___osenv_0.1.5.tgz";
- path = fetchurl {
- name = "osenv___osenv_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz";
- sha1 = "85cdfafaeb28e8677f416e287592b5f3f49ea410";
- };
- }
-
- {
- name = "p_finally___p_finally_1.0.0.tgz";
- path = fetchurl {
- name = "p_finally___p_finally_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz";
- sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
- };
- }
-
- {
- name = "p_limit___p_limit_1.3.0.tgz";
- path = fetchurl {
- name = "p_limit___p_limit_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz";
- sha1 = "b86bd5f0c25690911c7590fcbfc2010d54b3ccb8";
- };
- }
-
- {
- name = "p_locate___p_locate_2.0.0.tgz";
- path = fetchurl {
- name = "p_locate___p_locate_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz";
- sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
- };
- }
-
- {
- name = "p_map___p_map_1.2.0.tgz";
- path = fetchurl {
- name = "p_map___p_map_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz";
- sha1 = "e4e94f311eabbc8633a1e79908165fca26241b6b";
- };
- }
-
- {
- name = "p_try___p_try_1.0.0.tgz";
- path = fetchurl {
- name = "p_try___p_try_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz";
- sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
- };
- }
-
- {
- name = "pako___pako_1.0.6.tgz";
- path = fetchurl {
- name = "pako___pako_1.0.6.tgz";
- url = "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz";
- sha1 = "0101211baa70c4bca4a0f63f2206e97b7dfaf258";
- };
- }
-
- {
- name = "parse_asn1___parse_asn1_5.1.1.tgz";
- path = fetchurl {
- name = "parse_asn1___parse_asn1_5.1.1.tgz";
- url = "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz";
- sha1 = "f6bf293818332bd0dab54efb16087724745e6ca8";
- };
- }
-
- {
- name = "parse_glob___parse_glob_3.0.4.tgz";
- path = fetchurl {
- name = "parse_glob___parse_glob_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz";
- sha1 = "b2c376cfb11f35513badd173ef0bb6e3a388391c";
- };
- }
-
- {
- name = "parse_json___parse_json_2.2.0.tgz";
- path = fetchurl {
- name = "parse_json___parse_json_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz";
- sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
- };
- }
-
- {
- name = "parseurl___parseurl_1.3.2.tgz";
- path = fetchurl {
- name = "parseurl___parseurl_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz";
- sha1 = "fc289d4ed8993119460c156253262cdc8de65bf3";
- };
- }
-
- {
- name = "pascalcase___pascalcase_0.1.1.tgz";
- path = fetchurl {
- name = "pascalcase___pascalcase_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz";
- sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
- };
- }
-
- {
- name = "path_browserify___path_browserify_0.0.0.tgz";
- path = fetchurl {
- name = "path_browserify___path_browserify_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz";
- sha1 = "a0b870729aae214005b7d5032ec2cbbb0fb4451a";
- };
- }
-
- {
- name = "path_dirname___path_dirname_1.0.2.tgz";
- path = fetchurl {
- name = "path_dirname___path_dirname_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz";
- sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
- };
- }
-
- {
- name = "path_exists___path_exists_2.1.0.tgz";
- path = fetchurl {
- name = "path_exists___path_exists_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz";
- sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
- };
- }
-
- {
- name = "path_exists___path_exists_3.0.0.tgz";
- path = fetchurl {
- name = "path_exists___path_exists_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz";
- sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
- };
- }
-
- {
- name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
- path = fetchurl {
- name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
- sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
- };
- }
-
- {
- name = "path_is_inside___path_is_inside_1.0.2.tgz";
- path = fetchurl {
- name = "path_is_inside___path_is_inside_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz";
- sha1 = "365417dede44430d1c11af61027facf074bdfc53";
- };
- }
-
- {
- name = "path_key___path_key_2.0.1.tgz";
- path = fetchurl {
- name = "path_key___path_key_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz";
- sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
- };
- }
-
- {
- name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
- path = fetchurl {
- name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
- sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
- };
- }
-
- {
- name = "path_type___path_type_1.1.0.tgz";
- path = fetchurl {
- name = "path_type___path_type_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz";
- sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441";
- };
- }
-
- {
- name = "path_type___path_type_2.0.0.tgz";
- path = fetchurl {
- name = "path_type___path_type_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz";
- sha1 = "f012ccb8415b7096fc2daa1054c3d72389594c73";
- };
- }
-
- {
- name = "pbkdf2___pbkdf2_3.0.16.tgz";
- path = fetchurl {
- name = "pbkdf2___pbkdf2_3.0.16.tgz";
- url = "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz";
- sha1 = "7404208ec6b01b62d85bf83853a8064f8d9c2a5c";
- };
- }
-
- {
- name = "performance_now___performance_now_0.2.0.tgz";
- path = fetchurl {
- name = "performance_now___performance_now_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz";
- sha1 = "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5";
- };
- }
-
- {
- name = "performance_now___performance_now_2.1.0.tgz";
- path = fetchurl {
- name = "performance_now___performance_now_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
- sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
- };
- }
-
- {
- name = "pify___pify_2.3.0.tgz";
- path = fetchurl {
- name = "pify___pify_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
- sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
- };
- }
-
- {
- name = "pify___pify_3.0.0.tgz";
- path = fetchurl {
- name = "pify___pify_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz";
- sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
- };
- }
-
- {
- name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
- path = fetchurl {
- name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
- sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
- };
- }
-
- {
- name = "pinkie___pinkie_2.0.4.tgz";
- path = fetchurl {
- name = "pinkie___pinkie_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz";
- sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
- };
- }
-
- {
- name = "pkg_dir___pkg_dir_2.0.0.tgz";
- path = fetchurl {
- name = "pkg_dir___pkg_dir_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz";
- sha1 = "f6d5d1109e19d63edf428e0bd57e12777615334b";
- };
- }
-
- {
- name = "pkg_up___pkg_up_1.0.0.tgz";
- path = fetchurl {
- name = "pkg_up___pkg_up_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz";
- sha1 = "3e08fb461525c4421624a33b9f7e6d0af5b05a26";
- };
- }
-
- {
- name = "popper.js___popper.js_1.14.4.tgz";
- path = fetchurl {
- name = "popper.js___popper.js_1.14.4.tgz";
- url = "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.4.tgz";
- sha1 = "8eec1d8ff02a5a3a152dd43414a15c7b79fd69b6";
- };
- }
-
- {
- name = "portfinder___portfinder_1.0.13.tgz";
- path = fetchurl {
- name = "portfinder___portfinder_1.0.13.tgz";
- url = "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz";
- sha1 = "bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9";
- };
- }
-
- {
- name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
- path = fetchurl {
- name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
- sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
- };
- }
-
- {
- name = "postcss_calc___postcss_calc_5.3.1.tgz";
- path = fetchurl {
- name = "postcss_calc___postcss_calc_5.3.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz";
- sha1 = "77bae7ca928ad85716e2fda42f261bf7c1d65b5e";
- };
- }
-
- {
- name = "postcss_colormin___postcss_colormin_2.2.2.tgz";
- path = fetchurl {
- name = "postcss_colormin___postcss_colormin_2.2.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz";
- sha1 = "6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b";
- };
- }
-
- {
- name = "postcss_convert_values___postcss_convert_values_2.6.1.tgz";
- path = fetchurl {
- name = "postcss_convert_values___postcss_convert_values_2.6.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz";
- sha1 = "bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d";
- };
- }
-
- {
- name = "postcss_discard_comments___postcss_discard_comments_2.0.4.tgz";
- path = fetchurl {
- name = "postcss_discard_comments___postcss_discard_comments_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz";
- sha1 = "befe89fafd5b3dace5ccce51b76b81514be00e3d";
- };
- }
-
- {
- name = "postcss_discard_duplicates___postcss_discard_duplicates_2.1.0.tgz";
- path = fetchurl {
- name = "postcss_discard_duplicates___postcss_discard_duplicates_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz";
- sha1 = "b9abf27b88ac188158a5eb12abcae20263b91932";
- };
- }
-
- {
- name = "postcss_discard_empty___postcss_discard_empty_2.1.0.tgz";
- path = fetchurl {
- name = "postcss_discard_empty___postcss_discard_empty_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz";
- sha1 = "d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5";
- };
- }
-
- {
- name = "postcss_discard_overridden___postcss_discard_overridden_0.1.1.tgz";
- path = fetchurl {
- name = "postcss_discard_overridden___postcss_discard_overridden_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz";
- sha1 = "8b1eaf554f686fb288cd874c55667b0aa3668d58";
- };
- }
-
- {
- name = "postcss_discard_unused___postcss_discard_unused_2.2.3.tgz";
- path = fetchurl {
- name = "postcss_discard_unused___postcss_discard_unused_2.2.3.tgz";
- url = "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz";
- sha1 = "bce30b2cc591ffc634322b5fb3464b6d934f4433";
- };
- }
-
- {
- name = "postcss_filter_plugins___postcss_filter_plugins_2.0.3.tgz";
- path = fetchurl {
- name = "postcss_filter_plugins___postcss_filter_plugins_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz";
- sha1 = "82245fdf82337041645e477114d8e593aa18b8ec";
- };
- }
-
- {
- name = "postcss_merge_idents___postcss_merge_idents_2.1.7.tgz";
- path = fetchurl {
- name = "postcss_merge_idents___postcss_merge_idents_2.1.7.tgz";
- url = "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz";
- sha1 = "4c5530313c08e1d5b3bbf3d2bbc747e278eea270";
- };
- }
-
- {
- name = "postcss_merge_longhand___postcss_merge_longhand_2.0.2.tgz";
- path = fetchurl {
- name = "postcss_merge_longhand___postcss_merge_longhand_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz";
- sha1 = "23d90cd127b0a77994915332739034a1a4f3d658";
- };
- }
-
- {
- name = "postcss_merge_rules___postcss_merge_rules_2.1.2.tgz";
- path = fetchurl {
- name = "postcss_merge_rules___postcss_merge_rules_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz";
- sha1 = "d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721";
- };
- }
-
- {
- name = "postcss_message_helpers___postcss_message_helpers_2.0.0.tgz";
- path = fetchurl {
- name = "postcss_message_helpers___postcss_message_helpers_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz";
- sha1 = "a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e";
- };
- }
-
- {
- name = "postcss_minify_font_values___postcss_minify_font_values_1.0.5.tgz";
- path = fetchurl {
- name = "postcss_minify_font_values___postcss_minify_font_values_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz";
- sha1 = "4b58edb56641eba7c8474ab3526cafd7bbdecb69";
- };
- }
-
- {
- name = "postcss_minify_gradients___postcss_minify_gradients_1.0.5.tgz";
- path = fetchurl {
- name = "postcss_minify_gradients___postcss_minify_gradients_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz";
- sha1 = "5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1";
- };
- }
-
- {
- name = "postcss_minify_params___postcss_minify_params_1.2.2.tgz";
- path = fetchurl {
- name = "postcss_minify_params___postcss_minify_params_1.2.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz";
- sha1 = "ad2ce071373b943b3d930a3fa59a358c28d6f1f3";
- };
- }
-
- {
- name = "postcss_minify_selectors___postcss_minify_selectors_2.1.1.tgz";
- path = fetchurl {
- name = "postcss_minify_selectors___postcss_minify_selectors_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz";
- sha1 = "b2c6a98c0072cf91b932d1a496508114311735bf";
- };
- }
-
- {
- name = "postcss_modules_extract_imports___postcss_modules_extract_imports_1.1.0.tgz";
- path = fetchurl {
- name = "postcss_modules_extract_imports___postcss_modules_extract_imports_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz";
- sha1 = "b614c9720be6816eaee35fb3a5faa1dba6a05ddb";
- };
- }
-
- {
- name = "postcss_modules_local_by_default___postcss_modules_local_by_default_1.2.0.tgz";
- path = fetchurl {
- name = "postcss_modules_local_by_default___postcss_modules_local_by_default_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz";
- sha1 = "f7d80c398c5a393fa7964466bd19500a7d61c069";
- };
- }
-
- {
- name = "postcss_modules_scope___postcss_modules_scope_1.1.0.tgz";
- path = fetchurl {
- name = "postcss_modules_scope___postcss_modules_scope_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz";
- sha1 = "d6ea64994c79f97b62a72b426fbe6056a194bb90";
- };
- }
-
- {
- name = "postcss_modules_values___postcss_modules_values_1.3.0.tgz";
- path = fetchurl {
- name = "postcss_modules_values___postcss_modules_values_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz";
- sha1 = "ecffa9d7e192518389f42ad0e83f72aec456ea20";
- };
- }
-
- {
- name = "postcss_normalize_charset___postcss_normalize_charset_1.1.1.tgz";
- path = fetchurl {
- name = "postcss_normalize_charset___postcss_normalize_charset_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz";
- sha1 = "ef9ee71212d7fe759c78ed162f61ed62b5cb93f1";
- };
- }
-
- {
- name = "postcss_normalize_url___postcss_normalize_url_3.0.8.tgz";
- path = fetchurl {
- name = "postcss_normalize_url___postcss_normalize_url_3.0.8.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz";
- sha1 = "108f74b3f2fcdaf891a2ffa3ea4592279fc78222";
- };
- }
-
- {
- name = "postcss_ordered_values___postcss_ordered_values_2.2.3.tgz";
- path = fetchurl {
- name = "postcss_ordered_values___postcss_ordered_values_2.2.3.tgz";
- url = "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz";
- sha1 = "eec6c2a67b6c412a8db2042e77fe8da43f95c11d";
- };
- }
-
- {
- name = "postcss_reduce_idents___postcss_reduce_idents_2.4.0.tgz";
- path = fetchurl {
- name = "postcss_reduce_idents___postcss_reduce_idents_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz";
- sha1 = "c2c6d20cc958284f6abfbe63f7609bf409059ad3";
- };
- }
-
- {
- name = "postcss_reduce_initial___postcss_reduce_initial_1.0.1.tgz";
- path = fetchurl {
- name = "postcss_reduce_initial___postcss_reduce_initial_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz";
- sha1 = "68f80695f045d08263a879ad240df8dd64f644ea";
- };
- }
-
- {
- name = "postcss_reduce_transforms___postcss_reduce_transforms_1.0.4.tgz";
- path = fetchurl {
- name = "postcss_reduce_transforms___postcss_reduce_transforms_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz";
- sha1 = "ff76f4d8212437b31c298a42d2e1444025771ae1";
- };
- }
-
- {
- name = "postcss_selector_parser___postcss_selector_parser_2.2.3.tgz";
- path = fetchurl {
- name = "postcss_selector_parser___postcss_selector_parser_2.2.3.tgz";
- url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz";
- sha1 = "f9437788606c3c9acee16ffe8d8b16297f27bb90";
- };
- }
-
- {
- name = "postcss_svgo___postcss_svgo_2.1.6.tgz";
- path = fetchurl {
- name = "postcss_svgo___postcss_svgo_2.1.6.tgz";
- url = "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz";
- sha1 = "b6df18aa613b666e133f08adb5219c2684ac108d";
- };
- }
-
- {
- name = "postcss_unique_selectors___postcss_unique_selectors_2.0.2.tgz";
- path = fetchurl {
- name = "postcss_unique_selectors___postcss_unique_selectors_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz";
- sha1 = "981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d";
- };
- }
-
- {
- name = "postcss_value_parser___postcss_value_parser_3.3.0.tgz";
- path = fetchurl {
- name = "postcss_value_parser___postcss_value_parser_3.3.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz";
- sha1 = "87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15";
- };
- }
-
- {
- name = "postcss_zindex___postcss_zindex_2.2.0.tgz";
- path = fetchurl {
- name = "postcss_zindex___postcss_zindex_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz";
- sha1 = "d2109ddc055b91af67fc4cb3b025946639d2af22";
- };
- }
-
- {
- name = "postcss___postcss_5.2.18.tgz";
- path = fetchurl {
- name = "postcss___postcss_5.2.18.tgz";
- url = "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz";
- sha1 = "badfa1497d46244f6390f58b319830d9107853c5";
- };
- }
-
- {
- name = "postcss___postcss_6.0.23.tgz";
- path = fetchurl {
- name = "postcss___postcss_6.0.23.tgz";
- url = "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz";
- sha1 = "61c82cc328ac60e677645f979054eb98bc0e3324";
- };
- }
-
- {
- name = "prepend_http___prepend_http_1.0.4.tgz";
- path = fetchurl {
- name = "prepend_http___prepend_http_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz";
- sha1 = "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc";
- };
- }
-
- {
- name = "preserve___preserve_0.2.0.tgz";
- path = fetchurl {
- name = "preserve___preserve_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz";
- sha1 = "815ed1f6ebc65926f865b310c0713bcb3315ce4b";
- };
- }
-
- {
- name = "pretty_error___pretty_error_2.1.1.tgz";
- path = fetchurl {
- name = "pretty_error___pretty_error_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz";
- sha1 = "5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3";
- };
- }
-
- {
- name = "private___private_0.1.8.tgz";
- path = fetchurl {
- name = "private___private_0.1.8.tgz";
- url = "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz";
- sha1 = "2381edb3689f7a53d653190060fcf822d2f368ff";
- };
- }
-
- {
- name = "process_nextick_args___process_nextick_args_2.0.0.tgz";
- path = fetchurl {
- name = "process_nextick_args___process_nextick_args_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz";
- sha1 = "a37d732f4271b4ab1ad070d35508e8290788ffaa";
- };
- }
-
- {
- name = "process___process_0.11.10.tgz";
- path = fetchurl {
- name = "process___process_0.11.10.tgz";
- url = "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz";
- sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
- };
- }
-
- {
- name = "proxy_addr___proxy_addr_2.0.4.tgz";
- path = fetchurl {
- name = "proxy_addr___proxy_addr_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz";
- sha1 = "ecfc733bf22ff8c6f407fa275327b9ab67e48b93";
- };
- }
-
- {
- name = "prr___prr_1.0.1.tgz";
- path = fetchurl {
- name = "prr___prr_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz";
- sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
- };
- }
-
- {
- name = "pseudomap___pseudomap_1.0.2.tgz";
- path = fetchurl {
- name = "pseudomap___pseudomap_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz";
- sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
- };
- }
-
- {
- name = "public_encrypt___public_encrypt_4.0.2.tgz";
- path = fetchurl {
- name = "public_encrypt___public_encrypt_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz";
- sha1 = "46eb9107206bf73489f8b85b69d91334c6610994";
- };
- }
-
- {
- name = "punycode___punycode_1.3.2.tgz";
- path = fetchurl {
- name = "punycode___punycode_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz";
- sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
- };
- }
-
- {
- name = "punycode___punycode_1.4.1.tgz";
- path = fetchurl {
- name = "punycode___punycode_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz";
- sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
- };
- }
-
- {
- name = "punycode___punycode_2.1.1.tgz";
- path = fetchurl {
- name = "punycode___punycode_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
- sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
- };
- }
-
- {
- name = "q___q_1.5.1.tgz";
- path = fetchurl {
- name = "q___q_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz";
- sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
- };
- }
-
- {
- name = "qs___qs_6.5.1.tgz";
- path = fetchurl {
- name = "qs___qs_6.5.1.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz";
- sha1 = "349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8";
- };
- }
-
- {
- name = "qs___qs_6.4.0.tgz";
- path = fetchurl {
- name = "qs___qs_6.4.0.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz";
- sha1 = "13e26d28ad6b0ffaa91312cd3bf708ed351e7233";
- };
- }
-
- {
- name = "qs___qs_6.5.2.tgz";
- path = fetchurl {
- name = "qs___qs_6.5.2.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
- sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
- };
- }
-
- {
- name = "query_string___query_string_4.3.4.tgz";
- path = fetchurl {
- name = "query_string___query_string_4.3.4.tgz";
- url = "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz";
- sha1 = "bbb693b9ca915c232515b228b1a02b609043dbeb";
- };
- }
-
- {
- name = "querystring_es3___querystring_es3_0.2.1.tgz";
- path = fetchurl {
- name = "querystring_es3___querystring_es3_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz";
- sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
- };
- }
-
- {
- name = "querystring___querystring_0.2.0.tgz";
- path = fetchurl {
- name = "querystring___querystring_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz";
- sha1 = "b209849203bb25df820da756e747005878521620";
- };
- }
-
- {
- name = "querystringify___querystringify_2.0.0.tgz";
- path = fetchurl {
- name = "querystringify___querystringify_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz";
- sha1 = "fa3ed6e68eb15159457c89b37bc6472833195755";
- };
- }
-
- {
- name = "randomatic___randomatic_3.0.0.tgz";
- path = fetchurl {
- name = "randomatic___randomatic_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz";
- sha1 = "d35490030eb4f7578de292ce6dfb04a91a128923";
- };
- }
-
- {
- name = "randombytes___randombytes_2.0.6.tgz";
- path = fetchurl {
- name = "randombytes___randombytes_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz";
- sha1 = "d302c522948588848a8d300c932b44c24231da80";
- };
- }
-
- {
- name = "randomfill___randomfill_1.0.4.tgz";
- path = fetchurl {
- name = "randomfill___randomfill_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz";
- sha1 = "c92196fc86ab42be983f1bf31778224931d61458";
- };
- }
-
- {
- name = "range_parser___range_parser_1.2.0.tgz";
- path = fetchurl {
- name = "range_parser___range_parser_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz";
- sha1 = "f49be6b487894ddc40dcc94a322f611092e00d5e";
- };
- }
-
- {
- name = "raw_body___raw_body_2.3.2.tgz";
- path = fetchurl {
- name = "raw_body___raw_body_2.3.2.tgz";
- url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz";
- sha1 = "bcd60c77d3eb93cde0050295c3f379389bc88f89";
- };
- }
-
- {
- name = "rc___rc_1.2.8.tgz";
- path = fetchurl {
- name = "rc___rc_1.2.8.tgz";
- url = "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz";
- sha1 = "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed";
- };
- }
-
- {
- name = "read_pkg_up___read_pkg_up_1.0.1.tgz";
- path = fetchurl {
- name = "read_pkg_up___read_pkg_up_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz";
- sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02";
- };
- }
-
- {
- name = "read_pkg_up___read_pkg_up_2.0.0.tgz";
- path = fetchurl {
- name = "read_pkg_up___read_pkg_up_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz";
- sha1 = "6b72a8048984e0c41e79510fd5e9fa99b3b549be";
- };
- }
-
- {
- name = "read_pkg___read_pkg_1.1.0.tgz";
- path = fetchurl {
- name = "read_pkg___read_pkg_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz";
- sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28";
- };
- }
-
- {
- name = "read_pkg___read_pkg_2.0.0.tgz";
- path = fetchurl {
- name = "read_pkg___read_pkg_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz";
- sha1 = "8ef1c0623c6a6db0dc6713c4bfac46332b2368f8";
- };
- }
-
- {
- name = "readable_stream___readable_stream_1.0.34.tgz";
- path = fetchurl {
- name = "readable_stream___readable_stream_1.0.34.tgz";
- url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz";
- sha1 = "125820e34bc842d2f2aaafafe4c2916ee32c157c";
- };
- }
-
- {
- name = "readable_stream___readable_stream_2.3.6.tgz";
- path = fetchurl {
- name = "readable_stream___readable_stream_2.3.6.tgz";
- url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz";
- sha1 = "b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf";
- };
- }
-
- {
- name = "readdirp___readdirp_2.1.0.tgz";
- path = fetchurl {
- name = "readdirp___readdirp_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz";
- sha1 = "4ed0ad060df3073300c48440373f72d1cc642d78";
- };
- }
-
- {
- name = "redent___redent_1.0.0.tgz";
- path = fetchurl {
- name = "redent___redent_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz";
- sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde";
- };
- }
-
- {
- name = "reduce_css_calc___reduce_css_calc_1.3.0.tgz";
- path = fetchurl {
- name = "reduce_css_calc___reduce_css_calc_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz";
- sha1 = "747c914e049614a4c9cfbba629871ad1d2927716";
- };
- }
-
- {
- name = "reduce_function_call___reduce_function_call_1.0.2.tgz";
- path = fetchurl {
- name = "reduce_function_call___reduce_function_call_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz";
- sha1 = "5a200bf92e0e37751752fe45b0ab330fd4b6be99";
- };
- }
-
- {
- name = "regenerate___regenerate_1.4.0.tgz";
- path = fetchurl {
- name = "regenerate___regenerate_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz";
- sha1 = "4a856ec4b56e4077c557589cae85e7a4c8869a11";
- };
- }
-
- {
- name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
- path = fetchurl {
- name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
- url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
- sha1 = "be05ad7f9bf7d22e056f9726cee5017fbf19e2e9";
- };
- }
-
- {
- name = "regenerator_transform___regenerator_transform_0.10.1.tgz";
- path = fetchurl {
- name = "regenerator_transform___regenerator_transform_0.10.1.tgz";
- url = "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz";
- sha1 = "1e4996837231da8b7f3cf4114d71b5691a0680dd";
- };
- }
-
- {
- name = "regex_cache___regex_cache_0.4.4.tgz";
- path = fetchurl {
- name = "regex_cache___regex_cache_0.4.4.tgz";
- url = "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz";
- sha1 = "75bdc58a2a1496cec48a12835bc54c8d562336dd";
- };
- }
-
- {
- name = "regex_not___regex_not_1.0.2.tgz";
- path = fetchurl {
- name = "regex_not___regex_not_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz";
- sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c";
- };
- }
-
- {
- name = "regex_parser___regex_parser_2.2.9.tgz";
- path = fetchurl {
- name = "regex_parser___regex_parser_2.2.9.tgz";
- url = "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.9.tgz";
- sha1 = "a372f45a248b62976a568037c1b6e60a60599192";
- };
- }
-
- {
- name = "regexpu_core___regexpu_core_1.0.0.tgz";
- path = fetchurl {
- name = "regexpu_core___regexpu_core_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz";
- sha1 = "86a763f58ee4d7c2f6b102e4764050de7ed90c6b";
- };
- }
-
- {
- name = "regexpu_core___regexpu_core_2.0.0.tgz";
- path = fetchurl {
- name = "regexpu_core___regexpu_core_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz";
- sha1 = "49d038837b8dcf8bfa5b9a42139938e6ea2ae240";
- };
- }
-
- {
- name = "regjsgen___regjsgen_0.2.0.tgz";
- path = fetchurl {
- name = "regjsgen___regjsgen_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz";
- sha1 = "6c016adeac554f75823fe37ac05b92d5a4edb1f7";
- };
- }
-
- {
- name = "regjsparser___regjsparser_0.1.5.tgz";
- path = fetchurl {
- name = "regjsparser___regjsparser_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz";
- sha1 = "7ee8f84dc6fa792d3fd0ae228d24bd949ead205c";
- };
- }
-
- {
- name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
- path = fetchurl {
- name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
- sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
- };
- }
-
- {
- name = "renderkid___renderkid_2.0.1.tgz";
- path = fetchurl {
- name = "renderkid___renderkid_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz";
- sha1 = "898cabfc8bede4b7b91135a3ffd323e58c0db319";
- };
- }
-
- {
- name = "repeat_element___repeat_element_1.1.2.tgz";
- path = fetchurl {
- name = "repeat_element___repeat_element_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz";
- sha1 = "ef089a178d1483baae4d93eb98b4f9e4e11d990a";
- };
- }
-
- {
- name = "repeat_string___repeat_string_1.6.1.tgz";
- path = fetchurl {
- name = "repeat_string___repeat_string_1.6.1.tgz";
- url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz";
- sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
- };
- }
-
- {
- name = "repeating___repeating_2.0.1.tgz";
- path = fetchurl {
- name = "repeating___repeating_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz";
- sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
- };
- }
-
- {
- name = "request___request_2.87.0.tgz";
- path = fetchurl {
- name = "request___request_2.87.0.tgz";
- url = "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz";
- sha1 = "32f00235cd08d482b4d0d68db93a829c0ed5756e";
- };
- }
-
- {
- name = "request___request_2.81.0.tgz";
- path = fetchurl {
- name = "request___request_2.81.0.tgz";
- url = "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz";
- sha1 = "c6928946a0e06c5f8d6f8a9333469ffda46298a0";
- };
- }
-
- {
- name = "require_directory___require_directory_2.1.1.tgz";
- path = fetchurl {
- name = "require_directory___require_directory_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
- sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
- };
- }
-
- {
- name = "require_main_filename___require_main_filename_1.0.1.tgz";
- path = fetchurl {
- name = "require_main_filename___require_main_filename_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz";
- sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
- };
- }
-
- {
- name = "requires_port___requires_port_1.0.0.tgz";
- path = fetchurl {
- name = "requires_port___requires_port_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz";
- sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
- };
- }
-
- {
- name = "resolve_cwd___resolve_cwd_2.0.0.tgz";
- path = fetchurl {
- name = "resolve_cwd___resolve_cwd_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz";
- sha1 = "00a9f7387556e27038eae232caa372a6a59b665a";
- };
- }
-
- {
- name = "resolve_from___resolve_from_3.0.0.tgz";
- path = fetchurl {
- name = "resolve_from___resolve_from_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz";
- sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748";
- };
- }
-
- {
- name = "resolve_url_loader___resolve_url_loader_2.3.0.tgz";
- path = fetchurl {
- name = "resolve_url_loader___resolve_url_loader_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-2.3.0.tgz";
- sha1 = "e1b37034d48f22f8cfb9f04c026faaa070fdaf26";
- };
- }
-
- {
- name = "resolve_url___resolve_url_0.2.1.tgz";
- path = fetchurl {
- name = "resolve_url___resolve_url_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz";
- sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
- };
- }
-
- {
- name = "ret___ret_0.1.15.tgz";
- path = fetchurl {
- name = "ret___ret_0.1.15.tgz";
- url = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz";
- sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc";
- };
- }
-
- {
- name = "rework_visit___rework_visit_1.0.0.tgz";
- path = fetchurl {
- name = "rework_visit___rework_visit_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz";
- sha1 = "9945b2803f219e2f7aca00adb8bc9f640f842c9a";
- };
- }
-
- {
- name = "rework___rework_1.0.1.tgz";
- path = fetchurl {
- name = "rework___rework_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz";
- sha1 = "30806a841342b54510aa4110850cd48534144aa7";
- };
- }
-
- {
- name = "right_align___right_align_0.1.3.tgz";
- path = fetchurl {
- name = "right_align___right_align_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz";
- sha1 = "61339b722fe6a3515689210d24e14c96148613ef";
- };
- }
-
- {
- name = "rimraf___rimraf_2.6.2.tgz";
- path = fetchurl {
- name = "rimraf___rimraf_2.6.2.tgz";
- url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz";
- sha1 = "2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36";
- };
- }
-
- {
- name = "ripemd160___ripemd160_2.0.2.tgz";
- path = fetchurl {
- name = "ripemd160___ripemd160_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz";
- sha1 = "a1c1a6f624751577ba5d07914cbc92850585890c";
- };
- }
-
- {
- name = "safe_buffer___safe_buffer_5.1.1.tgz";
- path = fetchurl {
- name = "safe_buffer___safe_buffer_5.1.1.tgz";
- url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz";
- sha1 = "893312af69b2123def71f57889001671eeb2c853";
- };
- }
-
- {
- name = "safe_buffer___safe_buffer_5.1.2.tgz";
- path = fetchurl {
- name = "safe_buffer___safe_buffer_5.1.2.tgz";
- url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
- sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
- };
- }
-
- {
- name = "safe_regex___safe_regex_1.1.0.tgz";
- path = fetchurl {
- name = "safe_regex___safe_regex_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz";
- sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
- };
- }
-
- {
- name = "safer_buffer___safer_buffer_2.1.2.tgz";
- path = fetchurl {
- name = "safer_buffer___safer_buffer_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
- sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
- };
- }
-
- {
- name = "sass_graph___sass_graph_2.2.4.tgz";
- path = fetchurl {
- name = "sass_graph___sass_graph_2.2.4.tgz";
- url = "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz";
- sha1 = "13fbd63cd1caf0908b9fd93476ad43a51d1e0b49";
- };
- }
-
- {
- name = "sass_loader___sass_loader_7.0.3.tgz";
- path = fetchurl {
- name = "sass_loader___sass_loader_7.0.3.tgz";
- url = "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.0.3.tgz";
- sha1 = "6ca10871a1cc7549f8143db5a9958242c4e4ca2a";
- };
- }
-
- {
- name = "sax___sax_1.2.4.tgz";
- path = fetchurl {
- name = "sax___sax_1.2.4.tgz";
- url = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
- sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
- };
- }
-
- {
- name = "schema_utils___schema_utils_0.3.0.tgz";
- path = fetchurl {
- name = "schema_utils___schema_utils_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz";
- sha1 = "f5877222ce3e931edae039f17eb3716e7137f8cf";
- };
- }
-
- {
- name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz";
- path = fetchurl {
- name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz";
- sha1 = "8eb06db9a9723333824d3f5530641149847ce5d1";
- };
- }
-
- {
- name = "select_hose___select_hose_2.0.0.tgz";
- path = fetchurl {
- name = "select_hose___select_hose_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz";
- sha1 = "625d8658f865af43ec962bfc376a37359a4994ca";
- };
- }
-
- {
- name = "selfsigned___selfsigned_1.10.3.tgz";
- path = fetchurl {
- name = "selfsigned___selfsigned_1.10.3.tgz";
- url = "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz";
- sha1 = "d628ecf9e3735f84e8bafba936b3cf85bea43823";
- };
- }
-
- {
- name = "semver___semver_5.5.0.tgz";
- path = fetchurl {
- name = "semver___semver_5.5.0.tgz";
- url = "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz";
- sha1 = "dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab";
- };
- }
-
- {
- name = "semver___semver_5.3.0.tgz";
- path = fetchurl {
- name = "semver___semver_5.3.0.tgz";
- url = "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz";
- sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
- };
- }
-
- {
- name = "send___send_0.16.2.tgz";
- path = fetchurl {
- name = "send___send_0.16.2.tgz";
- url = "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz";
- sha1 = "6ecca1e0f8c156d141597559848df64730a6bbc1";
- };
- }
-
- {
- name = "serve_index___serve_index_1.9.1.tgz";
- path = fetchurl {
- name = "serve_index___serve_index_1.9.1.tgz";
- url = "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz";
- sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
- };
- }
-
- {
- name = "serve_static___serve_static_1.13.2.tgz";
- path = fetchurl {
- name = "serve_static___serve_static_1.13.2.tgz";
- url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz";
- sha1 = "095e8472fd5b46237db50ce486a43f4b86c6cec1";
- };
- }
-
- {
- name = "set_blocking___set_blocking_2.0.0.tgz";
- path = fetchurl {
- name = "set_blocking___set_blocking_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
- sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
- };
- }
-
- {
- name = "set_immediate_shim___set_immediate_shim_1.0.1.tgz";
- path = fetchurl {
- name = "set_immediate_shim___set_immediate_shim_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz";
- sha1 = "4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61";
- };
- }
-
- {
- name = "set_value___set_value_0.4.3.tgz";
- path = fetchurl {
- name = "set_value___set_value_0.4.3.tgz";
- url = "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz";
- sha1 = "7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1";
- };
- }
-
- {
- name = "set_value___set_value_2.0.0.tgz";
- path = fetchurl {
- name = "set_value___set_value_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz";
- sha1 = "71ae4a88f0feefbbf52d1ea604f3fb315ebb6274";
- };
- }
-
- {
- name = "setimmediate___setimmediate_1.0.5.tgz";
- path = fetchurl {
- name = "setimmediate___setimmediate_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz";
- sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
- };
- }
-
- {
- name = "setprototypeof___setprototypeof_1.0.3.tgz";
- path = fetchurl {
- name = "setprototypeof___setprototypeof_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz";
- sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
- };
- }
-
- {
- name = "setprototypeof___setprototypeof_1.1.0.tgz";
- path = fetchurl {
- name = "setprototypeof___setprototypeof_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz";
- sha1 = "d0bd85536887b6fe7c0d818cb962d9d91c54e656";
- };
- }
-
- {
- name = "sha.js___sha.js_2.4.11.tgz";
- path = fetchurl {
- name = "sha.js___sha.js_2.4.11.tgz";
- url = "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz";
- sha1 = "37a5cf0b81ecbc6943de109ba2960d1b26584ae7";
- };
- }
-
- {
- name = "shallow_clone___shallow_clone_1.0.0.tgz";
- path = fetchurl {
- name = "shallow_clone___shallow_clone_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz";
- sha1 = "4480cd06e882ef68b2ad88a3ea54832e2c48b571";
- };
- }
-
- {
- name = "shebang_command___shebang_command_1.2.0.tgz";
- path = fetchurl {
- name = "shebang_command___shebang_command_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz";
- sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
- };
- }
-
- {
- name = "shebang_regex___shebang_regex_1.0.0.tgz";
- path = fetchurl {
- name = "shebang_regex___shebang_regex_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz";
- sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
- };
- }
-
- {
- name = "signal_exit___signal_exit_3.0.2.tgz";
- path = fetchurl {
- name = "signal_exit___signal_exit_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz";
- sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
- };
- }
-
- {
- name = "slash___slash_1.0.0.tgz";
- path = fetchurl {
- name = "slash___slash_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz";
- sha1 = "c41f2f6c39fc16d1cd17ad4b5d896114ae470d55";
- };
- }
-
- {
- name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
- path = fetchurl {
- name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
- sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b";
- };
- }
-
- {
- name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
- path = fetchurl {
- name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
- sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2";
- };
- }
-
- {
- name = "snapdragon___snapdragon_0.8.2.tgz";
- path = fetchurl {
- name = "snapdragon___snapdragon_0.8.2.tgz";
- url = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz";
- sha1 = "64922e7c565b0e14204ba1aa7d6964278d25182d";
- };
- }
-
- {
- name = "sntp___sntp_1.0.9.tgz";
- path = fetchurl {
- name = "sntp___sntp_1.0.9.tgz";
- url = "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz";
- sha1 = "6541184cc90aeea6c6e7b35e2659082443c66198";
- };
- }
-
- {
- name = "sockjs_client___sockjs_client_1.1.4.tgz";
- path = fetchurl {
- name = "sockjs_client___sockjs_client_1.1.4.tgz";
- url = "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz";
- sha1 = "5babe386b775e4cf14e7520911452654016c8b12";
- };
- }
-
- {
- name = "sockjs___sockjs_0.3.19.tgz";
- path = fetchurl {
- name = "sockjs___sockjs_0.3.19.tgz";
- url = "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz";
- sha1 = "d976bbe800af7bd20ae08598d582393508993c0d";
- };
- }
-
- {
- name = "sort_keys___sort_keys_1.1.2.tgz";
- path = fetchurl {
- name = "sort_keys___sort_keys_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz";
- sha1 = "441b6d4d346798f1b4e49e8920adfba0e543f9ad";
- };
- }
-
- {
- name = "source_list_map___source_list_map_0.1.8.tgz";
- path = fetchurl {
- name = "source_list_map___source_list_map_0.1.8.tgz";
- url = "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz";
- sha1 = "c550b2ab5427f6b3f21f5afead88c4f5587b2106";
- };
- }
-
- {
- name = "source_list_map___source_list_map_2.0.0.tgz";
- path = fetchurl {
- name = "source_list_map___source_list_map_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz";
- sha1 = "aaa47403f7b245a92fbc97ea08f250d6087ed085";
- };
- }
-
- {
- name = "source_map_resolve___source_map_resolve_0.5.2.tgz";
- path = fetchurl {
- name = "source_map_resolve___source_map_resolve_0.5.2.tgz";
- url = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz";
- sha1 = "72e2cc34095543e43b2c62b2c4c10d4a9054f259";
- };
- }
-
- {
- name = "source_map_support___source_map_support_0.4.18.tgz";
- path = fetchurl {
- name = "source_map_support___source_map_support_0.4.18.tgz";
- url = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz";
- sha1 = "0286a6de8be42641338594e97ccea75f0a2c585f";
- };
- }
-
- {
- name = "source_map_url___source_map_url_0.4.0.tgz";
- path = fetchurl {
- name = "source_map_url___source_map_url_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz";
- sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
- };
- }
-
- {
- name = "source_map___source_map_0.1.43.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.1.43.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz";
- sha1 = "c24bc146ca517c1471f5dacbe2571b2b7f9e3346";
- };
- }
-
- {
- name = "source_map___source_map_0.4.4.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.4.4.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz";
- sha1 = "eba4f5da9c0dc999de68032d8b4f76173652036b";
- };
- }
-
- {
- name = "source_map___source_map_0.5.7.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.5.7.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz";
- sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
- };
- }
-
- {
- name = "source_map___source_map_0.6.1.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
- sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
- };
- }
-
- {
- name = "spdx_correct___spdx_correct_3.0.0.tgz";
- path = fetchurl {
- name = "spdx_correct___spdx_correct_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz";
- sha1 = "05a5b4d7153a195bc92c3c425b69f3b2a9524c82";
- };
- }
-
- {
- name = "spdx_exceptions___spdx_exceptions_2.1.0.tgz";
- path = fetchurl {
- name = "spdx_exceptions___spdx_exceptions_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz";
- sha1 = "2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9";
- };
- }
-
- {
- name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
- path = fetchurl {
- name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
- sha1 = "99e119b7a5da00e05491c9fa338b7904823b41d0";
- };
- }
-
- {
- name = "spdx_license_ids___spdx_license_ids_3.0.0.tgz";
- path = fetchurl {
- name = "spdx_license_ids___spdx_license_ids_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz";
- sha1 = "7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87";
- };
- }
-
- {
- name = "spdy_transport___spdy_transport_2.1.0.tgz";
- path = fetchurl {
- name = "spdy_transport___spdy_transport_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz";
- sha1 = "4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1";
- };
- }
-
- {
- name = "spdy___spdy_3.4.7.tgz";
- path = fetchurl {
- name = "spdy___spdy_3.4.7.tgz";
- url = "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz";
- sha1 = "42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc";
- };
- }
-
- {
- name = "split_string___split_string_3.1.0.tgz";
- path = fetchurl {
- name = "split_string___split_string_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz";
- sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2";
- };
- }
-
- {
- name = "sprintf_js___sprintf_js_1.0.3.tgz";
- path = fetchurl {
- name = "sprintf_js___sprintf_js_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
- sha1 = "04e6926f662895354f3dd015203633b857297e2c";
- };
- }
-
- {
- name = "sshpk___sshpk_1.14.2.tgz";
- path = fetchurl {
- name = "sshpk___sshpk_1.14.2.tgz";
- url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz";
- sha1 = "c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98";
- };
- }
-
- {
- name = "stackframe___stackframe_1.0.4.tgz";
- path = fetchurl {
- name = "stackframe___stackframe_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz";
- sha1 = "357b24a992f9427cba6b545d96a14ed2cbca187b";
- };
- }
-
- {
- name = "static_extend___static_extend_0.1.2.tgz";
- path = fetchurl {
- name = "static_extend___static_extend_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz";
- sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
- };
- }
-
- {
- name = "statuses___statuses_1.5.0.tgz";
- path = fetchurl {
- name = "statuses___statuses_1.5.0.tgz";
- url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
- sha1 = "161c7dac177659fd9811f43771fa99381478628c";
- };
- }
-
- {
- name = "statuses___statuses_1.4.0.tgz";
- path = fetchurl {
- name = "statuses___statuses_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz";
- sha1 = "bb73d446da2796106efcc1b601a253d6c46bd087";
- };
- }
-
- {
- name = "stdout_stream___stdout_stream_1.4.0.tgz";
- path = fetchurl {
- name = "stdout_stream___stdout_stream_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz";
- sha1 = "a2c7c8587e54d9427ea9edb3ac3f2cd522df378b";
- };
- }
-
- {
- name = "stream_browserify___stream_browserify_2.0.1.tgz";
- path = fetchurl {
- name = "stream_browserify___stream_browserify_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz";
- sha1 = "66266ee5f9bdb9940a4e4514cafb43bb71e5c9db";
- };
- }
-
- {
- name = "stream_http___stream_http_2.8.3.tgz";
- path = fetchurl {
- name = "stream_http___stream_http_2.8.3.tgz";
- url = "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz";
- sha1 = "b2d242469288a5a27ec4fe8933acf623de6514fc";
- };
- }
-
- {
- name = "strict_uri_encode___strict_uri_encode_1.1.0.tgz";
- path = fetchurl {
- name = "strict_uri_encode___strict_uri_encode_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz";
- sha1 = "279b225df1d582b1f54e65addd4352e18faa0713";
- };
- }
-
- {
- name = "string_width___string_width_1.0.2.tgz";
- path = fetchurl {
- name = "string_width___string_width_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz";
- sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
- };
- }
-
- {
- name = "string_width___string_width_2.1.1.tgz";
- path = fetchurl {
- name = "string_width___string_width_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
- sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
- };
- }
-
- {
- name = "string_decoder___string_decoder_1.1.1.tgz";
- path = fetchurl {
- name = "string_decoder___string_decoder_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz";
- sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8";
- };
- }
-
- {
- name = "string_decoder___string_decoder_0.10.31.tgz";
- path = fetchurl {
- name = "string_decoder___string_decoder_0.10.31.tgz";
- url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz";
- sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
- };
- }
-
- {
- name = "stringstream___stringstream_0.0.6.tgz";
- path = fetchurl {
- name = "stringstream___stringstream_0.0.6.tgz";
- url = "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz";
- sha1 = "7880225b0d4ad10e30927d167a1d6f2fd3b33a72";
- };
- }
-
- {
- name = "strip_ansi___strip_ansi_3.0.1.tgz";
- path = fetchurl {
- name = "strip_ansi___strip_ansi_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
- sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
- };
- }
-
- {
- name = "strip_ansi___strip_ansi_4.0.0.tgz";
- path = fetchurl {
- name = "strip_ansi___strip_ansi_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
- sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
- };
- }
-
- {
- name = "strip_bom___strip_bom_2.0.0.tgz";
- path = fetchurl {
- name = "strip_bom___strip_bom_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz";
- sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e";
- };
- }
-
- {
- name = "strip_bom___strip_bom_3.0.0.tgz";
- path = fetchurl {
- name = "strip_bom___strip_bom_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz";
- sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
- };
- }
-
- {
- name = "strip_eof___strip_eof_1.0.0.tgz";
- path = fetchurl {
- name = "strip_eof___strip_eof_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz";
- sha1 = "bb43ff5598a6eb05d89b59fcd129c983313606bf";
- };
- }
-
- {
- name = "strip_indent___strip_indent_1.0.1.tgz";
- path = fetchurl {
- name = "strip_indent___strip_indent_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz";
- sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2";
- };
- }
-
- {
- name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
- path = fetchurl {
- name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
- sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
- };
- }
-
- {
- name = "style_loader___style_loader_0.13.2.tgz";
- path = fetchurl {
- name = "style_loader___style_loader_0.13.2.tgz";
- url = "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.2.tgz";
- sha1 = "74533384cf698c7104c7951150b49717adc2f3bb";
- };
- }
-
- {
- name = "summernote___summernote_0.8.10.tgz";
- path = fetchurl {
- name = "summernote___summernote_0.8.10.tgz";
- url = "https://registry.yarnpkg.com/summernote/-/summernote-0.8.10.tgz";
- sha1 = "21a5d7f18a3b07500b58b60d5907417a54897520";
- };
- }
-
- {
- name = "supports_color___supports_color_2.0.0.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz";
- sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
- };
- }
-
- {
- name = "supports_color___supports_color_3.2.3.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_3.2.3.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz";
- sha1 = "65ac0504b3954171d8a64946b2ae3cbb8a5f54f6";
- };
- }
-
- {
- name = "supports_color___supports_color_4.5.0.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_4.5.0.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz";
- sha1 = "be7a0de484dec5c5cddf8b3d59125044912f635b";
- };
- }
-
- {
- name = "supports_color___supports_color_5.4.0.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_5.4.0.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz";
- sha1 = "1c6b337402c2137605efe19f10fec390f6faab54";
- };
- }
-
- {
- name = "svgo___svgo_0.7.2.tgz";
- path = fetchurl {
- name = "svgo___svgo_0.7.2.tgz";
- url = "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz";
- sha1 = "9f5772413952135c6fefbf40afe6a4faa88b4bb5";
- };
- }
-
- {
- name = "tapable___tapable_0.2.8.tgz";
- path = fetchurl {
- name = "tapable___tapable_0.2.8.tgz";
- url = "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz";
- sha1 = "99372a5c999bf2df160afc0d74bed4f47948cd22";
- };
- }
-
- {
- name = "tar___tar_2.2.1.tgz";
- path = fetchurl {
- name = "tar___tar_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz";
- sha1 = "8e4d2a256c0e2185c6b18ad694aec968b83cb1d1";
- };
- }
-
- {
- name = "tar___tar_4.4.4.tgz";
- path = fetchurl {
- name = "tar___tar_4.4.4.tgz";
- url = "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz";
- sha1 = "ec8409fae9f665a4355cc3b4087d0820232bb8cd";
- };
- }
-
- {
- name = "thunky___thunky_1.0.2.tgz";
- path = fetchurl {
- name = "thunky___thunky_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz";
- sha1 = "a862e018e3fb1ea2ec3fce5d55605cf57f247371";
- };
- }
-
- {
- name = "time_stamp___time_stamp_2.0.0.tgz";
- path = fetchurl {
- name = "time_stamp___time_stamp_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz";
- sha1 = "95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357";
- };
- }
-
- {
- name = "timers_browserify___timers_browserify_2.0.10.tgz";
- path = fetchurl {
- name = "timers_browserify___timers_browserify_2.0.10.tgz";
- url = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz";
- sha1 = "1d28e3d2aadf1d5a5996c4e9f95601cd053480ae";
- };
- }
-
- {
- name = "to_arraybuffer___to_arraybuffer_1.0.1.tgz";
- path = fetchurl {
- name = "to_arraybuffer___to_arraybuffer_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz";
- sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43";
- };
- }
-
- {
- name = "to_fast_properties___to_fast_properties_1.0.3.tgz";
- path = fetchurl {
- name = "to_fast_properties___to_fast_properties_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz";
- sha1 = "b83571fa4d8c25b82e231b06e3a3055de4ca1a47";
- };
- }
-
- {
- name = "to_object_path___to_object_path_0.3.0.tgz";
- path = fetchurl {
- name = "to_object_path___to_object_path_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz";
- sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
- };
- }
-
- {
- name = "to_regex_range___to_regex_range_2.1.1.tgz";
- path = fetchurl {
- name = "to_regex_range___to_regex_range_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz";
- sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
- };
- }
-
- {
- name = "to_regex___to_regex_3.0.2.tgz";
- path = fetchurl {
- name = "to_regex___to_regex_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz";
- sha1 = "13cfdd9b336552f30b51f33a8ae1b42a7a7599ce";
- };
- }
-
- {
- name = "tough_cookie___tough_cookie_2.3.4.tgz";
- path = fetchurl {
- name = "tough_cookie___tough_cookie_2.3.4.tgz";
- url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz";
- sha1 = "ec60cee38ac675063ffc97a5c18970578ee83655";
- };
- }
-
- {
- name = "trim_newlines___trim_newlines_1.0.0.tgz";
- path = fetchurl {
- name = "trim_newlines___trim_newlines_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz";
- sha1 = "5887966bb582a4503a41eb524f7d35011815a613";
- };
- }
-
- {
- name = "trim_right___trim_right_1.0.1.tgz";
- path = fetchurl {
- name = "trim_right___trim_right_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz";
- sha1 = "cb2e1203067e0c8de1f614094b9fe45704ea6003";
- };
- }
-
- {
- name = "true_case_path___true_case_path_1.0.2.tgz";
- path = fetchurl {
- name = "true_case_path___true_case_path_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz";
- sha1 = "7ec91130924766c7f573be3020c34f8fdfd00d62";
- };
- }
-
- {
- name = "tty_browserify___tty_browserify_0.0.0.tgz";
- path = fetchurl {
- name = "tty_browserify___tty_browserify_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz";
- sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6";
- };
- }
-
- {
- name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
- path = fetchurl {
- name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
- url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
- sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
- };
- }
-
- {
- name = "tweetnacl___tweetnacl_0.14.5.tgz";
- path = fetchurl {
- name = "tweetnacl___tweetnacl_0.14.5.tgz";
- url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
- sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
- };
- }
-
- {
- name = "type_is___type_is_1.6.16.tgz";
- path = fetchurl {
- name = "type_is___type_is_1.6.16.tgz";
- url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz";
- sha1 = "f89ce341541c672b25ee7ae3c73dee3b2be50194";
- };
- }
-
- {
- name = "uglify_js___uglify_js_2.8.29.tgz";
- path = fetchurl {
- name = "uglify_js___uglify_js_2.8.29.tgz";
- url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz";
- sha1 = "29c5733148057bb4e1f75df35b7a9cb72e6a59dd";
- };
- }
-
- {
- name = "uglify_to_browserify___uglify_to_browserify_1.0.2.tgz";
- path = fetchurl {
- name = "uglify_to_browserify___uglify_to_browserify_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz";
- sha1 = "6e0924d6bda6b5afe349e39a6d632850a0f882b7";
- };
- }
-
- {
- name = "uglifyjs_webpack_plugin___uglifyjs_webpack_plugin_0.4.6.tgz";
- path = fetchurl {
- name = "uglifyjs_webpack_plugin___uglifyjs_webpack_plugin_0.4.6.tgz";
- url = "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz";
- sha1 = "b951f4abb6bd617e66f63eb891498e391763e309";
- };
- }
-
- {
- name = "union_value___union_value_1.0.0.tgz";
- path = fetchurl {
- name = "union_value___union_value_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz";
- sha1 = "5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4";
- };
- }
-
- {
- name = "uniq___uniq_1.0.1.tgz";
- path = fetchurl {
- name = "uniq___uniq_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz";
- sha1 = "b31c5ae8254844a3a8281541ce2b04b865a734ff";
- };
- }
-
- {
- name = "uniqs___uniqs_2.0.0.tgz";
- path = fetchurl {
- name = "uniqs___uniqs_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz";
- sha1 = "ffede4b36b25290696e6e165d4a59edb998e6b02";
- };
- }
-
- {
- name = "unpipe___unpipe_1.0.0.tgz";
- path = fetchurl {
- name = "unpipe___unpipe_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
- sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
- };
- }
-
- {
- name = "unset_value___unset_value_1.0.0.tgz";
- path = fetchurl {
- name = "unset_value___unset_value_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz";
- sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
- };
- }
-
- {
- name = "upath___upath_1.1.0.tgz";
- path = fetchurl {
- name = "upath___upath_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz";
- sha1 = "35256597e46a581db4793d0ce47fa9aebfc9fabd";
- };
- }
-
- {
- name = "uri_js___uri_js_4.2.2.tgz";
- path = fetchurl {
- name = "uri_js___uri_js_4.2.2.tgz";
- url = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
- sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
- };
- }
-
- {
- name = "urix___urix_0.1.0.tgz";
- path = fetchurl {
- name = "urix___urix_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz";
- sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
- };
- }
-
- {
- name = "url_parse___url_parse_1.4.1.tgz";
- path = fetchurl {
- name = "url_parse___url_parse_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.1.tgz";
- sha1 = "4dec9dad3dc8585f862fed461d2e19bbf623df30";
- };
- }
-
- {
- name = "url___url_0.11.0.tgz";
- path = fetchurl {
- name = "url___url_0.11.0.tgz";
- url = "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz";
- sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
- };
- }
-
- {
- name = "use___use_3.1.1.tgz";
- path = fetchurl {
- name = "use___use_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz";
- sha1 = "d50c8cac79a19fbc20f2911f56eb973f4e10070f";
- };
- }
-
- {
- name = "util_deprecate___util_deprecate_1.0.2.tgz";
- path = fetchurl {
- name = "util_deprecate___util_deprecate_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
- sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
- };
- }
-
- {
- name = "util___util_0.10.3.tgz";
- path = fetchurl {
- name = "util___util_0.10.3.tgz";
- url = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz";
- sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
- };
- }
-
- {
- name = "util___util_0.10.4.tgz";
- path = fetchurl {
- name = "util___util_0.10.4.tgz";
- url = "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz";
- sha1 = "3aa0125bfe668a4672de58857d3ace27ecb76901";
- };
- }
-
- {
- name = "utila___utila_0.3.3.tgz";
- path = fetchurl {
- name = "utila___utila_0.3.3.tgz";
- url = "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz";
- sha1 = "d7e8e7d7e309107092b05f8d9688824d633a4226";
- };
- }
-
- {
- name = "utila___utila_0.4.0.tgz";
- path = fetchurl {
- name = "utila___utila_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz";
- sha1 = "8a16a05d445657a3aea5eecc5b12a4fa5379772c";
- };
- }
-
- {
- name = "utils_merge___utils_merge_1.0.1.tgz";
- path = fetchurl {
- name = "utils_merge___utils_merge_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz";
- sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
- };
- }
-
- {
- name = "uuid___uuid_3.3.2.tgz";
- path = fetchurl {
- name = "uuid___uuid_3.3.2.tgz";
- url = "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz";
- sha1 = "1b4af4955eb3077c501c23872fc6513811587131";
- };
- }
-
- {
- name = "validate_npm_package_license___validate_npm_package_license_3.0.3.tgz";
- path = fetchurl {
- name = "validate_npm_package_license___validate_npm_package_license_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz";
- sha1 = "81643bcbef1bdfecd4623793dc4648948ba98338";
- };
- }
-
- {
- name = "vary___vary_1.1.2.tgz";
- path = fetchurl {
- name = "vary___vary_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz";
- sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
- };
- }
-
- {
- name = "vendors___vendors_1.0.2.tgz";
- path = fetchurl {
- name = "vendors___vendors_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz";
- sha1 = "7fcb5eef9f5623b156bcea89ec37d63676f21801";
- };
- }
-
- {
- name = "verror___verror_1.10.0.tgz";
- path = fetchurl {
- name = "verror___verror_1.10.0.tgz";
- url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
- sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
- };
- }
-
- {
- name = "vm_browserify___vm_browserify_0.0.4.tgz";
- path = fetchurl {
- name = "vm_browserify___vm_browserify_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz";
- sha1 = "5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73";
- };
- }
-
- {
- name = "watchpack___watchpack_1.6.0.tgz";
- path = fetchurl {
- name = "watchpack___watchpack_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz";
- sha1 = "4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00";
- };
- }
-
- {
- name = "wbuf___wbuf_1.7.3.tgz";
- path = fetchurl {
- name = "wbuf___wbuf_1.7.3.tgz";
- url = "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz";
- sha1 = "c1d8d149316d3ea852848895cb6a0bfe887b87df";
- };
- }
-
- {
- name = "webpack_chunk_hash___webpack_chunk_hash_0.5.0.tgz";
- path = fetchurl {
- name = "webpack_chunk_hash___webpack_chunk_hash_0.5.0.tgz";
- url = "https://registry.yarnpkg.com/webpack-chunk-hash/-/webpack-chunk-hash-0.5.0.tgz";
- sha1 = "1dba38203d73c1e6ab069b6810a5a37402399dec";
- };
- }
-
- {
- name = "webpack_dev_middleware___webpack_dev_middleware_1.12.2.tgz";
- path = fetchurl {
- name = "webpack_dev_middleware___webpack_dev_middleware_1.12.2.tgz";
- url = "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz";
- sha1 = "f8fc1120ce3b4fc5680ceecb43d777966b21105e";
- };
- }
-
- {
- name = "webpack_dev_server___webpack_dev_server_2.11.2.tgz";
- path = fetchurl {
- name = "webpack_dev_server___webpack_dev_server_2.11.2.tgz";
- url = "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz";
- sha1 = "1f4f4c78bf1895378f376815910812daf79a216f";
- };
- }
-
- {
- name = "webpack_sources___webpack_sources_1.1.0.tgz";
- path = fetchurl {
- name = "webpack_sources___webpack_sources_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz";
- sha1 = "a101ebae59d6507354d71d8013950a3a8b7a5a54";
- };
- }
-
- {
- name = "webpack___webpack_3.12.0.tgz";
- path = fetchurl {
- name = "webpack___webpack_3.12.0.tgz";
- url = "https://registry.yarnpkg.com/webpack/-/webpack-3.12.0.tgz";
- sha1 = "3f9e34360370602fcf639e97939db486f4ec0d74";
- };
- }
-
- {
- name = "websocket_driver___websocket_driver_0.7.0.tgz";
- path = fetchurl {
- name = "websocket_driver___websocket_driver_0.7.0.tgz";
- url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz";
- sha1 = "0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb";
- };
- }
-
- {
- name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
- path = fetchurl {
- name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz";
- sha1 = "5d2ff22977003ec687a4b87073dfbbac146ccf29";
- };
- }
-
- {
- name = "whet.extend___whet.extend_0.9.9.tgz";
- path = fetchurl {
- name = "whet.extend___whet.extend_0.9.9.tgz";
- url = "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz";
- sha1 = "f877d5bf648c97e5aa542fadc16d6a259b9c11a1";
- };
- }
-
- {
- name = "which_module___which_module_1.0.0.tgz";
- path = fetchurl {
- name = "which_module___which_module_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz";
- sha1 = "bba63ca861948994ff307736089e3b96026c2a4f";
- };
- }
-
- {
- name = "which_module___which_module_2.0.0.tgz";
- path = fetchurl {
- name = "which_module___which_module_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz";
- sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
- };
- }
-
- {
- name = "which___which_1.3.1.tgz";
- path = fetchurl {
- name = "which___which_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz";
- sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a";
- };
- }
-
- {
- name = "wide_align___wide_align_1.1.3.tgz";
- path = fetchurl {
- name = "wide_align___wide_align_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz";
- sha1 = "ae074e6bdc0c14a431e804e624549c633b000457";
- };
- }
-
- {
- name = "window_size___window_size_0.1.0.tgz";
- path = fetchurl {
- name = "window_size___window_size_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz";
- sha1 = "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d";
- };
- }
-
- {
- name = "wordwrap___wordwrap_0.0.2.tgz";
- path = fetchurl {
- name = "wordwrap___wordwrap_0.0.2.tgz";
- url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz";
- sha1 = "b79669bb42ecb409f83d583cad52ca17eaa1643f";
- };
- }
-
- {
- name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
- path = fetchurl {
- name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
- sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
- };
- }
-
- {
- name = "wrappy___wrappy_1.0.2.tgz";
- path = fetchurl {
- name = "wrappy___wrappy_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
- sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
- };
- }
-
- {
- name = "xtend___xtend_4.0.1.tgz";
- path = fetchurl {
- name = "xtend___xtend_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz";
- sha1 = "a5c6d532be656e23db820efb943a1f04998d63af";
- };
- }
-
- {
- name = "y18n___y18n_3.2.1.tgz";
- path = fetchurl {
- name = "y18n___y18n_3.2.1.tgz";
- url = "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz";
- sha1 = "6d15fba884c08679c0d77e88e7759e811e07fa41";
- };
- }
-
- {
- name = "yallist___yallist_2.1.2.tgz";
- path = fetchurl {
- name = "yallist___yallist_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz";
- sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
- };
- }
-
- {
- name = "yallist___yallist_3.0.2.tgz";
- path = fetchurl {
- name = "yallist___yallist_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz";
- sha1 = "8452b4bb7e83c7c188d8041c1a837c773d6d8bb9";
- };
- }
-
- {
- name = "yargs_parser___yargs_parser_4.2.1.tgz";
- path = fetchurl {
- name = "yargs_parser___yargs_parser_4.2.1.tgz";
- url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz";
- sha1 = "29cceac0dc4f03c6c87b4a9f217dd18c9f74871c";
- };
- }
-
- {
- name = "yargs_parser___yargs_parser_5.0.0.tgz";
- path = fetchurl {
- name = "yargs_parser___yargs_parser_5.0.0.tgz";
- url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz";
- sha1 = "275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a";
- };
- }
-
- {
- name = "yargs_parser___yargs_parser_7.0.0.tgz";
- path = fetchurl {
- name = "yargs_parser___yargs_parser_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz";
- sha1 = "8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9";
- };
- }
-
- {
- name = "yargs___yargs_6.6.0.tgz";
- path = fetchurl {
- name = "yargs___yargs_6.6.0.tgz";
- url = "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz";
- sha1 = "782ec21ef403345f830a808ca3d513af56065208";
- };
- }
-
- {
- name = "yargs___yargs_7.1.0.tgz";
- path = fetchurl {
- name = "yargs___yargs_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz";
- sha1 = "6ba318eb16961727f5d284f8ea003e8d6154d0c8";
- };
- }
-
- {
- name = "yargs___yargs_8.0.2.tgz";
- path = fetchurl {
- name = "yargs___yargs_8.0.2.tgz";
- url = "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz";
- sha1 = "6299a9055b1cefc969ff7e79c1d918dceb22c360";
- };
- }
-
- {
- name = "yargs___yargs_3.10.0.tgz";
- path = fetchurl {
- name = "yargs___yargs_3.10.0.tgz";
- url = "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz";
- sha1 = "f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1";
- };
- }
- ];
-}
diff --git a/modules/private/websites/isabelle/aten_integration.nix b/modules/private/websites/isabelle/aten_integration.nix
deleted file mode 100644
index c55ef92..0000000
--- a/modules/private/websites/isabelle/aten_integration.nix
+++ /dev/null
@@ -1,91 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- secrets = config.myEnv.websites.isabelle.aten_integration;
- webRoot = "/var/lib/ftp/immae/aten/public";
- cfg = config.myServices.websites.isabelle.aten_integration;
- pcfg = config.services.phpApplication;
-in {
- options.myServices.websites.isabelle.aten_integration.enable = lib.mkEnableOption "enable Aten's website in integration";
-
- config = lib.mkIf cfg.enable {
- services.phpApplication.apps.isabelle_aten_integration = {
- websiteEnv = "integration";
- httpdUser = config.services.httpd.Inte.user;
- httpdGroup = config.services.httpd.Inte.group;
- httpdWatchFiles = [
- config.secrets.fullPaths."websites/isabelle/aten_integration"
- ];
- inherit webRoot;
- varDir = "/var/lib/ftp/immae/aten_var";
- app = "/var/lib/ftp/immae/aten";
- serviceDeps = [ "postgresql.service" ];
- preStartActions = [
- "APP_ENV=dev ./bin/console --env=dev cache:clear --no-warmup"
- ];
- phpOpenbasedir = [ "/tmp" ];
- phpPool = {
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- #"php_admin_flag[log_errors]" = "on";
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
- };
- phpEnv = {
- SYMFONY_DEBUG_MODE = "\"yes\"";
- };
- phpPackage = pkgs.php72;
- };
-
- secrets.keys."websites/isabelle/aten_integration" = {
- user = config.services.httpd.Inte.user;
- group = config.services.httpd.Inte.group;
- permissions = "0400";
- text = let
- # cf:
- # https://secure.php.net/manual/fr/function.parse-url.php
- # vendor/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php#parseDatabaseUrlQuery
- psql_url = with secrets.postgresql; "pdo-pgsql://${user}:${password}@invalid:${port}/${database}?host=${socket}";
- in ''
- SetEnv APP_ENV "dev"
- SetEnv APP_SECRET "${secrets.secret}"
- SetEnv DATABASE_URL "${psql_url}"
- '';
- };
- services.websites.env.integration.vhostConfs.isabelle_aten_integration = {
- certName = "integration";
- addToCerts = true;
- hosts = [ "aten.ic.immae.dev" ];
- root = webRoot;
- extraConfig = [
- ''
-
- SetHandler "proxy:unix:${pcfg.phpListenPaths.isabelle_aten_integration}|fcgi://localhost"
-
-
- Include ${config.secrets.fullPaths."websites/isabelle/aten_integration"}
-
-
- Use LDAPConnect
- Require ldap-group cn=ic.immae.dev,cn=httpd,ou=services,dc=immae,dc=eu
- ErrorDocument 401 " "
-
-
-
- Use LDAPConnect
- Require ldap-group cn=ic.immae.dev,cn=httpd,ou=services,dc=immae,dc=eu
- ErrorDocument 401 " "
-
-
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
- DirectoryIndex index.php
- FallbackResource /index.php
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/isabelle/aten_production.nix b/modules/private/websites/isabelle/aten_production.nix
deleted file mode 100644
index 928a815..0000000
--- a/modules/private/websites/isabelle/aten_production.nix
+++ /dev/null
@@ -1,90 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- secrets = config.myEnv.websites.isabelle.aten_production;
- app = pkgs.callPackage ./aten_app {
- composerEnv = pkgs.composerEnv.override { php = pkgs.php72; };
- environment = secrets.environment;
- varDir = "/var/lib/isabelle_aten_production";
- };
- cfg = config.myServices.websites.isabelle.aten_production;
- pcfg = config.services.phpApplication;
-in {
- options.myServices.websites.isabelle.aten_production.enable = lib.mkEnableOption "enable Aten's website in production";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "aten.pro"; } ];
- services.phpApplication.apps.isabelle_aten_production = {
- websiteEnv = "production";
- httpdUser = config.services.httpd.Prod.user;
- httpdGroup = config.services.httpd.Prod.group;
- httpdWatchFiles = [
- config.secrets.fullPaths."websites/isabelle/aten_production"
- ];
- inherit (app) webRoot varDir;
- inherit app;
- serviceDeps = [ "postgresql.service" ];
- preStartActions = [
- "APP_ENV=${app.environment} ./bin/console --env=${app.environment} cache:clear --no-warmup"
- ];
- phpOpenbasedir = [ "/tmp" ];
- phpPool = {
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- #"php_admin_flag[log_errors]" = "on";
- "pm" = "dynamic";
- "pm.max_children" = "20";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "3";
- };
- phpPackage = pkgs.php72;
- };
-
- secrets.keys."websites/isabelle/aten_production" = {
- user = config.services.httpd.Prod.user;
- group = config.services.httpd.Prod.group;
- permissions = "0400";
- text = let
- # cf:
- # https://secure.php.net/manual/fr/function.parse-url.php
- # vendor/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php#parseDatabaseUrlQuery
- psql_url = with secrets.postgresql; "pdo-pgsql://${user}:${password}@invalid:${port}/${database}?host=${socket}";
- in ''
- SetEnv APP_ENV "${app.environment}"
- SetEnv APP_SECRET "${secrets.secret}"
- SetEnv DATABASE_URL "${psql_url}"
- '';
- };
- services.websites.env.production.vhostConfs.isabelle_aten_production = {
- certName = "isabelle";
- certMainHost = "aten.pro";
- hosts = [ "aten.pro" "www.aten.pro" ];
- root = app.webRoot;
- extraConfig = [
- ''
-
- SetHandler "proxy:unix:${pcfg.phpListenPaths.isabelle_aten_production}|fcgi://localhost"
-
-
- Include ${config.secrets.fullPaths."websites/isabelle/aten_production"}
-
- Use Stats aten.pro
-
-
- Use LDAPConnect
- Require ldap-group cn=aten.pro,cn=httpd,ou=services,dc=immae,dc=eu
- ErrorDocument 401 " "
-
-
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
- DirectoryIndex index.php
- FallbackResource /index.php
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/isabelle/config/chmod.php b/modules/private/websites/isabelle/config/chmod.php
deleted file mode 100644
index aae16cd..0000000
--- a/modules/private/websites/isabelle/config/chmod.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/private/websites/isabelle/config/connect.php b/modules/private/websites/isabelle/config/connect.php
deleted file mode 100644
index 18b0933..0000000
--- a/modules/private/websites/isabelle/config/connect.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/modules/private/websites/isabelle/config/ldap.php b/modules/private/websites/isabelle/config/ldap.php
deleted file mode 100644
index 825b7ed..0000000
--- a/modules/private/websites/isabelle/config/ldap.php
+++ /dev/null
@@ -1,9 +0,0 @@
- array('sAMAccountName','uid','login','userid','cn','sn'),'nom' => 'cn','email' => 'mail','bio' => 'description',);
-$GLOBALS['ldap_search'] = getenv("SPIP_LDAP_SEARCH");
-?>
diff --git a/modules/private/websites/isabelle/iridologie.nix b/modules/private/websites/isabelle/iridologie.nix
deleted file mode 100644
index cd733c1..0000000
--- a/modules/private/websites/isabelle/iridologie.nix
+++ /dev/null
@@ -1,113 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- icfg = config.myEnv.websites.isabelle.iridologie;
- cfg = config.myServices.websites.isabelle.iridologie;
- app = pkgs.callPackage ./iridologie_app {
- inherit (icfg) environment;
- inherit (pkgs.webapps) spip;
- varDir = "/var/lib/isabelle_iridologie";
- };
-
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
- secretsPath = config.secrets.fullPaths."websites/isabelle/iridologie";
-in {
- options.myServices.websites.isabelle.iridologie.enable = lib.mkEnableOption "enable Iridologie's website";
-
- config = lib.mkIf cfg.enable {
- secrets.keys."websites/isabelle/iridologie" = {
- user = apacheUser;
- group = apacheGroup;
- permissions = "0400";
- text = ''
- SetEnv SPIP_CONFIG_DIR "${./config}"
- SetEnv SPIP_VAR_DIR "${app.varDir}"
- SetEnv SPIP_SITE "iridologie-${app.environment}"
- SetEnv SPIP_LDAP_BASE "dc=immae,dc=eu"
- SetEnv SPIP_LDAP_HOST "ldaps://ldap.immae.eu"
- SetEnv SPIP_LDAP_SEARCH_DN "${icfg.ldap.dn}"
- SetEnv SPIP_LDAP_SEARCH_PW "${icfg.ldap.password}"
- SetEnv SPIP_LDAP_SEARCH "${icfg.ldap.filter}"
- SetEnv SPIP_MYSQL_HOST "${icfg.mysql.host}"
- SetEnv SPIP_MYSQL_PORT "${icfg.mysql.port}"
- SetEnv SPIP_MYSQL_DB "${icfg.mysql.database}"
- SetEnv SPIP_MYSQL_USER "${icfg.mysql.user}"
- SetEnv SPIP_MYSQL_PASSWORD "${icfg.mysql.password}"
- '';
- };
- services.webstats.sites = [ { name = "iridologie.icommandeur.org"; } ];
-
- systemd.services.phpfpm-isabelle_iridologie.after = lib.mkAfter [ "mysql.service" ];
- systemd.services.phpfpm-isabelle_iridologie.wants = [ "mysql.service" ];
- services.phpfpm.pools.isabelle_iridologie = {
- user = config.services.httpd.Prod.user;
- group = config.services.httpd.Prod.group;
- settings = {
- "listen.owner" = "${apacheUser}";
- "listen.group" = "${apacheGroup}";
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- #"php_admin_flag[log_errors]" = "on";
- "php_admin_value[open_basedir]" = "${app.spipConfig}:${./config}:${app}:${app.varDir}:/tmp";
- "php_admin_value[session.save_path]" = "${app.varDir}/phpSessions";
- "pm" = "dynamic";
- "pm.max_children" = "20";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "3";
- };
- phpPackage = pkgs.php72;
- };
- system.activationScripts.isabelle_iridologie = {
- deps = [ "wrappers" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d ${app.varDir} ${app.varDir}/IMG ${app.varDir}/tmp ${app.varDir}/local
- install -m 0750 -o ${apacheUser} -g ${apacheGroup} -d ${app.varDir}/phpSessions
- '';
- };
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.isabelle_iridologie = {
- certName = "isabelle";
- addToCerts = true;
- hosts = [ "iridologie.icommandeur.org" "icommandeur.org" "www.icommandeur.org" ];
- root = app.webRoot;
- extraConfig = [
- ''
- RewriteEngine On
- RewriteCond "%{HTTP_HOST}" "!^iridologie\.icommandeur\.org$" [NC]
- RewriteRule ^(.+)$ https://iridologie.icommandeur.org$1 [R=302,L]
-
- Include ${secretsPath}
-
- RewriteEngine On
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.isabelle_iridologie.socket}|fcgi://localhost"
-
-
-
- DirectoryIndex index.php index.htm index.html
- Options -Indexes +FollowSymLinks +MultiViews +Includes
- Include ${app.webRoot}/htaccess.txt
-
- AllowOverride AuthConfig FileInfo Limit
- Require all granted
-
-
-
- Require all denied
-
-
-
- Require all denied
-
-
- Use Stats iridologie.icommandeur.org
- ''
- ];
- };
- services.websites.env.production.watchPaths = [
- secretsPath
- ];
- };
-}
diff --git a/modules/private/websites/isabelle/iridologie_app/default.nix b/modules/private/websites/isabelle/iridologie_app/default.nix
deleted file mode 100644
index edb7eef..0000000
--- a/modules/private/websites/isabelle/iridologie_app/default.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ environment ? "prod"
-, varDir ? "/var/lib/iridologie_${environment}"
-, spip, stdenv, sassc, sources }:
-let
- siteDir = stdenv.mkDerivation rec {
- version = sources.websites-isabelle-iridologie.version;
- pname = "iridologie";
- name = "${pname}-${version}";
- src = sources.websites-isabelle-iridologie;
- installPhase = ''
- cp -a . $out
- '';
- };
-in
-spip.override {
- ldap = true;
- siteName = "iridologie";
- inherit environment siteDir varDir;
-}
diff --git a/modules/private/websites/jerome/naturaloutil.nix b/modules/private/websites/jerome/naturaloutil.nix
deleted file mode 100644
index 0974ce3..0000000
--- a/modules/private/websites/jerome/naturaloutil.nix
+++ /dev/null
@@ -1,97 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; };
- cfg = config.myServices.websites.jerome.naturaloutil;
- varDir = "/var/lib/ftp/jerome";
- env = config.myEnv.websites.jerome;
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
- secretsPath = config.secrets.fullPaths."websites/jerome/naturaloutil";
-in {
- options.myServices.websites.jerome.naturaloutil.enable = lib.mkEnableOption "enable Jerome Naturaloutil's website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "naturaloutil.immae.eu"; } ];
-
- security.acme.certs."ftp".extraDomains."naturaloutil.immae.eu" = null;
-
- secrets.keys."websites/jerome/naturaloutil" = {
- user = apacheUser;
- group = apacheGroup;
- permissions = "0400";
- text = ''
- ssl_set(NULL, NULL, "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt", NULL, NULL);
- '' else ""}
- $database = connect_db($db, $mysql_server, $mysql_base, $mysql_user, $mysql_password);
- ?>
- '';
- };
- system.activationScripts.jerome_naturaloutil = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/php/sessions/jerome_naturaloutil
- '';
- };
- systemd.services.phpfpm-jerome_naturaloutil.after = lib.mkAfter [ "mysql.service" ];
- systemd.services.phpfpm-jerome_naturaloutil.wants = [ "mysql.service" ];
- services.phpfpm.pools.jerome_naturaloutil = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
-
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[open_basedir]" = "/var/lib/php/sessions/jerome_naturaloutil:${secretsPath}:${varDir}:/tmp";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/jerome_naturaloutil";
- };
- phpEnv = {
- BDD_CONNECT = secretsPath;
- };
- phpPackage = pkgs.php72;
- };
- services.websites.env.production.modules = adminer.apache.modules ++ [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.jerome_naturaloutil = {
- certName = "jerome";
- certMainHost = "naturaloutil.immae.eu";
- hosts = ["naturaloutil.immae.eu" ];
- root = varDir;
- extraConfig = [
- (adminer.apache.vhostConf null)
- ''
- Use Stats naturaloutil.immae.eu
- ServerAdmin ${env.server_admin}
- ErrorLog "${varDir}/logs/error_log"
- CustomLog "${varDir}/logs/access_log" combined
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.jerome_naturaloutil.socket}|fcgi://localhost"
-
-
-
- AllowOverride None
- Require all denied
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/leila/production.nix b/modules/private/websites/leila/production.nix
deleted file mode 100644
index 8385bc7..0000000
--- a/modules/private/websites/leila/production.nix
+++ /dev/null
@@ -1,114 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.leila.production;
- varDir = "/var/lib/ftp/leila";
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
-in {
- options.myServices.websites.leila.production.enable = lib.mkEnableOption "enable Leila's websites in production";
-
- config = lib.mkIf cfg.enable {
- services.phpfpm.pools.leila = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
-
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[open_basedir]" = "${varDir}:/tmp";
- "php_admin_value[max_execution_time]" = "1800";
- };
- phpOptions = config.services.phpfpm.phpOptions + ''
- disable_functions = "mail"
- '';
- phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [ all.imagick ]);
- phpEnv = {
- PATH = lib.makeBinPath [ pkgs.imagemagick ];
- };
- };
-
- services.webstats.sites = [
- { name = "leila.bouya.org"; }
- { name = "chorale.leila.bouya.org"; }
- { name = "syrwennecreation.bouya.org"; }
- ];
-
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.leila_chorale = {
- certName = "leila";
- addToCerts = true;
- hosts = [ "chorale.leila.bouya.org" "chorale-vocanta.fr.nf" "www.chorale-vocanta.fr.nf" ];
- root = "${varDir}/Chorale";
- extraConfig = [
- ''
- Use Stats chorale.leila.bouya.org
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
-
- Use LDAPConnect
- Require ldap-group cn=chorale.leila.bouya.org,cn=httpd,ou=services,dc=immae,dc=eu
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.leila.socket}|fcgi://localhost"
-
-
- ''
- ];
- };
- services.websites.env.production.vhostConfs.leila_syrwenne = {
- certName = "leila";
- addToCerts = true;
- hosts = [ "syrwennecreation.bouya.org" ];
- root = "${varDir}/Syrwennecreation";
- extraConfig = [
- ''
- Use Stats syrwennecreation.bouya.org
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.leila.socket}|fcgi://localhost"
-
-
- ''
- ];
- };
- services.websites.env.production.vhostConfs.leila = {
- certName = "leila";
- certMainHost = "leila.bouya.org";
- hosts = [ "leila.bouya.org" ];
- root = varDir;
- extraConfig = [
- ''
- Use Stats leila.bouya.org
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
-
- Use LDAPConnect
- Require ldap-group cn=chorale.leila.bouya.org,cn=httpd,ou=services,dc=immae,dc=eu
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.leila.socket}|fcgi://localhost"
-
-
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/ludivine/app/default.nix b/modules/private/websites/ludivine/app/default.nix
deleted file mode 100644
index 323b6e0..0000000
--- a/modules/private/websites/ludivine/app/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ environment, varDir, secretsPath
-, composerEnv, fetchurl, fetchgit, imagemagick, sass, ruby, sources }:
-let
- app = composerEnv.buildPackage (
- import ./php-packages.nix { inherit composerEnv fetchurl fetchgit; } //
- rec {
- name = "${pname}-${version}";
- pname = "ludivinecassal";
- version = sources.websites-ludivine-app.version;
- src = sources.websites-ludivine-app;
- noDev = (environment == "prod");
- preInstall = ''
- export SYMFONY_ENV="${environment}"
- cp app/config/parameters.yml.dist app/config/parameters.yml
- cat >> app/config/parameters.yml <
- SetHandler "proxy:unix:${pcfg.phpListenPaths.ludivine_integration}|fcgi://localhost"
-
-
-
- Use LDAPConnect
- Require ldap-group cn=lc.immae.dev,cn=httpd,ou=services,dc=immae,dc=eu
- ErrorDocument 401 " "
-
-
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- DirectoryIndex app_dev.php
-
-
- Options -MultiViews
-
-
-
- RewriteEngine On
-
- RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
- RewriteRule ^(.*) - [E=BASE:%1]
-
- # Maintenance script
- RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
- RewriteCond %{SCRIPT_FILENAME} !maintenance.php
- RewriteRule ^.*$ %{ENV:BASE}/maintenance.php [R=503,L]
- ErrorDocument 503 /maintenance.php
-
- # Sets the HTTP_AUTHORIZATION header removed by Apache
- RewriteCond %{HTTP:Authorization} .
- RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
-
- RewriteCond %{ENV:REDIRECT_STATUS} ^$
- RewriteRule ^app_dev\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
-
- # If the requested filename exists, simply serve it.
- # We only want to let Apache serve files and not directories.
- RewriteCond %{REQUEST_FILENAME} -f
- RewriteRule ^ - [L]
-
- # Rewrite all other queries to the front controller.
- RewriteRule ^ %{ENV:BASE}/app_dev.php [L]
-
-
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/ludivine/production.nix b/modules/private/websites/ludivine/production.nix
deleted file mode 100644
index 7a18b88..0000000
--- a/modules/private/websites/ludivine/production.nix
+++ /dev/null
@@ -1,116 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- secrets = config.myEnv.websites.ludivine.production;
- app = pkgs.callPackage ./app {
- composerEnv = pkgs.composerEnv.override { php = pkgs.php72; };
- environment = secrets.environment;
- varDir = "/var/lib/ludivine_production";
- secretsPath = config.secrets.fullPaths."websites/ludivine/production";
- };
- pcfg = config.services.phpApplication;
- cfg = config.myServices.websites.ludivine.production;
-in {
- options.myServices.websites.ludivine.production.enable = lib.mkEnableOption "enable Ludivine's website in production";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "ludivinecassal.com"; } ];
- services.phpApplication.apps.ludivine_production = {
- websiteEnv = "production";
- httpdUser = config.services.httpd.Prod.user;
- httpdGroup = config.services.httpd.Prod.group;
- inherit (app) webRoot varDir;
- varDirPaths = {
- "tmp" = "0700";
- };
- inherit app;
- serviceDeps = [ "mysql.service" ];
- preStartActions = [
- "./bin/console --env=${app.environment} cache:clear --no-warmup"
- ];
- phpOpenbasedir = [ "/tmp" ];
- phpPool = {
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- #"php_admin_flag[log_errors]" = "on";
- "pm" = "dynamic";
- "pm.max_children" = "20";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "3";
- };
- phpWatchFiles = [
- config.secrets.fullPaths."websites/ludivine/production"
- ];
- phpEnv = {
- PATH = lib.makeBinPath [
- # below ones don't need to be in the PATH but they’re used in
- # secrets
- pkgs.imagemagick pkgs.sass pkgs.ruby
- ];
- };
- phpPackage = pkgs.php72;
- };
-
- secrets.keys."websites/ludivine/production" = {
- user = config.services.httpd.Prod.user;
- group = config.services.httpd.Prod.group;
- permissions = "0400";
- text = ''
- # This file is auto-generated during the composer install
- parameters:
- database_host: ${secrets.mysql.host}
- database_port: ${secrets.mysql.port}
- database_name: ${secrets.mysql.database}
- database_user: ${secrets.mysql.user}
- database_password: ${secrets.mysql.password}
- database_server_version: ${pkgs.mariadb.mysqlVersion}
- mailer_transport: smtp
- mailer_host: 127.0.0.1
- mailer_user: null
- mailer_password: null
- secret: ${secrets.secret}
- ldap_host: ldap.immae.eu
- ldap_port: 636
- ldap_version: 3
- ldap_ssl: true
- ldap_tls: false
- ldap_user_bind: 'uid={username},ou=users,dc=immae,dc=eu'
- ldap_base_dn: 'dc=immae,dc=eu'
- ldap_search_dn: '${secrets.ldap.dn}'
- ldap_search_password: '${secrets.ldap.password}'
- ldap_search_filter: '${secrets.ldap.filter}'
- leapt_im:
- binary_path: ${pkgs.imagemagick}/bin
- assetic:
- sass: ${pkgs.sass}/bin/sass
- ruby: ${pkgs.ruby}/bin/ruby
- '';
- };
-
- services.websites.env.production.vhostConfs.ludivine_production = {
- certName = "ludivine";
- certMainHost = "ludivinecassal.com";
- hosts = ["ludivinecassal.com" "www.ludivinecassal.com" ];
- root = app.webRoot;
- extraConfig = [
- ''
- RewriteEngine on
- RewriteCond "%{HTTP_HOST}" "!^ludivinecassal\.com$" [NC]
- RewriteRule ^(.+)$ https://ludivinecassal.com$1 [R=302,L]
-
-
- SetHandler "proxy:unix:${pcfg.phpListenPaths.ludivine_production}|fcgi://localhost"
-
-
- Use Stats ludivinecassal.com
-
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/moomin.txt b/modules/private/websites/moomin.txt
deleted file mode 100644
index 036fb1c..0000000
--- a/modules/private/websites/moomin.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-⠀⠀⠀⠀⠀⠀⠀⢠⢦⡀⠀⡰⣩⠃
-⠀⠀⠀⠀⠀⠀⠀⠘⣄⠙⠍⠁⠙⠦⡀
-⠀⠀⠀⠀⠀⠀⠀⠀⡎⠀⠀⡠⠄⠔⠊⠉⠒⠒⠒⢄
-⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⠆
-⠀⠀⢠⢤⠜⡆⠀⢸⠀⠰⣄⠀⠀⠀⠀⠀⠀⠀⣠⠎
-⠀⠀⠱⠤⡁⠈⠑⠇⠀⠀⠀⠉⠒⠤⠤⠄⢖⠊⠀⡐⠧⣄⣀
-⠀⠀⠀⠀⠘⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡉⠀⣀⣨⡷
-⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⠜⠁
-⠀⠀⠀⠀⠀⠀⢇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣸⠱⡀
-⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠁⠀⣣
-⠀⠀⠀⠀⠀⠀⠀⠑⣄⠀⠀⠀⠀⠀⠀⠀⢀⣠⣀⠴⠊⠁
-⠰⢍⢒⢄⠀⠀⠀⠀⢸⢳⢆⠀⠀⠀⠰⡖⠋⠁
-⠀⠳⠴⣙⢄⠀⢀⡠⣣⠃⠈⠑⢤⡄⠀⡸⠂
-⠀⠀⠀⠀⠑⠋⠓⠊⠁⠀⠀⠀⠓⠒⠉
-Credentials: https://twitter.com/thingskatedid/status/1278274012754309120
-Credentials: https://gist.github.com/katef/09581d7c84eddf784508fa430f6ef47a
diff --git a/modules/private/websites/nassime/production.nix b/modules/private/websites/nassime/production.nix
deleted file mode 100644
index 1179351..0000000
--- a/modules/private/websites/nassime/production.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.nassime.production;
- varDir = "/var/lib/ftp/nassime";
- env = config.myEnv.websites.nassime;
- domain = "nassime.bouya.org";
-in {
- options.myServices.websites.nassime.production.enable = lib.mkEnableOption "enable Nassime's website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = domain; } ];
-
- security.acme.certs."ftp".extraDomains."${domain}" = null;
-
- services.websites.env.production.vhostConfs.nassime = {
- certName = "nassime";
- certMainHost = domain;
- hosts = [ domain ];
- root = varDir;
- extraConfig = [
- ''
- Use Stats ${domain}
- ServerAdmin ${env.server_admin}
-
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/nath/villon.nix b/modules/private/websites/nath/villon.nix
deleted file mode 100644
index 57a1df5..0000000
--- a/modules/private/websites/nath/villon.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.nath.villon;
- varDir = "/var/lib/ftp/nath";
- env = config.myEnv.websites.nath;
- domain = "sntvillon.immae.eu";
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
-in {
- options.myServices.websites.nath.villon.enable = lib.mkEnableOption "enable Nath's website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = domain; } ];
-
- system.activationScripts.nath_villon = {
- deps = [ "users" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d ${varDir}
- '';
- };
- security.acme.certs."ftp".extraDomains."${domain}" = null;
-
- services.websites.env.production.vhostConfs.nath_villon = {
- certName = "nath";
- certMainHost = domain;
- hosts = [ domain ];
- root = varDir;
- extraConfig = [
- ''
- Use Stats ${domain}
-
-
- DirectoryIndex index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/papa/maison_bbc.nix b/modules/private/websites/papa/maison_bbc.nix
deleted file mode 100644
index 3eb736e..0000000
--- a/modules/private/websites/papa/maison_bbc.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, config, ... }:
-let
- cfg = config.myServices.websites.papa.maison_bbc;
-in {
- options.myServices.websites.papa.maison_bbc.enable = lib.mkEnableOption "enable Papa Maison bbc website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "maison.bbc.bouya.org"; } ];
-
- services.websites.env.production.vhostConfs.papa_maison_bbc = {
- certName = "papa";
- addToCerts = true;
- hosts = [ "maison.bbc.bouya.org" ];
- root = ./maison_bbc_static;
- extraConfig = [
- ''
- ErrorDocument 404 /index.html
-
- DirectoryIndex index.htm index.html
- AllowOverride None
- Require all granted
-
- ''
- ];
- };
- };
-}
-
diff --git a/modules/private/websites/papa/maison_bbc_static/data.json b/modules/private/websites/papa/maison_bbc_static/data.json
deleted file mode 100644
index 1784d27..0000000
--- a/modules/private/websites/papa/maison_bbc_static/data.json
+++ /dev/null
@@ -1,4101 +0,0 @@
-{
- "mean_consumption": {
- "data": [
- {
- "x": "2010-01-01 00:00:00",
- "y": 0
- },
- {
- "x": "2012-06-01 00:00:00",
- "y": 0.3
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 0.3
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 0.7
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 8.1
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 8.8
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 8.2
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 7.2
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 1.2
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 0
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 0
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 0
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 0
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 0
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 0
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 0
- },
- {
- "x": "2016-09-01 00:00:00",
- "y": 0
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2018-01-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2018-02-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2018-04-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2018-05-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2018-06-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2018-07-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2018-08-01 00:00:00",
- "y": 0.8
- },
- {
- "x": "2019-03-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2019-04-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2019-05-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2019-06-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2019-07-01 00:00:00",
- "y": 0.4
- },
- {
- "x": "2019-08-01 00:00:00",
- "y": 0.6
- },
- {
- "x": "2020-03-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2020-04-01 00:00:00",
- "y": 0.5
- },
- {
- "x": "2020-05-01 00:00:00",
- "y": 0.5
- }
- ],
- "name": "Consommation moyenne",
- "unit": "kW",
- "hide": false
- },
- "total_consumption": {
- "data": [
- {
- "x": "2010-01-01 00:00:00",
- "y": 74.8
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 629
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 859.3
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 1150.7
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 1440.1
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 1829.6
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 2218.6
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 468.7
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 2924.1
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": -3217.1
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": -2847.2
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 224.6
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 536.5
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 882
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 1207.7
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 1565.4
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 1924.1
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 2323.5
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 2754.8
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 3176.7
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 3530.1
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 3975
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 4364.8
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 1485.8
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 9.3
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 6
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 10
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 10.9
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 13.1
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 1.6
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 2.1
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 2.8
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 2.2
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 2.8
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 0
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 2.1
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 43.2
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 78.6
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 118.2
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 155.2
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 203.1
- },
- {
- "x": "2016-09-01 00:00:00",
- "y": 213.7
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 4567.8
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 46.2
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 404.3
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 711.3
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 1098.7
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 1365.4
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 1705.3
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 2041.5
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 2400.8
- },
- {
- "x": "2018-01-01 00:00:00",
- "y": 2816.8
- },
- {
- "x": "2018-02-01 00:00:00",
- "y": 3236.5
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 3610
- },
- {
- "x": "2018-04-01 00:00:00",
- "y": 4047.8
- },
- {
- "x": "2018-05-01 00:00:00",
- "y": 4447.2
- },
- {
- "x": "2018-06-01 00:00:00",
- "y": 4704.1
- },
- {
- "x": "2018-07-01 00:00:00",
- "y": 260.9
- },
- {
- "x": "2018-08-01 00:00:00",
- "y": 502.7
- },
- {
- "x": "2019-03-01 00:00:00",
- "y": 896.9
- },
- {
- "x": "2019-04-01 00:00:00",
- "y": 1268.4
- },
- {
- "x": "2019-05-01 00:00:00",
- "y": 1625.5
- },
- {
- "x": "2019-06-01 00:00:00",
- "y": 1944.8
- },
- {
- "x": "2019-07-01 00:00:00",
- "y": 2256.8
- },
- {
- "x": "2019-08-01 00:00:00",
- "y": 2714.7
- },
- {
- "x": "2020-03-01 00:00:00",
- "y": 314.9
- },
- {
- "x": "2020-04-01 00:00:00",
- "y": 679.7
- },
- {
- "x": "2020-05-01 00:00:00",
- "y": 1084.7
- }
- ],
- "name": "Consommation totale",
- "unit": "kWh",
- "hide": false
- },
- "Chambre_RDC_temperature": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 22.3
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 25.1
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 22.6
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 20.7
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 18
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 20
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 20.1
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 15.6
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 20.3
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 18.1
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 21.5
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 22.3
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 25.1
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 21.4
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 20.3
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 20.4
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 20.5
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 19.8
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 20.6
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 21.3
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 21.9
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 25
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 22.4
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 20.6
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 18.2
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 20
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 20
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 19.6
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 21.4
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 20.4
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 24.2
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 24.5
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 23.6
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 22.2
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 20.9
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 20.6
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 19.5
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 19.8
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 20.4
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 19.8
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 19.5
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 21.3
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 22.9
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 24.4
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 24
- },
- {
- "x": "2016-09-01 00:00:00",
- "y": 23.5
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 21.1
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 20.6
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 22.2
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 23.7
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 23.9
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 23.4
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 22.9
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 22
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 19.7
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 20
- },
- {
- "x": "2018-01-01 00:00:00",
- "y": 20
- },
- {
- "x": "2018-02-01 00:00:00",
- "y": 20.2
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 19.9
- },
- {
- "x": "2018-04-01 00:00:00",
- "y": 21.1
- },
- {
- "x": "2018-05-01 00:00:00",
- "y": 22.3
- },
- {
- "x": "2018-06-01 00:00:00",
- "y": 23.5
- },
- {
- "x": "2018-07-01 00:00:00",
- "y": 23.8
- },
- {
- "x": "2018-08-01 00:00:00",
- "y": 23.5
- },
- {
- "x": "2019-03-01 00:00:00",
- "y": 21.7
- },
- {
- "x": "2019-04-01 00:00:00",
- "y": 21.7
- },
- {
- "x": "2019-05-01 00:00:00",
- "y": 21.7
- },
- {
- "x": "2019-06-01 00:00:00",
- "y": 23.6
- },
- {
- "x": "2019-07-01 00:00:00",
- "y": 24.4
- },
- {
- "x": "2019-08-01 00:00:00",
- "y": 23.3
- },
- {
- "x": "2020-03-01 00:00:00",
- "y": 22
- }
- ],
- "name": "Chambre_RDC",
- "unit": "°C",
- "hide": false
- },
- "Exterieure_temperature": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 18.6
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 20.2
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 24.7
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 23.2
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 21.7
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 13.3
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 6.1
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 3.3
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 1.9
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 6.6
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 10.2
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 11.2
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 16.9
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 28.9
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 16.9
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 5.9
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 4.5
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 6.9
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 6.8
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 8.3
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 11.6
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 12
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 17.3
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 13.5
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 9.9
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 4.5
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 4.4
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 4.4
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 7.7
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 12.4
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 14.1
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 18.8
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 21.5
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 20.7
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 14.3
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 10.4
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 9.3
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 7.7
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 6
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 5.6
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 6.6
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 9.6
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 14.5
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 17.9
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 21.3
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 20.4
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 14.2
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 9.7
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 16.8
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 23.9
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 21.4
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 20.7
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 15.8
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 14.2
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 7.5
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 4.2
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 10.2
- },
- {
- "x": "2018-04-01 00:00:00",
- "y": 17.6
- },
- {
- "x": "2018-05-01 00:00:00",
- "y": 16.1
- },
- {
- "x": "2018-06-01 00:00:00",
- "y": 22.4
- },
- {
- "x": "2018-07-01 00:00:00",
- "y": 30
- },
- {
- "x": "2018-08-01 00:00:00",
- "y": 19.8
- }
- ],
- "name": "Exterieure",
- "unit": "°C",
- "hide": false
- },
- "Sejour_temperature": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 22.8
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 23
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 25.3
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 23.3
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 21.7
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 19.9
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 20.1
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 20
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 15.8
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 20.5
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 20.8
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 20.9
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 22
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 25
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 22.9
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 21.5
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 20.3
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 20.7
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 20.6
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 19.9
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 21.2
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 21.7
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 22.3
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 25.6
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 22.8
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 20.9
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 18
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 20
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 20
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 19.6
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 21.8
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 20.5
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 24.4
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 21.6
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 23.9
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 23.1
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 21.4
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 21.1
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 20.1
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 20.1
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 20.3
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 20.2
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 19.7
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 21.6
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 23.2
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 24.7
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 24.5
- },
- {
- "x": "2016-09-01 00:00:00",
- "y": 23.7
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 21.7
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 21
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 22.6
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 24
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 24.3
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 23.7
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 23.3
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 22.6
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 20.3
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 19.9
- },
- {
- "x": "2018-01-01 00:00:00",
- "y": 19.9
- },
- {
- "x": "2018-02-01 00:00:00",
- "y": 19.9
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 20.3
- },
- {
- "x": "2018-04-01 00:00:00",
- "y": 21.6
- },
- {
- "x": "2018-05-01 00:00:00",
- "y": 22.6
- },
- {
- "x": "2018-06-01 00:00:00",
- "y": 23.8
- },
- {
- "x": "2018-07-01 00:00:00",
- "y": 23.9
- },
- {
- "x": "2018-08-01 00:00:00",
- "y": 23.7
- },
- {
- "x": "2019-03-01 00:00:00",
- "y": 23.3
- },
- {
- "x": "2019-04-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2019-05-01 00:00:00",
- "y": 22.2
- },
- {
- "x": "2019-06-01 00:00:00",
- "y": 23.8
- },
- {
- "x": "2019-07-01 00:00:00",
- "y": 24.6
- },
- {
- "x": "2019-08-01 00:00:00",
- "y": 23.3
- },
- {
- "x": "2020-03-01 00:00:00",
- "y": 23.5
- }
- ],
- "name": "Sejour",
- "unit": "°C",
- "hide": false
- },
- "Garage_temperature": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 20.2
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 19.4
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 22.2
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 17
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 13.8
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 9.2
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 7.6
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 5.3
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 3.4
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 7.3
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 10.7
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 12.4
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 17.2
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 23
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 20.2
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 17.1
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 14.5
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 8.2
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 5.9
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 7.9
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 7.6
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 9
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 12.6
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 14.2
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 21.5
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 14.6
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 11.2
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 6.7
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 6.3
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 5.1
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 8.6
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 13.3
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 14.2
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 20.9
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 23.2
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 21.8
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 16.3
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 12.5
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 10.8
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 7.5
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 55.6
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 8
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 11.4
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 15.2
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 18.5
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 21.3
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 22.6
- },
- {
- "x": "2016-09-01 00:00:00",
- "y": 18.8
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 15.2
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 11.5
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 16.7
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 21.7
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 21.5
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 21.1
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 16.4
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 14.2
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 9
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 7
- },
- {
- "x": "2018-01-01 00:00:00",
- "y": 9.3
- },
- {
- "x": "2018-02-01 00:00:00",
- "y": 4
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 9.4
- },
- {
- "x": "2018-04-01 00:00:00",
- "y": 12.9
- },
- {
- "x": "2019-03-01 00:00:00",
- "y": 13.9
- },
- {
- "x": "2019-04-01 00:00:00",
- "y": 14.1
- },
- {
- "x": "2019-05-01 00:00:00",
- "y": 16.4
- },
- {
- "x": "2019-06-01 00:00:00",
- "y": 24
- },
- {
- "x": "2019-07-01 00:00:00",
- "y": 24.2
- },
- {
- "x": "2020-03-01 00:00:00",
- "y": 21.3
- },
- {
- "x": "2020-05-01 00:00:00",
- "y": 21
- }
- ],
- "name": "Garage",
- "unit": "°C",
- "hide": true
- },
- "Soufflage_temperature": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 22
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 22.3
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 24.1
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 20.7
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 18.1
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 14.6
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 16.5
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 16.7
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 13.4
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 18.2
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 19.8
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 20.4
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 24.9
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 22.8
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 22.3
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 20.2
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 17
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 17.8
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 18.3
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 17.8
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 19.1
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 20.7
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 24.1
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 6.6
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 6.4
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 4.8
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 9.9
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 15.3
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 15.8
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 20.1
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 21.8
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 21.9
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 17.1
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 13.2
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 12.8
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 11.1
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 11.7
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 11.3
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 24.2
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 18.5
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 22.2
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 24.2
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 23.8
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 23
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 20.9
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 19.3
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 14.6
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 14.9
- },
- {
- "x": "2018-01-01 00:00:00",
- "y": 16.4
- },
- {
- "x": "2018-02-01 00:00:00",
- "y": 13.5
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 14.7
- }
- ],
- "name": "Soufflage",
- "unit": "°C",
- "hide": true
- },
- "Mezzanine_temperature": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 23.3
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 23.5
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 25.9
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 23.1
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 21.5
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 19.7
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 19.4
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 19
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 15.3
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 19.9
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 20.5
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 20.8
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 22.2
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 25.7
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 23.1
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 23
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 21.5
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 19.5
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 20
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 20
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 19.6
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 21.1
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 21.6
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 22.3
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 25.9
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 21.3
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 20.9
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 19.9
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 19.6
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 17.6
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 19.9
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 19.5
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 21.6
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 23.5
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 25.4
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 25.1
- },
- {
- "x": "2016-09-01 00:00:00",
- "y": 24.2
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 21.8
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 20.6
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 22.8
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 24.9
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 24.9
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 24.2
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 23.2
- },
- {
- "x": "2019-03-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2019-04-01 00:00:00",
- "y": 22.6
- },
- {
- "x": "2019-05-01 00:00:00",
- "y": 22.2
- },
- {
- "x": "2019-06-01 00:00:00",
- "y": 24.4
- },
- {
- "x": "2019-07-01 00:00:00",
- "y": 25.6
- },
- {
- "x": "2019-08-01 00:00:00",
- "y": 23.9
- }
- ],
- "name": "Mezzanine",
- "unit": "°C",
- "hide": false
- },
- "Extraction_temperature": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 22
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 22.4
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 24.6
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 21.7
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 19.2
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 17.3
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 18.4
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 20.3
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 16.2
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 20.8
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 21.4
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 21.7
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 25.5
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 21.3
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 19.3
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 20.6
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 20.8
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 18.8
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": -90.2
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 24
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 20.4
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 24.4
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 24.7
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 23.7
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 22.8
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 21.8
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 17.9
- }
- ],
- "name": "Extraction",
- "unit": "°C",
- "hide": true
- },
- "Bureau_temperature": {
- "data": [
- {
- "x": "2012-08-01 00:00:00",
- "y": 26
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 26.3
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 24.8
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 24.4
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 23.6
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 23.9
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 18
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 23.2
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 22.6
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 22.6
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 26.1
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 23.9
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 23.5
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 22.2
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 23.7
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 23.9
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 23.5
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 22.8
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 22.9
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 23.6
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 27
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 24
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 22.5
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 20.9
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 23.5
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 23.7
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 22.4
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 23.3
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 23.2
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 26
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 26.3
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 24.3
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 23.7
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 22.6
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 22.5
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 22
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 22.8
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 20.8
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 22.8
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 22.1
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 23.1
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 24.4
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 26.3
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 26
- },
- {
- "x": "2016-09-01 00:00:00",
- "y": 24.9
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 22.9
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 23.9
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 24.6
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 25.2
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 33.8
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 38.6
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 35.3
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 35.2
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 36.2
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 24.3
- },
- {
- "x": "2018-01-01 00:00:00",
- "y": 23.6
- },
- {
- "x": "2018-02-01 00:00:00",
- "y": 24.6
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2018-04-01 00:00:00",
- "y": 24.8
- },
- {
- "x": "2018-05-01 00:00:00",
- "y": 26.1
- },
- {
- "x": "2018-06-01 00:00:00",
- "y": 26.5
- },
- {
- "x": "2018-07-01 00:00:00",
- "y": 30
- },
- {
- "x": "2018-08-01 00:00:00",
- "y": 27.5
- },
- {
- "x": "2019-03-01 00:00:00",
- "y": 25.3
- },
- {
- "x": "2019-04-01 00:00:00",
- "y": 26.1
- },
- {
- "x": "2019-05-01 00:00:00",
- "y": 25.2
- },
- {
- "x": "2019-06-01 00:00:00",
- "y": 27.3
- },
- {
- "x": "2019-07-01 00:00:00",
- "y": 30.2
- },
- {
- "x": "2019-08-01 00:00:00",
- "y": 25.6
- },
- {
- "x": "2020-03-01 00:00:00",
- "y": 36
- },
- {
- "x": "2020-04-01 00:00:00",
- "y": 35.2
- },
- {
- "x": "2020-05-01 00:00:00",
- "y": 37.4
- }
- ],
- "name": "Bureau",
- "unit": "°C",
- "hide": false
- },
- "Temp_Nord_temperature": {
- "data": [
- {
- "x": "2012-08-01 00:00:00",
- "y": 22.9
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 15.4
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 12.8
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 8.5
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 18.1
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 22
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 16.8
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 21.2
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 21.3
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 21.9
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 26.2
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 24.5
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 23.6
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 22
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 22.5
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 22.7
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 22.5
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 20.7
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 21.5
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 22.4
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 23.4
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 26.8
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 23.7
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 22.1
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 19.2
- }
- ],
- "name": "Temp_Nord",
- "unit": "°C",
- "hide": true
- },
- "Chambre_RDC_hygrometrie": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 63
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 59
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 56
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 54
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 59
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 67
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 62
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 46
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 42
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 44
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 47
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 50
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 56
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 60
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 59
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 59
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 62
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 49
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 45
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 52
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 48
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 47
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 48
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 53
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 63
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 57
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 56
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 47
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 47
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 43
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 47
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 47
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 46
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 56
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 54
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 59
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 54
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 57
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 59
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 63
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 64
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 59
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 55
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 53
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 52
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 61
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 58
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 52
- },
- {
- "x": "2016-09-01 00:00:00",
- "y": 54
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 56
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 51
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 58
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 60
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 60
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 59
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 55
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 54
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 60
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 49
- },
- {
- "x": "2018-01-01 00:00:00",
- "y": 51
- },
- {
- "x": "2018-02-01 00:00:00",
- "y": 43
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 44
- },
- {
- "x": "2018-04-01 00:00:00",
- "y": 49
- },
- {
- "x": "2018-05-01 00:00:00",
- "y": 59
- },
- {
- "x": "2018-06-01 00:00:00",
- "y": 61
- },
- {
- "x": "2018-07-01 00:00:00",
- "y": 56
- },
- {
- "x": "2018-08-01 00:00:00",
- "y": 51
- },
- {
- "x": "2019-03-01 00:00:00",
- "y": 41
- },
- {
- "x": "2019-04-01 00:00:00",
- "y": 43
- },
- {
- "x": "2019-05-01 00:00:00",
- "y": 50
- },
- {
- "x": "2019-06-01 00:00:00",
- "y": 57
- },
- {
- "x": "2019-07-01 00:00:00",
- "y": 52
- },
- {
- "x": "2019-08-01 00:00:00",
- "y": 48
- },
- {
- "x": "2020-03-01 00:00:00",
- "y": 51
- }
- ],
- "name": "Chambre_RDC",
- "unit": "%",
- "hide": false
- },
- "Exterieure_hygrometrie": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 63
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 59
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 50
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 49
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 53
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 69
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 82
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 85
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 80
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 72
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 67
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 74
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 70
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 40
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 75
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 84
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 74
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 79
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 74
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 65
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 66
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 67
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 68
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 76
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 79
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 82
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 81
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 70
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 69
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 60
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 82
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 68
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 55
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 59
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 65
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 74
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 75
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 69
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 78
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 76
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 67
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 67
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 64
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 68
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 54
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 48
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 49
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 46
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 48
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 41
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 48
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 62
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 54
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 56
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 59
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 62
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 50
- },
- {
- "x": "2018-04-01 00:00:00",
- "y": 41
- },
- {
- "x": "2018-05-01 00:00:00",
- "y": 61
- },
- {
- "x": "2018-06-01 00:00:00",
- "y": 43
- },
- {
- "x": "2018-07-01 00:00:00",
- "y": 35
- },
- {
- "x": "2018-08-01 00:00:00",
- "y": 37
- }
- ],
- "name": "Exterieure",
- "unit": "%",
- "hide": false
- },
- "Sejour_hygrometrie": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 60
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 57
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 54
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 52
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 55
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 63
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 61
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 45
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 41
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 43
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 45
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 52
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 57
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 60
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 58
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 56
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 60
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 48
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 44
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 51
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 46
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 44
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 45
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 49
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 61
- },
- {
- "x": "2014-10-01 00:00:00",
- "y": 54
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 52
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 46
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 46
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 41
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 45
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 44
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 47
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 54
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 53
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 55
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 49
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 54
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 55
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 59
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 63
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 60
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 52
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 50
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 48
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 57
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 55
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 49
- },
- {
- "x": "2016-09-01 00:00:00",
- "y": 51
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 51
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 47
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 54
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 57
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 57
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 57
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 52
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 50
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 56
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 47
- },
- {
- "x": "2018-01-01 00:00:00",
- "y": 50
- },
- {
- "x": "2018-02-01 00:00:00",
- "y": 41
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 41
- },
- {
- "x": "2018-04-01 00:00:00",
- "y": 46
- },
- {
- "x": "2018-05-01 00:00:00",
- "y": 56
- },
- {
- "x": "2018-06-01 00:00:00",
- "y": 58
- },
- {
- "x": "2018-07-01 00:00:00",
- "y": 54
- },
- {
- "x": "2018-08-01 00:00:00",
- "y": 48
- },
- {
- "x": "2019-03-01 00:00:00",
- "y": 36
- },
- {
- "x": "2019-04-01 00:00:00",
- "y": 39
- },
- {
- "x": "2019-05-01 00:00:00",
- "y": 46
- },
- {
- "x": "2019-06-01 00:00:00",
- "y": 54
- },
- {
- "x": "2019-07-01 00:00:00",
- "y": 49
- },
- {
- "x": "2019-08-01 00:00:00",
- "y": 45
- },
- {
- "x": "2020-03-01 00:00:00",
- "y": 45
- }
- ],
- "name": "Sejour",
- "unit": "%",
- "hide": false
- },
- "Soufflage_hygrometrie": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 64
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 59
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 58
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 60
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 71
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 84
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 66
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 40
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 41
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 38
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 39
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 43
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 50
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 57
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 58
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 55
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 57
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 47
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 40
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 48
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 40
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 37
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 45
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 47
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 82
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 84
- },
- {
- "x": "2015-02-01 00:00:00",
- "y": 78
- },
- {
- "x": "2015-03-01 00:00:00",
- "y": 72
- },
- {
- "x": "2015-04-01 00:00:00",
- "y": 54
- },
- {
- "x": "2015-05-01 00:00:00",
- "y": 75
- },
- {
- "x": "2015-06-01 00:00:00",
- "y": 72
- },
- {
- "x": "2015-07-01 00:00:00",
- "y": 60
- },
- {
- "x": "2015-08-01 00:00:00",
- "y": 61
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 61
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 80
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 88
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 90
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 96
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 97
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 68
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 64
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 71
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 73
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 74
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 76
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 72
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 72
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 82
- },
- {
- "x": "2017-12-01 00:00:00",
- "y": 67
- },
- {
- "x": "2018-01-01 00:00:00",
- "y": 72
- },
- {
- "x": "2018-02-01 00:00:00",
- "y": 57
- },
- {
- "x": "2018-03-01 00:00:00",
- "y": 59
- }
- ],
- "name": "Soufflage",
- "unit": "%",
- "hide": true
- },
- "Mezzanine_hygrometrie": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 59
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 56
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 52
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 52
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 56
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 64
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 64
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 49
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 43
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 45
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 46
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 53
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 57
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 58
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 57
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 57
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 61
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 51
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 45
- },
- {
- "x": "2014-01-01 00:00:00",
- "y": 54
- },
- {
- "x": "2014-02-01 00:00:00",
- "y": 48
- },
- {
- "x": "2014-03-01 00:00:00",
- "y": 45
- },
- {
- "x": "2014-04-01 00:00:00",
- "y": 46
- },
- {
- "x": "2014-05-01 00:00:00",
- "y": 50
- },
- {
- "x": "2014-06-01 00:00:00",
- "y": 60
- },
- {
- "x": "2015-09-01 00:00:00",
- "y": 52
- },
- {
- "x": "2015-10-01 00:00:00",
- "y": 55
- },
- {
- "x": "2015-11-01 00:00:00",
- "y": 57
- },
- {
- "x": "2015-12-01 00:00:00",
- "y": 60
- },
- {
- "x": "2016-01-01 00:00:00",
- "y": 66
- },
- {
- "x": "2016-02-01 00:00:00",
- "y": 65
- },
- {
- "x": "2016-03-01 00:00:00",
- "y": 55
- },
- {
- "x": "2016-04-01 00:00:00",
- "y": 51
- },
- {
- "x": "2016-05-01 00:00:00",
- "y": 50
- },
- {
- "x": "2016-06-01 00:00:00",
- "y": 58
- },
- {
- "x": "2016-07-01 00:00:00",
- "y": 55
- },
- {
- "x": "2016-08-01 00:00:00",
- "y": 49
- },
- {
- "x": "2016-09-01 00:00:00",
- "y": 52
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 54
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 50
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 55
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 55
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 57
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 56
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 54
- },
- {
- "x": "2019-03-01 00:00:00",
- "y": 39
- },
- {
- "x": "2019-04-01 00:00:00",
- "y": 40
- },
- {
- "x": "2019-05-01 00:00:00",
- "y": 48
- },
- {
- "x": "2019-06-01 00:00:00",
- "y": 53
- },
- {
- "x": "2019-07-01 00:00:00",
- "y": 48
- },
- {
- "x": "2019-08-01 00:00:00",
- "y": 46
- }
- ],
- "name": "Mezzanine",
- "unit": "%",
- "hide": false
- },
- "Extraction_hygrometrie": {
- "data": [
- {
- "x": "2012-06-01 00:00:00",
- "y": 64
- },
- {
- "x": "2012-07-01 00:00:00",
- "y": 60
- },
- {
- "x": "2012-08-01 00:00:00",
- "y": 56
- },
- {
- "x": "2012-09-01 00:00:00",
- "y": 59
- },
- {
- "x": "2012-10-01 00:00:00",
- "y": 65
- },
- {
- "x": "2012-11-01 00:00:00",
- "y": 77
- },
- {
- "x": "2012-12-01 00:00:00",
- "y": 62
- },
- {
- "x": "2013-01-01 00:00:00",
- "y": 43
- },
- {
- "x": "2013-02-01 00:00:00",
- "y": 40
- },
- {
- "x": "2013-03-01 00:00:00",
- "y": 40
- },
- {
- "x": "2013-04-01 00:00:00",
- "y": 42
- },
- {
- "x": "2013-05-01 00:00:00",
- "y": 45
- },
- {
- "x": "2013-06-01 00:00:00",
- "y": 52
- },
- {
- "x": "2013-07-01 00:00:00",
- "y": 57
- },
- {
- "x": "2013-08-01 00:00:00",
- "y": 57
- },
- {
- "x": "2013-09-01 00:00:00",
- "y": 55
- },
- {
- "x": "2013-10-01 00:00:00",
- "y": 58
- },
- {
- "x": "2013-11-01 00:00:00",
- "y": 47
- },
- {
- "x": "2013-12-01 00:00:00",
- "y": 39
- },
- {
- "x": "2014-11-01 00:00:00",
- "y": 55
- },
- {
- "x": "2014-12-01 00:00:00",
- "y": 47
- },
- {
- "x": "2015-01-01 00:00:00",
- "y": 89
- },
- {
- "x": "2017-03-01 00:00:00",
- "y": 50
- },
- {
- "x": "2017-04-01 00:00:00",
- "y": 50
- },
- {
- "x": "2017-05-01 00:00:00",
- "y": 56
- },
- {
- "x": "2017-06-01 00:00:00",
- "y": 59
- },
- {
- "x": "2017-07-01 00:00:00",
- "y": 58
- },
- {
- "x": "2017-08-01 00:00:00",
- "y": 60
- },
- {
- "x": "2017-09-01 00:00:00",
- "y": 55
- },
- {
- "x": "2017-10-01 00:00:00",
- "y": 54
- },
- {
- "x": "2017-11-01 00:00:00",
- "y": 57
- }
- ],
- "name": "Extraction",
- "unit": "%",
- "hide": true
- }
-}
diff --git a/modules/private/websites/papa/maison_bbc_static/favicon.ico b/modules/private/websites/papa/maison_bbc_static/favicon.ico
deleted file mode 100644
index 03990f9..0000000
Binary files a/modules/private/websites/papa/maison_bbc_static/favicon.ico and /dev/null differ
diff --git a/modules/private/websites/papa/maison_bbc_static/index.html b/modules/private/websites/papa/maison_bbc_static/index.html
deleted file mode 100644
index 78c318c..0000000
--- a/modules/private/websites/papa/maison_bbc_static/index.html
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
- Pause
-
-
-
-
-
-
-
-
-
- Site web en pause !
-
-
-
Le site est actuellement en pause.
-
- Données historiques
-
- Consommation moyenne
- Consommation totale
- Hygrométrie
- Température
-
-
-
-
-
-
-
diff --git a/modules/private/websites/papa/maison_bbc_static/lamaison.png b/modules/private/websites/papa/maison_bbc_static/lamaison.png
deleted file mode 100644
index dad243c..0000000
Binary files a/modules/private/websites/papa/maison_bbc_static/lamaison.png and /dev/null differ
diff --git a/modules/private/websites/papa/surveillance.nix b/modules/private/websites/papa/surveillance.nix
deleted file mode 100644
index a8e5149..0000000
--- a/modules/private/websites/papa/surveillance.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.papa.surveillance;
- varDir = "/var/lib/ftp/papa";
- apacheUser = config.services.httpd.Prod.user;
-in {
- options.myServices.websites.papa.surveillance.enable = lib.mkEnableOption "enable Papa surveillance's website";
-
- config = lib.mkIf cfg.enable {
- security.acme.certs."ftp".extraDomains."surveillance.maison.bbc.bouya.org" = null;
-
- services.cron = {
- systemCronJobs = let
- script = pkgs.writeScript "cleanup-papa" ''
- #!${pkgs.stdenv.shell}
- d=$(date -d "7 days ago" +%Y%m%d)
- for i in /var/lib/ftp/papa/*/20[0-9][0-9][0-9][0-9][0-9][0-9]; do
- if [ "$d" -gt $(basename $i) ]; then
- rm -rf "$i"
- fi
- done
- '';
- in
- [
- ''
- 0 6 * * * ${apacheUser} ${script}
- ''
- ];
- };
-
- services.websites.env.production.vhostConfs.papa_surveillance = {
- certName = "papa";
- certMainHost = "surveillance.maison.bbc.bouya.org";
- hosts = [ "surveillance.maison.bbc.bouya.org" ];
- root = varDir;
- extraConfig = [
- ''
- Use Apaxy "${varDir}" "title .duplicity-ignore"
-
- Use LDAPConnect
- Options Indexes
- AllowOverride None
- Require ldap-group cn=surveillance.maison.bbc.bouya.org,cn=httpd,ou=services,dc=immae,dc=eu
-
- ''
- ];
- };
- };
-}
-
diff --git a/modules/private/websites/patrick_fodella/altermondia.nix b/modules/private/websites/patrick_fodella/altermondia.nix
deleted file mode 100644
index 2a41aa3..0000000
--- a/modules/private/websites/patrick_fodella/altermondia.nix
+++ /dev/null
@@ -1,73 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.patrick_fodella.altermondia;
- varDir = "/var/lib/ftp/patrick_fodella/altermondia";
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
-in {
- options.myServices.websites.patrick_fodella.altermondia.enable = lib.mkEnableOption "enable Patrick Fodella Altermondia's website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "altermondia.org"; } ];
-
- system.activationScripts.patrick_fodella_altermondia = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/php/sessions/patrick_fodella_altermondia
- '';
- };
- systemd.services.phpfpm-patrick_fodella_altermondia.after = lib.mkAfter [ "mysql.service" ];
- systemd.services.phpfpm-patrick_fodella_altermondia.wants = [ "mysql.service" ];
- services.phpfpm.pools.patrick_fodella_altermondia = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
-
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[open_basedir]" = "/var/lib/php/sessions/patrick_fodella_altermondia:${varDir}:/tmp";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/patrick_fodella_altermondia";
- };
- phpOptions = config.services.phpfpm.phpOptions + ''
- disable_functions = "mail"
- '';
- phpPackage = pkgs.php72;
- };
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.patrick_fodella_altermondia = {
- certName = "patrick_fodella";
- addToCerts = true;
- hosts = ["altermondia.org" "www.altermondia.org" ];
- root = varDir;
- extraConfig = [
- ''
- Use Stats altermondia.org
-
- RewriteEngine on
- RewriteCond "%{HTTP_HOST}" "!^altermondia\.org$" [NC]
- RewriteRule ^(.+)$ https://altermondia.org$1 [R=302,L]
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.patrick_fodella_altermondia.socket}|fcgi://localhost"
-
-
-
- AllowOverride None
- Require all denied
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride all
- Require all granted
-
- ''
- ];
- };
- };
-}
-
diff --git a/modules/private/websites/patrick_fodella/ecolyeu.nix b/modules/private/websites/patrick_fodella/ecolyeu.nix
deleted file mode 100644
index 00dab76..0000000
--- a/modules/private/websites/patrick_fodella/ecolyeu.nix
+++ /dev/null
@@ -1,72 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.patrick_fodella.ecolyeu;
- varDir = "/var/lib/ftp/patrick_fodella/ecolyeu_pessicart";
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
-in {
- options.myServices.websites.patrick_fodella.ecolyeu.enable = lib.mkEnableOption "enable Patrick Fodella Ecolyeu's website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "ecolyeu-pessicart-nice.fr"; } ];
-
- system.activationScripts.patrick_fodella_ecolyeu = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/php/sessions/patrick_fodella_ecolyeu
- '';
- };
- systemd.services.phpfpm-patrick_fodella_ecolyeu.after = lib.mkAfter [ "mysql.service" ];
- systemd.services.phpfpm-patrick_fodella_ecolyeu.wants = [ "mysql.service" ];
- services.phpfpm.pools.patrick_fodella_ecolyeu = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
-
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[open_basedir]" = "/var/lib/php/sessions/patrick_fodella_ecolyeu:${varDir}:/tmp";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/patrick_fodella_ecolyeu";
- };
- phpOptions = config.services.phpfpm.phpOptions + ''
- disable_functions = "mail"
- '';
- phpPackage = pkgs.php72;
- };
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.patrick_fodella_ecolyeu = {
- certName = "patrick_fodella";
- certMainHost = "ecolyeu-pessicart-nice.fr";
- hosts = ["ecolyeu-pessicart-nice.fr" "www.ecolyeu-pessicart-nice.fr" ];
- root = varDir;
- extraConfig = [
- ''
- Use Stats ecolyeu-pessicart-nice.fr
-
- RewriteEngine on
- RewriteCond "%{HTTP_HOST}" "!^www\.ecolyeu-pessicart-nice\.fr$" [NC]
- RewriteRule ^(.+)$ https://www.ecolyeu-pessicart-nice.fr$1 [R=302,L]
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.patrick_fodella_ecolyeu.socket}|fcgi://localhost"
-
-
-
- AllowOverride None
- Require all denied
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride all
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/piedsjaloux/app/default.nix b/modules/private/websites/piedsjaloux/app/default.nix
deleted file mode 100644
index 4525a18..0000000
--- a/modules/private/websites/piedsjaloux/app/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ environment, varDir, secretsPath
-, composerEnv, fetchurl, fetchgit, sources }:
-let
- app = composerEnv.buildPackage (
- import ./php-packages.nix { inherit composerEnv fetchurl fetchgit; } //
- rec {
- version = sources.websites-piedsjaloux-app.version;
- pname = "piedsjaloux";
- name = "${pname}-${version}";
- src = sources.websites-piedsjaloux-app;
- noDev = (environment == "prod");
- preInstall = ''
- export SYMFONY_ENV="${environment}"
- '';
- # /!\ miniatures and data need to be in the same physical dir due to a
- # bug in leapt.im (searches for data/../miniatures)
- postInstall = ''
- cd $out
- rm app/config/parameters.yml
- ln -sf ${secretsPath} app/config/parameters.yml
- rm -rf var/{logs,cache,data,miniatures,tmp}
- ln -sf ${varDir}/{logs,cache,data,miniatures,tmp} var/
- '';
- passthru = {
- inherit varDir environment secretsPath;
- webRoot = "${app}/web";
- };
- });
-in app
diff --git a/modules/private/websites/piedsjaloux/app/php-packages.nix b/modules/private/websites/piedsjaloux/app/php-packages.nix
deleted file mode 100644
index 7b99936..0000000
--- a/modules/private/websites/piedsjaloux/app/php-packages.nix
+++ /dev/null
@@ -1,1009 +0,0 @@
-# Generated with composer2nix and adapted to return only the list of
-# packages
-{ composerEnv, fetchurl, fetchgit ? null }:
-{
- packages = {
- "behat/transliterator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "behat-transliterator-826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c";
- src = fetchurl {
- url = https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c;
- sha256 = "1mgc9azx79fkrxahji3xwbgqhlcnvh3xk6llqdvhjb7vgzj4bqq0";
- };
- };
- };
- "components/bootstrap" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "components-bootstrap-5d60b2efd3159e1a9e203901849b3493c5aac61f";
- src = fetchurl {
- url = https://api.github.com/repos/components/bootstrap/zipball/5d60b2efd3159e1a9e203901849b3493c5aac61f;
- sha256 = "0jdyxl86dr2lf8az1vby84i7kdn1qcqkp8fy60rs18gav0aqp4fg";
- };
- };
- };
- "components/jquery" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "components-jquery-459648cda77875519c5da3ae1dd0ed5d170aa649";
- src = fetchurl {
- url = https://api.github.com/repos/components/jquery/zipball/459648cda77875519c5da3ae1dd0ed5d170aa649;
- sha256 = "04jv8yifhwx0cpkw3y3ng0bs2dv77pzrdd640p59rjxwba6r1lbb";
- };
- };
- };
- "components/jqueryui" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "components-jqueryui-c34f8dbf3ba57b3784b93f26119f436c0e8288e1";
- src = fetchurl {
- url = https://api.github.com/repos/components/jqueryui/zipball/c34f8dbf3ba57b3784b93f26119f436c0e8288e1;
- sha256 = "00nkg6z8g6l3jysyzsfmfxhxqcdsd3jfqib28j8kn2frzx508xv9";
- };
- };
- };
- "composer/ca-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "composer-ca-bundle-8afa52cd417f4ec417b4bfe86b68106538a87660";
- src = fetchurl {
- url = https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660;
- sha256 = "18b0gq29frjf4yhl4sl3i3zbz6zr3qjgsjb8cjdhz65vpb50581p";
- };
- };
- };
- "container-interop/container-interop" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "container-interop-container-interop-79cbf1341c22ec75643d841642dd5d6acd83bdb8";
- src = fetchurl {
- url = https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8;
- sha256 = "1pxm461g5flcq50yabr01nw8w17n3g7klpman9ps3im4z0604m52";
- };
- };
- };
- "dmishh/settings-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "dmishh-settings-bundle-0ee48b015691694a8dcbd3ee654d33386e7bf478";
- src = fetchurl {
- url = https://api.github.com/repos/dmishh/SettingsBundle/zipball/0ee48b015691694a8dcbd3ee654d33386e7bf478;
- sha256 = "0m2fw5shvnkqlz0nm27ggpmkipfh377y1hjsw343zv1nn72nxfqf";
- };
- };
- };
- "doctrine/annotations" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-annotations-c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5;
- sha256 = "0b80xpqd3j99xgm0c41kbgy0k6knrfnd29223c93295sb12112g7";
- };
- };
- };
- "doctrine/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-cache-d768d58baee9a4862ca783840eca1b9add7a7f57";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57;
- sha256 = "1kljhw4gqp12iz88h6ymsrlfir2fis7icn6dffyizfc1csyb4s2i";
- };
- };
- };
- "doctrine/collections" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-collections-a01ee38fcd999f34d9bfbcee59dbda5105449cbf";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf;
- sha256 = "0d36zc21ka0pdac9xpkxsgf5zzw9gp0m9lk3r3xs5y70j0lkkkis";
- };
- };
- };
- "doctrine/common" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-common-30e33f60f64deec87df728c02b107f82cdafad9d";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/common/zipball/30e33f60f64deec87df728c02b107f82cdafad9d;
- sha256 = "0s4vv14ibyx62a9aj3wn5cs2bbxd72fajmfmi8qb5l11gx0375na";
- };
- };
- };
- "doctrine/dbal" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-dbal-22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/dbal/zipball/22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9;
- sha256 = "0kbahs699jd8pxf512dgg7arv49dc7qzi3mx8snxqm4h15n5brnj";
- };
- };
- };
- "doctrine/doctrine-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-bundle-82d2c63cd09acbde2332f55d9aa7b28aefe4983d";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineBundle/zipball/82d2c63cd09acbde2332f55d9aa7b28aefe4983d;
- sha256 = "0gzrigv360rp50yxpwidbkf8vlagym0w1if010yz5xcfrz37cpn3";
- };
- };
- };
- "doctrine/doctrine-cache-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-cache-bundle-5514c90d9fb595e1095e6d66ebb98ce9ef049927";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/5514c90d9fb595e1095e6d66ebb98ce9ef049927;
- sha256 = "04njrfhw4fc2ifacd9h0wd9i14l7ycv3hanbqrw5ilsai02j6asa";
- };
- };
- };
- "doctrine/doctrine-migrations-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-migrations-bundle-49fa399181db4bf4f9f725126bd1cb65c4398dce";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49fa399181db4bf4f9f725126bd1cb65c4398dce;
- sha256 = "1a73xjhjrjlvkh8d253kfc2rbxd2h4hwafhv5078dy7rg6x9blyn";
- };
- };
- };
- "doctrine/event-manager" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-event-manager-a520bc093a0170feeb6b14e9d83f3a14452e64b3";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3;
- sha256 = "165cxvw4idqj01l63nya2whpdb3fz6ld54rx198b71bzwfrydl88";
- };
- };
- };
- "doctrine/inflector" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-inflector-5527a48b7313d15261292c149e55e26eae771b0a";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a;
- sha256 = "0ng6vlwjr8h6hqwa32ynykz1mhlfsff5hirjidlk086ab6njppa5";
- };
- };
- };
- "doctrine/instantiator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-instantiator-185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda;
- sha256 = "1mah9a6mb30qad1zryzjain2dxw29d8h4bjkbcs3srpm3p891msy";
- };
- };
- };
- "doctrine/lexer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-lexer-83893c552fd2045dd78aef794c31e694c37c0b8c";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c;
- sha256 = "0cyh3vwcl163cx1vrcwmhlh5jg9h47xwiqgzc6rwscxw0ppd1v74";
- };
- };
- };
- "doctrine/migrations" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-migrations-215438c0eef3e5f9b7da7d09c6b90756071b43e6";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/migrations/zipball/215438c0eef3e5f9b7da7d09c6b90756071b43e6;
- sha256 = "0k6sgw65vji9rgib10mq2m634m41a67inspkrcw4qixig2lnb3ld";
- };
- };
- };
- "doctrine/orm" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-orm-434820973cadf2da2d66e7184be370084cc32ca8";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/orm/zipball/434820973cadf2da2d66e7184be370084cc32ca8;
- sha256 = "114fyq8kaf5qzfkp8sdygqflf3z94va1cs5c3scycfpg9cmi4gls";
- };
- };
- };
- "doctrine/persistence" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-persistence-c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/persistence/zipball/c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38;
- sha256 = "0xdm5n38rjas1mlyxc15sg1as5h7y012mdb0j9lr6cvphgnaxxv7";
- };
- };
- };
- "doctrine/reflection" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-reflection-02538d3f95e88eb397a5f86274deb2c6175c2ab6";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6;
- sha256 = "12n9zik4lxb9lx1jf0nbvg9vl9nv958a7z1yjx48scfxd1d1sxjy";
- };
- };
- };
- "eko/feedbundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "eko-feedbundle-d4e626616d9ccf6527212d3bdda15f9af3838e4f";
- src = fetchurl {
- url = https://api.github.com/repos/eko/FeedBundle/zipball/d4e626616d9ccf6527212d3bdda15f9af3838e4f;
- sha256 = "145f4mq2bpsdayaiqmgz1asmjx2is4v327h2ny2wp03knnkjvnfq";
- };
- };
- };
- "fig/link-util" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "fig-link-util-1a07821801a148be4add11ab0603e4af55a72fac";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac;
- sha256 = "0ky1pq4a17br5zvcychjghgwr6wpkgp409hdv0ljdk3ks90w5w64";
- };
- };
- };
- "gedmo/doctrine-extensions" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "gedmo-doctrine-extensions-87c78ff9fd4b90460386f753d95622f6fbbfcb27";
- src = fetchurl {
- url = https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/87c78ff9fd4b90460386f753d95622f6fbbfcb27;
- sha256 = "1i33xy9s18rncc1fllwi2qi7hrxj8g762fvgl9np7xndxa7kclyb";
- };
- };
- };
- "gregwar/captcha" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "gregwar-captcha-cf953dd79748406e0292cea8c565399681e4d345";
- src = fetchurl {
- url = https://api.github.com/repos/Gregwar/Captcha/zipball/cf953dd79748406e0292cea8c565399681e4d345;
- sha256 = "153m7bkhs3drxk0jfbq67a8vr1m13g7isc4ck44k5hyfzpcazb5i";
- };
- };
- };
- "gregwar/captcha-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "gregwar-captcha-bundle-c2d5468556890dd25e0b53bd345fc205562c86f7";
- src = fetchurl {
- url = https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/c2d5468556890dd25e0b53bd345fc205562c86f7;
- sha256 = "04wcvqq457h6v7mzmrar946swd9akk27fmfig4qj8hpxzj250cgk";
- };
- };
- };
- "helios-ag/fm-bbcode-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "helios-ag-fm-bbcode-bundle-d88ff5ca6c0ab71ec094d5a7d56b0bc8bc100363";
- src = fetchurl {
- url = https://api.github.com/repos/helios-ag/FMBbCodeBundle/zipball/d88ff5ca6c0ab71ec094d5a7d56b0bc8bc100363;
- sha256 = "13g9ddd2p3nf1vrbkf6l00qdqz89rq6d8l20p68dmiy7mb6kpynl";
- };
- };
- };
- "immae/piedsjaloux-ckeditor-component" = {
- targetDir = "";
- src = fetchgit {
- name = "immae-piedsjaloux-ckeditor-component-9946db9daaa76448d0e43247472cdedd2a5ea22a";
- url = "https://git.immae.eu/perso/Immae/Projets/packagist/piedsjaloux-ckeditor-component.git";
- rev = "9946db9daaa76448d0e43247472cdedd2a5ea22a";
- sha256 = "183rgl23li3bqsynfmvv2s7jvlmqf6a5pskgrcxlaxcrr0d09n8c";
- };
- };
- "incenteev/composer-parameter-handler" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "incenteev-composer-parameter-handler-933c45a34814f27f2345c11c37d46b3ca7303550";
- src = fetchurl {
- url = https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550;
- sha256 = "1zqdwlcl790kjyz4rkpva35xkfsp8kslds82fzznj0yigkgnbifm";
- };
- };
- };
- "jdorn/sql-formatter" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "jdorn-sql-formatter-64990d96e0959dff8e059dfcdc1af130728d92bc";
- src = fetchurl {
- url = https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc;
- sha256 = "1dnmkm8mxylvxjwi0bdkzrlklncqx92fa4fwqp5bh2ypj8gaagzi";
- };
- };
- };
- "kriswallsmith/assetic" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "kriswallsmith-assetic-e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1";
- src = fetchurl {
- url = https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1;
- sha256 = "1dqk4zvx8fgqf8rb81sj9bipl5431jib2b9kcvxyig5fw99irpf8";
- };
- };
- };
- "leapt/im-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "leapt-im-bundle-83442778d118f6edb537b93f9746c3a97e56c3d1";
- src = fetchurl {
- url = https://api.github.com/repos/leapt/im-bundle/zipball/83442778d118f6edb537b93f9746c3a97e56c3d1;
- sha256 = "1gm4ih3v1j0xjm7mrpspd3yacdwvbqgag22cyqmix0hc9hw3pc6a";
- };
- };
- };
- "luxifer/doctrine-functions" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "luxifer-doctrine-functions-e1c0bb1a5cb002d9fc82d8b32a5da28c02d34c6c";
- src = fetchurl {
- url = https://api.github.com/repos/luxifer/doctrine-functions/zipball/e1c0bb1a5cb002d9fc82d8b32a5da28c02d34c6c;
- sha256 = "1sw4826nvs5q0y2na9m26rbxfiaw0kfqwhky7x7apicgx5adqfa9";
- };
- };
- };
- "mjohnson/decoda" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "mjohnson-decoda-8cd0928b78a4bf5ade48b80c934370fc1f5f84a1";
- src = fetchurl {
- url = https://api.github.com/repos/milesj/decoda/zipball/8cd0928b78a4bf5ade48b80c934370fc1f5f84a1;
- sha256 = "0wcxz9yirz4zir06xvnlchqgppmyasymak06gn46jn6v6c9dsykc";
- };
- };
- };
- "monolog/monolog" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "monolog-monolog-bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266";
- src = fetchurl {
- url = https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266;
- sha256 = "0h3nnxjf2bdh7nmpqnpij99lqv6bw13r2bx83d8vn5zvblwg5png";
- };
- };
- };
- "ocramius/package-versions" = {
- targetDir = "";
- needsModifyRights = true;
- src = composerEnv.buildZipPackage {
- name = "ocramius-package-versions-4489d5002c49d55576fa0ba786f42dbb009be46f";
- src = fetchurl {
- url = https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f;
- sha256 = "039c404g9597x45xh04bnn8kmcyknkbnr57yb9s7vf29vfrg4881";
- };
- };
- };
- "ocramius/proxy-manager" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "ocramius-proxy-manager-14b137b06b0f911944132df9d51e445a35920ab1";
- src = fetchurl {
- url = https://api.github.com/repos/Ocramius/ProxyManager/zipball/14b137b06b0f911944132df9d51e445a35920ab1;
- sha256 = "10y5msgh2jdlw4w075fasv40yq01szjy15m3f0wgc89hlfmqz0sn";
- };
- };
- };
- "paragonie/random_compat" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "paragonie-random_compat-84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95";
- src = fetchurl {
- url = https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95;
- sha256 = "03nsccdvcb79l64b7lsmx0n8ldf5z3v8niqr7bpp6wg401qp9p09";
- };
- };
- };
- "psr/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-cache-d11b50ad223250cf17b86e38383413f5a6764bf8";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8;
- sha256 = "06i2k3dx3b4lgn9a4v1dlgv8l9wcl4kl7vzhh63lbji0q96hv8qz";
- };
- };
- };
- "psr/container" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-container-b7ce3b176482dbbc1245ebf52b181af44c2cf55f";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f;
- sha256 = "0rkz64vgwb0gfi09klvgay4qnw993l1dc03vyip7d7m2zxi6cy4j";
- };
- };
- };
- "psr/link" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-link-eea8e8662d5cd3ae4517c9b864493f59fca95562";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562;
- sha256 = "091k4p9irkqnmq9b0p792wz1hb7dm4rafpjilw9im9xhsxgkmr13";
- };
- };
- };
- "psr/log" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-log-6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd;
- sha256 = "1i351p3gd1pgjcjxv7mwwkiw79f1xiqr38irq22156h05zlcx80d";
- };
- };
- };
- "psr/simple-cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-simple-cache-408d5eafb83c57f6365a3ca330ff23aa4a5fa39b";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b;
- sha256 = "1djgzclkamjxi9jy4m9ggfzgq1vqxaga2ip7l3cj88p7rwkzjxgw";
- };
- };
- };
- "robloach/component-installer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "robloach-component-installer-908a859aa7c4949ba9ad67091e67bac10b66d3d7";
- src = fetchurl {
- url = https://api.github.com/repos/RobLoach/component-installer/zipball/908a859aa7c4949ba9ad67091e67bac10b66d3d7;
- sha256 = "19y5sv4k338bihzmm8iac6q43r18vxhmbpvrdhz8jn39r51ampq9";
- };
- };
- };
- "sensio/distribution-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensio-distribution-bundle-59eac70f15f97ee945924948a6f5e2f6f86b7a4b";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/59eac70f15f97ee945924948a6f5e2f6f86b7a4b;
- sha256 = "05mj4c0ahwg6l2wipyqfyyjjp1m2vvl7ymp61nvwv7zhvqacvljs";
- };
- };
- };
- "sensio/framework-extra-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensio-framework-extra-bundle-bb907234df776b68922eb4b25bfa061683597b6a";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/bb907234df776b68922eb4b25bfa061683597b6a;
- sha256 = "011hcljjcfq5qy4a7mlf0hwqxyb58yci40ini0n5rqandcyk2nck";
- };
- };
- };
- "sensiolabs/security-checker" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensiolabs-security-checker-46be3f58adac13084497961e10eed9a7fb4d44d1";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/security-checker/zipball/46be3f58adac13084497961e10eed9a7fb4d44d1;
- sha256 = "1caqf3hdfsajj9nb8fpinvs6apv90g1srwxcyxdnr6a8d6g0p6qi";
- };
- };
- };
- "swiftmailer/swiftmailer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "swiftmailer-swiftmailer-181b89f18a90f8925ef805f950d47a7190e9b950";
- src = fetchurl {
- url = https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950;
- sha256 = "0hkmawv3bhbqdavy4wxqhzajg5zqd7chsi8w27y2zdi5r35az75d";
- };
- };
- };
- "symfony/assetic-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-assetic-bundle-2e0a23a4874838e26de6f025e02fc63328921a4c";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/assetic-bundle/zipball/2e0a23a4874838e26de6f025e02fc63328921a4c;
- sha256 = "17rxrkyzxa6x5nn7qhhhdgx4z0nlznnq5fifza4wv9znca8bbwyc";
- };
- };
- };
- "symfony/monolog-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-monolog-bundle-572e143afc03419a75ab002c80a2fd99299195ff";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/monolog-bundle/zipball/572e143afc03419a75ab002c80a2fd99299195ff;
- sha256 = "0g8icydnwfbqcbc56pqyc8bv1vp31331w0r75r3hqh225p2j1nd7";
- };
- };
- };
- "symfony/polyfill-apcu" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-apcu-19e1b73bf255265ad0b568f81766ae2a3266d8d2";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-apcu/zipball/19e1b73bf255265ad0b568f81766ae2a3266d8d2;
- sha256 = "0jg33c81kwkpxk0b18jkslz9jkbkxl5k48h6m5b33dm63p1fj05r";
- };
- };
- };
- "symfony/polyfill-ctype" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-ctype-e3d826245268269cd66f8326bd8bc066687b4a19";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19;
- sha256 = "16md0qmy5jvvl7lc6n6r5hxjdr5i30vl6n9rpkm4b11rh2nqh7mh";
- };
- };
- };
- "symfony/polyfill-intl-icu" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-intl-icu-f22a90256d577c7ef7efad8df1f0201663d57644";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/f22a90256d577c7ef7efad8df1f0201663d57644;
- sha256 = "0x7h8l248l1gc07xmvfixq6p80ifdaa29qympfq3jzfb79k69slq";
- };
- };
- };
- "symfony/polyfill-mbstring" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-mbstring-c79c051f5b3a46be09205c73b80b346e4153e494";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494;
- sha256 = "18v2777cky55ah6xi4dh383mp4iddwzmnvx81qd86y1kgfykwhpi";
- };
- };
- };
- "symfony/polyfill-php56" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-php56-ff208829fe1aa48ab9af356992bb7199fed551af";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-php56/zipball/ff208829fe1aa48ab9af356992bb7199fed551af;
- sha256 = "0vmpiwakc7hpbr6jwpk7cqcy41ybgwl6jkn3q8c4ryxynknn5hfk";
- };
- };
- };
- "symfony/polyfill-php70" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-php70-6b88000cdd431cd2e940caa2cb569201f3f84224";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224;
- sha256 = "08h77r1i2q4pwdd0yk3pfhqqgk0z7gwmkzmvykx9bfv1z7a0h8ik";
- };
- };
- };
- "symfony/polyfill-util" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-util-3b58903eae668d348a7126f999b0da0f2f93611c";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-util/zipball/3b58903eae668d348a7126f999b0da0f2f93611c;
- sha256 = "00bb5mgljk6d54nyvd4gmc7mbzfr4b4q7h3rxmv8rzq613wcjp3i";
- };
- };
- };
- "symfony/swiftmailer-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-swiftmailer-bundle-c4808f5169efc05567be983909d00f00521c53ec";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec;
- sha256 = "0jmd3slhb3gf3c3krmk2a9fi4ixdxvqlimdkfpj0sfaaq0115y01";
- };
- };
- };
- "symfony/symfony" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-symfony-f6b8ddc362b1cf3fb06548693c3adbb736092412";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/symfony/zipball/f6b8ddc362b1cf3fb06548693c3adbb736092412;
- sha256 = "0ip7k5xf34w4p1zvv2nkv4nyik3asidk3zlgzyc1v57429z0f28q";
- };
- };
- };
- "twig/extensions" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "twig-extensions-57873c8b0c1be51caa47df2cdb824490beb16202";
- src = fetchurl {
- url = https://api.github.com/repos/twigphp/Twig-extensions/zipball/57873c8b0c1be51caa47df2cdb824490beb16202;
- sha256 = "1sjajjd6vnczvdrl9b8zhzr06l5dflzqiwg9d33d92q8gli4j7jn";
- };
- };
- };
- "twig/twig" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "twig-twig-a11dd39f5b6589e14f0ff3b36675d06047c589b1";
- src = fetchurl {
- url = https://api.github.com/repos/twigphp/Twig/zipball/a11dd39f5b6589e14f0ff3b36675d06047c589b1;
- sha256 = "0rnwam9379gj5m4ik0fh6c81dbr7kwj2b3x1gnmpf6awa5fm261n";
- };
- };
- };
- "zendframework/zend-code" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-code-c21db169075c6ec4b342149f446e7b7b724f95eb";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-code/zipball/c21db169075c6ec4b342149f446e7b7b724f95eb;
- sha256 = "031mfsahjkl63348020wq05273kvszx0dv2766zmzncnd6fcggw1";
- };
- };
- };
- "zendframework/zend-escaper" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-escaper-31d8aafae982f9568287cb4dce987e6aff8fd074";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-escaper/zipball/31d8aafae982f9568287cb4dce987e6aff8fd074;
- sha256 = "16gwqh9zpclc3fmf89cf738mxfh36ar3wdf9i0wvby0g0nhknkd7";
- };
- };
- };
- "zendframework/zend-eventmanager" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-eventmanager-a5e2583a211f73604691586b8406ff7296a946dd";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd;
- sha256 = "08a05gn40hfdy2zhz4gcd3r6q7m7zcaks5kpvb9dx1awgx0pzr8n";
- };
- };
- };
- "zendframework/zend-feed" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-feed-6641f4cf3f4586c63f83fd70b6d19966025c8888";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-feed/zipball/6641f4cf3f4586c63f83fd70b6d19966025c8888;
- sha256 = "0wl2pf4cq0snlp3gbl2ia662i48yils464qlfqf7gdmbn1ryzcpi";
- };
- };
- };
- "zendframework/zend-http" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-http-2c8aed3d25522618573194e7cc51351f8cd4a45b";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-http/zipball/2c8aed3d25522618573194e7cc51351f8cd4a45b;
- sha256 = "1vy6b24ihwv1g08hjnw4pd7c5171g866jnlr3j6fg0xqv79s4dn9";
- };
- };
- };
- "zendframework/zend-loader" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-loader-78f11749ea340f6ca316bca5958eef80b38f9b6c";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-loader/zipball/78f11749ea340f6ca316bca5958eef80b38f9b6c;
- sha256 = "056zp0xchc4ckijg969im5him3j4cji6hsy26fiaycwprniaqdmg";
- };
- };
- };
- "zendframework/zend-servicemanager" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-servicemanager-a1ed6140d0d3ee803fec96582593ed024950067b";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-servicemanager/zipball/a1ed6140d0d3ee803fec96582593ed024950067b;
- sha256 = "0s3aplkilrd8b18xh55h9m1yvnp9b6vnlgby4gqhqv8npnxxqir9";
- };
- };
- };
- "zendframework/zend-stdlib" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-stdlib-66536006722aff9e62d1b331025089b7ec71c065";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-stdlib/zipball/66536006722aff9e62d1b331025089b7ec71c065;
- sha256 = "0cl0lcgqb5aja6iijp0wrclxra57imwsmhkfpahdl2bsgs1inf2f";
- };
- };
- };
- "zendframework/zend-uri" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-uri-3b6463645c6766f78ce537c70cb4fdabee1e725f";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-uri/zipball/3b6463645c6766f78ce537c70cb4fdabee1e725f;
- sha256 = "0zkb88y9qbgshm8ys5yjxhz6a7fhxl7waygwn37pqsbvz74mbbvp";
- };
- };
- };
- "zendframework/zend-validator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-validator-f0789b4c4c099afdd2ecc58cc209a26c64bd4f17";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-validator/zipball/f0789b4c4c099afdd2ecc58cc209a26c64bd4f17;
- sha256 = "1lwxbr3jlldll4ccw5cn2ny1cbzh279mnfz7m1djqc8qnw16c8jl";
- };
- };
- };
- };
- devPackages = {
- "doctrine/data-fixtures" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-data-fixtures-3a1e2c3c600e615a2dffe56d4ca0875cc5233e0a";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/data-fixtures/zipball/3a1e2c3c600e615a2dffe56d4ca0875cc5233e0a;
- sha256 = "0wbxhy7hq17laqgnq9x9ygysv0n1kn7s4x3v89pk7iy622pil3sm";
- };
- };
- };
- "doctrine/doctrine-fixtures-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-doctrine-fixtures-bundle-74b8cc70a4a25b774628ee59f4cdf3623a146273";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/74b8cc70a4a25b774628ee59f4cdf3623a146273;
- sha256 = "1bbflq8k6izwqgp9ka2gyb5y96a80b4lnlc5wrgc5gnih7hqidlf";
- };
- };
- };
- "fzaninotto/faker" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "fzaninotto-faker-d0190b156bcca848d401fb80f31f504f37141c8d";
- src = fetchurl {
- url = https://api.github.com/repos/fzaninotto/Faker/zipball/d0190b156bcca848d401fb80f31f504f37141c8d;
- sha256 = "1x7xrxw14x7b0iq7sxi9ynswk8ljga62i77ch7xip4dwgq1dypvi";
- };
- };
- };
- "league/factory-muffin" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "league-factory-muffin-316ed2bac70178567f995d877b831804c9c58d5a";
- src = fetchurl {
- url = https://api.github.com/repos/thephpleague/factory-muffin/zipball/316ed2bac70178567f995d877b831804c9c58d5a;
- sha256 = "1fxh0hsqifmnhgkwyd460x3w9wn74369lmak3f1m24mn2asiynxq";
- };
- };
- };
- "league/factory-muffin-faker" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "league-factory-muffin-faker-30dbd11bb6be03b47e52bd60006ae198d20ab426";
- src = fetchurl {
- url = https://api.github.com/repos/thephpleague/factory-muffin-faker/zipball/30dbd11bb6be03b47e52bd60006ae198d20ab426;
- sha256 = "0dsimjdnsmzdd4vwjzw1gz1bb4zlhmv66g3fc9k4nj5bqch6mny1";
- };
- };
- };
- "mikey179/vfsStream" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "mikey179-vfsStream-d5fec95f541d4d71c4823bb5e30cf9b9e5b96145";
- src = fetchurl {
- url = https://github.com/bovigo/vfsStream/archive/v1.6.5.zip;
- sha256 = "16vi7ci8nxq5hxnzzjmmia73gdm55qcwn006c6hgdwa3i58dnr4l";
- };
- };
- };
- "phpdocumentor/reflection-common" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpdocumentor-reflection-common-21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6";
- src = fetchurl {
- url = https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6;
- sha256 = "1yaf1zg9lnkfnq2ndpviv0hg5bza9vjvv5l4wgcn25lx1p8a94w2";
- };
- };
- };
- "phpdocumentor/reflection-docblock" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpdocumentor-reflection-docblock-94fd0001232e47129dd3504189fa1c7225010d08";
- src = fetchurl {
- url = https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08;
- sha256 = "03zvxqb5n9ddvysj8mjdwf59h7sagj5x5z15nhs7mqpcky1w388x";
- };
- };
- };
- "phpdocumentor/type-resolver" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpdocumentor-type-resolver-9c977708995954784726e25d0cd1dddf4e65b0f7";
- src = fetchurl {
- url = https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7;
- sha256 = "0h888r2iy2290yp9i3fij8wd5b7960yi7yn1rwh26x1xxd83n2mb";
- };
- };
- };
- "phpspec/prophecy" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpspec-prophecy-4ba436b55987b4bf311cb7c6ba82aa528aac0a06";
- src = fetchurl {
- url = https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06;
- sha256 = "0sz9fg8r4yvpgrhsh6qaic3p89pafdj8bdf4izbcccq6mdhclxn6";
- };
- };
- };
- "phpunit/php-code-coverage" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-php-code-coverage-eabf68b476ac7d0f73793aada060f1c1a9bf8979";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979;
- sha256 = "0xfkf2kaqrid0ajr8qfh3qnpiqqddl0cmmdy6hd7l9y7ziy6qz8d";
- };
- };
- };
- "phpunit/php-file-iterator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-php-file-iterator-730b01bc3e867237eaac355e06a36b85dd93a8b4";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4;
- sha256 = "0kbg907g9hrx7pv8v0wnf4ifqywdgvigq6y6z00lyhgd0b8is060";
- };
- };
- };
- "phpunit/php-text-template" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-php-text-template-31f8b717e51d9a2afca6c9f046f5d69fc27c8686";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686;
- sha256 = "1y03m38qqvsbvyakd72v4dram81dw3swyn5jpss153i5nmqr4p76";
- };
- };
- };
- "phpunit/php-timer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-php-timer-3dcf38ca72b158baf0bc245e9184d3fdffa9c46f";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f;
- sha256 = "1j04r0hqzrv6m1jk5nb92k2nnana72nscqpfk3rgv3fzrrv69ljr";
- };
- };
- };
- "phpunit/php-token-stream" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-php-token-stream-1ce90ba27c42e4e44e6d8458241466380b51fa16";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16;
- sha256 = "0j1v83m268cddhyzi8qvqfzhpz12hrm3dyw6skyqvljdp7l9x6lk";
- };
- };
- };
- "phpunit/phpunit" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-phpunit-46023de9a91eec7dfb06cc56cb4e260017298517";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517;
- sha256 = "0mxhgcmc575hw3n7czindgqiha8jhdi4p19h883vf15fg6xf5iv6";
- };
- };
- };
- "phpunit/phpunit-mock-objects" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-phpunit-mock-objects-ac8e7a3db35738d56ee9a76e78a4e03d97628983";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983;
- sha256 = "0s7nyyafdqw2hp7wsd2mxnjxpk26630vv3wii6hcdb0q8xy8r78i";
- };
- };
- };
- "sebastian/comparator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-comparator-2b7424b55f5047b47ac6e5ccb20b2aea4011d9be";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be;
- sha256 = "0ymarxgnr8b3iy0w18h5z13iiv0ja17vjryryzfcwlqqhlc6w7iq";
- };
- };
- };
- "sebastian/diff" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-diff-7f066a26a962dbe58ddea9f72a4e82874a3975a4";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4;
- sha256 = "1ppx21vjj79z6d584ryq451k7kvdc511awmqjkj9g4vxj1s1h3j6";
- };
- };
- };
- "sebastian/environment" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-environment-be2c607e43ce4c89ecd60e75c6a85c126e754aea";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea;
- sha256 = "0gzgnk847kf18krq4ybbi2knzj7i0kdghsdlj6qynzzrlf7idij0";
- };
- };
- };
- "sebastian/exporter" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-exporter-42c4c2eec485ee3e159ec9884f95b431287edde4";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4;
- sha256 = "1p5mc4lqwxn79v06jjlgqxynblywcxw2mkhbf6r4jlz0bsrqafxn";
- };
- };
- };
- "sebastian/global-state" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-global-state-bc37d50fea7d017d3d340f230811c9f1d7280af4";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4;
- sha256 = "0y1x16mf9q38s7rlc7k2s6sxn2ccxmyk1q5zgh24hr4yp035f0pb";
- };
- };
- };
- "sebastian/recursion-context" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-recursion-context-b19cc3298482a335a95f3016d2f8a6950f0fbcd7";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7;
- sha256 = "1i9xdv55nkg1yy5q4lmpq1jsjif69hjrwmr1zha6b5qjf6ivlvjm";
- };
- };
- };
- "sebastian/version" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-version-58b3a85e7999757d6ad81c787a1fbf5ff6c628c6";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6;
- sha256 = "1s71b6ss29pcsm0120myriwnzla1kpj13f3f739c7k1wfm69h4wz";
- };
- };
- };
- "sensio/generator-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sensio-generator-bundle-28cbaa244bd0816fd8908b93f90380bcd7b67a65";
- src = fetchurl {
- url = https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65;
- sha256 = "1j09y037xk843q8gcyfmwgy6dmn0h67pd5jnsvhj08h92ssbl0c3";
- };
- };
- };
- "symfony/phpunit-bridge" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-phpunit-bridge-2155067dfc73e0e77dbc26f236af17e4df552de5";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/phpunit-bridge/zipball/2155067dfc73e0e77dbc26f236af17e4df552de5;
- sha256 = "1fhqyhvns69pkv086d1sp918bakqq9pk9d16nzck2s4pfdf097pj";
- };
- };
- };
- "webmozart/assert" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "webmozart-assert-83e253c8e0be5b0257b881e1827274667c5c17a9";
- src = fetchurl {
- url = https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9;
- sha256 = "04w7rrjy43k93376an7xhnxqn2ibbw5fra7rqky7j1dl1f0hkn6d";
- };
- };
- };
- };
-}
diff --git a/modules/private/websites/piedsjaloux/integration.nix b/modules/private/websites/piedsjaloux/integration.nix
deleted file mode 100644
index 3502964..0000000
--- a/modules/private/websites/piedsjaloux/integration.nix
+++ /dev/null
@@ -1,135 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- secrets = config.myEnv.websites.piedsjaloux.integration;
- webRoot = "/var/lib/ftp/immae/piedsjaloux/web";
- cfg = config.myServices.websites.piedsjaloux.integration;
- pcfg = config.services.phpApplication;
- texlive = pkgs.texlive.combine { inherit (pkgs.texlive) attachfile preprint scheme-small; };
-in {
- options.myServices.websites.piedsjaloux.integration.enable = lib.mkEnableOption "enable PiedsJaloux's website in integration";
-
- config = lib.mkIf cfg.enable {
- services.phpApplication.apps.piedsjaloux_integration = {
- websiteEnv = "integration";
- httpdUser = config.services.httpd.Inte.user;
- httpdGroup = config.services.httpd.Inte.group;
- inherit webRoot;
- varDir = "/var/lib/ftp/immae/piedsjaloux_var";
- varDirPaths = {
- "tmp" = "0700";
- };
- app = "/var/lib/ftp/immae/piedsjaloux";
- serviceDeps = [ "mysql.service" ];
- preStartActions = [
- "./bin/console --env=dev cache:clear --no-warmup"
- ];
- phpOpenbasedir = [ "/tmp" ];
- phpPool = {
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- #"php_admin_flag[log_errors]" = "on";
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
- };
- phpEnv = {
- PATH = lib.makeBinPath [
- pkgs.apg pkgs.unzip
- # below ones don't need to be in the PATH but they’re used in
- # secrets
- pkgs.imagemagick texlive
- ];
- SYMFONY_DEBUG_MODE = "\"yes\"";
- };
- phpWatchFiles = [
- config.secrets.fullPaths."websites/piedsjaloux/integration"
- ];
- phpPackage = pkgs.php72;
- };
-
- secrets.keys."websites/piedsjaloux/integration" = {
- user = config.services.httpd.Inte.user;
- group = config.services.httpd.Inte.group;
- permissions = "0400";
- text = ''
- # This file is auto-generated during the composer install
- parameters:
- database_host: ${secrets.mysql.host}
- database_port: ${secrets.mysql.port}
- database_name: ${secrets.mysql.database}
- database_user: ${secrets.mysql.user}
- database_password: ${secrets.mysql.password}
- database_server_version: ${pkgs.mariadb.mysqlVersion}
- mailer_transport: smtp
- mailer_host: 127.0.0.1
- mailer_user: null
- mailer_password: null
- secret: ${secrets.secret}
- pdflatex: "${texlive}/bin/pdflatex"
- leapt_im:
- binary_path: ${pkgs.imagemagick}/bin
- '';
- };
-
- services.websites.env.integration.vhostConfs.piedsjaloux_integration = {
- certName = "integration";
- addToCerts = true;
- hosts = [ "test.pj.immae.dev" ];
- root = webRoot;
- extraConfig = [
- ''
-
- SetHandler "proxy:unix:${pcfg.phpListenPaths.piedsjaloux_integration}|fcgi://localhost"
-
-
-
- Use LDAPConnect
- Require ldap-group cn=pj.immae.dev,cn=httpd,ou=services,dc=immae,dc=eu
- ErrorDocument 401 " "
-
-
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
- DirectoryIndex app_dev.php
-
-
- Options -MultiViews
-
-
-
- RewriteEngine On
-
- RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
- RewriteRule ^(.*) - [E=BASE:%1]
-
- # Maintenance script
- RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
- RewriteCond %{SCRIPT_FILENAME} !maintenance.php
- RewriteRule ^.*$ %{ENV:BASE}/maintenance.php [R=503,L]
- ErrorDocument 503 /maintenance.php
-
- # Sets the HTTP_AUTHORIZATION header removed by Apache
- RewriteCond %{HTTP:Authorization} .
- RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
-
- RewriteCond %{ENV:REDIRECT_STATUS} ^$
- RewriteRule ^app_dev\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
-
- # If the requested filename exists, simply serve it.
- # We only want to let Apache serve files and not directories.
- RewriteCond %{REQUEST_FILENAME} -f
- RewriteRule ^ - [L]
-
- # Rewrite all other queries to the front controller.
- RewriteRule ^ %{ENV:BASE}/app_dev.php [L]
-
-
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/piedsjaloux/production.nix b/modules/private/websites/piedsjaloux/production.nix
deleted file mode 100644
index 422c7f0..0000000
--- a/modules/private/websites/piedsjaloux/production.nix
+++ /dev/null
@@ -1,106 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- secrets = config.myEnv.websites.piedsjaloux.production;
- app = pkgs.callPackage ./app {
- composerEnv = pkgs.composerEnv.override { php = pkgs.php72; };
- environment = secrets.environment;
- varDir = "/var/lib/piedsjaloux_production";
- secretsPath = config.secrets.fullPaths."websites/piedsjaloux/production";
- };
- cfg = config.myServices.websites.piedsjaloux.production;
- pcfg = config.services.phpApplication;
- texlive = pkgs.texlive.combine { inherit (pkgs.texlive) attachfile preprint scheme-small; };
-in {
- options.myServices.websites.piedsjaloux.production.enable = lib.mkEnableOption "enable PiedsJaloux's website in production";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "piedsjaloux.fr"; } ];
- services.phpApplication.apps.piedsjaloux_production = {
- websiteEnv = "production";
- httpdUser = config.services.httpd.Prod.user;
- httpdGroup = config.services.httpd.Prod.group;
- inherit (app) webRoot varDir;
- varDirPaths = {
- "tmp" = "0700";
- };
- inherit app;
- serviceDeps = [ "mysql.service" ];
- preStartActions = [
- "./bin/console --env=${app.environment} cache:clear --no-warmup"
- ];
- phpOpenbasedir = [ "/tmp" ];
- phpPool = {
- "php_admin_value[upload_max_filesize]" = "20M";
- "php_admin_value[post_max_size]" = "20M";
- #"php_admin_flag[log_errors]" = "on";
- "pm" = "dynamic";
- "pm.max_children" = "20";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "3";
- };
- phpEnv = {
- PATH = lib.makeBinPath [
- pkgs.apg pkgs.unzip
- # below ones don't need to be in the PATH but they’re used in
- # secrets
- pkgs.imagemagick texlive
- ];
- };
- phpWatchFiles = [
- app.secretsPath
- ];
- phpPackage = pkgs.php72;
- };
-
- secrets.keys."websites/piedsjaloux/production" = {
- user = config.services.httpd.Prod.user;
- group = config.services.httpd.Prod.group;
- permissions = "0400";
- text = ''
- # This file is auto-generated during the composer install
- parameters:
- database_host: ${secrets.mysql.host}
- database_port: ${secrets.mysql.port}
- database_name: ${secrets.mysql.database}
- database_user: ${secrets.mysql.user}
- database_password: ${secrets.mysql.password}
- database_server_version: ${pkgs.mariadb.mysqlVersion}
- mailer_transport: smtp
- mailer_host: 127.0.0.1
- mailer_user: null
- mailer_password: null
- secret: ${secrets.secret}
- pdflatex: "${texlive}/bin/pdflatex"
- leapt_im:
- binary_path: ${pkgs.imagemagick}/bin
- '';
- };
-
- services.websites.env.production.vhostConfs.piedsjaloux_production = {
- certName = "piedsjaloux";
- certMainHost = "piedsjaloux.fr";
- hosts = [ "piedsjaloux.fr" "www.piedsjaloux.fr" ];
- root = app.webRoot;
- extraConfig = [
- ''
- RewriteEngine on
- RewriteCond "%{HTTP_HOST}" "!^www.piedsjaloux\.fr$" [NC]
- RewriteRule ^(.+)$ https://www.piedsjaloux.fr$1 [R=302,L]
-
-
- SetHandler "proxy:unix:${pcfg.phpListenPaths.piedsjaloux_production}|fcgi://localhost"
-
-
- Use Stats piedsjaloux.fr
-
-
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/ressourcerie_banon/cloud.nix b/modules/private/websites/ressourcerie_banon/cloud.nix
deleted file mode 100644
index 5179218..0000000
--- a/modules/private/websites/ressourcerie_banon/cloud.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.ressourcerie_banon.cloud;
- nextcloud = config.myServices.tools.cloud.farm.package;
-in {
- options.myServices.websites.ressourcerie_banon.cloud.enable = lib.mkEnableOption "enable Ressourcerie Banon’s cloud";
-
- config = lib.mkIf cfg.enable {
- myServices.tools.cloud.farm.instances = [ "ressourcerie_banon" ];
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.ressourcerie_banon_cloud = {
- certName = "ressourcerie_banon";
- addToCerts = true;
- hosts = ["cloud.le-garage-autonome.org"];
- root = nextcloud;
- extraConfig = [ config.myServices.tools.cloud.farm.vhosts.ressourcerie_banon ];
- };
- };
-}
-
diff --git a/modules/private/websites/ressourcerie_banon/cryptpad.nix b/modules/private/websites/ressourcerie_banon/cryptpad.nix
deleted file mode 100644
index 7aea728..0000000
--- a/modules/private/websites/ressourcerie_banon/cryptpad.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.ressourcerie_banon.cryptpad;
- envCfg = config.myEnv.tools.cryptpad.ressourcerie_banon;
- port = envCfg.port;
- configFile = pkgs.writeText "config.js" ''
- // ${pkgs.cryptpad}/lib/node_modules/cryptpad/config/config.example.js
- module.exports = {
- httpUnsafeOrigin: 'https://${domain}',
- httpPort: ${toString port},
- adminEmail: '${envCfg.email}',
- filePath: './datastore/',
- archivePath: './data/archive',
- pinPath: './data/pins',
- taskPath: './data/tasks',
- blockPath: './block',
- blobPath: './blob',
- blobStagingPath: './data/blobstage',
- decreePath: './data/decrees',
- logPath: './data/logs',
- logToStdout: false,
- logLevel: 'info',
- logFeedback: false,
- verbose: false,
- inactiveTime: false,
- adminKeys: ${builtins.toJSON envCfg.admins},
- };
- '';
- domain = "pad.le-garage-autonome.org";
-in {
- options.myServices.websites.ressourcerie_banon.cryptpad.enable = lib.mkEnableOption "Enable Ressourcerie Banon’s cryptpad";
-
- config = lib.mkIf cfg.enable {
- myServices.tools.cryptpad.farm.hosts.ressourcerie_banon = {
- inherit domain port;
- config = configFile;
- };
- services.websites.env.production.modules = [ "proxy_wstunnel" ];
- services.websites.env.production.vhostConfs.ressourcerie_banon_cryptpad = {
- certName = "ressourcerie_banon";
- addToCerts = true;
- hosts = [domain];
- root = config.myServices.tools.cryptpad.farm.vhostRoots.ressourcerie_banon;
- extraConfig = [
- config.myServices.tools.cryptpad.farm.vhosts.ressourcerie_banon
- ];
- };
- };
-}
diff --git a/modules/private/websites/ressourcerie_banon/production.nix b/modules/private/websites/ressourcerie_banon/production.nix
deleted file mode 100644
index fa00d92..0000000
--- a/modules/private/websites/ressourcerie_banon/production.nix
+++ /dev/null
@@ -1,70 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.ressourcerie_banon.production;
- varDir = "/var/lib/ftp/ressourcerie_banon";
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
-in {
- options.myServices.websites.ressourcerie_banon.production.enable = lib.mkEnableOption "enable Ressourcerie Banon's website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "ressourcerie-banon.org"; } ];
-
- system.activationScripts.ressourcerie_banon = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/php/sessions/ressourcerie_banon
- '';
- };
- systemd.services.phpfpm-ressourcerie_banon.after = lib.mkAfter [ "mysql.service" ];
- systemd.services.phpfpm-ressourcerie_banon.wants = [ "mysql.service" ];
- services.phpfpm.pools.ressourcerie_banon = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
-
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[open_basedir]" = "/var/lib/php/sessions/ressourcerie_banon:${varDir}:/tmp";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/ressourcerie_banon";
- };
- phpOptions = config.services.phpfpm.phpOptions + ''
- disable_functions = "mail"
- '';
- phpPackage = pkgs.php72;
- };
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.ressourcerie_banon = {
- certName = "ressourcerie_banon";
- certMainHost = "ressourcerie-banon.org";
- hosts = ["ressourcerie-banon.org" "www.ressourcerie-banon.org" "ressourcerie-sault.org" "www.ressourcerie-sault.org" "le-garage-autonome.org"
- "www.le-garage-autonome.org"];
- root = varDir;
- extraConfig = [
- ''
- Use Stats ressourcerie-banon.org
-
- RewriteEngine on
- RewriteCond "%{HTTP_HOST}" "!^ressourcerie-banon\.org$" [NC]
- RewriteRule ^(.+)$ https://ressourcerie-banon.org$1 [R=302,L]
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.ressourcerie_banon.socket}|fcgi://localhost"
-
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride all
- Require all granted
-
- ''
- ];
- };
- };
-}
-
diff --git a/modules/private/websites/richie/production.nix b/modules/private/websites/richie/production.nix
deleted file mode 100644
index a548cff..0000000
--- a/modules/private/websites/richie/production.nix
+++ /dev/null
@@ -1,106 +0,0 @@
-{ lib, config, pkgs, ... }:
-let
- cfg = config.myServices.websites.richie.production;
- vardir = "/var/lib/richie_production";
- richieSrc = pkgs.stdenv.mkDerivation rec {
- version = pkgs.sources.websites-richie-app.version;
- pname = "richie";
- name = "${pname}-${version}";
- src = pkgs.sources.websites-richie-app;
- phases = "installPhase";
- installPhase = ''
- cp -a $src $out
- chmod -R u+w $out
- ln -sf ${vardir}/files $out/
- ln -sf ${vardir}/drapeaux $out/images/
- ln -sf ${vardir}/photos $out/
- sed -i "s@localedef --list-archive@localedef --list-archive /run/current-system/sw/lib/locale/locale-archive@" $out/admin/parametres.php
- '';
- };
- secretPath = config.secrets.fullPaths."websites/richie/production";
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
-in
-{
- options.myServices.websites.richie.production.enable = lib.mkEnableOption "enable Richie's website";
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "europe-richie.org"; } ];
-
- secrets.keys."websites/richie/production" = {
- user = apacheUser;
- group = apacheGroup;
- permissions = "0400";
- text = with config.myEnv.websites.richie; ''
- Auth('${smtp_mailer.user}', '${smtp_mailer.password}');
- ?>
- '';
- };
- system.activationScripts.richie_production = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/php/sessions/richie_production
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d ${vardir}
- '';
- };
- services.phpfpm.pools.richie_production = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
-
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[open_basedir]" = "${vardir}:/var/lib/php/sessions/richie_production:${secretPath}:${richieSrc}:/tmp";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/richie_production";
- };
- phpEnv = {
- PATH = "/run/current-system/sw/bin:${lib.makeBinPath [ pkgs.imagemagick ]}";
- BDD_CONNECT = secretPath;
- };
- phpOptions = config.services.phpfpm.phpOptions + ''
- date.timezone = 'Europe/Paris'
- '';
- phpPackage = pkgs.php72;
- };
- services.websites.env.production.modules = [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.richie_production = {
- certName = "richie";
- addToCerts = true;
- certMainHost = "europe-richie.org";
- hosts = [ "europe-richie.org" "www.europe-richie.org" ];
- root = richieSrc;
- extraConfig = [
- ''
- Use Stats europe-richie.org
- ErrorDocument 404 /404.html
-
- Require all denied
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride None
- Require all granted
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.richie_production.socket}|fcgi://localhost"
-
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/syden/peertube.nix b/modules/private/websites/syden/peertube.nix
deleted file mode 100644
index 64d4a5d..0000000
--- a/modules/private/websites/syden/peertube.nix
+++ /dev/null
@@ -1,132 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- scfg = config.myServices.websites.syden.peertube;
- name = "peertube";
- dataDir = "/var/lib/syden_peertube";
- package = (pkgs.mylibs.flakeCompat ../../../../flakes/private/peertube).packages.x86_64-linux.peertube_syden;
- env = config.myEnv.tools.syden_peertube;
-in
-{
- options.myServices.websites.syden.peertube.enable = lib.mkEnableOption "enable Syden's website";
-
- config = lib.mkIf scfg.enable {
- users.users.peertube = {
- uid = config.ids.uids.peertube;
- group = "peertube";
- description = "Peertube user";
- useDefaultShell = true;
- extraGroups = [ "keys" ];
- };
- users.groups.peertube.gid = config.ids.gids.peertube;
-
- secrets.keys."websites/syden/peertube" = {
- user = "peertube";
- group = "peertube";
- permissions = "0640";
- text = ''
- listen:
- hostname: 'localhost'
- port: ${toString env.listenPort}
- webserver:
- https: true
- hostname: 'record-links.immae.eu'
- port: 443
- database:
- hostname: '${env.postgresql.socket}'
- port: 5432
- suffix: '_syden'
- username: '${env.postgresql.user}'
- password: '${env.postgresql.password}'
- pool:
- max: 5
- redis:
- socket: '${env.redis.socket}'
- auth: null
- db: ${env.redis.db}
- smtp:
- transport: sendmail
- sendmail: '/run/wrappers/bin/sendmail'
- from_address: 'peertube@tools.immae.eu'
- storage:
- tmp: '${dataDir}/storage/tmp/'
- avatars: '${dataDir}/storage/avatars/'
- videos: '${dataDir}/storage/videos/'
- streaming_playlists: '${dataDir}/storage/streaming-playlists/'
- redundancy: '${dataDir}/storage/videos/'
- logs: '${dataDir}/storage/logs/'
- previews: '${dataDir}/storage/previews/'
- thumbnails: '${dataDir}/storage/thumbnails/'
- torrents: '${dataDir}/storage/torrents/'
- captions: '${dataDir}/storage/captions/'
- cache: '${dataDir}/storage/cache/'
- plugins: '${dataDir}/storage/plugins/'
- client_overrides: '${dataDir}/storage/client-overrides/'
- '';
- };
-
- services.filesWatcher.syden_peertube = {
- restart = true;
- paths = [ config.secrets.fullPaths."websites/syden/peertube" ];
- };
-
- systemd.services.syden_peertube = {
- description = "Peertube";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" "postgresql.service" ];
- wants = [ "postgresql.service" ];
-
- environment.NODE_CONFIG_DIR = "${dataDir}/config";
- environment.NODE_ENV = "production";
- environment.HOME = package;
-
- path = [ pkgs.nodejs pkgs.bashInteractive pkgs.ffmpeg pkgs.openssl ];
-
- script = ''
- install -m 0750 -d ${dataDir}/config
- ln -sf ${config.secrets.fullPaths."websites/syden/peertube"} ${dataDir}/config/production.yaml
- ln -sf ${package}/config/default.yaml ${dataDir}/config/default.yaml
- exec npm run start
- '';
-
- serviceConfig = {
- User = "peertube";
- Group = "peertube";
- WorkingDirectory = package;
- StateDirectory = "syden_peertube";
- StateDirectoryMode = 0750;
- PrivateTmp = true;
- ProtectHome = true;
- ProtectControlGroups = true;
- Restart = "always";
- Type = "simple";
- TimeoutSec = 60;
- };
-
- unitConfig.RequiresMountsFor = dataDir;
- };
-
- services.websites.env.production.vhostConfs.syden_peertube = {
- certName = "syden";
- addToCerts = true;
- certMainHost = "record-links.immae.eu";
- hosts = [ "record-links.immae.eu" ];
- root = null;
- extraConfig = [ ''
- RewriteEngine On
-
- RewriteCond %{REQUEST_URI} ^/socket.io [NC]
- RewriteCond %{QUERY_STRING} transport=websocket [NC]
- RewriteRule /(.*) ws://localhost:${toString env.listenPort}/$1 [P,NE,QSA,L]
-
- RewriteCond %{REQUEST_URI} ^/tracker/socket [NC]
- RewriteRule /(.*) ws://localhost:${toString env.listenPort}/$1 [P,NE,QSA,L]
-
- ProxyPass / http://localhost:${toString env.listenPort}/
- ProxyPassReverse / http://localhost:${toString env.listenPort}/
-
- ProxyPreserveHost On
- RequestHeader set X-Real-IP %{REMOTE_ADDR}s
- '' ];
- };
- };
-}
diff --git a/modules/private/websites/telio_tortay/production.nix b/modules/private/websites/telio_tortay/production.nix
deleted file mode 100644
index 16eca74..0000000
--- a/modules/private/websites/telio_tortay/production.nix
+++ /dev/null
@@ -1,81 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; };
- cfg = config.myServices.websites.telio_tortay.production;
- varDir = "/var/lib/ftp/telio_tortay";
- env = config.myEnv.websites.telio_tortay;
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
-in {
- options.myServices.websites.telio_tortay.production.enable = lib.mkEnableOption "enable Telio Tortay's website";
-
- config = lib.mkIf cfg.enable {
- services.webstats.sites = [ { name = "telio-tortay.immae.eu"; } ];
-
- security.acme.certs."ftp".extraDomains."telio-tortay.immae.eu" = null;
-
- system.activationScripts.telio_tortay = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/ftp/telio_tortay/logs
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/php/sessions/telio_tortay
- '';
- };
- systemd.services.phpfpm-telio_tortay.after = lib.mkAfter [ "mysql.service" ];
- systemd.services.phpfpm-telio_tortay.wants = [ "mysql.service" ];
- services.phpfpm.pools.telio_tortay = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
-
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[open_basedir]" = "/var/lib/php/sessions/telio_tortay:${varDir}:/tmp";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/telio_tortay";
- };
- phpOptions = config.services.phpfpm.phpOptions + ''
- disable_functions = "mail"
- '';
- phpPackage = pkgs.php72;
- };
- services.websites.env.production.modules = adminer.apache.modules ++ [ "proxy_fcgi" ];
- services.websites.env.production.vhostConfs.telio_tortay = {
- certName = "telio_tortay";
- certMainHost = "telio-tortay.immae.eu";
- hosts = ["telio-tortay.immae.eu" "realistesmedia.fr" "www.realistesmedia.fr" ];
- root = varDir;
- extraConfig = [
- (adminer.apache.vhostConf null)
- ''
- Use Stats telio-tortay.immae.eu
- ServerAdmin ${env.server_admin}
- ErrorLog "${varDir}/logs/error_log"
- CustomLog "${varDir}/logs/access_log" combined
-
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.telio_tortay.socket}|fcgi://localhost"
-
-
-
- AllowOverride None
- Require all denied
-
-
- AllowOverride None
- Require all denied
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride all
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/tools/assets/default.nix b/modules/private/websites/tools/assets/default.nix
deleted file mode 100644
index 0eb476d..0000000
--- a/modules/private/websites/tools/assets/default.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.tools.assets;
- assets_urls = lib.mapAttrs (k: v: pkgs.fetchurl v) config.myEnv.tools.assets;
- assets = pkgs.runCommand "assets" {} (''
- mkdir -p $out
- cp -a ${./static}/* $out/
- '' + builtins.concatStringsSep "\n"
- (lib.mapAttrsToList (k: v: ''
- install -D -m644 -T ${v} $out/${k}
- '') assets_urls));
-in
-{
- options.myServices.websites.tools.assets = {
- enable = lib.mkEnableOption "Enable assets website";
- };
- config = lib.mkIf cfg.enable {
- services.websites.env.tools.vhostConfs.assets = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [ "assets.immae.eu" ];
- root = assets;
- extraConfig = [
- ''
- Use Apaxy "${assets}" "title"
-
- Options Indexes FollowSymlinks
- AllowOverride None
- Require all granted
- Header always set Last-Modified "Tue, 01 Jan 2020 00:00:00 GMT"
- Header always set Cache-Control "public, max-age=31536000, immutable"
- Header always set Access-Control-Allow-Origin "*"
- Header always set Access-Control-Expose-Headers "*"
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/tools/assets/static/favicon.png b/modules/private/websites/tools/assets/static/favicon.png
deleted file mode 100644
index 1caf5a4..0000000
Binary files a/modules/private/websites/tools/assets/static/favicon.png and /dev/null differ
diff --git a/modules/private/websites/tools/assets/static/logger.png b/modules/private/websites/tools/assets/static/logger.png
deleted file mode 100644
index d9579fb..0000000
Binary files a/modules/private/websites/tools/assets/static/logger.png and /dev/null differ
diff --git a/modules/private/websites/tools/assets/static/logger.txt b/modules/private/websites/tools/assets/static/logger.txt
deleted file mode 100644
index 50dccc6..0000000
--- a/modules/private/websites/tools/assets/static/logger.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Downloaded from https://commons.wikimedia.org/wiki/File:Ghost2.svg
-Licence Creative Commons Attribution-Share Alike 4.0 International
-https://creativecommons.org/licenses/by-sa/4.0/deed.en
diff --git a/modules/private/websites/tools/assets/static/logo.jpg b/modules/private/websites/tools/assets/static/logo.jpg
deleted file mode 100644
index a89172d..0000000
Binary files a/modules/private/websites/tools/assets/static/logo.jpg and /dev/null differ
diff --git a/modules/private/websites/tools/assets/static/logo.txt b/modules/private/websites/tools/assets/static/logo.txt
deleted file mode 100644
index 327e62a..0000000
--- a/modules/private/websites/tools/assets/static/logo.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-size: 2
-dpi: 72
-background: white
-plot_type: fullcolor
-center: "whole"
-whitespace: 0.5
-format: jpg
diff --git a/modules/private/websites/tools/assets/static/logo_big.jpg b/modules/private/websites/tools/assets/static/logo_big.jpg
deleted file mode 100644
index 45448f2..0000000
Binary files a/modules/private/websites/tools/assets/static/logo_big.jpg and /dev/null differ
diff --git a/modules/private/websites/tools/assets/static/logo_big.txt b/modules/private/websites/tools/assets/static/logo_big.txt
deleted file mode 100644
index ce92c09..0000000
--- a/modules/private/websites/tools/assets/static/logo_big.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-size: 4
-dpi: 72
-background: white
-plot_type: fullcolor
-center: "whole"
-whitespace: 0.5
-format: jpg
diff --git a/modules/private/websites/tools/assets/static/logo_center.jpg b/modules/private/websites/tools/assets/static/logo_center.jpg
deleted file mode 100644
index 6b177e0..0000000
Binary files a/modules/private/websites/tools/assets/static/logo_center.jpg and /dev/null differ
diff --git a/modules/private/websites/tools/assets/static/logo_center.txt b/modules/private/websites/tools/assets/static/logo_center.txt
deleted file mode 100644
index 60a8f1c..0000000
--- a/modules/private/websites/tools/assets/static/logo_center.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-size: 4
-dpi: 72
-background: white
-plot_type: fullcolor
-center: "center"
-whitespace: 0.5
-format: jpg
-
diff --git a/modules/private/websites/tools/assets/static/monitoring.png b/modules/private/websites/tools/assets/static/monitoring.png
deleted file mode 100644
index 0024fee..0000000
Binary files a/modules/private/websites/tools/assets/static/monitoring.png and /dev/null differ
diff --git a/modules/private/websites/tools/assets/static/monitoring.txt b/modules/private/websites/tools/assets/static/monitoring.txt
deleted file mode 100644
index 9f3e13a..0000000
--- a/modules/private/websites/tools/assets/static/monitoring.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Downloaded from https://commons.wikimedia.org/wiki/File:Magnifying_Glass2.svg
-Licence Creative Commons CC0 1.0 Universal Public Domain Dedication
-https://creativecommons.org/publicdomain/zero/1.0/deed.en
diff --git a/modules/private/websites/tools/assets/static/photos/ct.jpg b/modules/private/websites/tools/assets/static/photos/ct.jpg
deleted file mode 100644
index ab7876b..0000000
Binary files a/modules/private/websites/tools/assets/static/photos/ct.jpg and /dev/null differ
diff --git a/modules/private/websites/tools/assets/static/photos/fretlink.jpg b/modules/private/websites/tools/assets/static/photos/fretlink.jpg
deleted file mode 100644
index c941e1d..0000000
Binary files a/modules/private/websites/tools/assets/static/photos/fretlink.jpg and /dev/null differ
diff --git a/modules/private/websites/tools/assets/static/photos/raton.jpg b/modules/private/websites/tools/assets/static/photos/raton.jpg
deleted file mode 100644
index a859e1c..0000000
Binary files a/modules/private/websites/tools/assets/static/photos/raton.jpg and /dev/null differ
diff --git a/modules/private/websites/tools/cloud/default.nix b/modules/private/websites/tools/cloud/default.nix
deleted file mode 100644
index 44163de..0000000
--- a/modules/private/websites/tools/cloud/default.nix
+++ /dev/null
@@ -1,184 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- nextcloud = pkgs.webapps.nextcloud.withApps (a: [
- a.apporder a.audioplayer a.bookmarks a.calendar a.carnet a.contacts
- a.cookbook a.deck a.extract a.files_markdown a.files_readmemd
- a.flowupload a.gpxedit a.gpxpod a.keeweb a.maps a.metadata a.music
- a.notes a.ocsms a.passman a.polls a.spreed a.tasks
- ]);
- env = config.myEnv.tools.nextcloud;
- varDir = "/var/lib/nextcloud";
- cfg = config.myServices.websites.tools.cloud;
- phpFpm = rec {
- basedir = builtins.concatStringsSep ":" ([ nextcloud varDir ] ++ nextcloud.apps);
- pool = {
- "listen.owner" = "wwwrun";
- "listen.group" = "wwwrun";
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[output_buffering]" = "0";
- "php_admin_value[max_execution_time]" = "1800";
- "php_admin_value[zend_extension]" = "opcache";
- #already enabled by default?
- #"php_value[opcache.enable]" = "1";
- "php_value[opcache.enable_cli]" = "1";
- "php_value[opcache.interned_strings_buffer]" = "8";
- "php_value[opcache.max_accelerated_files]" = "10000";
- "php_value[opcache.memory_consumption]" = "128";
- "php_value[opcache.save_comments]" = "1";
- "php_value[opcache.revalidate_freq]" = "1";
- "php_admin_value[memory_limit]" = "512M";
-
- "php_admin_value[open_basedir]" = "/run/wrappers/bin/sendmail:${basedir}:/proc/meminfo:/dev/urandom:/proc/self/fd:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- };
- };
-in {
- options.myServices.websites.tools.cloud = {
- enable = lib.mkEnableOption "enable cloud website";
- };
-
- config = lib.mkIf cfg.enable {
- services.websites.env.tools.modules = [ "proxy_fcgi" ];
-
- services.websites.env.tools.vhostConfs.cloud = {
- certName = "eldiron";
- addToCerts = true;
- hosts = ["cloud.immae.eu" ];
- root = nextcloud;
- extraConfig = [
- ''
- SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
-
- AcceptPathInfo On
- DirectoryIndex index.php
- Options FollowSymlinks
- Require all granted
- AllowOverride all
-
-
- Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
-
-
- CGIPassAuth on
- SetHandler "proxy:unix:${config.services.phpfpm.pools.nextcloud.socket}|fcgi://localhost"
-
-
-
- ''
- ];
- };
-
- secrets.keys."webapps/tools-nextcloud" = {
- user = "wwwrun";
- group = "wwwrun";
- permissions = "0600";
- # This file is not actually included, see activationScript below
- text = ''
- '${env.instance_id}',
- 'datadirectory' => '/var/lib/nextcloud/',
- 'passwordsalt' => '${env.password_salt}',
- 'debug' => false,
- 'dbtype' => 'pgsql',
- 'version' => implode($OC_Version, '.'),
- 'dbname' => '${env.postgresql.database}',
- 'dbhost' => '${env.postgresql.socket}',
- 'dbtableprefix' => 'oc_',
- 'dbuser' => '${env.postgresql.user}',
- 'dbpassword' => '${env.postgresql.password}',
- 'installed' => true,
- 'maxZipInputSize' => 0,
- 'allowZipDownload' => true,
- 'forcessl' => true,
- 'theme' => ${"''"},
- 'maintenance' => false,
- 'trusted_domains' =>
- array (
- 0 => 'cloud.immae.eu',
- ),
- 'secret' => '${env.secret}',
- 'appstoreenabled' => false,
- 'appstore.experimental.enabled' => true,
- 'loglevel' => 2,
- 'trashbin_retention_obligation' => 'auto',
- 'htaccess.RewriteBase' => '/',
- 'mail_smtpmode' => 'sendmail',
- 'mail_smtphost' => '127.0.0.1',
- 'mail_smtpname' => ''',
- 'mail_smtppassword' => ''',
- 'mail_from_address' => 'nextcloud',
- 'mail_smtpauth' => false,
- 'mail_domain' => 'tools.immae.eu',
- 'memcache.local' => '\\OC\\Memcache\\APCu',
- 'memcache.locking' => '\\OC\\Memcache\\Redis',
- 'filelocking.enabled' => true,
- 'redis' =>
- array (
- 'host' => '${env.redis.socket}',
- 'port' => 0,
- 'dbindex' => ${env.redis.db},
- ),
- 'overwrite.cli.url' => 'https://cloud.immae.eu',
- 'ldapIgnoreNamingRules' => false,
- 'ldapProviderFactory' => '\\OCA\\User_LDAP\\LDAPProviderFactory',
- 'has_rebuilt_cache' => true,
- );
- '';
- };
- users.users.root.packages = let
- occ = pkgs.writeScriptBin "nextcloud-occ" ''
- #! ${pkgs.stdenv.shell}
- cd ${nextcloud}
- NEXTCLOUD_CONFIG_DIR="${nextcloud}/config" \
- exec \
- sudo -E -u wwwrun ${pkgs.php74}/bin/php \
- -c ${pkgs.php74}/etc/php.ini \
- occ $*
- '';
- in [ occ ];
-
- system.activationScripts.nextcloud = {
- deps = [ "secrets" ];
- text = let
- confs = lib.attrsets.mapAttrs (n: v: pkgs.writeText "${n}.json" (builtins.toJSON v)) nextcloud.otherConfig;
- in
- ''
- install -m 0755 -o wwwrun -g wwwrun -d ${varDir}
- install -m 0750 -o wwwrun -g wwwrun -d ${varDir}/phpSessions
- ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (n: v:
- "install -D -m 0644 -o wwwrun -g wwwrun -T ${v} ${varDir}/config/${n}.json"
- ) confs)}
- #install -D -m 0600 -o wwwrun -g wwwrun -T ${config.secrets.fullPaths."webapps/tools-nextcloud"} ${varDir}/config/config.php
- '';
- };
-
- services.phpfpm.pools.nextcloud = {
- user = "wwwrun";
- group = "wwwrun";
- settings = phpFpm.pool;
- phpPackage = pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache ]);
- };
-
- services.cron = {
- enable = true;
- systemCronJobs = let
- script = pkgs.writeScriptBin "nextcloud-cron" ''
- #! ${pkgs.stdenv.shell}
- export LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive
- export PATH=/run/wrappers/bin:$PATH
- ${pkgs.php74}/bin/php -d memory_limit=2048M -f ${nextcloud}/cron.php
- '';
- in [
- ''
- */15 * * * * wwwrun ${script}/bin/nextcloud-cron
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/tools/cloud/farm.nix b/modules/private/websites/tools/cloud/farm.nix
deleted file mode 100644
index 7be774c..0000000
--- a/modules/private/websites/tools/cloud/farm.nix
+++ /dev/null
@@ -1,123 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.tools.cloud.farm;
- apacheUser = config.services.httpd.Prod.user;
- apacheGroup = config.services.httpd.Prod.group;
- nextcloud = (pkgs.webapps.nextcloud.override { varDir = null; }).withApps (a: [
- a.apporder a.audioplayer a.bookmarks a.calendar a.carnet a.contacts
- a.cookbook a.deck a.extract a.files_markdown a.files_readmemd
- a.flowupload a.gpxedit a.gpxpod a.impersonate a.keeweb a.maps
- a.metadata a.music a.notes a.ocsms a.passman a.polls a.spreed
- a.tasks
- ]);
- toVardir = name: "/var/lib/nextcloud_farm/${name}";
- varDirs = map toVardir cfg.instances;
- phpBaseDir = builtins.concatStringsSep ":" ([ nextcloud ] ++ varDirs ++ nextcloud.apps);
- toVhost = name: ''
- SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
- SetEnv NEXTCLOUD_CONFIG_DIR "${toVardir name}"
-
- AcceptPathInfo On
- DirectoryIndex index.php
- Options FollowSymlinks
- Require all granted
- AllowOverride all
-
-
- Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
-
-
- CGIPassAuth on
- SetHandler "proxy:unix:${config.services.phpfpm.pools.nextcloud_farm.socket}|fcgi://localhost"
-
-
-
- '';
-in
-{
- options.myServices.tools.cloud.farm = {
- instances = lib.mkOption {
- description = "Instances names for the nextcloud Farm";
- default = [];
- type = lib.types.listOf lib.types.str;
- };
- vhosts = lib.mkOption {
- description = "Instance vhosts configs";
- readOnly = true;
- type = lib.types.attrsOf lib.types.str;
- default = lib.genAttrs cfg.instances toVhost;
- };
- package = lib.mkOption {
- description = "Nextcloud derivation";
- readOnly = true;
- type = lib.types.package;
- default = nextcloud;
- };
- };
-
- config = lib.mkIf (builtins.length cfg.instances > 0) {
- system.activationScripts.cloud_farm_vardirs = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d ${builtins.concatStringsSep " " varDirs}
- install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d /var/lib/nextcloud_farm/phpSessions
- '';
- };
- systemd.services.phpfpm-nextcloud_farm.after = lib.mkAfter [ "postgresql.service" ];
- systemd.services.phpfpm-nextcloud_farm.wants = [ "postgresql.service" ];
- services.phpfpm.pools.nextcloud_farm = {
- user = apacheUser;
- group = apacheGroup;
- settings = {
- "listen.owner" = apacheUser;
- "listen.group" = apacheGroup;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[output_buffering]" = "0";
- "php_admin_value[max_execution_time]" = "1800";
- "php_admin_value[zend_extension]" = "opcache";
- #already enabled by default?
- #"php_value[opcache.enable]" = "1";
- "php_value[opcache.enable_cli]" = "1";
- "php_value[opcache.interned_strings_buffer]" = "8";
- "php_value[opcache.max_accelerated_files]" = "10000";
- "php_value[opcache.memory_consumption]" = "128";
- "php_value[opcache.save_comments]" = "1";
- "php_value[opcache.revalidate_freq]" = "1";
- "php_admin_value[memory_limit]" = "512M";
-
- "php_admin_value[open_basedir]" = "/run/wrappers/bin/sendmail:${phpBaseDir}:/proc/meminfo:/dev/urandom:/proc/self/fd:/tmp";
- "php_admin_value[session.save_path]" = "/var/lib/nextcloud_farm/phpSessions";
- };
- phpPackage = pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache ]);
- };
- users.users.root.packages = let
- toOcc = name: pkgs.writeScriptBin "nextcloud-occ-${name}" ''
- #! ${pkgs.stdenv.shell}
- cd ${nextcloud}
- NEXTCLOUD_CONFIG_DIR="${toVardir name}" \
- exec \
- sudo -E -u wwwrun ${pkgs.php74}/bin/php \
- -c ${pkgs.php74}/etc/php.ini \
- occ $*
- '';
- in map toOcc cfg.instances;
- services.cron = {
- enable = true;
- systemCronJobs = let
- toScript = name: pkgs.writeScriptBin "nextcloud-cron" ''
- #! ${pkgs.stdenv.shell}
- export LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive
- export PATH=/run/wrappers/bin:$PATH
- export NEXTCLOUD_CONFIG_DIR="${toVardir name}"
- ${pkgs.php74}/bin/php -d memory_limit=512M -f ${nextcloud}/cron.php
- '';
- toLine = name: ''
- */15 * * * * wwwrun ${toScript name}/bin/nextcloud-cron
- '';
- in map toLine cfg.instances;
- };
- };
-}
diff --git a/modules/private/websites/tools/commento/default.nix b/modules/private/websites/tools/commento/default.nix
deleted file mode 100644
index c36255b..0000000
--- a/modules/private/websites/tools/commento/default.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.websites.tools.commento;
- env = config.myEnv.tools.commento;
- webPort = "${host}:${port}";
- port = toString env.listenPort;
- host = "localhost";
- postgresql_url = "postgres://${env.postgresql.user}:${env.postgresql.password}@localhost:${env.postgresql.port}/${env.postgresql.database}?sslmode=disable";
-in
-{
- options.myServices.websites.tools.commento = {
- enable = lib.mkEnableOption "Enable commento website";
- };
- config = lib.mkIf cfg.enable {
- secrets.keys = {
- "commento/env" = {
- permissions = "0400";
- text = ''
- COMMENTO_ORIGIN=https://commento.immae.eu/
- COMMENTO_PORT=${port}
- COMMENTO_POSTGRES=${postgresql_url}
- COMMENTO_FORBID_NEW_OWNERS=true
- COMMENTO_BIND_ADDRESS=${host}
- COMMENTO_GZIP_STATIC=true
- COMMENTO_SMTP_HOST=${env.smtp.host}
- COMMENTO_SMTP_PORT=${env.smtp.port}
- COMMENTO_SMTP_USERNAME=${env.smtp.email}
- COMMENTO_SMTP_PASSWORD=${env.smtp.password}
- COMMENTO_SMTP_FROM_ADDRESS=${env.smtp.email}
- '';
- };
- };
-
- services.websites.env.tools.vhostConfs.commento = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [ "commento.immae.eu" ];
- root = null;
- extraConfig = [
- ''
- ProxyPass / http://${webPort}/
- ProxyPassReverse / http://${webPort}/
- ProxyPreserveHost On
- ''
- ];
- };
- systemd.services.commento = {
- description = "Commento";
- wantedBy = [ "multi-user.target" ];
- requires = ["postgresql.service"];
- after = ["network.target" "postgresql.service"];
- serviceConfig = {
- User = "wwwrun";
- ExecStart = "${pkgs.commento}/commento";
- EnvironmentFile = config.secrets.fullPaths."commento/env";
- };
- };
- };
-}
diff --git a/modules/private/websites/tools/cryptpad/default.nix b/modules/private/websites/tools/cryptpad/default.nix
deleted file mode 100644
index 69b9877..0000000
--- a/modules/private/websites/tools/cryptpad/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ config, pkgs, lib, ... }:
-let
- cfg = config.myServices.websites.tools.cryptpad;
- envCfg = config.myEnv.tools.cryptpad.immaeEu;
- domain = "cryptpad.immae.eu";
- port = envCfg.port;
- configFile = pkgs.writeText "config.js" ''
- // ${pkgs.cryptpad}/lib/node_modules/cryptpad/config/config.example.js
- module.exports = {
- httpUnsafeOrigin: 'https://${domain}',
- httpPort: ${toString port},
- adminEmail: '${envCfg.email}',
- filePath: './datastore/',
- archivePath: './data/archive',
- pinPath: './data/pins',
- taskPath: './data/tasks',
- blockPath: './block',
- blobPath: './blob',
- blobStagingPath: './data/blobstage',
- decreePath: './data/decrees',
- logPath: './data/logs',
- logToStdout: false,
- logLevel: 'info',
- logFeedback: false,
- verbose: false,
- inactiveTime: false,
- maxUploadSize: 100 * 1024 * 1024,
- adminKeys: ${builtins.toJSON envCfg.admins},
- };
- '';
-in
-{
- options.myServices.websites.tools.cryptpad.enable = lib.mkEnableOption "Enable Cryptpad";
- config = lib.mkIf cfg.enable {
- myServices.tools.cryptpad.farm.hosts.immaeEu = {
- inherit domain port;
- config = configFile;
- };
- services.websites.env.tools.modules = [ "proxy_wstunnel" ];
- services.websites.env.tools.vhostConfs.cryptpad = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [domain];
- root = config.myServices.tools.cryptpad.farm.vhostRoots.immaeEu;
- extraConfig = [
- config.myServices.tools.cryptpad.farm.vhosts.immaeEu
- ];
- };
- };
-}
diff --git a/modules/private/websites/tools/cryptpad/farm.nix b/modules/private/websites/tools/cryptpad/farm.nix
deleted file mode 100644
index b35f348..0000000
--- a/modules/private/websites/tools/cryptpad/farm.nix
+++ /dev/null
@@ -1,180 +0,0 @@
-{ pkgs, config, lib, ... }:
-let
- cfg = config.myServices.tools.cryptpad.farm;
- toService = name:
- let
- inherit (cfg.hosts.${name}) package config;
- in {
- description = "Cryptpad ${name} Service";
- wantedBy = [ "multi-user.target" ];
- after = [ "networking.target" ];
- serviceConfig = {
- User = "cryptpad";
- Group = "cryptpad";
- Environment = [
- "CRYPTPAD_CONFIG=${config}"
- "HOME=%S/cryptpad/${name}"
- ];
- ExecStart = "${package}/bin/cryptpad";
- PrivateTmp = true;
- Restart = "always";
- StateDirectory = "cryptpad/${name}";
- WorkingDirectory = "%S/cryptpad/${name}";
- };
- };
- toVhostRoot = name: "${cfg.hosts.${name}.package}/lib/node_modules/cryptpad";
- toVhost = name:
- let
- inherit (cfg.hosts.${name}) package domain port;
- api_domain = domain;
- files_domain = domain;
- in ''
- RewriteEngine On
-
- Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
- Header set X-XSS-Protection "1; mode=block"
- Header set X-Content-Type-Options "nosniff"
- Header set Access-Control-Allow-Origin "*"
- Header set Permissions-Policy "interest-cohort=()"
-
- Header set Cross-Origin-Resource-Policy "cross-origin"
-
- Header set Cross-Origin-Opener-Policy "same-origin"
-
- Header set Cross-Origin-Embedder-Policy "require-corp"
-
- ErrorDocument 404 /customize.dist/404.html
-
-
- Header set Cache-Control "max-age=31536000"
-
-
- Header set Cache-Control "no-cache"
-
-
- SetEnv styleSrc "'unsafe-inline' 'self' ${domain}"
- SetEnv connectSrc "'self' https://${domain} ${domain} https://${api_domain} blob: wss://${api_domain} ${api_domain} ${files_domain}"
- SetEnv fontSrc "'self' data: ${domain}"
- SetEnv imgSrc "'self' data: * blob: ${domain}"
- SetEnv frameSrc "'self' blob:"
- SetEnv mediaSrc "'self' data: * blob: ${domain}"
- SetEnv childSrc "https://${domain}"
- SetEnv workerSrc "https://${domain}"
- SetEnv scriptSrc "'self' 'unsafe-eval' 'unsafe-inline' resource: ${domain}"
-
- Header set Content-Security-Policy "default-src 'none'; child-src %{childSrc}e; worker-src %{workerSrc}e; media-src %{mediaSrc}e; style-src %{styleSrc}e; script-src %{scriptSrc}e; connect-src %{connectSrc}e; font-src %{fontSrc}e; img-src %{imgSrc}e; frame-src %{frameSrc}e;"
-
- RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
- RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
- RewriteRule .* ws://localhost:${toString port}%{REQUEST_URI} [P,NE,QSA,L]
-
- RewriteRule ^/customize/(.*)$ /customize.dist/$1 [L]
-
- ProxyPassMatch "^/(api/(config|broadcast).*)$" "http://localhost:${toString port}/$1"
- ProxyPassReverse /api http://localhost:${toString port}/api
- ProxyPreserveHost On
- RequestHeader set X-Real-IP %{REMOTE_ADDR}s
-
- Alias /blob /var/lib/cryptpad/${name}/blob
-
- Require all granted
- AllowOverride None
-
- Alias /block /var/lib/cryptpad/${name}/block
-
- Require all granted
- AllowOverride None
-
-
- Header set Cache-Control "max-age=31536000"
- Header set Access-Control-Allow-Origin "*"
- Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
- Header set Access-Control-Allow-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Content-Length"
- Header set Access-Control-Expose-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Content-Length"
-
- RewriteCond %{REQUEST_METHOD} OPTIONS
- RewriteRule ^(.*)$ $1 [R=204,L]
-
-
-
- Header set Cache-Control "max-age=0"
-
-
- RewriteRule ^/(register|login|settings|user|pad|drive|poll|slide|code|whiteboard|file|media|profile|contacts|todo|filepicker|debug|kanban|sheet|support|admin|notifications|teams|calendar|presentation|doc)$ $1/ [R=302,L]
-
- RewriteCond %{DOCUMENT_ROOT}/www/%{REQUEST_URI} -f
- RewriteRule (.*) /www/$1 [L]
-
- RewriteCond %{DOCUMENT_ROOT}/www/%{REQUEST_URI}/index.html -f
- RewriteRule (.*) /www/$1/index.html [L]
-
- RewriteCond %{DOCUMENT_ROOT}/customize.dist/%{REQUEST_URI} -f
- RewriteRule (.*) /customize.dist/$1 [L]
-
-
- AllowOverride None
- Require all granted
- DirectoryIndex index.html
-
-
- AllowOverride None
- Require all granted
- DirectoryIndex index.html
-
- '';
-in
-{
- options.myServices.tools.cryptpad.farm = {
- hosts = lib.mkOption {
- default = {};
- description = "Hosts to install";
- type = lib.types.attrsOf (lib.types.submodule {
- options = {
- port = lib.mkOption {
- type = lib.types.port;
- };
- package = lib.mkOption {
- type = lib.types.package;
- description = "Cryptpad package to use";
- default = pkgs.cryptpad;
- };
- domain = lib.mkOption {
- type = lib.types.str;
- description = "Domain for main host";
- };
- config = lib.mkOption {
- type = lib.types.path;
- description = "Path to configuration";
- };
- };
- });
- };
- vhosts = lib.mkOption {
- description = "Instance vhosts configs";
- readOnly = true;
- type = lib.types.attrsOf lib.types.str;
- default = lib.genAttrs (builtins.attrNames cfg.hosts) toVhost;
- };
- vhostRoots = lib.mkOption {
- description = "Instance vhosts document roots";
- readOnly = true;
- type = lib.types.attrsOf lib.types.path;
- default = lib.genAttrs (builtins.attrNames cfg.hosts) toVhostRoot;
- };
- };
- config = {
- users.users = lib.optionalAttrs (cfg.hosts != {}) {
- cryptpad = {
- uid = config.ids.uids.cryptpad;
- group = "cryptpad";
- description = "Cryptpad user";
- };
- };
- users.groups = lib.optionalAttrs (cfg.hosts != {}) {
- cryptpad = {
- gid = config.ids.gids.cryptpad;
- };
- };
- systemd.services = lib.listToAttrs (map (n: lib.nameValuePair "cryptpad-${n}" (toService n)) (builtins.attrNames cfg.hosts));
- };
-}
diff --git a/modules/private/websites/tools/dav/davical.nix b/modules/private/websites/tools/dav/davical.nix
deleted file mode 100644
index bc5ecf6..0000000
--- a/modules/private/websites/tools/dav/davical.nix
+++ /dev/null
@@ -1,133 +0,0 @@
-{ stdenv, fetchurl, gettext, writeText, env, awl, davical, config }:
-rec {
- activationScript = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d /var/lib/php/sessions/davical
- '';
- };
- keys."webapps/dav-davical" = {
- user = apache.user;
- group = apache.group;
- permissions = "0400";
- text = ''
- pg_connect[] = "dbname=${env.postgresql.database} user=${env.postgresql.user} host=${env.postgresql.socket} password=${env.postgresql.password}";
-
- $c->readonly_webdav_collections = false;
-
- $c->admin_email ='davical@tools.immae.eu';
-
- $c->restrict_setup_to_admin = true;
-
- $c->collections_always_exist = false;
-
- $c->external_refresh = 60;
-
- $c->enable_scheduling = true;
-
- $c->iMIP = (object) array("send_email" => true);
-
- $c->authenticate_hook['optional'] = false;
- $c->authenticate_hook['call'] = 'LDAP_check';
- $c->authenticate_hook['config'] = array(
- 'host' => '${env.ldap.host}',
- 'port' => '389',
- 'startTLS' => 'yes',
- 'bindDN'=> '${env.ldap.dn}',
- 'passDN'=> '${env.ldap.password}',
- 'protocolVersion' => '3',
- 'baseDNUsers'=> array('ou=users,${env.ldap.base}', 'ou=group_users,${env.ldap.base}'),
- 'filterUsers' => '${env.ldap.filter}',
- 'baseDNGroups' => 'ou=groups,${env.ldap.base}',
- 'filterGroups' => 'memberOf=cn=groups,${env.ldap.dn}',
- 'mapping_field' => array(
- "username" => "uid",
- "fullname" => "cn",
- "email" => "mail",
- "modified" => "modifyTimestamp",
- ),
- 'format_updated'=> array('Y' => array(0,4),'m' => array(4,2),'d'=> array(6,2),'H' => array(8,2),'M'=>array(10,2),'S' => array(12,2)),
- /** used to set default value for all users, will be overcharged by ldap if defined also in mapping_field **/
- // 'default_value' => array("date_format_type" => "E","locale" => "fr_FR"),
- 'group_mapping_field' => array(
- "username" => "cn",
- "updated" => "modifyTimestamp",
- "fullname" => "givenName",
- "displayname" => "givenName",
- "members" => "memberUid",
- "email" => "mail",
- ),
- );
-
- $c->do_not_sync_from_ldap = array('admin' => true);
- include('drivers_ldap.php');
- '';
- };
- webapp = davical.override { davical_config = config.secrets.fullPaths."webapps/dav-davical"; };
- webRoot = "${webapp}/htdocs";
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /davical "${root}"
- Alias /caldav.php "${root}/caldav.php"
-
- DirectoryIndex index.php index.html
- AcceptPathInfo On
- AllowOverride None
- Require all granted
-
-
- CGIPassAuth on
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- RewriteEngine On
-
- Header unset Access-Control-Allow-Origin
- Header unset Access-Control-Allow-Methods
- Header unset Access-Control-Allow-Headers
- Header unset Access-Control-Allow-Credentials
- Header unset Access-Control-Expose-Headers
-
- Header always set Access-Control-Allow-Origin "*"
- Header always set Access-Control-Allow-Methods "GET,POST,OPTIONS,PROPFIND,PROPPATCH,REPORT,PUT,MOVE,DELETE,LOCK,UNLOCK"
- Header always set Access-Control-Allow-Headers "User-Agent,Authorization,Content-type,Depth,If-match,If-None-Match,Lock-Token,Timeout,Destination,Overwrite,Prefer,X-client,X-Requested-With"
- Header always set Access-Control-Allow-Credentials false
- Header always set Access-Control-Expose-Headers "Etag,Preference-Applied"
-
- RewriteCond %{HTTP:Access-Control-Request-Method} !^$
- RewriteCond %{REQUEST_METHOD} OPTIONS
- RewriteRule ^(.*)$ $1 [R=200,L]
-
-
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "postgresql.service" "openldap.service" ];
- basedir = builtins.concatStringsSep ":" [ webapp config.secrets.fullPaths."webapps/dav-davical" awl ];
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "dynamic";
- "pm.max_children" = "60";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "10";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "DavicalPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp:/var/lib/php/sessions/davical";
- "php_admin_value[include_path]" = "${awl}/inc:${webapp}/inc";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/davical";
- "php_flag[magic_quotes_gpc]" = "Off";
- "php_flag[register_globals]" = "Off";
- "php_admin_value[error_reporting]" = "E_ALL & ~E_NOTICE";
- "php_admin_value[default_charset]" = "utf-8";
- "php_flag[magic_quotes_runtime]" = "Off";
- };
- };
-}
diff --git a/modules/private/websites/tools/dav/default.nix b/modules/private/websites/tools/dav/default.nix
deleted file mode 100644
index b3aa03d..0000000
--- a/modules/private/websites/tools/dav/default.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- infcloud = rec {
- root = pkgs.webapps.infcloud;
- vhostConf = ''
- Alias /carddavmate ${root}
- Alias /caldavzap ${root}
- Alias /infcloud ${root}
-
- AllowOverride All
- Options FollowSymlinks
- Require all granted
- DirectoryIndex index.html
-
- '';
- };
- davical = pkgs.callPackage ./davical.nix {
- env = config.myEnv.tools.davical;
- inherit (pkgs.webapps) davical awl;
- inherit config;
- };
-
- cfg = config.myServices.websites.tools.dav;
-in {
- options.myServices.websites.tools.dav = {
- enable = lib.mkEnableOption "enable dav website";
- };
-
- config = lib.mkIf cfg.enable {
- system.activationScripts.davical = davical.activationScript;
- secrets.keys = davical.keys;
- services.websites.env.tools.modules = davical.apache.modules;
-
- services.websites.env.tools.vhostConfs.dav = {
- certName = "eldiron";
- addToCerts = true;
- hosts = ["dav.immae.eu" ];
- root = ./www;
- extraConfig = [
- infcloud.vhostConf
- (davical.apache.vhostConf config.services.phpfpm.pools.davical.socket)
- ];
- };
-
- services.phpfpm.pools = {
- davical = {
- user = config.services.httpd.Tools.user;
- group = config.services.httpd.Tools.group;
- settings = davical.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- };
- };
-}
-
diff --git a/modules/private/websites/tools/dav/www/index.html b/modules/private/websites/tools/dav/www/index.html
deleted file mode 100644
index 91c25ba..0000000
--- a/modules/private/websites/tools/dav/www/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
- Dav configuration
-
-
-
-
- Dav configuration:
-
- Server: https://dav.immae.eu/caldav.php
-
-
-
- Clients:
-
-
-
-
-
diff --git a/modules/private/websites/tools/db/default.nix b/modules/private/websites/tools/db/default.nix
deleted file mode 100644
index fc8d989..0000000
--- a/modules/private/websites/tools/db/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- adminer = pkgs.callPackage ../../commons/adminer.nix { inherit config; };
-
- cfg = config.myServices.websites.tools.db;
-in {
- options.myServices.websites.tools.db = {
- enable = lib.mkEnableOption "enable database's website";
- };
-
- config = lib.mkIf cfg.enable {
- services.websites.env.tools.modules = adminer.apache.modules;
- services.websites.env.tools.vhostConfs.db-1 = {
- certName = "eldiron";
- addToCerts = true;
- hosts = ["db-1.immae.eu" ];
- root = null;
- extraConfig = [ (adminer.apache.vhostConf null) ];
- };
- };
-}
diff --git a/modules/private/websites/tools/diaspora/default.nix b/modules/private/websites/tools/diaspora/default.nix
deleted file mode 100644
index 3a115ed..0000000
--- a/modules/private/websites/tools/diaspora/default.nix
+++ /dev/null
@@ -1,185 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- env = config.myEnv.tools.diaspora;
- root = "${dcfg.workdir}/public/";
- cfg = config.myServices.websites.tools.diaspora;
- dcfg = config.services.diaspora;
-in {
- options.myServices.websites.tools.diaspora = {
- enable = lib.mkEnableOption "enable diaspora's website";
- };
-
- config = lib.mkIf cfg.enable {
- users.users.diaspora.extraGroups = [ "keys" ];
-
- secrets.keys = {
- "webapps/diaspora" = {
- isDir = true;
- user = "diaspora";
- group = "diaspora";
- permissions = "0500";
- };
- "webapps/diaspora/diaspora.yml" = {
- user = "diaspora";
- group = "diaspora";
- permissions = "0400";
- text = ''
- configuration:
- environment:
- url: "https://diaspora.immae.eu/"
- certificate_authorities: '${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt'
- redis: 'redis://${env.redis.host}:${env.redis.port}/${env.redis.db}'
- sidekiq:
- s3:
- assets:
- logging:
- logrotate:
- debug:
- server:
- listen: '${dcfg.sockets.rails}'
- rails_environment: 'production'
- chat:
- server:
- bosh:
- log:
- map:
- mapbox:
- privacy:
- piwik:
- statistics:
- camo:
- settings:
- enable_registrations: false
- welcome_message:
- invitations:
- open: false
- paypal_donations:
- community_spotlight:
- captcha:
- enable: false
- terms:
- maintenance:
- remove_old_users:
- default_metas:
- csp:
- services:
- twitter:
- tumblr:
- wordpress:
- mail:
- enable: true
- sender_address: 'diaspora@tools.immae.eu'
- method: 'sendmail'
- smtp:
- sendmail:
- location: '/run/wrappers/bin/sendmail'
- admins:
- account: "ismael"
- podmin_email: 'diaspora@tools.immae.eu'
- relay:
- outbound:
- inbound:
- ldap:
- enable: true
- host: ${env.ldap.host}
- port: 636
- only_ldap: true
- mail_attribute: mail
- skip_email_confirmation: true
- use_bind_dn: true
- bind_dn: "${env.ldap.dn}"
- bind_pw: "${env.ldap.password}"
- search_base: "${env.ldap.base}"
- search_filter: "${env.ldap.filter}"
- production:
- environment:
- development:
- environment:
- '';
- };
- "webapps/diaspora/database.yml" = {
- user = "diaspora";
- group = "diaspora";
- permissions = "0400";
- text = ''
- postgresql: &postgresql
- adapter: postgresql
- host: "${env.postgresql.socket}"
- port: "${env.postgresql.port}"
- username: "${env.postgresql.user}"
- password: "${env.postgresql.password}"
- encoding: unicode
- common: &common
- <<: *postgresql
- combined: &combined
- <<: *common
- development:
- <<: *combined
- database: diaspora_development
- production:
- <<: *combined
- database: ${env.postgresql.database}
- test:
- <<: *combined
- database: "diaspora_test"
- integration1:
- <<: *combined
- database: diaspora_integration1
- integration2:
- <<: *combined
- database: diaspora_integration2
- '';
- };
- "webapps/diaspora/secret_token.rb" = {
- user = "diaspora";
- group = "diaspora";
- permissions = "0400";
- text = ''
- Diaspora::Application.config.secret_key_base = '${env.secret_token}'
- '';
- };
- };
-
- services.diaspora = {
- enable = true;
- package = pkgs.webapps.diaspora.override { ldap = true; };
- dataDir = "/var/lib/diaspora_immae";
- adminEmail = "diaspora@tools.immae.eu";
- configDir = config.secrets.fullPaths."webapps/diaspora";
- };
-
- services.filesWatcher.diaspora = {
- restart = true;
- paths = [ dcfg.configDir ];
- };
-
- services.websites.env.tools.modules = [
- "headers" "proxy" "proxy_http"
- ];
- services.websites.env.tools.vhostConfs.diaspora = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [ "diaspora.immae.eu" ];
- root = root;
- extraConfig = [ ''
- RewriteEngine On
- RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
- RewriteRule ^/(.*)$ unix://${dcfg.sockets.rails}|http://diaspora.immae.eu/%{REQUEST_URI} [P,NE,QSA,L]
-
- ProxyRequests Off
- ProxyVia On
- ProxyPreserveHost On
- RequestHeader set X_FORWARDED_PROTO https
-
-
- Require all granted
-
-
-
- Require all granted
- Options -MultiViews
-
- '' ];
- };
- };
-}
diff --git a/modules/private/websites/tools/ether/default.nix b/modules/private/websites/tools/ether/default.nix
deleted file mode 100644
index 0539095..0000000
--- a/modules/private/websites/tools/ether/default.nix
+++ /dev/null
@@ -1,216 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- env = config.myEnv.tools.etherpad-lite;
- cfg = config.myServices.websites.tools.etherpad-lite;
- # Make sure we’re not rebuilding whole libreoffice just because of a
- # dependency
- libreoffice = (import { overlays = []; }).libreoffice-fresh;
- ecfg = config.services.etherpad-lite;
-in {
- options.myServices.websites.tools.etherpad-lite = {
- enable = lib.mkEnableOption "enable etherpad's website";
- };
-
- config = lib.mkIf cfg.enable {
- secrets.keys = {
- "webapps/tools-etherpad-apikey" = {
- permissions = "0400";
- text = env.api_key;
- };
- "webapps/tools-etherpad-sessionkey" = {
- permissions = "0400";
- text = env.session_key;
- };
- "webapps/tools-etherpad" = {
- permissions = "0400";
- text = ''
- {
- "title": "Etherpad",
- "favicon": "favicon.ico",
- "skinName": "colibris",
- "skinVariants": "dark-toolbar light-background super-light-editor full-width-editor",
-
- "ip": "",
- "port" : "${ecfg.sockets.node}",
- "showSettingsInAdminPage" : false,
- "dbType" : "postgres",
- "dbSettings" : {
- "user" : "${env.postgresql.user}",
- "host" : "${env.postgresql.socket}",
- "password": "${env.postgresql.password}",
- "database": "${env.postgresql.database}",
- "charset" : "utf8mb4"
- },
-
- "defaultPadText" : "Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at http:\/\/etherpad.org\n",
- "padOptions": {
- "noColors": false,
- "showControls": true,
- "showChat": true,
- "showLineNumbers": true,
- "useMonospaceFont": false,
- "userName": false,
- "userColor": false,
- "rtl": false,
- "alwaysShowChat": false,
- "chatAndUsers": false,
- "lang": "fr"
- },
-
- "suppressErrorsInPadText" : false,
- "requireSession" : false,
- "editOnly" : false,
- "sessionNoPassword" : false,
- "minify" : true,
- "maxAge" : 21600,
- "abiword" : null,
- "soffice" : "${libreoffice}/bin/soffice",
- "tidyHtml" : "",
- "allowUnknownFileEnds" : true,
- "requireAuthentication" : false,
- "requireAuthorization" : false,
- "trustProxy" : false,
- "disableIPlogging" : false,
- "automaticReconnectionTimeout" : 0,
- "scrollWhenFocusLineIsOutOfViewport": {
- "percentage": {
- "editionAboveViewport": 0,
- "editionBelowViewport": 0
- },
- "duration": 0,
- "scrollWhenCaretIsInTheLastLineOfViewport": false,
- "percentageToScrollWhenUserPressesArrowUp": 0
- },
- "users": {
- "admin": {
- "password": "${env.adminPassword}",
- "is_admin": true
- },
- "ldapauth": {
- "hash": "invalid",
- "url": "ldaps://${env.ldap.host}",
- "accountBase": "${env.ldap.base}",
- "accountPattern": "${env.ldap.filter}",
- "displayNameAttribute": "cn",
- "searchDN": "${env.ldap.dn}",
- "searchPWD": "${env.ldap.password}",
- "groupSearchBase": "${env.ldap.base}",
- "groupAttribute": "member",
- "groupAttributeIsDN": true,
- "searchScope": "sub",
- "groupSearch": "${env.ldap.group_filter}",
- "anonymousReadonly": false
- }
- },
- "ep_mypads": {
- "warning": "This hash is stored in database, changing anything here will not have any consequence",
- "ldap": {
- "url": "ldaps://${env.ldap.host}",
- "bindDN": "${env.ldap.dn}",
- "bindCredentials": "${env.ldap.password}",
- "searchBase": "${env.ldap.base}",
- "searchFilter": "${env.ldap.filter}",
- "properties": {
- "login": "uid",
- "email": "mail",
- "firstname": "givenName",
- "lastname": "sn"
- },
- "defaultLang": "fr"
- }
- },
- "ep_comments_page": {
- "displayCommentAsIcon": true,
- "highlightSelectedText": true
- },
- "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
- "loadTest": false,
- "indentationOnNewLine": false,
- "toolbar": {
- "left": [
- ["bold", "italic", "underline", "strikethrough"],
- ["orderedlist", "unorderedlist", "indent", "outdent"],
- ["undo", "redo"],
- ["clearauthorship"]
- ],
- "right": [
- ["importexport", "timeslider", "savedrevision"],
- ["settings", "embed"],
- ["showusers"]
- ],
- "timeslider": [
- ["timeslider_export", "timeslider_returnToPad"]
- ]
- },
- "loglevel": "INFO",
- "logconfig" : { "appenders": [ { "type": "console" } ] }
- }
- '';
- };
- };
- services.etherpad-lite = {
- enable = true;
- package = pkgs.webapps.etherpad-lite.withModules (p: [
- p.ep_align p.ep_bookmark p.ep_colors p.ep_comments_page
- p.ep_cursortrace p.ep_delete_empty_pads p.ep_embedmedia
- p.ep_font_size p.ep_headings2 p.ep_immae_buttons p.ep_ldapauth
- p.ep_line_height p.ep_markdown p.ep_mypads p.ep_page_view
- p.ep_previewimages p.ep_ruler p.ep_scrollto
- p.ep_set_title_on_pad p.ep_subscript_and_superscript
- p.ep_timesliderdiff
- ]);
- modules = [];
- sessionKeyFile = config.secrets.fullPaths."webapps/tools-etherpad-sessionkey";
- apiKeyFile = config.secrets.fullPaths."webapps/tools-etherpad-apikey";
- configFile = config.secrets.fullPaths."webapps/tools-etherpad";
- };
-
- systemd.services.etherpad-lite.serviceConfig.SupplementaryGroups = "keys";
- # Needed so that they get in the closure
- systemd.services.etherpad-lite.path = [ libreoffice pkgs.html-tidy ];
-
- services.filesWatcher.etherpad-lite = {
- restart = true;
- paths = [ ecfg.sessionKeyFile ecfg.apiKeyFile ecfg.configFile ];
- };
-
- services.websites.env.tools.modules = [
- "headers" "proxy" "proxy_http" "proxy_wstunnel"
- ];
- services.websites.env.tools.vhostConfs.etherpad-lite = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [ "ether.immae.eu" ];
- root = null;
- extraConfig = [ ''
- Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains;"
- RequestHeader set X-Forwarded-Proto "https"
-
- RewriteEngine On
-
- RewriteMap redirects "txt:${pkgs.writeText "redirects.txt" config.myEnv.tools.etherpad-lite.redirects}"
- RewriteCond %{QUERY_STRING} "!noredirect"
- RewriteCond %{REQUEST_URI} "^(.*)$"
- RewriteCond ''${redirects:$1|Unknown} "!Unknown"
- RewriteRule "^(.*)$" ''${redirects:$1} [L,NE,R=301,QSD]
-
- RewriteCond %{REQUEST_URI} ^/socket.io [NC]
- RewriteCond %{QUERY_STRING} transport=websocket [NC]
- RewriteRule /(.*) unix://${ecfg.sockets.node}|ws://ether.immae.eu/$1 [P,NE,QSA,L]
-
-
- ProxyVia On
- ProxyRequests Off
- ProxyPreserveHost On
- ProxyPass / unix://${ecfg.sockets.node}|http://ether.immae.eu/
- ProxyPassReverse / unix://${ecfg.sockets.node}|http://ether.immae.eu/
-
- Options FollowSymLinks MultiViews
- AllowOverride None
- Require all granted
-
-
- '' ];
- };
- };
-}
diff --git a/modules/private/websites/tools/games/codenames/codenames.patch b/modules/private/websites/tools/games/codenames/codenames.patch
deleted file mode 100644
index 9faf069..0000000
--- a/modules/private/websites/tools/games/codenames/codenames.patch
+++ /dev/null
@@ -1,8306 +0,0 @@
-diff --git a/elm.json b/elm.json
-index a0d276b..1b73a46 100644
---- a/elm.json
-+++ b/elm.json
-@@ -3,7 +3,7 @@
- "source-directories": [
- "src"
- ],
-- "elm-version": "0.19.0",
-+ "elm-version": "0.19.1",
- "dependencies": {
- "direct": {
- "elm/browser": "1.0.1",
-@@ -15,12 +15,11 @@
- "perzanko/elm-loading": "2.0.4"
- },
- "indirect": {
-- "Skinney/murmur3": "2.0.8",
- "elm/bytes": "1.0.8",
- "elm/file": "1.0.5",
- "elm/time": "1.0.0",
- "elm/virtual-dom": "1.0.2",
-- "rtfeldman/elm-css": "16.0.1",
-+ "rtfeldman/elm-css": "16.1.0",
- "rtfeldman/elm-hex": "1.0.0"
- }
- },
-@@ -32,4 +31,4 @@
- "elm/random": "1.0.0"
- }
- }
--}
-\ No newline at end of file
-+}
-diff --git a/package-lock.json b/package-lock.json
-index 778b061..05a22ab 100644
---- a/package-lock.json
-+++ b/package-lock.json
-@@ -4,196 +4,7963 @@
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
-+ "@babel/code-frame": {
-+ "version": "7.0.0",
-+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
-+ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/highlight": "^7.0.0"
-+ }
-+ },
-+ "@babel/core": {
-+ "version": "7.3.4",
-+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz",
-+ "integrity": "sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.0.0",
-+ "@babel/generator": "^7.3.4",
-+ "@babel/helpers": "^7.2.0",
-+ "@babel/parser": "^7.3.4",
-+ "@babel/template": "^7.2.2",
-+ "@babel/traverse": "^7.3.4",
-+ "@babel/types": "^7.3.4",
-+ "convert-source-map": "^1.1.0",
-+ "debug": "^4.1.0",
-+ "json5": "^2.1.0",
-+ "lodash": "^4.17.11",
-+ "resolve": "^1.3.2",
-+ "semver": "^5.4.1",
-+ "source-map": "^0.5.0"
-+ },
-+ "dependencies": {
-+ "json5": {
-+ "version": "2.1.3",
-+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
-+ "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
-+ "dev": true,
-+ "requires": {
-+ "minimist": "^1.2.5"
-+ }
-+ },
-+ "source-map": {
-+ "version": "0.5.7",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "@babel/generator": {
-+ "version": "7.3.4",
-+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz",
-+ "integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.3.4",
-+ "jsesc": "^2.5.1",
-+ "lodash": "^4.17.11",
-+ "source-map": "^0.5.0",
-+ "trim-right": "^1.0.1"
-+ },
-+ "dependencies": {
-+ "source-map": {
-+ "version": "0.5.7",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "@babel/helper-annotate-as-pure": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz",
-+ "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-builder-binary-assignment-operator-visitor": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz",
-+ "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-explode-assignable-expression": "^7.8.3",
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-builder-react-jsx": {
-+ "version": "7.9.0",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz",
-+ "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-annotate-as-pure": "^7.8.3",
-+ "@babel/types": "^7.9.0"
-+ },
-+ "dependencies": {
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-create-regexp-features-plugin": {
-+ "version": "7.8.8",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz",
-+ "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-annotate-as-pure": "^7.8.3",
-+ "@babel/helper-regex": "^7.8.3",
-+ "regexpu-core": "^4.7.0"
-+ }
-+ },
-+ "@babel/helper-define-map": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz",
-+ "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-function-name": "^7.8.3",
-+ "@babel/types": "^7.8.3",
-+ "lodash": "^4.17.13"
-+ },
-+ "dependencies": {
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-explode-assignable-expression": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz",
-+ "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/traverse": "^7.8.3",
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/code-frame": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/highlight": "^7.8.3"
-+ }
-+ },
-+ "@babel/generator": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
-+ "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.9.5",
-+ "jsesc": "^2.5.1",
-+ "lodash": "^4.17.13",
-+ "source-map": "^0.5.0"
-+ }
-+ },
-+ "@babel/parser": {
-+ "version": "7.9.4",
-+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-+ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-+ "dev": true
-+ },
-+ "@babel/traverse": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
-+ "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/generator": "^7.9.5",
-+ "@babel/helper-function-name": "^7.9.5",
-+ "@babel/helper-split-export-declaration": "^7.8.3",
-+ "@babel/parser": "^7.9.0",
-+ "@babel/types": "^7.9.5",
-+ "debug": "^4.1.0",
-+ "globals": "^11.1.0",
-+ "lodash": "^4.17.13"
-+ }
-+ },
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ },
-+ "source-map": {
-+ "version": "0.5.7",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "@babel/helper-function-name": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz",
-+ "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-get-function-arity": "^7.8.3",
-+ "@babel/template": "^7.8.3",
-+ "@babel/types": "^7.9.5"
-+ },
-+ "dependencies": {
-+ "@babel/code-frame": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/highlight": "^7.8.3"
-+ }
-+ },
-+ "@babel/parser": {
-+ "version": "7.9.4",
-+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-+ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-+ "dev": true
-+ },
-+ "@babel/template": {
-+ "version": "7.8.6",
-+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
-+ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/parser": "^7.8.6",
-+ "@babel/types": "^7.8.6"
-+ }
-+ },
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-get-function-arity": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
-+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-hoist-variables": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz",
-+ "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-member-expression-to-functions": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz",
-+ "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-module-imports": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz",
-+ "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-module-transforms": {
-+ "version": "7.9.0",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz",
-+ "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-module-imports": "^7.8.3",
-+ "@babel/helper-replace-supers": "^7.8.6",
-+ "@babel/helper-simple-access": "^7.8.3",
-+ "@babel/helper-split-export-declaration": "^7.8.3",
-+ "@babel/template": "^7.8.6",
-+ "@babel/types": "^7.9.0",
-+ "lodash": "^4.17.13"
-+ },
-+ "dependencies": {
-+ "@babel/code-frame": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/highlight": "^7.8.3"
-+ }
-+ },
-+ "@babel/parser": {
-+ "version": "7.9.4",
-+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-+ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-+ "dev": true
-+ },
-+ "@babel/template": {
-+ "version": "7.8.6",
-+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
-+ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/parser": "^7.8.6",
-+ "@babel/types": "^7.8.6"
-+ }
-+ },
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-optimise-call-expression": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz",
-+ "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-plugin-utils": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
-+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
-+ "dev": true
-+ },
-+ "@babel/helper-regex": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz",
-+ "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==",
-+ "dev": true,
-+ "requires": {
-+ "lodash": "^4.17.13"
-+ }
-+ },
-+ "@babel/helper-remap-async-to-generator": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz",
-+ "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-annotate-as-pure": "^7.8.3",
-+ "@babel/helper-wrap-function": "^7.8.3",
-+ "@babel/template": "^7.8.3",
-+ "@babel/traverse": "^7.8.3",
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/code-frame": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/highlight": "^7.8.3"
-+ }
-+ },
-+ "@babel/generator": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
-+ "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.9.5",
-+ "jsesc": "^2.5.1",
-+ "lodash": "^4.17.13",
-+ "source-map": "^0.5.0"
-+ }
-+ },
-+ "@babel/parser": {
-+ "version": "7.9.4",
-+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-+ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-+ "dev": true
-+ },
-+ "@babel/template": {
-+ "version": "7.8.6",
-+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
-+ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/parser": "^7.8.6",
-+ "@babel/types": "^7.8.6"
-+ }
-+ },
-+ "@babel/traverse": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
-+ "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/generator": "^7.9.5",
-+ "@babel/helper-function-name": "^7.9.5",
-+ "@babel/helper-split-export-declaration": "^7.8.3",
-+ "@babel/parser": "^7.9.0",
-+ "@babel/types": "^7.9.5",
-+ "debug": "^4.1.0",
-+ "globals": "^11.1.0",
-+ "lodash": "^4.17.13"
-+ }
-+ },
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ },
-+ "source-map": {
-+ "version": "0.5.7",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "@babel/helper-replace-supers": {
-+ "version": "7.8.6",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz",
-+ "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-member-expression-to-functions": "^7.8.3",
-+ "@babel/helper-optimise-call-expression": "^7.8.3",
-+ "@babel/traverse": "^7.8.6",
-+ "@babel/types": "^7.8.6"
-+ },
-+ "dependencies": {
-+ "@babel/code-frame": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/highlight": "^7.8.3"
-+ }
-+ },
-+ "@babel/generator": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
-+ "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.9.5",
-+ "jsesc": "^2.5.1",
-+ "lodash": "^4.17.13",
-+ "source-map": "^0.5.0"
-+ }
-+ },
-+ "@babel/parser": {
-+ "version": "7.9.4",
-+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-+ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-+ "dev": true
-+ },
-+ "@babel/traverse": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
-+ "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/generator": "^7.9.5",
-+ "@babel/helper-function-name": "^7.9.5",
-+ "@babel/helper-split-export-declaration": "^7.8.3",
-+ "@babel/parser": "^7.9.0",
-+ "@babel/types": "^7.9.5",
-+ "debug": "^4.1.0",
-+ "globals": "^11.1.0",
-+ "lodash": "^4.17.13"
-+ }
-+ },
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ },
-+ "source-map": {
-+ "version": "0.5.7",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "@babel/helper-simple-access": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz",
-+ "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/template": "^7.8.3",
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/code-frame": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/highlight": "^7.8.3"
-+ }
-+ },
-+ "@babel/parser": {
-+ "version": "7.9.4",
-+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-+ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-+ "dev": true
-+ },
-+ "@babel/template": {
-+ "version": "7.8.6",
-+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
-+ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/parser": "^7.8.6",
-+ "@babel/types": "^7.8.6"
-+ }
-+ },
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-split-export-declaration": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
-+ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "@babel/helper-validator-identifier": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz",
-+ "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==",
-+ "dev": true
-+ },
-+ "@babel/helper-wrap-function": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz",
-+ "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-function-name": "^7.8.3",
-+ "@babel/template": "^7.8.3",
-+ "@babel/traverse": "^7.8.3",
-+ "@babel/types": "^7.8.3"
-+ },
-+ "dependencies": {
-+ "@babel/code-frame": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/highlight": "^7.8.3"
-+ }
-+ },
-+ "@babel/generator": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
-+ "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.9.5",
-+ "jsesc": "^2.5.1",
-+ "lodash": "^4.17.13",
-+ "source-map": "^0.5.0"
-+ }
-+ },
-+ "@babel/parser": {
-+ "version": "7.9.4",
-+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-+ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-+ "dev": true
-+ },
-+ "@babel/template": {
-+ "version": "7.8.6",
-+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
-+ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/parser": "^7.8.6",
-+ "@babel/types": "^7.8.6"
-+ }
-+ },
-+ "@babel/traverse": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
-+ "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/generator": "^7.9.5",
-+ "@babel/helper-function-name": "^7.9.5",
-+ "@babel/helper-split-export-declaration": "^7.8.3",
-+ "@babel/parser": "^7.9.0",
-+ "@babel/types": "^7.9.5",
-+ "debug": "^4.1.0",
-+ "globals": "^11.1.0",
-+ "lodash": "^4.17.13"
-+ }
-+ },
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ },
-+ "source-map": {
-+ "version": "0.5.7",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "@babel/helpers": {
-+ "version": "7.9.2",
-+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz",
-+ "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/template": "^7.8.3",
-+ "@babel/traverse": "^7.9.0",
-+ "@babel/types": "^7.9.0"
-+ },
-+ "dependencies": {
-+ "@babel/code-frame": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/highlight": "^7.8.3"
-+ }
-+ },
-+ "@babel/generator": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
-+ "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/types": "^7.9.5",
-+ "jsesc": "^2.5.1",
-+ "lodash": "^4.17.13",
-+ "source-map": "^0.5.0"
-+ }
-+ },
-+ "@babel/parser": {
-+ "version": "7.9.4",
-+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-+ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-+ "dev": true
-+ },
-+ "@babel/template": {
-+ "version": "7.8.6",
-+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
-+ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/parser": "^7.8.6",
-+ "@babel/types": "^7.8.6"
-+ }
-+ },
-+ "@babel/traverse": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
-+ "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.8.3",
-+ "@babel/generator": "^7.9.5",
-+ "@babel/helper-function-name": "^7.9.5",
-+ "@babel/helper-split-export-declaration": "^7.8.3",
-+ "@babel/parser": "^7.9.0",
-+ "@babel/types": "^7.9.5",
-+ "debug": "^4.1.0",
-+ "globals": "^11.1.0",
-+ "lodash": "^4.17.13"
-+ }
-+ },
-+ "@babel/types": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-+ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.5",
-+ "lodash": "^4.17.13",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ },
-+ "source-map": {
-+ "version": "0.5.7",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "@babel/highlight": {
-+ "version": "7.9.0",
-+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz",
-+ "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-validator-identifier": "^7.9.0",
-+ "chalk": "^2.0.0",
-+ "js-tokens": "^4.0.0"
-+ }
-+ },
-+ "@babel/parser": {
-+ "version": "7.3.4",
-+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz",
-+ "integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==",
-+ "dev": true
-+ },
-+ "@babel/plugin-proposal-async-generator-functions": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz",
-+ "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "@babel/helper-remap-async-to-generator": "^7.8.3",
-+ "@babel/plugin-syntax-async-generators": "^7.8.0"
-+ }
-+ },
-+ "@babel/plugin-proposal-json-strings": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz",
-+ "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "@babel/plugin-syntax-json-strings": "^7.8.0"
-+ }
-+ },
-+ "@babel/plugin-proposal-object-rest-spread": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz",
-+ "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
-+ "@babel/plugin-transform-parameters": "^7.9.5"
-+ }
-+ },
-+ "@babel/plugin-proposal-optional-catch-binding": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz",
-+ "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
-+ }
-+ },
-+ "@babel/plugin-proposal-unicode-property-regex": {
-+ "version": "7.8.8",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz",
-+ "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-create-regexp-features-plugin": "^7.8.8",
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-syntax-async-generators": {
-+ "version": "7.8.4",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
-+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.0"
-+ }
-+ },
-+ "@babel/plugin-syntax-flow": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz",
-+ "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-syntax-json-strings": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
-+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.0"
-+ }
-+ },
-+ "@babel/plugin-syntax-jsx": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz",
-+ "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-syntax-object-rest-spread": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
-+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.0"
-+ }
-+ },
-+ "@babel/plugin-syntax-optional-catch-binding": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
-+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.0"
-+ }
-+ },
-+ "@babel/plugin-transform-arrow-functions": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz",
-+ "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-async-to-generator": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz",
-+ "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-module-imports": "^7.8.3",
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "@babel/helper-remap-async-to-generator": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-block-scoped-functions": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz",
-+ "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-block-scoping": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz",
-+ "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "lodash": "^4.17.13"
-+ }
-+ },
-+ "@babel/plugin-transform-classes": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz",
-+ "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-annotate-as-pure": "^7.8.3",
-+ "@babel/helper-define-map": "^7.8.3",
-+ "@babel/helper-function-name": "^7.9.5",
-+ "@babel/helper-optimise-call-expression": "^7.8.3",
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "@babel/helper-replace-supers": "^7.8.6",
-+ "@babel/helper-split-export-declaration": "^7.8.3",
-+ "globals": "^11.1.0"
-+ }
-+ },
-+ "@babel/plugin-transform-computed-properties": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz",
-+ "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-destructuring": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz",
-+ "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-dotall-regex": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz",
-+ "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-create-regexp-features-plugin": "^7.8.3",
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-duplicate-keys": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz",
-+ "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-exponentiation-operator": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz",
-+ "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3",
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-flow-strip-types": {
-+ "version": "7.3.4",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.3.4.tgz",
-+ "integrity": "sha512-PmQC9R7DwpBFA+7ATKMyzViz3zCaMNouzZMPZN2K5PnbBbtL3AXFYTkDk+Hey5crQq2A90UG5Uthz0mel+XZrA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.0.0",
-+ "@babel/plugin-syntax-flow": "^7.2.0"
-+ }
-+ },
-+ "@babel/plugin-transform-for-of": {
-+ "version": "7.9.0",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz",
-+ "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-function-name": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz",
-+ "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-function-name": "^7.8.3",
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-literals": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz",
-+ "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-modules-amd": {
-+ "version": "7.9.0",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz",
-+ "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-module-transforms": "^7.9.0",
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "babel-plugin-dynamic-import-node": "^2.3.0"
-+ }
-+ },
-+ "@babel/plugin-transform-modules-commonjs": {
-+ "version": "7.2.0",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz",
-+ "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-module-transforms": "^7.1.0",
-+ "@babel/helper-plugin-utils": "^7.0.0",
-+ "@babel/helper-simple-access": "^7.1.0"
-+ }
-+ },
-+ "@babel/plugin-transform-modules-systemjs": {
-+ "version": "7.9.0",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz",
-+ "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-hoist-variables": "^7.8.3",
-+ "@babel/helper-module-transforms": "^7.9.0",
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "babel-plugin-dynamic-import-node": "^2.3.0"
-+ }
-+ },
-+ "@babel/plugin-transform-modules-umd": {
-+ "version": "7.9.0",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz",
-+ "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-module-transforms": "^7.9.0",
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-named-capturing-groups-regex": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz",
-+ "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-create-regexp-features-plugin": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-new-target": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz",
-+ "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-object-super": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz",
-+ "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "@babel/helper-replace-supers": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-parameters": {
-+ "version": "7.9.5",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz",
-+ "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-get-function-arity": "^7.8.3",
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-react-jsx": {
-+ "version": "7.3.0",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz",
-+ "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-builder-react-jsx": "^7.3.0",
-+ "@babel/helper-plugin-utils": "^7.0.0",
-+ "@babel/plugin-syntax-jsx": "^7.2.0"
-+ }
-+ },
-+ "@babel/plugin-transform-regenerator": {
-+ "version": "7.8.7",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz",
-+ "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==",
-+ "dev": true,
-+ "requires": {
-+ "regenerator-transform": "^0.14.2"
-+ }
-+ },
-+ "@babel/plugin-transform-shorthand-properties": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz",
-+ "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-spread": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz",
-+ "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-sticky-regex": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz",
-+ "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3",
-+ "@babel/helper-regex": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-template-literals": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz",
-+ "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-annotate-as-pure": "^7.8.3",
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-typeof-symbol": {
-+ "version": "7.8.4",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz",
-+ "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/plugin-transform-unicode-regex": {
-+ "version": "7.8.3",
-+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz",
-+ "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-create-regexp-features-plugin": "^7.8.3",
-+ "@babel/helper-plugin-utils": "^7.8.3"
-+ }
-+ },
-+ "@babel/preset-env": {
-+ "version": "7.3.4",
-+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.4.tgz",
-+ "integrity": "sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/helper-module-imports": "^7.0.0",
-+ "@babel/helper-plugin-utils": "^7.0.0",
-+ "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
-+ "@babel/plugin-proposal-json-strings": "^7.2.0",
-+ "@babel/plugin-proposal-object-rest-spread": "^7.3.4",
-+ "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
-+ "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
-+ "@babel/plugin-syntax-async-generators": "^7.2.0",
-+ "@babel/plugin-syntax-json-strings": "^7.2.0",
-+ "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
-+ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
-+ "@babel/plugin-transform-arrow-functions": "^7.2.0",
-+ "@babel/plugin-transform-async-to-generator": "^7.3.4",
-+ "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
-+ "@babel/plugin-transform-block-scoping": "^7.3.4",
-+ "@babel/plugin-transform-classes": "^7.3.4",
-+ "@babel/plugin-transform-computed-properties": "^7.2.0",
-+ "@babel/plugin-transform-destructuring": "^7.2.0",
-+ "@babel/plugin-transform-dotall-regex": "^7.2.0",
-+ "@babel/plugin-transform-duplicate-keys": "^7.2.0",
-+ "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
-+ "@babel/plugin-transform-for-of": "^7.2.0",
-+ "@babel/plugin-transform-function-name": "^7.2.0",
-+ "@babel/plugin-transform-literals": "^7.2.0",
-+ "@babel/plugin-transform-modules-amd": "^7.2.0",
-+ "@babel/plugin-transform-modules-commonjs": "^7.2.0",
-+ "@babel/plugin-transform-modules-systemjs": "^7.3.4",
-+ "@babel/plugin-transform-modules-umd": "^7.2.0",
-+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0",
-+ "@babel/plugin-transform-new-target": "^7.0.0",
-+ "@babel/plugin-transform-object-super": "^7.2.0",
-+ "@babel/plugin-transform-parameters": "^7.2.0",
-+ "@babel/plugin-transform-regenerator": "^7.3.4",
-+ "@babel/plugin-transform-shorthand-properties": "^7.2.0",
-+ "@babel/plugin-transform-spread": "^7.2.0",
-+ "@babel/plugin-transform-sticky-regex": "^7.2.0",
-+ "@babel/plugin-transform-template-literals": "^7.2.0",
-+ "@babel/plugin-transform-typeof-symbol": "^7.2.0",
-+ "@babel/plugin-transform-unicode-regex": "^7.2.0",
-+ "browserslist": "^4.3.4",
-+ "invariant": "^2.2.2",
-+ "js-levenshtein": "^1.1.3",
-+ "semver": "^5.3.0"
-+ }
-+ },
-+ "@babel/runtime": {
-+ "version": "7.3.4",
-+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz",
-+ "integrity": "sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==",
-+ "dev": true,
-+ "requires": {
-+ "regenerator-runtime": "^0.12.0"
-+ },
-+ "dependencies": {
-+ "regenerator-runtime": {
-+ "version": "0.12.1",
-+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
-+ "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "@babel/template": {
-+ "version": "7.2.2",
-+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz",
-+ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.0.0",
-+ "@babel/parser": "^7.2.2",
-+ "@babel/types": "^7.2.2"
-+ }
-+ },
-+ "@babel/traverse": {
-+ "version": "7.3.4",
-+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz",
-+ "integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.0.0",
-+ "@babel/generator": "^7.3.4",
-+ "@babel/helper-function-name": "^7.1.0",
-+ "@babel/helper-split-export-declaration": "^7.0.0",
-+ "@babel/parser": "^7.3.4",
-+ "@babel/types": "^7.3.4",
-+ "debug": "^4.1.0",
-+ "globals": "^11.1.0",
-+ "lodash": "^4.17.11"
-+ }
-+ },
-+ "@babel/types": {
-+ "version": "7.3.4",
-+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz",
-+ "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==",
-+ "dev": true,
-+ "requires": {
-+ "esutils": "^2.0.2",
-+ "lodash": "^4.17.11",
-+ "to-fast-properties": "^2.0.0"
-+ }
-+ },
-+ "@iarna/toml": {
-+ "version": "2.2.5",
-+ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
-+ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
-+ "dev": true
-+ },
-+ "@mrmlnc/readdir-enhanced": {
-+ "version": "2.2.1",
-+ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
-+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
-+ "dev": true,
-+ "requires": {
-+ "call-me-maybe": "^1.0.1",
-+ "glob-to-regexp": "^0.3.0"
-+ }
-+ },
-+ "@nodelib/fs.stat": {
-+ "version": "1.1.3",
-+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
-+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
-+ "dev": true
-+ },
-+ "@parcel/fs": {
-+ "version": "1.11.0",
-+ "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz",
-+ "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==",
-+ "dev": true,
-+ "requires": {
-+ "@parcel/utils": "^1.11.0",
-+ "mkdirp": "^0.5.1",
-+ "rimraf": "^2.6.2"
-+ }
-+ },
-+ "@parcel/logger": {
-+ "version": "1.11.1",
-+ "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz",
-+ "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==",
-+ "dev": true,
-+ "requires": {
-+ "@parcel/workers": "^1.11.0",
-+ "chalk": "^2.1.0",
-+ "grapheme-breaker": "^0.3.2",
-+ "ora": "^2.1.0",
-+ "strip-ansi": "^4.0.0"
-+ }
-+ },
-+ "@parcel/utils": {
-+ "version": "1.11.0",
-+ "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz",
-+ "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==",
-+ "dev": true
-+ },
-+ "@parcel/watcher": {
-+ "version": "1.12.1",
-+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz",
-+ "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==",
-+ "dev": true,
-+ "requires": {
-+ "@parcel/utils": "^1.11.0",
-+ "chokidar": "^2.1.5"
-+ }
-+ },
-+ "@parcel/workers": {
-+ "version": "1.11.0",
-+ "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz",
-+ "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==",
-+ "dev": true,
-+ "requires": {
-+ "@parcel/utils": "^1.11.0",
-+ "physical-cpu-count": "^2.0.0"
-+ }
-+ },
-+ "@types/q": {
-+ "version": "1.5.2",
-+ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz",
-+ "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==",
-+ "dev": true
-+ },
-+ "abab": {
-+ "version": "2.0.3",
-+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz",
-+ "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==",
-+ "dev": true
-+ },
-+ "abbrev": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-+ "dev": true
-+ },
-+ "acorn": {
-+ "version": "7.1.1",
-+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
-+ "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
-+ "dev": true
-+ },
-+ "acorn-globals": {
-+ "version": "4.3.4",
-+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz",
-+ "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
-+ "dev": true,
-+ "requires": {
-+ "acorn": "^6.0.1",
-+ "acorn-walk": "^6.0.1"
-+ },
-+ "dependencies": {
-+ "acorn": {
-+ "version": "6.4.1",
-+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
-+ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "acorn-walk": {
-+ "version": "6.2.0",
-+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
-+ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
-+ "dev": true
-+ },
-+ "ajv": {
-+ "version": "6.12.2",
-+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
-+ "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
-+ "requires": {
-+ "fast-deep-equal": "^3.1.1",
-+ "fast-json-stable-stringify": "^2.0.0",
-+ "json-schema-traverse": "^0.4.1",
-+ "uri-js": "^4.2.2"
-+ }
-+ },
-+ "alphanum-sort": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
-+ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
-+ "dev": true
-+ },
-+ "ansi-regex": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-+ "dev": true
-+ },
-+ "ansi-styles": {
-+ "version": "3.2.1",
-+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-+ "dev": true,
-+ "requires": {
-+ "color-convert": "^1.9.0"
-+ }
-+ },
-+ "ansi-to-html": {
-+ "version": "0.6.14",
-+ "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz",
-+ "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==",
-+ "dev": true,
-+ "requires": {
-+ "entities": "^1.1.2"
-+ },
-+ "dependencies": {
-+ "entities": {
-+ "version": "1.1.2",
-+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
-+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "anymatch": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-+ "dev": true,
-+ "requires": {
-+ "micromatch": "^3.1.4",
-+ "normalize-path": "^2.1.1"
-+ },
-+ "dependencies": {
-+ "normalize-path": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-+ "dev": true,
-+ "requires": {
-+ "remove-trailing-separator": "^1.0.1"
-+ }
-+ }
-+ }
-+ },
-+ "argparse": {
-+ "version": "1.0.10",
-+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-+ "dev": true,
-+ "requires": {
-+ "sprintf-js": "~1.0.2"
-+ }
-+ },
-+ "arr-diff": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
-+ "dev": true
-+ },
-+ "arr-flatten": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-+ "dev": true
-+ },
-+ "arr-union": {
-+ "version": "3.1.0",
-+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
-+ "dev": true
-+ },
-+ "array-equal": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
-+ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
-+ "dev": true
-+ },
-+ "array-unique": {
-+ "version": "0.3.2",
-+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
-+ "dev": true
-+ },
-+ "asn1": {
-+ "version": "0.2.4",
-+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
-+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
-+ "requires": {
-+ "safer-buffer": "~2.1.0"
-+ }
-+ },
-+ "asn1.js": {
-+ "version": "4.10.1",
-+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
-+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
-+ "dev": true,
-+ "requires": {
-+ "bn.js": "^4.0.0",
-+ "inherits": "^2.0.1",
-+ "minimalistic-assert": "^1.0.0"
-+ }
-+ },
-+ "assert": {
-+ "version": "1.5.0",
-+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
-+ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
-+ "dev": true,
-+ "requires": {
-+ "object-assign": "^4.1.1",
-+ "util": "0.10.3"
-+ },
-+ "dependencies": {
-+ "inherits": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
-+ "dev": true
-+ },
-+ "util": {
-+ "version": "0.10.3",
-+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
-+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
-+ "dev": true,
-+ "requires": {
-+ "inherits": "2.0.1"
-+ }
-+ }
-+ }
-+ },
-+ "assert-plus": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
-+ },
-+ "assign-symbols": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
-+ "dev": true
-+ },
-+ "async-each": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-+ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-+ "dev": true
-+ },
-+ "async-limiter": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
-+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
-+ "dev": true
-+ },
-+ "asynckit": {
-+ "version": "0.4.0",
-+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
-+ },
-+ "atob": {
-+ "version": "2.1.2",
-+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
-+ "dev": true
-+ },
-+ "aws-sign2": {
-+ "version": "0.7.0",
-+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
-+ },
-+ "aws4": {
-+ "version": "1.9.1",
-+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
-+ "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
-+ },
-+ "babel-plugin-dynamic-import-node": {
-+ "version": "2.3.3",
-+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
-+ "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
-+ "dev": true,
-+ "requires": {
-+ "object.assign": "^4.1.0"
-+ }
-+ },
-+ "babel-runtime": {
-+ "version": "6.26.0",
-+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
-+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-+ "dev": true,
-+ "requires": {
-+ "core-js": "^2.4.0",
-+ "regenerator-runtime": "^0.11.0"
-+ },
-+ "dependencies": {
-+ "regenerator-runtime": {
-+ "version": "0.11.1",
-+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "babel-types": {
-+ "version": "6.26.0",
-+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
-+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
-+ "dev": true,
-+ "requires": {
-+ "babel-runtime": "^6.26.0",
-+ "esutils": "^2.0.2",
-+ "lodash": "^4.17.4",
-+ "to-fast-properties": "^1.0.3"
-+ },
-+ "dependencies": {
-+ "to-fast-properties": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
-+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "babylon-walk": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz",
-+ "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=",
-+ "dev": true,
-+ "requires": {
-+ "babel-runtime": "^6.11.6",
-+ "babel-types": "^6.15.0",
-+ "lodash.clone": "^4.5.0"
-+ }
-+ },
- "balanced-match": {
- "version": "1.0.0",
-- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-+ "dev": true
-+ },
-+ "base": {
-+ "version": "0.11.2",
-+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-+ "dev": true,
-+ "requires": {
-+ "cache-base": "^1.0.1",
-+ "class-utils": "^0.3.5",
-+ "component-emitter": "^1.2.1",
-+ "define-property": "^1.0.0",
-+ "isobject": "^3.0.1",
-+ "mixin-deep": "^1.2.0",
-+ "pascalcase": "^0.1.1"
-+ },
-+ "dependencies": {
-+ "define-property": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-+ "dev": true,
-+ "requires": {
-+ "is-descriptor": "^1.0.0"
-+ }
-+ },
-+ "is-accessor-descriptor": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^6.0.0"
-+ }
-+ },
-+ "is-data-descriptor": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^6.0.0"
-+ }
-+ },
-+ "is-descriptor": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-+ "dev": true,
-+ "requires": {
-+ "is-accessor-descriptor": "^1.0.0",
-+ "is-data-descriptor": "^1.0.0",
-+ "kind-of": "^6.0.2"
-+ }
-+ }
-+ }
-+ },
-+ "base64-js": {
-+ "version": "1.3.1",
-+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
-+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
-+ "dev": true
-+ },
-+ "bcrypt-pbkdf": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
-+ "requires": {
-+ "tweetnacl": "^0.14.3"
-+ }
-+ },
-+ "binary-extensions": {
-+ "version": "1.13.1",
-+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-+ "dev": true
-+ },
-+ "bindings": {
-+ "version": "1.5.0",
-+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
-+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
-+ "dev": true,
-+ "requires": {
-+ "file-uri-to-path": "1.0.0"
-+ }
-+ },
-+ "bn.js": {
-+ "version": "4.11.8",
-+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
-+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
-+ "dev": true
-+ },
-+ "boolbase": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
-+ "dev": true
-+ },
-+ "brace-expansion": {
-+ "version": "1.1.11",
-+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-+ "dev": true,
-+ "requires": {
-+ "balanced-match": "^1.0.0",
-+ "concat-map": "0.0.1"
-+ }
-+ },
-+ "braces": {
-+ "version": "2.3.2",
-+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-+ "dev": true,
-+ "requires": {
-+ "arr-flatten": "^1.1.0",
-+ "array-unique": "^0.3.2",
-+ "extend-shallow": "^2.0.1",
-+ "fill-range": "^4.0.0",
-+ "isobject": "^3.0.1",
-+ "repeat-element": "^1.1.2",
-+ "snapdragon": "^0.8.1",
-+ "snapdragon-node": "^2.0.1",
-+ "split-string": "^3.0.2",
-+ "to-regex": "^3.0.1"
-+ },
-+ "dependencies": {
-+ "extend-shallow": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-+ "dev": true,
-+ "requires": {
-+ "is-extendable": "^0.1.0"
-+ }
-+ }
-+ }
-+ },
-+ "brfs": {
-+ "version": "1.6.1",
-+ "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz",
-+ "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==",
-+ "dev": true,
-+ "requires": {
-+ "quote-stream": "^1.0.1",
-+ "resolve": "^1.1.5",
-+ "static-module": "^2.2.0",
-+ "through2": "^2.0.0"
-+ }
-+ },
-+ "brorand": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
-+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
-+ "dev": true
-+ },
-+ "browser-process-hrtime": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
-+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
-+ "dev": true
-+ },
-+ "browserify-aes": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
-+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
-+ "dev": true,
-+ "requires": {
-+ "buffer-xor": "^1.0.3",
-+ "cipher-base": "^1.0.0",
-+ "create-hash": "^1.1.0",
-+ "evp_bytestokey": "^1.0.3",
-+ "inherits": "^2.0.1",
-+ "safe-buffer": "^5.0.1"
-+ }
-+ },
-+ "browserify-cipher": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
-+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
-+ "dev": true,
-+ "requires": {
-+ "browserify-aes": "^1.0.4",
-+ "browserify-des": "^1.0.0",
-+ "evp_bytestokey": "^1.0.0"
-+ }
-+ },
-+ "browserify-des": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
-+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
-+ "dev": true,
-+ "requires": {
-+ "cipher-base": "^1.0.1",
-+ "des.js": "^1.0.0",
-+ "inherits": "^2.0.1",
-+ "safe-buffer": "^5.1.2"
-+ }
-+ },
-+ "browserify-rsa": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
-+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
-+ "dev": true,
-+ "requires": {
-+ "bn.js": "^4.1.0",
-+ "randombytes": "^2.0.1"
-+ }
-+ },
-+ "browserify-sign": {
-+ "version": "4.0.4",
-+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
-+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
-+ "dev": true,
-+ "requires": {
-+ "bn.js": "^4.1.1",
-+ "browserify-rsa": "^4.0.0",
-+ "create-hash": "^1.1.0",
-+ "create-hmac": "^1.1.2",
-+ "elliptic": "^6.0.0",
-+ "inherits": "^2.0.1",
-+ "parse-asn1": "^5.0.0"
-+ }
-+ },
-+ "browserify-zlib": {
-+ "version": "0.2.0",
-+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
-+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
-+ "dev": true,
-+ "requires": {
-+ "pako": "~1.0.5"
-+ },
-+ "dependencies": {
-+ "pako": {
-+ "version": "1.0.11",
-+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
-+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "browserslist": {
-+ "version": "4.12.0",
-+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz",
-+ "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==",
-+ "dev": true,
-+ "requires": {
-+ "caniuse-lite": "^1.0.30001043",
-+ "electron-to-chromium": "^1.3.413",
-+ "node-releases": "^1.1.53",
-+ "pkg-up": "^2.0.0"
-+ }
-+ },
-+ "buffer": {
-+ "version": "4.9.2",
-+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
-+ "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
-+ "dev": true,
-+ "requires": {
-+ "base64-js": "^1.0.2",
-+ "ieee754": "^1.1.4",
-+ "isarray": "^1.0.0"
-+ }
-+ },
-+ "buffer-equal": {
-+ "version": "0.0.1",
-+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
-+ "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=",
-+ "dev": true
-+ },
-+ "buffer-from": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
-+ "dev": true
-+ },
-+ "buffer-xor": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
-+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
-+ "dev": true
-+ },
-+ "builtin-status-codes": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
-+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
-+ "dev": true
-+ },
-+ "cache-base": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-+ "dev": true,
-+ "requires": {
-+ "collection-visit": "^1.0.0",
-+ "component-emitter": "^1.2.1",
-+ "get-value": "^2.0.6",
-+ "has-value": "^1.0.0",
-+ "isobject": "^3.0.1",
-+ "set-value": "^2.0.0",
-+ "to-object-path": "^0.3.0",
-+ "union-value": "^1.0.0",
-+ "unset-value": "^1.0.0"
-+ }
-+ },
-+ "call-me-maybe": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
-+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
-+ "dev": true
-+ },
-+ "caller-callsite": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
-+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
-+ "dev": true,
-+ "requires": {
-+ "callsites": "^2.0.0"
-+ }
-+ },
-+ "caller-path": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
-+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
-+ "dev": true,
-+ "requires": {
-+ "caller-callsite": "^2.0.0"
-+ }
-+ },
-+ "callsites": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
-+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
-+ "dev": true
-+ },
-+ "camelcase": {
-+ "version": "5.3.1",
-+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-+ "dev": true
-+ },
-+ "caniuse-api": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
-+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
-+ "dev": true,
-+ "requires": {
-+ "browserslist": "^4.0.0",
-+ "caniuse-lite": "^1.0.0",
-+ "lodash.memoize": "^4.1.2",
-+ "lodash.uniq": "^4.5.0"
-+ }
-+ },
-+ "caniuse-lite": {
-+ "version": "1.0.30001048",
-+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz",
-+ "integrity": "sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg==",
-+ "dev": true
-+ },
-+ "caseless": {
-+ "version": "0.12.0",
-+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
-+ },
-+ "chalk": {
-+ "version": "2.4.2",
-+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-+ "dev": true,
-+ "requires": {
-+ "ansi-styles": "^3.2.1",
-+ "escape-string-regexp": "^1.0.5",
-+ "supports-color": "^5.3.0"
-+ },
-+ "dependencies": {
-+ "supports-color": {
-+ "version": "5.5.0",
-+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-+ "dev": true,
-+ "requires": {
-+ "has-flag": "^3.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "chokidar": {
-+ "version": "2.1.8",
-+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-+ "dev": true,
-+ "requires": {
-+ "anymatch": "^2.0.0",
-+ "async-each": "^1.0.1",
-+ "braces": "^2.3.2",
-+ "fsevents": "^1.2.7",
-+ "glob-parent": "^3.1.0",
-+ "inherits": "^2.0.3",
-+ "is-binary-path": "^1.0.0",
-+ "is-glob": "^4.0.0",
-+ "normalize-path": "^3.0.0",
-+ "path-is-absolute": "^1.0.0",
-+ "readdirp": "^2.2.1",
-+ "upath": "^1.1.1"
-+ },
-+ "dependencies": {
-+ "fsevents": {
-+ "version": "1.2.12",
-+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
-+ "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "bindings": "^1.5.0",
-+ "nan": "^2.12.1",
-+ "node-pre-gyp": "*"
-+ },
-+ "dependencies": {
-+ "abbrev": {
-+ "version": "1.1.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "ansi-regex": {
-+ "version": "2.1.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "aproba": {
-+ "version": "1.2.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "are-we-there-yet": {
-+ "version": "1.1.5",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "delegates": "^1.0.0",
-+ "readable-stream": "^2.0.6"
-+ }
-+ },
-+ "balanced-match": {
-+ "version": "1.0.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "brace-expansion": {
-+ "version": "1.1.11",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "balanced-match": "^1.0.0",
-+ "concat-map": "0.0.1"
-+ }
-+ },
-+ "chownr": {
-+ "version": "1.1.4",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "code-point-at": {
-+ "version": "1.1.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "concat-map": {
-+ "version": "0.0.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "console-control-strings": {
-+ "version": "1.1.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "core-util-is": {
-+ "version": "1.0.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "debug": {
-+ "version": "3.2.6",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "ms": "^2.1.1"
-+ }
-+ },
-+ "deep-extend": {
-+ "version": "0.6.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "delegates": {
-+ "version": "1.0.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "detect-libc": {
-+ "version": "1.0.3",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "fs-minipass": {
-+ "version": "1.2.7",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "minipass": "^2.6.0"
-+ }
-+ },
-+ "fs.realpath": {
-+ "version": "1.0.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "gauge": {
-+ "version": "2.7.4",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "aproba": "^1.0.3",
-+ "console-control-strings": "^1.0.0",
-+ "has-unicode": "^2.0.0",
-+ "object-assign": "^4.1.0",
-+ "signal-exit": "^3.0.0",
-+ "string-width": "^1.0.1",
-+ "strip-ansi": "^3.0.1",
-+ "wide-align": "^1.1.0"
-+ }
-+ },
-+ "glob": {
-+ "version": "7.1.6",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "fs.realpath": "^1.0.0",
-+ "inflight": "^1.0.4",
-+ "inherits": "2",
-+ "minimatch": "^3.0.4",
-+ "once": "^1.3.0",
-+ "path-is-absolute": "^1.0.0"
-+ }
-+ },
-+ "has-unicode": {
-+ "version": "2.0.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "iconv-lite": {
-+ "version": "0.4.24",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "safer-buffer": ">= 2.1.2 < 3"
-+ }
-+ },
-+ "ignore-walk": {
-+ "version": "3.0.3",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "minimatch": "^3.0.4"
-+ }
-+ },
-+ "inflight": {
-+ "version": "1.0.6",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "once": "^1.3.0",
-+ "wrappy": "1"
-+ }
-+ },
-+ "inherits": {
-+ "version": "2.0.4",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "ini": {
-+ "version": "1.3.5",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "is-fullwidth-code-point": {
-+ "version": "1.0.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "number-is-nan": "^1.0.0"
-+ }
-+ },
-+ "isarray": {
-+ "version": "1.0.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "minimatch": {
-+ "version": "3.0.4",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "brace-expansion": "^1.1.7"
-+ }
-+ },
-+ "minimist": {
-+ "version": "1.2.5",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "minipass": {
-+ "version": "2.9.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "safe-buffer": "^5.1.2",
-+ "yallist": "^3.0.0"
-+ }
-+ },
-+ "minizlib": {
-+ "version": "1.3.3",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "minipass": "^2.9.0"
-+ }
-+ },
-+ "mkdirp": {
-+ "version": "0.5.3",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "minimist": "^1.2.5"
-+ }
-+ },
-+ "ms": {
-+ "version": "2.1.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "needle": {
-+ "version": "2.3.3",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "debug": "^3.2.6",
-+ "iconv-lite": "^0.4.4",
-+ "sax": "^1.2.4"
-+ }
-+ },
-+ "node-pre-gyp": {
-+ "version": "0.14.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "detect-libc": "^1.0.2",
-+ "mkdirp": "^0.5.1",
-+ "needle": "^2.2.1",
-+ "nopt": "^4.0.1",
-+ "npm-packlist": "^1.1.6",
-+ "npmlog": "^4.0.2",
-+ "rc": "^1.2.7",
-+ "rimraf": "^2.6.1",
-+ "semver": "^5.3.0",
-+ "tar": "^4.4.2"
-+ }
-+ },
-+ "nopt": {
-+ "version": "4.0.3",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "abbrev": "1",
-+ "osenv": "^0.1.4"
-+ }
-+ },
-+ "npm-bundled": {
-+ "version": "1.1.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "npm-normalize-package-bin": "^1.0.1"
-+ }
-+ },
-+ "npm-normalize-package-bin": {
-+ "version": "1.0.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "npm-packlist": {
-+ "version": "1.4.8",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "ignore-walk": "^3.0.1",
-+ "npm-bundled": "^1.0.1",
-+ "npm-normalize-package-bin": "^1.0.1"
-+ }
-+ },
-+ "npmlog": {
-+ "version": "4.1.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "are-we-there-yet": "~1.1.2",
-+ "console-control-strings": "~1.1.0",
-+ "gauge": "~2.7.3",
-+ "set-blocking": "~2.0.0"
-+ }
-+ },
-+ "number-is-nan": {
-+ "version": "1.0.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "object-assign": {
-+ "version": "4.1.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "once": {
-+ "version": "1.4.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "wrappy": "1"
-+ }
-+ },
-+ "os-homedir": {
-+ "version": "1.0.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "os-tmpdir": {
-+ "version": "1.0.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "osenv": {
-+ "version": "0.1.5",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "os-homedir": "^1.0.0",
-+ "os-tmpdir": "^1.0.0"
-+ }
-+ },
-+ "path-is-absolute": {
-+ "version": "1.0.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "process-nextick-args": {
-+ "version": "2.0.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "rc": {
-+ "version": "1.2.8",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "deep-extend": "^0.6.0",
-+ "ini": "~1.3.0",
-+ "minimist": "^1.2.0",
-+ "strip-json-comments": "~2.0.1"
-+ }
-+ },
-+ "readable-stream": {
-+ "version": "2.3.7",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "core-util-is": "~1.0.0",
-+ "inherits": "~2.0.3",
-+ "isarray": "~1.0.0",
-+ "process-nextick-args": "~2.0.0",
-+ "safe-buffer": "~5.1.1",
-+ "string_decoder": "~1.1.1",
-+ "util-deprecate": "~1.0.1"
-+ }
-+ },
-+ "rimraf": {
-+ "version": "2.7.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "glob": "^7.1.3"
-+ }
-+ },
-+ "safe-buffer": {
-+ "version": "5.1.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "safer-buffer": {
-+ "version": "2.1.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "sax": {
-+ "version": "1.2.4",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "semver": {
-+ "version": "5.7.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "set-blocking": {
-+ "version": "2.0.0",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "signal-exit": {
-+ "version": "3.0.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "string-width": {
-+ "version": "1.0.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "code-point-at": "^1.0.0",
-+ "is-fullwidth-code-point": "^1.0.0",
-+ "strip-ansi": "^3.0.0"
-+ }
-+ },
-+ "string_decoder": {
-+ "version": "1.1.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "safe-buffer": "~5.1.0"
-+ }
-+ },
-+ "strip-ansi": {
-+ "version": "3.0.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "ansi-regex": "^2.0.0"
-+ }
-+ },
-+ "strip-json-comments": {
-+ "version": "2.0.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "tar": {
-+ "version": "4.4.13",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "chownr": "^1.1.1",
-+ "fs-minipass": "^1.2.5",
-+ "minipass": "^2.8.6",
-+ "minizlib": "^1.2.1",
-+ "mkdirp": "^0.5.0",
-+ "safe-buffer": "^5.1.2",
-+ "yallist": "^3.0.3"
-+ }
-+ },
-+ "util-deprecate": {
-+ "version": "1.0.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "wide-align": {
-+ "version": "1.1.3",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true,
-+ "requires": {
-+ "string-width": "^1.0.2 || 2"
-+ }
-+ },
-+ "wrappy": {
-+ "version": "1.0.2",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ },
-+ "yallist": {
-+ "version": "3.1.1",
-+ "bundled": true,
-+ "dev": true,
-+ "optional": true
-+ }
-+ }
-+ }
-+ }
-+ },
-+ "cipher-base": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
-+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
-+ "dev": true,
-+ "requires": {
-+ "inherits": "^2.0.1",
-+ "safe-buffer": "^5.0.1"
-+ }
-+ },
-+ "class-utils": {
-+ "version": "0.3.6",
-+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-+ "dev": true,
-+ "requires": {
-+ "arr-union": "^3.1.0",
-+ "define-property": "^0.2.5",
-+ "isobject": "^3.0.0",
-+ "static-extend": "^0.1.1"
-+ },
-+ "dependencies": {
-+ "define-property": {
-+ "version": "0.2.5",
-+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-+ "dev": true,
-+ "requires": {
-+ "is-descriptor": "^0.1.0"
-+ }
-+ }
-+ }
-+ },
-+ "cli-cursor": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-+ "dev": true,
-+ "requires": {
-+ "restore-cursor": "^2.0.0"
-+ }
-+ },
-+ "cli-spinners": {
-+ "version": "1.3.1",
-+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz",
-+ "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==",
-+ "dev": true
-+ },
-+ "cliui": {
-+ "version": "5.0.0",
-+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
-+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
-+ "dev": true,
-+ "requires": {
-+ "string-width": "^3.1.0",
-+ "strip-ansi": "^5.2.0",
-+ "wrap-ansi": "^5.1.0"
-+ },
-+ "dependencies": {
-+ "ansi-regex": {
-+ "version": "4.1.0",
-+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-+ "dev": true
-+ },
-+ "strip-ansi": {
-+ "version": "5.2.0",
-+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-+ "dev": true,
-+ "requires": {
-+ "ansi-regex": "^4.1.0"
-+ }
-+ }
-+ }
-+ },
-+ "clone": {
-+ "version": "2.1.2",
-+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
-+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
-+ "dev": true
-+ },
-+ "clones": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/clones/-/clones-1.2.0.tgz",
-+ "integrity": "sha512-FXDYw4TjR8wgPZYui2LeTqWh1BLpfQ8lB6upMtlpDF6WlOOxghmTTxWyngdKTgozqBgKnHbTVwTE+hOHqAykuQ==",
-+ "dev": true
-+ },
-+ "coa": {
-+ "version": "2.0.2",
-+ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
-+ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
-+ "dev": true,
-+ "requires": {
-+ "@types/q": "^1.5.1",
-+ "chalk": "^2.4.1",
-+ "q": "^1.1.2"
-+ }
-+ },
-+ "collection-visit": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
-+ "dev": true,
-+ "requires": {
-+ "map-visit": "^1.0.0",
-+ "object-visit": "^1.0.0"
-+ }
-+ },
-+ "color": {
-+ "version": "3.1.2",
-+ "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz",
-+ "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==",
-+ "dev": true,
-+ "requires": {
-+ "color-convert": "^1.9.1",
-+ "color-string": "^1.5.2"
-+ }
-+ },
-+ "color-convert": {
-+ "version": "1.9.3",
-+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-+ "dev": true,
-+ "requires": {
-+ "color-name": "1.1.3"
-+ }
-+ },
-+ "color-name": {
-+ "version": "1.1.3",
-+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
-+ "dev": true
-+ },
-+ "color-string": {
-+ "version": "1.5.3",
-+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
-+ "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
-+ "dev": true,
-+ "requires": {
-+ "color-name": "^1.0.0",
-+ "simple-swizzle": "^0.2.2"
-+ }
-+ },
-+ "combined-stream": {
-+ "version": "1.0.8",
-+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-+ "requires": {
-+ "delayed-stream": "~1.0.0"
-+ }
-+ },
-+ "command-exists": {
-+ "version": "1.2.9",
-+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
-+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
-+ "dev": true
-+ },
-+ "commander": {
-+ "version": "2.20.3",
-+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-+ "dev": true
-+ },
-+ "component-emitter": {
-+ "version": "1.3.0",
-+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
-+ "dev": true
-+ },
-+ "concat-map": {
-+ "version": "0.0.1",
-+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-+ "dev": true
-+ },
-+ "concat-stream": {
-+ "version": "1.6.2",
-+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-+ "dev": true,
-+ "requires": {
-+ "buffer-from": "^1.0.0",
-+ "inherits": "^2.0.3",
-+ "readable-stream": "^2.2.2",
-+ "typedarray": "^0.0.6"
-+ }
-+ },
-+ "config-chain": {
-+ "version": "1.1.12",
-+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
-+ "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
-+ "dev": true,
-+ "requires": {
-+ "ini": "^1.3.4",
-+ "proto-list": "~1.2.1"
-+ }
-+ },
-+ "console-browserify": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
-+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
-+ "dev": true
-+ },
-+ "constants-browserify": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
-+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
-+ "dev": true
-+ },
-+ "convert-source-map": {
-+ "version": "1.7.0",
-+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
-+ "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
-+ "dev": true,
-+ "requires": {
-+ "safe-buffer": "~5.1.1"
-+ }
-+ },
-+ "copy-descriptor": {
-+ "version": "0.1.1",
-+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
-+ "dev": true
-+ },
-+ "core-js": {
-+ "version": "2.6.11",
-+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
-+ "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==",
-+ "dev": true
-+ },
-+ "core-util-is": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
-+ },
-+ "cosmiconfig": {
-+ "version": "5.2.1",
-+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
-+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
-+ "dev": true,
-+ "requires": {
-+ "import-fresh": "^2.0.0",
-+ "is-directory": "^0.3.1",
-+ "js-yaml": "^3.13.1",
-+ "parse-json": "^4.0.0"
-+ }
-+ },
-+ "create-ecdh": {
-+ "version": "4.0.3",
-+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
-+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
-+ "dev": true,
-+ "requires": {
-+ "bn.js": "^4.1.0",
-+ "elliptic": "^6.0.0"
-+ }
-+ },
-+ "create-hash": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
-+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
-+ "dev": true,
-+ "requires": {
-+ "cipher-base": "^1.0.1",
-+ "inherits": "^2.0.1",
-+ "md5.js": "^1.3.4",
-+ "ripemd160": "^2.0.1",
-+ "sha.js": "^2.4.0"
-+ }
-+ },
-+ "create-hmac": {
-+ "version": "1.1.7",
-+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
-+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
-+ "dev": true,
-+ "requires": {
-+ "cipher-base": "^1.0.3",
-+ "create-hash": "^1.1.0",
-+ "inherits": "^2.0.1",
-+ "ripemd160": "^2.0.0",
-+ "safe-buffer": "^5.0.1",
-+ "sha.js": "^2.4.8"
-+ }
-+ },
-+ "cross-spawn": {
-+ "version": "6.0.5",
-+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-+ "dev": true,
-+ "requires": {
-+ "nice-try": "^1.0.4",
-+ "path-key": "^2.0.1",
-+ "semver": "^5.5.0",
-+ "shebang-command": "^1.2.0",
-+ "which": "^1.2.9"
-+ }
-+ },
-+ "crypto-browserify": {
-+ "version": "3.12.0",
-+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
-+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
-+ "dev": true,
-+ "requires": {
-+ "browserify-cipher": "^1.0.0",
-+ "browserify-sign": "^4.0.0",
-+ "create-ecdh": "^4.0.0",
-+ "create-hash": "^1.1.0",
-+ "create-hmac": "^1.1.0",
-+ "diffie-hellman": "^5.0.0",
-+ "inherits": "^2.0.1",
-+ "pbkdf2": "^3.0.3",
-+ "public-encrypt": "^4.0.0",
-+ "randombytes": "^2.0.0",
-+ "randomfill": "^1.0.3"
-+ }
-+ },
-+ "css-color-names": {
-+ "version": "0.0.4",
-+ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
-+ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
-+ "dev": true
-+ },
-+ "css-declaration-sorter": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
-+ "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.1",
-+ "timsort": "^0.3.0"
-+ }
-+ },
-+ "css-modules-loader-core": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz",
-+ "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=",
-+ "dev": true,
-+ "requires": {
-+ "icss-replace-symbols": "1.1.0",
-+ "postcss": "6.0.1",
-+ "postcss-modules-extract-imports": "1.1.0",
-+ "postcss-modules-local-by-default": "1.2.0",
-+ "postcss-modules-scope": "1.1.0",
-+ "postcss-modules-values": "1.3.0"
-+ },
-+ "dependencies": {
-+ "ansi-regex": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-+ "dev": true
-+ },
-+ "ansi-styles": {
-+ "version": "2.2.1",
-+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-+ "dev": true
-+ },
-+ "chalk": {
-+ "version": "1.1.3",
-+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-+ "dev": true,
-+ "requires": {
-+ "ansi-styles": "^2.2.1",
-+ "escape-string-regexp": "^1.0.2",
-+ "has-ansi": "^2.0.0",
-+ "strip-ansi": "^3.0.0",
-+ "supports-color": "^2.0.0"
-+ },
-+ "dependencies": {
-+ "supports-color": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "has-flag": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
-+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
-+ "dev": true
-+ },
-+ "postcss": {
-+ "version": "6.0.1",
-+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz",
-+ "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=",
-+ "dev": true,
-+ "requires": {
-+ "chalk": "^1.1.3",
-+ "source-map": "^0.5.6",
-+ "supports-color": "^3.2.3"
-+ }
-+ },
-+ "source-map": {
-+ "version": "0.5.7",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-+ "dev": true
-+ },
-+ "strip-ansi": {
-+ "version": "3.0.1",
-+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-+ "dev": true,
-+ "requires": {
-+ "ansi-regex": "^2.0.0"
-+ }
-+ },
-+ "supports-color": {
-+ "version": "3.2.3",
-+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
-+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
-+ "dev": true,
-+ "requires": {
-+ "has-flag": "^1.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "css-select": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
-+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
-+ "dev": true,
-+ "requires": {
-+ "boolbase": "^1.0.0",
-+ "css-what": "^3.2.1",
-+ "domutils": "^1.7.0",
-+ "nth-check": "^1.0.2"
-+ }
-+ },
-+ "css-select-base-adapter": {
-+ "version": "0.1.1",
-+ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
-+ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
-+ "dev": true
-+ },
-+ "css-selector-tokenizer": {
-+ "version": "0.7.2",
-+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz",
-+ "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==",
-+ "dev": true,
-+ "requires": {
-+ "cssesc": "^3.0.0",
-+ "fastparse": "^1.1.2",
-+ "regexpu-core": "^4.6.0"
-+ }
-+ },
-+ "css-tree": {
-+ "version": "1.0.0-alpha.37",
-+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
-+ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
-+ "dev": true,
-+ "requires": {
-+ "mdn-data": "2.0.4",
-+ "source-map": "^0.6.1"
-+ }
-+ },
-+ "css-what": {
-+ "version": "3.2.1",
-+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz",
-+ "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==",
-+ "dev": true
-+ },
-+ "cssesc": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
-+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
-+ "dev": true
-+ },
-+ "cssnano": {
-+ "version": "4.1.10",
-+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
-+ "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
-+ "dev": true,
-+ "requires": {
-+ "cosmiconfig": "^5.0.0",
-+ "cssnano-preset-default": "^4.0.7",
-+ "is-resolvable": "^1.0.0",
-+ "postcss": "^7.0.0"
-+ }
-+ },
-+ "cssnano-preset-default": {
-+ "version": "4.0.7",
-+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
-+ "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==",
-+ "dev": true,
-+ "requires": {
-+ "css-declaration-sorter": "^4.0.1",
-+ "cssnano-util-raw-cache": "^4.0.1",
-+ "postcss": "^7.0.0",
-+ "postcss-calc": "^7.0.1",
-+ "postcss-colormin": "^4.0.3",
-+ "postcss-convert-values": "^4.0.1",
-+ "postcss-discard-comments": "^4.0.2",
-+ "postcss-discard-duplicates": "^4.0.2",
-+ "postcss-discard-empty": "^4.0.1",
-+ "postcss-discard-overridden": "^4.0.1",
-+ "postcss-merge-longhand": "^4.0.11",
-+ "postcss-merge-rules": "^4.0.3",
-+ "postcss-minify-font-values": "^4.0.2",
-+ "postcss-minify-gradients": "^4.0.2",
-+ "postcss-minify-params": "^4.0.2",
-+ "postcss-minify-selectors": "^4.0.2",
-+ "postcss-normalize-charset": "^4.0.1",
-+ "postcss-normalize-display-values": "^4.0.2",
-+ "postcss-normalize-positions": "^4.0.2",
-+ "postcss-normalize-repeat-style": "^4.0.2",
-+ "postcss-normalize-string": "^4.0.2",
-+ "postcss-normalize-timing-functions": "^4.0.2",
-+ "postcss-normalize-unicode": "^4.0.1",
-+ "postcss-normalize-url": "^4.0.1",
-+ "postcss-normalize-whitespace": "^4.0.2",
-+ "postcss-ordered-values": "^4.1.2",
-+ "postcss-reduce-initial": "^4.0.3",
-+ "postcss-reduce-transforms": "^4.0.2",
-+ "postcss-svgo": "^4.0.2",
-+ "postcss-unique-selectors": "^4.0.1"
-+ }
-+ },
-+ "cssnano-util-get-arguments": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
-+ "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
-+ "dev": true
-+ },
-+ "cssnano-util-get-match": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
-+ "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
-+ "dev": true
-+ },
-+ "cssnano-util-raw-cache": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
-+ "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.0"
-+ }
-+ },
-+ "cssnano-util-same-parent": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
-+ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
-+ "dev": true
-+ },
-+ "csso": {
-+ "version": "4.0.3",
-+ "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz",
-+ "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==",
-+ "dev": true,
-+ "requires": {
-+ "css-tree": "1.0.0-alpha.39"
-+ },
-+ "dependencies": {
-+ "css-tree": {
-+ "version": "1.0.0-alpha.39",
-+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz",
-+ "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==",
-+ "dev": true,
-+ "requires": {
-+ "mdn-data": "2.0.6",
-+ "source-map": "^0.6.1"
-+ }
-+ },
-+ "mdn-data": {
-+ "version": "2.0.6",
-+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz",
-+ "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "cssom": {
-+ "version": "0.3.8",
-+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
-+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
-+ "dev": true
-+ },
-+ "cssstyle": {
-+ "version": "1.4.0",
-+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz",
-+ "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
-+ "dev": true,
-+ "requires": {
-+ "cssom": "0.3.x"
-+ }
-+ },
-+ "dashdash": {
-+ "version": "1.14.1",
-+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
-+ "requires": {
-+ "assert-plus": "^1.0.0"
-+ }
-+ },
-+ "data-urls": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz",
-+ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
-+ "dev": true,
-+ "requires": {
-+ "abab": "^2.0.0",
-+ "whatwg-mimetype": "^2.2.0",
-+ "whatwg-url": "^7.0.0"
-+ }
-+ },
-+ "deasync": {
-+ "version": "0.1.19",
-+ "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.19.tgz",
-+ "integrity": "sha512-oh3MRktfnPlLysCPpBpKZZzb4cUC/p0aA3SyRGp15lN30juJBTo/CiD0d4fR+f1kBtUQoJj1NE9RPNWQ7BQ9Mg==",
-+ "dev": true,
-+ "requires": {
-+ "bindings": "^1.5.0",
-+ "node-addon-api": "^1.7.1"
-+ }
-+ },
-+ "debug": {
-+ "version": "4.1.1",
-+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-+ "dev": true,
-+ "requires": {
-+ "ms": "^2.1.1"
-+ }
-+ },
-+ "decamelize": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-+ "dev": true
-+ },
-+ "decode-uri-component": {
-+ "version": "0.2.0",
-+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
-+ "dev": true
-+ },
-+ "deep-is": {
-+ "version": "0.1.3",
-+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
-+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
-+ "dev": true
-+ },
-+ "defaults": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
-+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
-+ "dev": true,
-+ "requires": {
-+ "clone": "^1.0.2"
-+ },
-+ "dependencies": {
-+ "clone": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
-+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "define-properties": {
-+ "version": "1.1.3",
-+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
-+ "dev": true,
-+ "requires": {
-+ "object-keys": "^1.0.12"
-+ }
-+ },
-+ "define-property": {
-+ "version": "2.0.2",
-+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-+ "dev": true,
-+ "requires": {
-+ "is-descriptor": "^1.0.2",
-+ "isobject": "^3.0.1"
-+ },
-+ "dependencies": {
-+ "is-accessor-descriptor": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^6.0.0"
-+ }
-+ },
-+ "is-data-descriptor": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^6.0.0"
-+ }
-+ },
-+ "is-descriptor": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-+ "dev": true,
-+ "requires": {
-+ "is-accessor-descriptor": "^1.0.0",
-+ "is-data-descriptor": "^1.0.0",
-+ "kind-of": "^6.0.2"
-+ }
-+ }
-+ }
-+ },
-+ "delayed-stream": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
-+ },
-+ "depd": {
-+ "version": "1.1.2",
-+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
-+ "dev": true
-+ },
-+ "des.js": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
-+ "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
-+ "dev": true,
-+ "requires": {
-+ "inherits": "^2.0.1",
-+ "minimalistic-assert": "^1.0.0"
-+ }
-+ },
-+ "destroy": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
-+ "dev": true
-+ },
-+ "diffie-hellman": {
-+ "version": "5.0.3",
-+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
-+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
-+ "dev": true,
-+ "requires": {
-+ "bn.js": "^4.1.0",
-+ "miller-rabin": "^4.0.0",
-+ "randombytes": "^2.0.0"
-+ }
-+ },
-+ "dom-serializer": {
-+ "version": "0.2.2",
-+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
-+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
-+ "dev": true,
-+ "requires": {
-+ "domelementtype": "^2.0.1",
-+ "entities": "^2.0.0"
-+ },
-+ "dependencies": {
-+ "domelementtype": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
-+ "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "domain-browser": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
-+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
-+ "dev": true
-+ },
-+ "domelementtype": {
-+ "version": "1.3.1",
-+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
-+ "dev": true
-+ },
-+ "domexception": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
-+ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
-+ "dev": true,
-+ "requires": {
-+ "webidl-conversions": "^4.0.2"
-+ }
-+ },
-+ "domhandler": {
-+ "version": "2.4.2",
-+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
-+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
-+ "dev": true,
-+ "requires": {
-+ "domelementtype": "1"
-+ }
-+ },
-+ "domutils": {
-+ "version": "1.7.0",
-+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
-+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
-+ "dev": true,
-+ "requires": {
-+ "dom-serializer": "0",
-+ "domelementtype": "1"
-+ }
-+ },
-+ "dot-prop": {
-+ "version": "5.2.0",
-+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz",
-+ "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==",
-+ "dev": true,
-+ "requires": {
-+ "is-obj": "^2.0.0"
-+ }
-+ },
-+ "dotenv": {
-+ "version": "5.0.1",
-+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz",
-+ "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==",
-+ "dev": true
-+ },
-+ "dotenv-expand": {
-+ "version": "4.2.0",
-+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz",
-+ "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=",
-+ "dev": true
-+ },
-+ "duplexer2": {
-+ "version": "0.1.4",
-+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
-+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
-+ "dev": true,
-+ "requires": {
-+ "readable-stream": "^2.0.2"
-+ }
-+ },
-+ "ecc-jsbn": {
-+ "version": "0.1.2",
-+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
-+ "requires": {
-+ "jsbn": "~0.1.0",
-+ "safer-buffer": "^2.1.0"
-+ }
-+ },
-+ "editorconfig": {
-+ "version": "0.15.3",
-+ "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
-+ "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
-+ "dev": true,
-+ "requires": {
-+ "commander": "^2.19.0",
-+ "lru-cache": "^4.1.5",
-+ "semver": "^5.6.0",
-+ "sigmund": "^1.0.1"
-+ }
-+ },
-+ "ee-first": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
-+ "dev": true
-+ },
-+ "electron-to-chromium": {
-+ "version": "1.3.418",
-+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.418.tgz",
-+ "integrity": "sha512-i2QrQtHes5fK/F9QGG5XacM5WKEuR322fxTYF9e8O9Gu0mc0WmjjwGpV8c7Htso6Zf2Di18lc3SIPxmMeRFBug==",
-+ "dev": true
-+ },
-+ "elliptic": {
-+ "version": "6.5.2",
-+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
-+ "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
-+ "dev": true,
-+ "requires": {
-+ "bn.js": "^4.4.0",
-+ "brorand": "^1.0.1",
-+ "hash.js": "^1.0.0",
-+ "hmac-drbg": "^1.0.0",
-+ "inherits": "^2.0.1",
-+ "minimalistic-assert": "^1.0.0",
-+ "minimalistic-crypto-utils": "^1.0.0"
-+ }
-+ },
-+ "elm-hot": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/elm-hot/-/elm-hot-1.1.1.tgz",
-+ "integrity": "sha512-ZHjoHd2Ev6riNXNQirj3J+GKKXXwedAUikfFBYzlVL/+3CdGs96cpZ7nhAk4c5l//Qa9ymltrqX36mOlr0pPFA==",
-+ "dev": true
-+ },
-+ "emoji-regex": {
-+ "version": "7.0.3",
-+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-+ "dev": true
-+ },
-+ "encodeurl": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
-+ "dev": true
-+ },
-+ "entities": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
-+ "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
-+ "dev": true
-+ },
-+ "error-ex": {
-+ "version": "1.3.2",
-+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
-+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-+ "dev": true,
-+ "requires": {
-+ "is-arrayish": "^0.2.1"
-+ }
-+ },
-+ "es-abstract": {
-+ "version": "1.17.5",
-+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
-+ "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
-+ "dev": true,
-+ "requires": {
-+ "es-to-primitive": "^1.2.1",
-+ "function-bind": "^1.1.1",
-+ "has": "^1.0.3",
-+ "has-symbols": "^1.0.1",
-+ "is-callable": "^1.1.5",
-+ "is-regex": "^1.0.5",
-+ "object-inspect": "^1.7.0",
-+ "object-keys": "^1.1.1",
-+ "object.assign": "^4.1.0",
-+ "string.prototype.trimleft": "^2.1.1",
-+ "string.prototype.trimright": "^2.1.1"
-+ }
-+ },
-+ "es-to-primitive": {
-+ "version": "1.2.1",
-+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-+ "dev": true,
-+ "requires": {
-+ "is-callable": "^1.1.4",
-+ "is-date-object": "^1.0.1",
-+ "is-symbol": "^1.0.2"
-+ }
-+ },
-+ "escape-html": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
-+ "dev": true
-+ },
-+ "escape-string-regexp": {
-+ "version": "1.0.5",
-+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
-+ "dev": true
-+ },
-+ "escodegen": {
-+ "version": "1.9.1",
-+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz",
-+ "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==",
-+ "dev": true,
-+ "requires": {
-+ "esprima": "^3.1.3",
-+ "estraverse": "^4.2.0",
-+ "esutils": "^2.0.2",
-+ "optionator": "^0.8.1",
-+ "source-map": "~0.6.1"
-+ },
-+ "dependencies": {
-+ "esprima": {
-+ "version": "3.1.3",
-+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
-+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "esprima": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-+ "dev": true
-+ },
-+ "estraverse": {
-+ "version": "4.3.0",
-+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-+ "dev": true
-+ },
-+ "esutils": {
-+ "version": "2.0.3",
-+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-+ "dev": true
-+ },
-+ "etag": {
-+ "version": "1.8.1",
-+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
-+ "dev": true
-+ },
-+ "events": {
-+ "version": "3.1.0",
-+ "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz",
-+ "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==",
-+ "dev": true
-+ },
-+ "evp_bytestokey": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
-+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
-+ "dev": true,
-+ "requires": {
-+ "md5.js": "^1.3.4",
-+ "safe-buffer": "^5.1.1"
-+ }
-+ },
-+ "expand-brackets": {
-+ "version": "2.1.4",
-+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-+ "dev": true,
-+ "requires": {
-+ "debug": "^2.3.3",
-+ "define-property": "^0.2.5",
-+ "extend-shallow": "^2.0.1",
-+ "posix-character-classes": "^0.1.0",
-+ "regex-not": "^1.0.0",
-+ "snapdragon": "^0.8.1",
-+ "to-regex": "^3.0.1"
-+ },
-+ "dependencies": {
-+ "debug": {
-+ "version": "2.6.9",
-+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-+ "dev": true,
-+ "requires": {
-+ "ms": "2.0.0"
-+ }
-+ },
-+ "define-property": {
-+ "version": "0.2.5",
-+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-+ "dev": true,
-+ "requires": {
-+ "is-descriptor": "^0.1.0"
-+ }
-+ },
-+ "extend-shallow": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-+ "dev": true,
-+ "requires": {
-+ "is-extendable": "^0.1.0"
-+ }
-+ },
-+ "ms": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "extend": {
-+ "version": "3.0.2",
-+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
-+ },
-+ "extend-shallow": {
-+ "version": "3.0.2",
-+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-+ "dev": true,
-+ "requires": {
-+ "assign-symbols": "^1.0.0",
-+ "is-extendable": "^1.0.1"
-+ },
-+ "dependencies": {
-+ "is-extendable": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-+ "dev": true,
-+ "requires": {
-+ "is-plain-object": "^2.0.4"
-+ }
-+ }
-+ }
-+ },
-+ "extglob": {
-+ "version": "2.0.4",
-+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-+ "dev": true,
-+ "requires": {
-+ "array-unique": "^0.3.2",
-+ "define-property": "^1.0.0",
-+ "expand-brackets": "^2.1.4",
-+ "extend-shallow": "^2.0.1",
-+ "fragment-cache": "^0.2.1",
-+ "regex-not": "^1.0.0",
-+ "snapdragon": "^0.8.1",
-+ "to-regex": "^3.0.1"
-+ },
-+ "dependencies": {
-+ "define-property": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-+ "dev": true,
-+ "requires": {
-+ "is-descriptor": "^1.0.0"
-+ }
-+ },
-+ "extend-shallow": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-+ "dev": true,
-+ "requires": {
-+ "is-extendable": "^0.1.0"
-+ }
-+ },
-+ "is-accessor-descriptor": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^6.0.0"
-+ }
-+ },
-+ "is-data-descriptor": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^6.0.0"
-+ }
-+ },
-+ "is-descriptor": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-+ "dev": true,
-+ "requires": {
-+ "is-accessor-descriptor": "^1.0.0",
-+ "is-data-descriptor": "^1.0.0",
-+ "kind-of": "^6.0.2"
-+ }
-+ }
-+ }
-+ },
-+ "extsprintf": {
-+ "version": "1.3.0",
-+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
-+ },
-+ "falafel": {
-+ "version": "2.2.4",
-+ "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz",
-+ "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==",
-+ "dev": true,
-+ "requires": {
-+ "acorn": "^7.1.1",
-+ "foreach": "^2.0.5",
-+ "isarray": "^2.0.1",
-+ "object-keys": "^1.0.6"
-+ },
-+ "dependencies": {
-+ "isarray": {
-+ "version": "2.0.5",
-+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "fast-deep-equal": {
-+ "version": "3.1.1",
-+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
-+ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
-+ },
-+ "fast-glob": {
-+ "version": "2.2.7",
-+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
-+ "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
-+ "dev": true,
-+ "requires": {
-+ "@mrmlnc/readdir-enhanced": "^2.2.1",
-+ "@nodelib/fs.stat": "^1.1.2",
-+ "glob-parent": "^3.1.0",
-+ "is-glob": "^4.0.0",
-+ "merge2": "^1.2.3",
-+ "micromatch": "^3.1.10"
-+ }
-+ },
-+ "fast-json-stable-stringify": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
-+ },
-+ "fast-levenshtein": {
-+ "version": "2.0.6",
-+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
-+ "dev": true
-+ },
-+ "fastparse": {
-+ "version": "1.1.2",
-+ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
-+ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
-+ "dev": true
-+ },
-+ "file-uri-to-path": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-+ "dev": true
-+ },
-+ "filesize": {
-+ "version": "3.6.1",
-+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
-+ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
-+ "dev": true
-+ },
-+ "fill-range": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-+ "dev": true,
-+ "requires": {
-+ "extend-shallow": "^2.0.1",
-+ "is-number": "^3.0.0",
-+ "repeat-string": "^1.6.1",
-+ "to-regex-range": "^2.1.0"
-+ },
-+ "dependencies": {
-+ "extend-shallow": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-+ "dev": true,
-+ "requires": {
-+ "is-extendable": "^0.1.0"
-+ }
-+ }
-+ }
-+ },
-+ "find-elm-dependencies": {
-+ "version": "2.0.2",
-+ "resolved": "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-2.0.2.tgz",
-+ "integrity": "sha512-nM5UCbccD1G8CGK2GsM7ykG3ksOAl9E+34jiDfl07CAl2OPnLpBVWY2hlxEmIkSBfdJjSopEowWHrO0cI8RhxQ==",
-+ "dev": true,
-+ "requires": {
-+ "firstline": "1.2.0",
-+ "lodash": "4.17.15"
-+ }
-+ },
-+ "find-up": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
-+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
-+ "dev": true,
-+ "requires": {
-+ "locate-path": "^2.0.0"
-+ }
-+ },
-+ "firstline": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/firstline/-/firstline-1.2.0.tgz",
-+ "integrity": "sha1-yfSIbn9/vwr8EtcZQdzgaxkq6gU=",
-+ "dev": true
-+ },
-+ "for-in": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
-+ "dev": true
-+ },
-+ "foreach": {
-+ "version": "2.0.5",
-+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
-+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
-+ "dev": true
-+ },
-+ "forever-agent": {
-+ "version": "0.6.1",
-+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
-+ },
-+ "form-data": {
-+ "version": "2.3.3",
-+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-+ "requires": {
-+ "asynckit": "^0.4.0",
-+ "combined-stream": "^1.0.6",
-+ "mime-types": "^2.1.12"
-+ }
-+ },
-+ "fragment-cache": {
-+ "version": "0.2.1",
-+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
-+ "dev": true,
-+ "requires": {
-+ "map-cache": "^0.2.2"
-+ }
-+ },
-+ "fresh": {
-+ "version": "0.5.2",
-+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
-+ "dev": true
-+ },
-+ "fs.realpath": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-+ "dev": true
-+ },
-+ "function-bind": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-+ "dev": true
-+ },
-+ "get-caller-file": {
-+ "version": "2.0.5",
-+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-+ "dev": true
-+ },
-+ "get-port": {
-+ "version": "3.2.0",
-+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
-+ "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=",
-+ "dev": true
-+ },
-+ "get-value": {
-+ "version": "2.0.6",
-+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
-+ "dev": true
-+ },
-+ "getpass": {
-+ "version": "0.1.7",
-+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
-+ "requires": {
-+ "assert-plus": "^1.0.0"
-+ }
-+ },
-+ "glob": {
-+ "version": "7.1.4",
-+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
-+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
-+ "dev": true,
-+ "requires": {
-+ "fs.realpath": "^1.0.0",
-+ "inflight": "^1.0.4",
-+ "inherits": "2",
-+ "minimatch": "^3.0.4",
-+ "once": "^1.3.0",
-+ "path-is-absolute": "^1.0.0"
-+ }
-+ },
-+ "glob-parent": {
-+ "version": "3.1.0",
-+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-+ "dev": true,
-+ "requires": {
-+ "is-glob": "^3.1.0",
-+ "path-dirname": "^1.0.0"
-+ },
-+ "dependencies": {
-+ "is-glob": {
-+ "version": "3.1.0",
-+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-+ "dev": true,
-+ "requires": {
-+ "is-extglob": "^2.1.0"
-+ }
-+ }
-+ }
-+ },
-+ "glob-to-regexp": {
-+ "version": "0.3.0",
-+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
-+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
-+ "dev": true
-+ },
-+ "globals": {
-+ "version": "11.12.0",
-+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-+ "dev": true
-+ },
-+ "graceful-fs": {
-+ "version": "4.2.3",
-+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
-+ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
-+ "dev": true
-+ },
-+ "grapheme-breaker": {
-+ "version": "0.3.2",
-+ "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz",
-+ "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=",
-+ "dev": true,
-+ "requires": {
-+ "brfs": "^1.2.0",
-+ "unicode-trie": "^0.3.1"
-+ }
-+ },
-+ "har-schema": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
-+ },
-+ "har-validator": {
-+ "version": "5.1.3",
-+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
-+ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
-+ "requires": {
-+ "ajv": "^6.5.5",
-+ "har-schema": "^2.0.0"
-+ }
-+ },
-+ "has": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-+ "dev": true,
-+ "requires": {
-+ "function-bind": "^1.1.1"
-+ }
-+ },
-+ "has-ansi": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-+ "dev": true,
-+ "requires": {
-+ "ansi-regex": "^2.0.0"
-+ },
-+ "dependencies": {
-+ "ansi-regex": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "has-flag": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
-+ "dev": true
-+ },
-+ "has-symbols": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
-+ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
-+ "dev": true
-+ },
-+ "has-value": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
-+ "dev": true,
-+ "requires": {
-+ "get-value": "^2.0.6",
-+ "has-values": "^1.0.0",
-+ "isobject": "^3.0.0"
-+ }
-+ },
-+ "has-values": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
-+ "dev": true,
-+ "requires": {
-+ "is-number": "^3.0.0",
-+ "kind-of": "^4.0.0"
-+ },
-+ "dependencies": {
-+ "kind-of": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-+ "dev": true,
-+ "requires": {
-+ "is-buffer": "^1.1.5"
-+ }
-+ }
-+ }
-+ },
-+ "hash-base": {
-+ "version": "3.0.4",
-+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
-+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
-+ "dev": true,
-+ "requires": {
-+ "inherits": "^2.0.1",
-+ "safe-buffer": "^5.0.1"
-+ }
-+ },
-+ "hash.js": {
-+ "version": "1.1.7",
-+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
-+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
-+ "dev": true,
-+ "requires": {
-+ "inherits": "^2.0.3",
-+ "minimalistic-assert": "^1.0.1"
-+ }
-+ },
-+ "hex-color-regex": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
-+ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
-+ "dev": true
-+ },
-+ "hmac-drbg": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
-+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
-+ "dev": true,
-+ "requires": {
-+ "hash.js": "^1.0.3",
-+ "minimalistic-assert": "^1.0.0",
-+ "minimalistic-crypto-utils": "^1.0.1"
-+ }
-+ },
-+ "hsl-regex": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
-+ "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
-+ "dev": true
-+ },
-+ "hsla-regex": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
-+ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
-+ "dev": true
-+ },
-+ "html-comment-regex": {
-+ "version": "1.1.2",
-+ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
-+ "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
-+ "dev": true
-+ },
-+ "html-encoding-sniffer": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
-+ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
-+ "dev": true,
-+ "requires": {
-+ "whatwg-encoding": "^1.0.1"
-+ }
-+ },
-+ "html-tags": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz",
-+ "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=",
-+ "dev": true
-+ },
-+ "htmlnano": {
-+ "version": "0.2.5",
-+ "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.5.tgz",
-+ "integrity": "sha512-X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA==",
-+ "dev": true,
-+ "requires": {
-+ "cssnano": "^4.1.10",
-+ "normalize-html-whitespace": "^1.0.0",
-+ "posthtml": "^0.12.0",
-+ "posthtml-render": "^1.1.5",
-+ "purgecss": "^1.4.0",
-+ "svgo": "^1.3.2",
-+ "terser": "^4.3.9",
-+ "uncss": "^0.17.2"
-+ },
-+ "dependencies": {
-+ "posthtml": {
-+ "version": "0.12.3",
-+ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.12.3.tgz",
-+ "integrity": "sha512-Fbpi95+JJyR0tqU7pUy1zTSQFjAsluuwB9pJ1h0jtnGk7n/O2TBtP5nDl9rV0JVACjQ1Lm5wSp4ppChr8u3MhA==",
-+ "dev": true,
-+ "requires": {
-+ "posthtml-parser": "^0.4.2",
-+ "posthtml-render": "^1.2.2"
-+ }
-+ },
-+ "terser": {
-+ "version": "4.6.12",
-+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.12.tgz",
-+ "integrity": "sha512-fnIwuaKjFPANG6MAixC/k1TDtnl1YlPLUlLVIxxGZUn1gfUx2+l3/zGNB72wya+lgsb50QBi2tUV75RiODwnww==",
-+ "dev": true,
-+ "requires": {
-+ "commander": "^2.20.0",
-+ "source-map": "~0.6.1",
-+ "source-map-support": "~0.5.12"
-+ }
-+ }
-+ }
-+ },
-+ "htmlparser2": {
-+ "version": "3.10.1",
-+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
-+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
-+ "dev": true,
-+ "requires": {
-+ "domelementtype": "^1.3.1",
-+ "domhandler": "^2.3.0",
-+ "domutils": "^1.5.1",
-+ "entities": "^1.1.1",
-+ "inherits": "^2.0.1",
-+ "readable-stream": "^3.1.1"
-+ },
-+ "dependencies": {
-+ "entities": {
-+ "version": "1.1.2",
-+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
-+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
-+ "dev": true
-+ },
-+ "readable-stream": {
-+ "version": "3.6.0",
-+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-+ "dev": true,
-+ "requires": {
-+ "inherits": "^2.0.3",
-+ "string_decoder": "^1.1.1",
-+ "util-deprecate": "^1.0.1"
-+ }
-+ }
-+ }
-+ },
-+ "http-errors": {
-+ "version": "1.7.3",
-+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
-+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
-+ "dev": true,
-+ "requires": {
-+ "depd": "~1.1.2",
-+ "inherits": "2.0.4",
-+ "setprototypeof": "1.1.1",
-+ "statuses": ">= 1.5.0 < 2",
-+ "toidentifier": "1.0.0"
-+ }
-+ },
-+ "http-signature": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
-+ "requires": {
-+ "assert-plus": "^1.0.0",
-+ "jsprim": "^1.2.2",
-+ "sshpk": "^1.7.0"
-+ }
-+ },
-+ "https-browserify": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
-+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
-+ "dev": true
-+ },
-+ "iconv-lite": {
-+ "version": "0.4.24",
-+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-+ "dev": true,
-+ "requires": {
-+ "safer-buffer": ">= 2.1.2 < 3"
-+ }
-+ },
-+ "icss-replace-symbols": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
-+ "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
-+ "dev": true
-+ },
-+ "ieee754": {
-+ "version": "1.1.13",
-+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
-+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
-+ "dev": true
-+ },
-+ "import-fresh": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
-+ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
-+ "dev": true,
-+ "requires": {
-+ "caller-path": "^2.0.0",
-+ "resolve-from": "^3.0.0"
-+ }
-+ },
-+ "indexes-of": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
-+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
-+ "dev": true
-+ },
-+ "inflight": {
-+ "version": "1.0.6",
-+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-+ "dev": true,
-+ "requires": {
-+ "once": "^1.3.0",
-+ "wrappy": "1"
-+ }
-+ },
-+ "inherits": {
-+ "version": "2.0.4",
-+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-+ "dev": true
-+ },
-+ "ini": {
-+ "version": "1.3.5",
-+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
-+ "dev": true
-+ },
-+ "invariant": {
-+ "version": "2.2.4",
-+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-+ "dev": true,
-+ "requires": {
-+ "loose-envify": "^1.0.0"
-+ }
-+ },
-+ "is-absolute-url": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
-+ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
-+ "dev": true
-+ },
-+ "is-accessor-descriptor": {
-+ "version": "0.1.6",
-+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^3.0.2"
-+ },
-+ "dependencies": {
-+ "kind-of": {
-+ "version": "3.2.2",
-+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-+ "dev": true,
-+ "requires": {
-+ "is-buffer": "^1.1.5"
-+ }
-+ }
-+ }
-+ },
-+ "is-arrayish": {
-+ "version": "0.2.1",
-+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-+ "dev": true
-+ },
-+ "is-binary-path": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-+ "dev": true,
-+ "requires": {
-+ "binary-extensions": "^1.0.0"
-+ }
-+ },
-+ "is-buffer": {
-+ "version": "1.1.6",
-+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-+ "dev": true
-+ },
-+ "is-callable": {
-+ "version": "1.1.5",
-+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
-+ "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
-+ "dev": true
-+ },
-+ "is-color-stop": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
-+ "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
-+ "dev": true,
-+ "requires": {
-+ "css-color-names": "^0.0.4",
-+ "hex-color-regex": "^1.1.0",
-+ "hsl-regex": "^1.0.0",
-+ "hsla-regex": "^1.0.0",
-+ "rgb-regex": "^1.0.1",
-+ "rgba-regex": "^1.0.0"
-+ }
-+ },
-+ "is-data-descriptor": {
-+ "version": "0.1.4",
-+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^3.0.2"
-+ },
-+ "dependencies": {
-+ "kind-of": {
-+ "version": "3.2.2",
-+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-+ "dev": true,
-+ "requires": {
-+ "is-buffer": "^1.1.5"
-+ }
-+ }
-+ }
-+ },
-+ "is-date-object": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
-+ "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
-+ "dev": true
-+ },
-+ "is-descriptor": {
-+ "version": "0.1.6",
-+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-+ "dev": true,
-+ "requires": {
-+ "is-accessor-descriptor": "^0.1.6",
-+ "is-data-descriptor": "^0.1.4",
-+ "kind-of": "^5.0.0"
-+ },
-+ "dependencies": {
-+ "kind-of": {
-+ "version": "5.1.0",
-+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "is-directory": {
-+ "version": "0.3.1",
-+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
-+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
-+ "dev": true
-+ },
-+ "is-extendable": {
-+ "version": "0.1.1",
-+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
-+ "dev": true
-+ },
-+ "is-extglob": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-+ "dev": true
-+ },
-+ "is-fullwidth-code-point": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-+ "dev": true
-+ },
-+ "is-glob": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-+ "dev": true,
-+ "requires": {
-+ "is-extglob": "^2.1.1"
-+ }
-+ },
-+ "is-html": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz",
-+ "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=",
-+ "dev": true,
-+ "requires": {
-+ "html-tags": "^1.0.0"
-+ }
-+ },
-+ "is-number": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^3.0.2"
-+ },
-+ "dependencies": {
-+ "kind-of": {
-+ "version": "3.2.2",
-+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-+ "dev": true,
-+ "requires": {
-+ "is-buffer": "^1.1.5"
-+ }
-+ }
-+ }
-+ },
-+ "is-obj": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
-+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
-+ "dev": true
-+ },
-+ "is-plain-object": {
-+ "version": "2.0.4",
-+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-+ "dev": true,
-+ "requires": {
-+ "isobject": "^3.0.1"
-+ }
-+ },
-+ "is-regex": {
-+ "version": "1.0.5",
-+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
-+ "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
-+ "dev": true,
-+ "requires": {
-+ "has": "^1.0.3"
-+ }
-+ },
-+ "is-resolvable": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
-+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
-+ "dev": true
-+ },
-+ "is-svg": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
-+ "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
-+ "dev": true,
-+ "requires": {
-+ "html-comment-regex": "^1.1.0"
-+ }
-+ },
-+ "is-symbol": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
-+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
-+ "dev": true,
-+ "requires": {
-+ "has-symbols": "^1.0.1"
-+ }
-+ },
-+ "is-typedarray": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
-+ },
-+ "is-url": {
-+ "version": "1.2.4",
-+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
-+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
-+ "dev": true
-+ },
-+ "is-windows": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
-+ "dev": true
-+ },
-+ "is-wsl": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
-+ "dev": true
-+ },
-+ "isarray": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-+ "dev": true
-+ },
-+ "isexe": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-+ "dev": true
-+ },
-+ "isobject": {
-+ "version": "3.0.1",
-+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-+ "dev": true
-+ },
-+ "isstream": {
-+ "version": "0.1.2",
-+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
-+ },
-+ "js-beautify": {
-+ "version": "1.11.0",
-+ "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz",
-+ "integrity": "sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A==",
-+ "dev": true,
-+ "requires": {
-+ "config-chain": "^1.1.12",
-+ "editorconfig": "^0.15.3",
-+ "glob": "^7.1.3",
-+ "mkdirp": "~1.0.3",
-+ "nopt": "^4.0.3"
-+ },
-+ "dependencies": {
-+ "mkdirp": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "js-levenshtein": {
-+ "version": "1.1.6",
-+ "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
-+ "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
-+ "dev": true
-+ },
-+ "js-tokens": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-+ "dev": true
-+ },
-+ "js-yaml": {
-+ "version": "3.13.1",
-+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
-+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
-+ "dev": true,
-+ "requires": {
-+ "argparse": "^1.0.7",
-+ "esprima": "^4.0.0"
-+ }
-+ },
-+ "jsbn": {
-+ "version": "0.1.1",
-+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
-+ },
-+ "jsdom": {
-+ "version": "14.1.0",
-+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz",
-+ "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==",
-+ "dev": true,
-+ "requires": {
-+ "abab": "^2.0.0",
-+ "acorn": "^6.0.4",
-+ "acorn-globals": "^4.3.0",
-+ "array-equal": "^1.0.0",
-+ "cssom": "^0.3.4",
-+ "cssstyle": "^1.1.1",
-+ "data-urls": "^1.1.0",
-+ "domexception": "^1.0.1",
-+ "escodegen": "^1.11.0",
-+ "html-encoding-sniffer": "^1.0.2",
-+ "nwsapi": "^2.1.3",
-+ "parse5": "5.1.0",
-+ "pn": "^1.1.0",
-+ "request": "^2.88.0",
-+ "request-promise-native": "^1.0.5",
-+ "saxes": "^3.1.9",
-+ "symbol-tree": "^3.2.2",
-+ "tough-cookie": "^2.5.0",
-+ "w3c-hr-time": "^1.0.1",
-+ "w3c-xmlserializer": "^1.1.2",
-+ "webidl-conversions": "^4.0.2",
-+ "whatwg-encoding": "^1.0.5",
-+ "whatwg-mimetype": "^2.3.0",
-+ "whatwg-url": "^7.0.0",
-+ "ws": "^6.1.2",
-+ "xml-name-validator": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "acorn": {
-+ "version": "6.4.1",
-+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
-+ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
-+ "dev": true
-+ },
-+ "escodegen": {
-+ "version": "1.14.1",
-+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz",
-+ "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==",
-+ "dev": true,
-+ "requires": {
-+ "esprima": "^4.0.1",
-+ "estraverse": "^4.2.0",
-+ "esutils": "^2.0.2",
-+ "optionator": "^0.8.1",
-+ "source-map": "~0.6.1"
-+ }
-+ },
-+ "ws": {
-+ "version": "6.2.1",
-+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
-+ "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
-+ "dev": true,
-+ "requires": {
-+ "async-limiter": "~1.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "jsesc": {
-+ "version": "2.5.2",
-+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
-+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
-+ "dev": true
-+ },
-+ "json-parse-better-errors": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
-+ "dev": true
-+ },
-+ "json-schema": {
-+ "version": "0.2.3",
-+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
-+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
-+ },
-+ "json-schema-traverse": {
-+ "version": "0.4.1",
-+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
-+ },
-+ "json-stringify-safe": {
-+ "version": "5.0.1",
-+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
-+ },
-+ "json5": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-+ "dev": true,
-+ "requires": {
-+ "minimist": "^1.2.0"
-+ }
-+ },
-+ "jsprim": {
-+ "version": "1.4.1",
-+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
-+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
-+ "requires": {
-+ "assert-plus": "1.0.0",
-+ "extsprintf": "1.3.0",
-+ "json-schema": "0.2.3",
-+ "verror": "1.10.0"
-+ }
-+ },
-+ "kind-of": {
-+ "version": "6.0.3",
-+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-+ "dev": true
-+ },
-+ "levn": {
-+ "version": "0.3.0",
-+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
-+ "dev": true,
-+ "requires": {
-+ "prelude-ls": "~1.1.2",
-+ "type-check": "~0.3.2"
-+ }
-+ },
-+ "locate-path": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
-+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
-+ "dev": true,
-+ "requires": {
-+ "p-locate": "^2.0.0",
-+ "path-exists": "^3.0.0"
-+ }
-+ },
-+ "lodash": {
-+ "version": "4.17.15",
-+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
-+ "dev": true
-+ },
-+ "lodash.clone": {
-+ "version": "4.5.0",
-+ "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
-+ "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=",
-+ "dev": true
-+ },
-+ "lodash.memoize": {
-+ "version": "4.1.2",
-+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-+ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
-+ "dev": true
-+ },
-+ "lodash.sortby": {
-+ "version": "4.7.0",
-+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
-+ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
-+ "dev": true
-+ },
-+ "lodash.uniq": {
-+ "version": "4.5.0",
-+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
-+ "dev": true
-+ },
-+ "log-symbols": {
-+ "version": "2.2.0",
-+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
-+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
-+ "dev": true,
-+ "requires": {
-+ "chalk": "^2.0.1"
-+ }
-+ },
-+ "loose-envify": {
-+ "version": "1.4.0",
-+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-+ "dev": true,
-+ "requires": {
-+ "js-tokens": "^3.0.0 || ^4.0.0"
-+ }
-+ },
-+ "lru-cache": {
-+ "version": "4.1.5",
-+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-+ "dev": true,
-+ "requires": {
-+ "pseudomap": "^1.0.2",
-+ "yallist": "^2.1.2"
-+ }
-+ },
-+ "magic-string": {
-+ "version": "0.22.5",
-+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
-+ "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==",
-+ "dev": true,
-+ "requires": {
-+ "vlq": "^0.2.2"
-+ }
-+ },
-+ "map-cache": {
-+ "version": "0.2.2",
-+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
-+ "dev": true
-+ },
-+ "map-visit": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
-+ "dev": true,
-+ "requires": {
-+ "object-visit": "^1.0.0"
-+ }
-+ },
-+ "md5.js": {
-+ "version": "1.3.5",
-+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
-+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
-+ "dev": true,
-+ "requires": {
-+ "hash-base": "^3.0.0",
-+ "inherits": "^2.0.1",
-+ "safe-buffer": "^5.1.2"
-+ }
-+ },
-+ "mdn-data": {
-+ "version": "2.0.4",
-+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
-+ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
-+ "dev": true
-+ },
-+ "merge-source-map": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz",
-+ "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=",
-+ "dev": true,
-+ "requires": {
-+ "source-map": "^0.5.6"
-+ },
-+ "dependencies": {
-+ "source-map": {
-+ "version": "0.5.7",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "merge2": {
-+ "version": "1.3.0",
-+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz",
-+ "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==",
-+ "dev": true
-+ },
-+ "micromatch": {
-+ "version": "3.1.10",
-+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-+ "dev": true,
-+ "requires": {
-+ "arr-diff": "^4.0.0",
-+ "array-unique": "^0.3.2",
-+ "braces": "^2.3.1",
-+ "define-property": "^2.0.2",
-+ "extend-shallow": "^3.0.2",
-+ "extglob": "^2.0.4",
-+ "fragment-cache": "^0.2.1",
-+ "kind-of": "^6.0.2",
-+ "nanomatch": "^1.2.9",
-+ "object.pick": "^1.3.0",
-+ "regex-not": "^1.0.0",
-+ "snapdragon": "^0.8.1",
-+ "to-regex": "^3.0.2"
-+ }
-+ },
-+ "miller-rabin": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
-+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
-+ "dev": true,
-+ "requires": {
-+ "bn.js": "^4.0.0",
-+ "brorand": "^1.0.1"
-+ }
-+ },
-+ "mime": {
-+ "version": "1.6.0",
-+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
-+ "dev": true
-+ },
-+ "mime-db": {
-+ "version": "1.44.0",
-+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
-+ "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
-+ },
-+ "mime-types": {
-+ "version": "2.1.27",
-+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
-+ "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
-+ "requires": {
-+ "mime-db": "1.44.0"
-+ }
-+ },
-+ "mimic-fn": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
-+ "dev": true
-+ },
-+ "minimalistic-assert": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
-+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
-+ "dev": true
-+ },
-+ "minimalistic-crypto-utils": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
-+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
-+ "dev": true
-+ },
-+ "minimatch": {
-+ "version": "3.0.4",
-+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-+ "dev": true,
-+ "requires": {
-+ "brace-expansion": "^1.1.7"
-+ }
-+ },
-+ "minimist": {
-+ "version": "1.2.5",
-+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-+ "dev": true
-+ },
-+ "mixin-deep": {
-+ "version": "1.3.2",
-+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-+ "dev": true,
-+ "requires": {
-+ "for-in": "^1.0.2",
-+ "is-extendable": "^1.0.1"
-+ },
-+ "dependencies": {
-+ "is-extendable": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-+ "dev": true,
-+ "requires": {
-+ "is-plain-object": "^2.0.4"
-+ }
-+ }
-+ }
-+ },
-+ "mkdirp": {
-+ "version": "0.5.5",
-+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-+ "dev": true,
-+ "requires": {
-+ "minimist": "^1.2.5"
-+ }
-+ },
-+ "ms": {
-+ "version": "2.1.2",
-+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-+ "dev": true
-+ },
-+ "nan": {
-+ "version": "2.14.1",
-+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
-+ "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
-+ "dev": true,
-+ "optional": true
-+ },
-+ "nanomatch": {
-+ "version": "1.2.13",
-+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-+ "dev": true,
-+ "requires": {
-+ "arr-diff": "^4.0.0",
-+ "array-unique": "^0.3.2",
-+ "define-property": "^2.0.2",
-+ "extend-shallow": "^3.0.2",
-+ "fragment-cache": "^0.2.1",
-+ "is-windows": "^1.0.2",
-+ "kind-of": "^6.0.2",
-+ "object.pick": "^1.3.0",
-+ "regex-not": "^1.0.0",
-+ "snapdragon": "^0.8.1",
-+ "to-regex": "^3.0.1"
-+ }
-+ },
-+ "nice-try": {
-+ "version": "1.0.5",
-+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-+ "dev": true
-+ },
-+ "node-addon-api": {
-+ "version": "1.7.1",
-+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz",
-+ "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==",
-+ "dev": true
-+ },
-+ "node-elm-compiler": {
-+ "version": "5.0.4",
-+ "resolved": "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-5.0.4.tgz",
-+ "integrity": "sha512-VQsT8QSierYGkHzRed+b4MnccQVF1+qPHunE8jBoU7jD6YpuRqCDPzEoC2zfyEJS80qVnlMZrqobLnyjzX9lJg==",
-+ "dev": true,
-+ "requires": {
-+ "cross-spawn": "6.0.5",
-+ "find-elm-dependencies": "2.0.2",
-+ "lodash": "4.17.15",
-+ "temp": "^0.9.0"
-+ }
-+ },
-+ "node-forge": {
-+ "version": "0.7.6",
-+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz",
-+ "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==",
-+ "dev": true
-+ },
-+ "node-libs-browser": {
-+ "version": "2.2.1",
-+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
-+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
-+ "dev": true,
-+ "requires": {
-+ "assert": "^1.1.1",
-+ "browserify-zlib": "^0.2.0",
-+ "buffer": "^4.3.0",
-+ "console-browserify": "^1.1.0",
-+ "constants-browserify": "^1.0.0",
-+ "crypto-browserify": "^3.11.0",
-+ "domain-browser": "^1.1.1",
-+ "events": "^3.0.0",
-+ "https-browserify": "^1.0.0",
-+ "os-browserify": "^0.3.0",
-+ "path-browserify": "0.0.1",
-+ "process": "^0.11.10",
-+ "punycode": "^1.2.4",
-+ "querystring-es3": "^0.2.0",
-+ "readable-stream": "^2.3.3",
-+ "stream-browserify": "^2.0.1",
-+ "stream-http": "^2.7.2",
-+ "string_decoder": "^1.0.0",
-+ "timers-browserify": "^2.0.4",
-+ "tty-browserify": "0.0.0",
-+ "url": "^0.11.0",
-+ "util": "^0.11.0",
-+ "vm-browserify": "^1.0.1"
-+ },
-+ "dependencies": {
-+ "punycode": {
-+ "version": "1.4.1",
-+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "node-releases": {
-+ "version": "1.1.53",
-+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz",
-+ "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==",
-+ "dev": true
-+ },
-+ "nopt": {
-+ "version": "4.0.3",
-+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
-+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
-+ "dev": true,
-+ "requires": {
-+ "abbrev": "1",
-+ "osenv": "^0.1.4"
-+ }
-+ },
-+ "normalize-html-whitespace": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz",
-+ "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==",
-+ "dev": true
-+ },
-+ "normalize-path": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-+ "dev": true
-+ },
-+ "normalize-url": {
-+ "version": "3.3.0",
-+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
-+ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
-+ "dev": true
-+ },
-+ "nth-check": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
-+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
-+ "dev": true,
-+ "requires": {
-+ "boolbase": "~1.0.0"
-+ }
-+ },
-+ "nwsapi": {
-+ "version": "2.2.0",
-+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
-+ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
-+ "dev": true
-+ },
-+ "oauth-sign": {
-+ "version": "0.9.0",
-+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
-+ },
-+ "object-assign": {
-+ "version": "4.1.1",
-+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
-+ "dev": true
-+ },
-+ "object-copy": {
-+ "version": "0.1.0",
-+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
-+ "dev": true,
-+ "requires": {
-+ "copy-descriptor": "^0.1.0",
-+ "define-property": "^0.2.5",
-+ "kind-of": "^3.0.3"
-+ },
-+ "dependencies": {
-+ "define-property": {
-+ "version": "0.2.5",
-+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-+ "dev": true,
-+ "requires": {
-+ "is-descriptor": "^0.1.0"
-+ }
-+ },
-+ "kind-of": {
-+ "version": "3.2.2",
-+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-+ "dev": true,
-+ "requires": {
-+ "is-buffer": "^1.1.5"
-+ }
-+ }
-+ }
-+ },
-+ "object-inspect": {
-+ "version": "1.7.0",
-+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
-+ "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
-+ "dev": true
-+ },
-+ "object-keys": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-+ "dev": true
-+ },
-+ "object-visit": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
-+ "dev": true,
-+ "requires": {
-+ "isobject": "^3.0.0"
-+ }
-+ },
-+ "object.assign": {
-+ "version": "4.1.0",
-+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
-+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
-+ "dev": true,
-+ "requires": {
-+ "define-properties": "^1.1.2",
-+ "function-bind": "^1.1.1",
-+ "has-symbols": "^1.0.0",
-+ "object-keys": "^1.0.11"
-+ }
-+ },
-+ "object.getownpropertydescriptors": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
-+ "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
-+ "dev": true,
-+ "requires": {
-+ "define-properties": "^1.1.3",
-+ "es-abstract": "^1.17.0-next.1"
-+ }
-+ },
-+ "object.pick": {
-+ "version": "1.3.0",
-+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
-+ "dev": true,
-+ "requires": {
-+ "isobject": "^3.0.1"
-+ }
-+ },
-+ "object.values": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
-+ "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
-+ "dev": true,
-+ "requires": {
-+ "define-properties": "^1.1.3",
-+ "es-abstract": "^1.17.0-next.1",
-+ "function-bind": "^1.1.1",
-+ "has": "^1.0.3"
-+ }
-+ },
-+ "on-finished": {
-+ "version": "2.3.0",
-+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
-+ "dev": true,
-+ "requires": {
-+ "ee-first": "1.1.1"
-+ }
-+ },
-+ "once": {
-+ "version": "1.4.0",
-+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-+ "dev": true,
-+ "requires": {
-+ "wrappy": "1"
-+ }
-+ },
-+ "onetime": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-+ "dev": true,
-+ "requires": {
-+ "mimic-fn": "^1.0.0"
-+ }
-+ },
-+ "opn": {
-+ "version": "5.5.0",
-+ "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
-+ "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
-+ "dev": true,
-+ "requires": {
-+ "is-wsl": "^1.1.0"
-+ }
-+ },
-+ "optionator": {
-+ "version": "0.8.3",
-+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
-+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
-+ "dev": true,
-+ "requires": {
-+ "deep-is": "~0.1.3",
-+ "fast-levenshtein": "~2.0.6",
-+ "levn": "~0.3.0",
-+ "prelude-ls": "~1.1.2",
-+ "type-check": "~0.3.2",
-+ "word-wrap": "~1.2.3"
-+ }
-+ },
-+ "ora": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz",
-+ "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==",
-+ "dev": true,
-+ "requires": {
-+ "chalk": "^2.3.1",
-+ "cli-cursor": "^2.1.0",
-+ "cli-spinners": "^1.1.0",
-+ "log-symbols": "^2.2.0",
-+ "strip-ansi": "^4.0.0",
-+ "wcwidth": "^1.0.1"
-+ }
-+ },
-+ "os-browserify": {
-+ "version": "0.3.0",
-+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
-+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
-+ "dev": true
-+ },
-+ "os-homedir": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
-+ "dev": true
-+ },
-+ "os-tmpdir": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
-+ "dev": true
-+ },
-+ "osenv": {
-+ "version": "0.1.5",
-+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
-+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
-+ "dev": true,
-+ "requires": {
-+ "os-homedir": "^1.0.0",
-+ "os-tmpdir": "^1.0.0"
-+ }
-+ },
-+ "p-limit": {
-+ "version": "1.3.0",
-+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
-+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
-+ "dev": true,
-+ "requires": {
-+ "p-try": "^1.0.0"
-+ }
-+ },
-+ "p-locate": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
-+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
-+ "dev": true,
-+ "requires": {
-+ "p-limit": "^1.1.0"
-+ }
-+ },
-+ "p-try": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
-+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
-+ "dev": true
-+ },
-+ "pako": {
-+ "version": "0.2.9",
-+ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
-+ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
-+ "dev": true
-+ },
-+ "parcel-bundler": {
-+ "version": "1.12.3",
-+ "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.3.tgz",
-+ "integrity": "sha512-8bq6lj0hhQeGxD9f9xEkFMXQ3d8TIlf2+isKxoi9bciB0KVEILRGllaPkUgp++5t0anToBh9+tG6ZyInXOC1/A==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/code-frame": "^7.0.0 <7.4.0",
-+ "@babel/core": "^7.0.0 <7.4.0",
-+ "@babel/generator": "^7.0.0 <7.4.0",
-+ "@babel/parser": "^7.0.0 <7.4.0",
-+ "@babel/plugin-transform-flow-strip-types": "^7.0.0 <7.4.0",
-+ "@babel/plugin-transform-modules-commonjs": "^7.0.0 <7.4.0",
-+ "@babel/plugin-transform-react-jsx": "^7.0.0 <7.4.0",
-+ "@babel/preset-env": "^7.0.0 <7.4.0",
-+ "@babel/runtime": "^7.0.0 <7.4.0",
-+ "@babel/template": "^7.0.0 <7.4.0",
-+ "@babel/traverse": "^7.0.0 <7.4.0",
-+ "@babel/types": "^7.0.0 <7.4.0",
-+ "@iarna/toml": "^2.2.0",
-+ "@parcel/fs": "^1.11.0",
-+ "@parcel/logger": "^1.11.0",
-+ "@parcel/utils": "^1.11.0",
-+ "@parcel/watcher": "^1.12.0",
-+ "@parcel/workers": "^1.11.0",
-+ "ansi-to-html": "^0.6.4",
-+ "babylon-walk": "^1.0.2",
-+ "browserslist": "^4.1.0",
-+ "chalk": "^2.1.0",
-+ "clone": "^2.1.1",
-+ "command-exists": "^1.2.6",
-+ "commander": "^2.11.0",
-+ "cross-spawn": "^6.0.4",
-+ "css-modules-loader-core": "^1.1.0",
-+ "cssnano": "^4.0.0",
-+ "deasync": "^0.1.14",
-+ "dotenv": "^5.0.0",
-+ "dotenv-expand": "^4.2.0",
-+ "fast-glob": "^2.2.2",
-+ "filesize": "^3.6.0",
-+ "get-port": "^3.2.0",
-+ "htmlnano": "^0.2.2",
-+ "is-glob": "^4.0.0",
-+ "is-url": "^1.2.2",
-+ "js-yaml": "^3.10.0",
-+ "json5": "^1.0.1",
-+ "micromatch": "^3.0.4",
-+ "mkdirp": "^0.5.1",
-+ "node-forge": "^0.7.1",
-+ "node-libs-browser": "^2.0.0",
-+ "opn": "^5.1.0",
-+ "postcss": "^7.0.11",
-+ "postcss-value-parser": "^3.3.1",
-+ "posthtml": "^0.11.2",
-+ "posthtml-parser": "^0.4.0",
-+ "posthtml-render": "^1.1.3",
-+ "resolve": "^1.4.0",
-+ "semver": "^5.4.1",
-+ "serialize-to-js": "^1.1.1",
-+ "serve-static": "^1.12.4",
-+ "source-map": "0.6.1",
-+ "terser": "^3.7.3",
-+ "v8-compile-cache": "^2.0.0",
-+ "ws": "^5.1.1"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "parse-asn1": {
-+ "version": "5.1.5",
-+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
-+ "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
-+ "dev": true,
-+ "requires": {
-+ "asn1.js": "^4.0.0",
-+ "browserify-aes": "^1.0.0",
-+ "create-hash": "^1.1.0",
-+ "evp_bytestokey": "^1.0.0",
-+ "pbkdf2": "^3.0.3",
-+ "safe-buffer": "^5.1.1"
-+ }
-+ },
-+ "parse-json": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
-+ "dev": true,
-+ "requires": {
-+ "error-ex": "^1.3.1",
-+ "json-parse-better-errors": "^1.0.1"
-+ }
-+ },
-+ "parse5": {
-+ "version": "5.1.0",
-+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
-+ "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==",
-+ "dev": true
-+ },
-+ "parseurl": {
-+ "version": "1.3.3",
-+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
-+ "dev": true
-+ },
-+ "pascalcase": {
-+ "version": "0.1.1",
-+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
-+ "dev": true
-+ },
-+ "path-browserify": {
-+ "version": "0.0.1",
-+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
-+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
-+ "dev": true
-+ },
-+ "path-dirname": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
-+ "dev": true
-+ },
-+ "path-exists": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
-+ "dev": true
-+ },
-+ "path-is-absolute": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-+ "dev": true
-+ },
-+ "path-key": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-+ "dev": true
-+ },
-+ "path-parse": {
-+ "version": "1.0.6",
-+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
-+ "dev": true
-+ },
-+ "pbkdf2": {
-+ "version": "3.0.17",
-+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
-+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
-+ "dev": true,
-+ "requires": {
-+ "create-hash": "^1.1.2",
-+ "create-hmac": "^1.1.4",
-+ "ripemd160": "^2.0.1",
-+ "safe-buffer": "^5.0.1",
-+ "sha.js": "^2.4.8"
-+ }
-+ },
-+ "performance-now": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
-+ },
-+ "physical-cpu-count": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz",
-+ "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=",
-+ "dev": true
-+ },
-+ "pkg-up": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
-+ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
-+ "dev": true,
-+ "requires": {
-+ "find-up": "^2.1.0"
-+ }
-+ },
-+ "pn": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
-+ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
-+ "dev": true
-+ },
-+ "posix-character-classes": {
-+ "version": "0.1.1",
-+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
-+ "dev": true
-+ },
-+ "postcss": {
-+ "version": "7.0.27",
-+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
-+ "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
-+ "dev": true,
-+ "requires": {
-+ "chalk": "^2.4.2",
-+ "source-map": "^0.6.1",
-+ "supports-color": "^6.1.0"
-+ }
-+ },
-+ "postcss-calc": {
-+ "version": "7.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz",
-+ "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.27",
-+ "postcss-selector-parser": "^6.0.2",
-+ "postcss-value-parser": "^4.0.2"
-+ }
-+ },
-+ "postcss-colormin": {
-+ "version": "4.0.3",
-+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
-+ "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
-+ "dev": true,
-+ "requires": {
-+ "browserslist": "^4.0.0",
-+ "color": "^3.0.0",
-+ "has": "^1.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-convert-values": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
-+ "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-discard-comments": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
-+ "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.0"
-+ }
-+ },
-+ "postcss-discard-duplicates": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
-+ "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.0"
-+ }
-+ },
-+ "postcss-discard-empty": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
-+ "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.0"
-+ }
-+ },
-+ "postcss-discard-overridden": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
-+ "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.0"
-+ }
-+ },
-+ "postcss-merge-longhand": {
-+ "version": "4.0.11",
-+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
-+ "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
-+ "dev": true,
-+ "requires": {
-+ "css-color-names": "0.0.4",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0",
-+ "stylehacks": "^4.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-merge-rules": {
-+ "version": "4.0.3",
-+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
-+ "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
-+ "dev": true,
-+ "requires": {
-+ "browserslist": "^4.0.0",
-+ "caniuse-api": "^3.0.0",
-+ "cssnano-util-same-parent": "^4.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-selector-parser": "^3.0.0",
-+ "vendors": "^1.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-selector-parser": {
-+ "version": "3.1.2",
-+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-+ "dev": true,
-+ "requires": {
-+ "dot-prop": "^5.2.0",
-+ "indexes-of": "^1.0.1",
-+ "uniq": "^1.0.1"
-+ }
-+ }
-+ }
-+ },
-+ "postcss-minify-font-values": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
-+ "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-minify-gradients": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
-+ "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
-+ "dev": true,
-+ "requires": {
-+ "cssnano-util-get-arguments": "^4.0.0",
-+ "is-color-stop": "^1.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-minify-params": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
-+ "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
-+ "dev": true,
-+ "requires": {
-+ "alphanum-sort": "^1.0.0",
-+ "browserslist": "^4.0.0",
-+ "cssnano-util-get-arguments": "^4.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0",
-+ "uniqs": "^2.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-minify-selectors": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
-+ "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
-+ "dev": true,
-+ "requires": {
-+ "alphanum-sort": "^1.0.0",
-+ "has": "^1.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-selector-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-selector-parser": {
-+ "version": "3.1.2",
-+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-+ "dev": true,
-+ "requires": {
-+ "dot-prop": "^5.2.0",
-+ "indexes-of": "^1.0.1",
-+ "uniq": "^1.0.1"
-+ }
-+ }
-+ }
-+ },
-+ "postcss-modules-extract-imports": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz",
-+ "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^6.0.1"
-+ },
-+ "dependencies": {
-+ "postcss": {
-+ "version": "6.0.23",
-+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
-+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
-+ "dev": true,
-+ "requires": {
-+ "chalk": "^2.4.1",
-+ "source-map": "^0.6.1",
-+ "supports-color": "^5.4.0"
-+ }
-+ },
-+ "supports-color": {
-+ "version": "5.5.0",
-+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-+ "dev": true,
-+ "requires": {
-+ "has-flag": "^3.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "postcss-modules-local-by-default": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
-+ "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
-+ "dev": true,
-+ "requires": {
-+ "css-selector-tokenizer": "^0.7.0",
-+ "postcss": "^6.0.1"
-+ },
-+ "dependencies": {
-+ "postcss": {
-+ "version": "6.0.23",
-+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
-+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
-+ "dev": true,
-+ "requires": {
-+ "chalk": "^2.4.1",
-+ "source-map": "^0.6.1",
-+ "supports-color": "^5.4.0"
-+ }
-+ },
-+ "supports-color": {
-+ "version": "5.5.0",
-+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-+ "dev": true,
-+ "requires": {
-+ "has-flag": "^3.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "postcss-modules-scope": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
-+ "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
-+ "dev": true,
-+ "requires": {
-+ "css-selector-tokenizer": "^0.7.0",
-+ "postcss": "^6.0.1"
-+ },
-+ "dependencies": {
-+ "postcss": {
-+ "version": "6.0.23",
-+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
-+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
-+ "dev": true,
-+ "requires": {
-+ "chalk": "^2.4.1",
-+ "source-map": "^0.6.1",
-+ "supports-color": "^5.4.0"
-+ }
-+ },
-+ "supports-color": {
-+ "version": "5.5.0",
-+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-+ "dev": true,
-+ "requires": {
-+ "has-flag": "^3.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "postcss-modules-values": {
-+ "version": "1.3.0",
-+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
-+ "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
-+ "dev": true,
-+ "requires": {
-+ "icss-replace-symbols": "^1.1.0",
-+ "postcss": "^6.0.1"
-+ },
-+ "dependencies": {
-+ "postcss": {
-+ "version": "6.0.23",
-+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
-+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
-+ "dev": true,
-+ "requires": {
-+ "chalk": "^2.4.1",
-+ "source-map": "^0.6.1",
-+ "supports-color": "^5.4.0"
-+ }
-+ },
-+ "supports-color": {
-+ "version": "5.5.0",
-+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-+ "dev": true,
-+ "requires": {
-+ "has-flag": "^3.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "postcss-normalize-charset": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
-+ "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.0"
-+ }
-+ },
-+ "postcss-normalize-display-values": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
-+ "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
-+ "dev": true,
-+ "requires": {
-+ "cssnano-util-get-match": "^4.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-normalize-positions": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
-+ "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
-+ "dev": true,
-+ "requires": {
-+ "cssnano-util-get-arguments": "^4.0.0",
-+ "has": "^1.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-normalize-repeat-style": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
-+ "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
-+ "dev": true,
-+ "requires": {
-+ "cssnano-util-get-arguments": "^4.0.0",
-+ "cssnano-util-get-match": "^4.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-normalize-string": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
-+ "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
-+ "dev": true,
-+ "requires": {
-+ "has": "^1.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-normalize-timing-functions": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
-+ "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
-+ "dev": true,
-+ "requires": {
-+ "cssnano-util-get-match": "^4.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-normalize-unicode": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
-+ "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
-+ "dev": true,
-+ "requires": {
-+ "browserslist": "^4.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-normalize-url": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
-+ "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
-+ "dev": true,
-+ "requires": {
-+ "is-absolute-url": "^2.0.0",
-+ "normalize-url": "^3.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-normalize-whitespace": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
-+ "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
-+ "dev": true,
-+ "requires": {
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-ordered-values": {
-+ "version": "4.1.2",
-+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
-+ "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
-+ "dev": true,
-+ "requires": {
-+ "cssnano-util-get-arguments": "^4.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-reduce-initial": {
-+ "version": "4.0.3",
-+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
-+ "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
-+ "dev": true,
-+ "requires": {
-+ "browserslist": "^4.0.0",
-+ "caniuse-api": "^3.0.0",
-+ "has": "^1.0.0",
-+ "postcss": "^7.0.0"
-+ }
-+ },
-+ "postcss-reduce-transforms": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
-+ "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
-+ "dev": true,
-+ "requires": {
-+ "cssnano-util-get-match": "^4.0.0",
-+ "has": "^1.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-selector-parser": {
-+ "version": "6.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
-+ "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
-+ "dev": true,
-+ "requires": {
-+ "cssesc": "^3.0.0",
-+ "indexes-of": "^1.0.1",
-+ "uniq": "^1.0.1"
-+ }
-+ },
-+ "postcss-svgo": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
-+ "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==",
-+ "dev": true,
-+ "requires": {
-+ "is-svg": "^3.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-value-parser": "^3.0.0",
-+ "svgo": "^1.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-value-parser": {
-+ "version": "3.3.1",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "postcss-unique-selectors": {
-+ "version": "4.0.1",
-+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
-+ "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
-+ "dev": true,
-+ "requires": {
-+ "alphanum-sort": "^1.0.0",
-+ "postcss": "^7.0.0",
-+ "uniqs": "^2.0.0"
-+ }
-+ },
-+ "postcss-value-parser": {
-+ "version": "4.0.3",
-+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz",
-+ "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==",
-+ "dev": true
-+ },
-+ "posthtml": {
-+ "version": "0.11.6",
-+ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz",
-+ "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==",
-+ "dev": true,
-+ "requires": {
-+ "posthtml-parser": "^0.4.1",
-+ "posthtml-render": "^1.1.5"
-+ }
-+ },
-+ "posthtml-parser": {
-+ "version": "0.4.2",
-+ "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz",
-+ "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==",
-+ "dev": true,
-+ "requires": {
-+ "htmlparser2": "^3.9.2"
-+ }
-+ },
-+ "posthtml-render": {
-+ "version": "1.2.2",
-+ "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz",
-+ "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==",
-+ "dev": true
-+ },
-+ "prelude-ls": {
-+ "version": "1.1.2",
-+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
-+ "dev": true
-+ },
-+ "private": {
-+ "version": "0.1.8",
-+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
-+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
-+ "dev": true
-+ },
-+ "process": {
-+ "version": "0.11.10",
-+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
-+ "dev": true
-+ },
-+ "process-nextick-args": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-+ "dev": true
-+ },
-+ "proto-list": {
-+ "version": "1.2.4",
-+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
-+ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
-+ "dev": true
-+ },
-+ "pseudomap": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
-+ "dev": true
-+ },
-+ "psl": {
-+ "version": "1.8.0",
-+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
-+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
-+ },
-+ "public-encrypt": {
-+ "version": "4.0.3",
-+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
-+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
-+ "dev": true,
-+ "requires": {
-+ "bn.js": "^4.1.0",
-+ "browserify-rsa": "^4.0.0",
-+ "create-hash": "^1.1.0",
-+ "parse-asn1": "^5.0.0",
-+ "randombytes": "^2.0.1",
-+ "safe-buffer": "^5.1.2"
-+ }
-+ },
-+ "punycode": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
-+ },
-+ "purgecss": {
-+ "version": "1.4.2",
-+ "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz",
-+ "integrity": "sha512-hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==",
-+ "dev": true,
-+ "requires": {
-+ "glob": "^7.1.3",
-+ "postcss": "^7.0.14",
-+ "postcss-selector-parser": "^6.0.0",
-+ "yargs": "^14.0.0"
-+ }
-+ },
-+ "q": {
-+ "version": "1.5.1",
-+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
-+ "dev": true
-+ },
-+ "qs": {
-+ "version": "6.5.2",
-+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
-+ },
-+ "querystring": {
-+ "version": "0.2.0",
-+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
-+ "dev": true
-+ },
-+ "querystring-es3": {
-+ "version": "0.2.1",
-+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
-+ "dev": true
-+ },
-+ "quote-stream": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz",
-+ "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=",
-+ "dev": true,
-+ "requires": {
-+ "buffer-equal": "0.0.1",
-+ "minimist": "^1.1.3",
-+ "through2": "^2.0.0"
-+ }
-+ },
-+ "randombytes": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-+ "dev": true,
-+ "requires": {
-+ "safe-buffer": "^5.1.0"
-+ }
-+ },
-+ "randomfill": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
-+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
-+ "dev": true,
-+ "requires": {
-+ "randombytes": "^2.0.5",
-+ "safe-buffer": "^5.1.0"
-+ }
-+ },
-+ "range-parser": {
-+ "version": "1.2.1",
-+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
-+ "dev": true
-+ },
-+ "readable-stream": {
-+ "version": "2.3.7",
-+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-+ "dev": true,
-+ "requires": {
-+ "core-util-is": "~1.0.0",
-+ "inherits": "~2.0.3",
-+ "isarray": "~1.0.0",
-+ "process-nextick-args": "~2.0.0",
-+ "safe-buffer": "~5.1.1",
-+ "string_decoder": "~1.1.1",
-+ "util-deprecate": "~1.0.1"
-+ }
-+ },
-+ "readdirp": {
-+ "version": "2.2.1",
-+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-+ "dev": true,
-+ "requires": {
-+ "graceful-fs": "^4.1.11",
-+ "micromatch": "^3.1.10",
-+ "readable-stream": "^2.0.2"
-+ }
-+ },
-+ "regenerate": {
-+ "version": "1.4.0",
-+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
-+ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
-+ "dev": true
-+ },
-+ "regenerate-unicode-properties": {
-+ "version": "8.2.0",
-+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
-+ "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
-+ "dev": true,
-+ "requires": {
-+ "regenerate": "^1.4.0"
-+ }
-+ },
-+ "regenerator-runtime": {
-+ "version": "0.13.5",
-+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
-+ "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
-+ "dev": true
-+ },
-+ "regenerator-transform": {
-+ "version": "0.14.4",
-+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz",
-+ "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==",
-+ "dev": true,
-+ "requires": {
-+ "@babel/runtime": "^7.8.4",
-+ "private": "^0.1.8"
-+ },
-+ "dependencies": {
-+ "@babel/runtime": {
-+ "version": "7.9.2",
-+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
-+ "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
-+ "dev": true,
-+ "requires": {
-+ "regenerator-runtime": "^0.13.4"
-+ }
-+ }
-+ }
-+ },
-+ "regex-not": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
-+ "dev": true,
-+ "requires": {
-+ "extend-shallow": "^3.0.2",
-+ "safe-regex": "^1.1.0"
-+ }
-+ },
-+ "regexpu-core": {
-+ "version": "4.7.0",
-+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz",
-+ "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==",
-+ "dev": true,
-+ "requires": {
-+ "regenerate": "^1.4.0",
-+ "regenerate-unicode-properties": "^8.2.0",
-+ "regjsgen": "^0.5.1",
-+ "regjsparser": "^0.6.4",
-+ "unicode-match-property-ecmascript": "^1.0.4",
-+ "unicode-match-property-value-ecmascript": "^1.2.0"
-+ }
-+ },
-+ "regjsgen": {
-+ "version": "0.5.1",
-+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
-+ "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==",
-+ "dev": true
-+ },
-+ "regjsparser": {
-+ "version": "0.6.4",
-+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz",
-+ "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==",
-+ "dev": true,
-+ "requires": {
-+ "jsesc": "~0.5.0"
-+ },
-+ "dependencies": {
-+ "jsesc": {
-+ "version": "0.5.0",
-+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "remove-trailing-separator": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
-+ "dev": true
-+ },
-+ "repeat-element": {
-+ "version": "1.1.3",
-+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
-+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
-+ "dev": true
-+ },
-+ "repeat-string": {
-+ "version": "1.6.1",
-+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
-+ "dev": true
-+ },
-+ "request": {
-+ "version": "2.88.2",
-+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
-+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
-+ "requires": {
-+ "aws-sign2": "~0.7.0",
-+ "aws4": "^1.8.0",
-+ "caseless": "~0.12.0",
-+ "combined-stream": "~1.0.6",
-+ "extend": "~3.0.2",
-+ "forever-agent": "~0.6.1",
-+ "form-data": "~2.3.2",
-+ "har-validator": "~5.1.3",
-+ "http-signature": "~1.2.0",
-+ "is-typedarray": "~1.0.0",
-+ "isstream": "~0.1.2",
-+ "json-stringify-safe": "~5.0.1",
-+ "mime-types": "~2.1.19",
-+ "oauth-sign": "~0.9.0",
-+ "performance-now": "^2.1.0",
-+ "qs": "~6.5.2",
-+ "safe-buffer": "^5.1.2",
-+ "tough-cookie": "~2.5.0",
-+ "tunnel-agent": "^0.6.0",
-+ "uuid": "^3.3.2"
-+ }
-+ },
-+ "request-promise-core": {
-+ "version": "1.1.3",
-+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz",
-+ "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==",
-+ "dev": true,
-+ "requires": {
-+ "lodash": "^4.17.15"
-+ }
-+ },
-+ "request-promise-native": {
-+ "version": "1.0.8",
-+ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz",
-+ "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==",
-+ "dev": true,
-+ "requires": {
-+ "request-promise-core": "1.1.3",
-+ "stealthy-require": "^1.1.1",
-+ "tough-cookie": "^2.3.3"
-+ }
-+ },
-+ "require-directory": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-+ "dev": true
-+ },
-+ "require-main-filename": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-+ "dev": true
-+ },
-+ "resolve": {
-+ "version": "1.17.0",
-+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
-+ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
-+ "dev": true,
-+ "requires": {
-+ "path-parse": "^1.0.6"
-+ }
-+ },
-+ "resolve-from": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
-+ "dev": true
-+ },
-+ "resolve-url": {
-+ "version": "0.2.1",
-+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
-+ "dev": true
-+ },
-+ "restore-cursor": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-+ "dev": true,
-+ "requires": {
-+ "onetime": "^2.0.0",
-+ "signal-exit": "^3.0.2"
-+ }
-+ },
-+ "ret": {
-+ "version": "0.1.15",
-+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-+ "dev": true
-+ },
-+ "rgb-regex": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
-+ "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=",
-+ "dev": true
-+ },
-+ "rgba-regex": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
-+ "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
-+ "dev": true
-+ },
-+ "rimraf": {
-+ "version": "2.6.3",
-+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-+ "dev": true,
-+ "requires": {
-+ "glob": "^7.1.3"
-+ }
-+ },
-+ "ripemd160": {
-+ "version": "2.0.2",
-+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
-+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
-+ "dev": true,
-+ "requires": {
-+ "hash-base": "^3.0.0",
-+ "inherits": "^2.0.1"
-+ }
-+ },
-+ "safe-buffer": {
-+ "version": "5.1.2",
-+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-+ },
-+ "safe-regex": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
-+ "dev": true,
-+ "requires": {
-+ "ret": "~0.1.10"
-+ }
-+ },
-+ "safer-buffer": {
-+ "version": "2.1.2",
-+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-+ },
-+ "safer-eval": {
-+ "version": "1.3.6",
-+ "resolved": "https://registry.npmjs.org/safer-eval/-/safer-eval-1.3.6.tgz",
-+ "integrity": "sha512-DN9tBsZgtUOHODzSfO1nGCLhZtxc7Qq/d8/2SNxQZ9muYXZspSh1fO7HOsrf4lcelBNviAJLCxB/ggmG+jV1aw==",
-+ "dev": true,
-+ "requires": {
-+ "clones": "^1.2.0"
-+ }
-+ },
-+ "sax": {
-+ "version": "1.2.4",
-+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
-+ "dev": true
-+ },
-+ "saxes": {
-+ "version": "3.1.11",
-+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz",
-+ "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==",
-+ "dev": true,
-+ "requires": {
-+ "xmlchars": "^2.1.1"
-+ }
-+ },
-+ "semver": {
-+ "version": "5.7.1",
-+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-+ "dev": true
-+ },
-+ "send": {
-+ "version": "0.17.1",
-+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
-+ "dev": true,
-+ "requires": {
-+ "debug": "2.6.9",
-+ "depd": "~1.1.2",
-+ "destroy": "~1.0.4",
-+ "encodeurl": "~1.0.2",
-+ "escape-html": "~1.0.3",
-+ "etag": "~1.8.1",
-+ "fresh": "0.5.2",
-+ "http-errors": "~1.7.2",
-+ "mime": "1.6.0",
-+ "ms": "2.1.1",
-+ "on-finished": "~2.3.0",
-+ "range-parser": "~1.2.1",
-+ "statuses": "~1.5.0"
-+ },
-+ "dependencies": {
-+ "debug": {
-+ "version": "2.6.9",
-+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-+ "dev": true,
-+ "requires": {
-+ "ms": "2.0.0"
-+ },
-+ "dependencies": {
-+ "ms": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "ms": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "serialize-to-js": {
-+ "version": "1.2.2",
-+ "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-1.2.2.tgz",
-+ "integrity": "sha512-mUc8vA5iJghe+O+3s0YDGFLMJcqitVFk787YKiv8a4sf6RX5W0u81b+gcHrp15O0fFa010dRBVZvwcKXOWsL9Q==",
-+ "dev": true,
-+ "requires": {
-+ "js-beautify": "^1.8.9",
-+ "safer-eval": "^1.3.0"
-+ }
-+ },
-+ "serve-static": {
-+ "version": "1.14.1",
-+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
-+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
-+ "dev": true,
-+ "requires": {
-+ "encodeurl": "~1.0.2",
-+ "escape-html": "~1.0.3",
-+ "parseurl": "~1.3.3",
-+ "send": "0.17.1"
-+ }
-+ },
-+ "set-blocking": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
-+ "dev": true
-+ },
-+ "set-value": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
-+ "dev": true,
-+ "requires": {
-+ "extend-shallow": "^2.0.1",
-+ "is-extendable": "^0.1.1",
-+ "is-plain-object": "^2.0.3",
-+ "split-string": "^3.0.1"
-+ },
-+ "dependencies": {
-+ "extend-shallow": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-+ "dev": true,
-+ "requires": {
-+ "is-extendable": "^0.1.0"
-+ }
-+ }
-+ }
-+ },
-+ "setimmediate": {
-+ "version": "1.0.5",
-+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
-+ "dev": true
-+ },
-+ "setprototypeof": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
-+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
-+ "dev": true
-+ },
-+ "sha.js": {
-+ "version": "2.4.11",
-+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
-+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
-+ "dev": true,
-+ "requires": {
-+ "inherits": "^2.0.1",
-+ "safe-buffer": "^5.0.1"
-+ }
-+ },
-+ "shallow-copy": {
-+ "version": "0.0.1",
-+ "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz",
-+ "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=",
-+ "dev": true
-+ },
-+ "shebang-command": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-+ "dev": true,
-+ "requires": {
-+ "shebang-regex": "^1.0.0"
-+ }
-+ },
-+ "shebang-regex": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-+ "dev": true
-+ },
-+ "sigmund": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
-+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
-+ "dev": true
-+ },
-+ "signal-exit": {
-+ "version": "3.0.3",
-+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
-+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
-+ "dev": true
-+ },
-+ "simple-swizzle": {
-+ "version": "0.2.2",
-+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
-+ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
-+ "dev": true,
-+ "requires": {
-+ "is-arrayish": "^0.3.1"
-+ },
-+ "dependencies": {
-+ "is-arrayish": {
-+ "version": "0.3.2",
-+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "snapdragon": {
-+ "version": "0.8.2",
-+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-+ "dev": true,
-+ "requires": {
-+ "base": "^0.11.1",
-+ "debug": "^2.2.0",
-+ "define-property": "^0.2.5",
-+ "extend-shallow": "^2.0.1",
-+ "map-cache": "^0.2.2",
-+ "source-map": "^0.5.6",
-+ "source-map-resolve": "^0.5.0",
-+ "use": "^3.1.0"
-+ },
-+ "dependencies": {
-+ "debug": {
-+ "version": "2.6.9",
-+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-+ "dev": true,
-+ "requires": {
-+ "ms": "2.0.0"
-+ }
-+ },
-+ "define-property": {
-+ "version": "0.2.5",
-+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-+ "dev": true,
-+ "requires": {
-+ "is-descriptor": "^0.1.0"
-+ }
-+ },
-+ "extend-shallow": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-+ "dev": true,
-+ "requires": {
-+ "is-extendable": "^0.1.0"
-+ }
-+ },
-+ "ms": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-+ "dev": true
-+ },
-+ "source-map": {
-+ "version": "0.5.7",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "snapdragon-node": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
-+ "dev": true,
-+ "requires": {
-+ "define-property": "^1.0.0",
-+ "isobject": "^3.0.0",
-+ "snapdragon-util": "^3.0.1"
-+ },
-+ "dependencies": {
-+ "define-property": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-+ "dev": true,
-+ "requires": {
-+ "is-descriptor": "^1.0.0"
-+ }
-+ },
-+ "is-accessor-descriptor": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^6.0.0"
-+ }
-+ },
-+ "is-data-descriptor": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^6.0.0"
-+ }
-+ },
-+ "is-descriptor": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-+ "dev": true,
-+ "requires": {
-+ "is-accessor-descriptor": "^1.0.0",
-+ "is-data-descriptor": "^1.0.0",
-+ "kind-of": "^6.0.2"
-+ }
-+ }
-+ }
-+ },
-+ "snapdragon-util": {
-+ "version": "3.0.1",
-+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^3.2.0"
-+ },
-+ "dependencies": {
-+ "kind-of": {
-+ "version": "3.2.2",
-+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-+ "dev": true,
-+ "requires": {
-+ "is-buffer": "^1.1.5"
-+ }
-+ }
-+ }
-+ },
-+ "source-map": {
-+ "version": "0.6.1",
-+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-+ "dev": true
-+ },
-+ "source-map-resolve": {
-+ "version": "0.5.3",
-+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
-+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
-+ "dev": true,
-+ "requires": {
-+ "atob": "^2.1.2",
-+ "decode-uri-component": "^0.2.0",
-+ "resolve-url": "^0.2.1",
-+ "source-map-url": "^0.4.0",
-+ "urix": "^0.1.0"
-+ }
-+ },
-+ "source-map-support": {
-+ "version": "0.5.19",
-+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-+ "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
-+ "dev": true,
-+ "requires": {
-+ "buffer-from": "^1.0.0",
-+ "source-map": "^0.6.0"
-+ }
-+ },
-+ "source-map-url": {
-+ "version": "0.4.0",
-+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
-+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
-+ "dev": true
-+ },
-+ "split-string": {
-+ "version": "3.1.0",
-+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-+ "dev": true,
-+ "requires": {
-+ "extend-shallow": "^3.0.0"
-+ }
-+ },
-+ "sprintf-js": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
-+ "dev": true
-+ },
-+ "sshpk": {
-+ "version": "1.16.1",
-+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
-+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
-+ "requires": {
-+ "asn1": "~0.2.3",
-+ "assert-plus": "^1.0.0",
-+ "bcrypt-pbkdf": "^1.0.0",
-+ "dashdash": "^1.12.0",
-+ "ecc-jsbn": "~0.1.1",
-+ "getpass": "^0.1.1",
-+ "jsbn": "~0.1.0",
-+ "safer-buffer": "^2.0.2",
-+ "tweetnacl": "~0.14.0"
-+ }
-+ },
-+ "stable": {
-+ "version": "0.1.8",
-+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
-+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
-+ "dev": true
-+ },
-+ "static-eval": {
-+ "version": "2.0.5",
-+ "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz",
-+ "integrity": "sha512-nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA==",
-+ "dev": true,
-+ "requires": {
-+ "escodegen": "^1.11.1"
-+ },
-+ "dependencies": {
-+ "escodegen": {
-+ "version": "1.14.1",
-+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz",
-+ "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==",
-+ "dev": true,
-+ "requires": {
-+ "esprima": "^4.0.1",
-+ "estraverse": "^4.2.0",
-+ "esutils": "^2.0.2",
-+ "optionator": "^0.8.1",
-+ "source-map": "~0.6.1"
-+ }
-+ }
-+ }
-+ },
-+ "static-extend": {
-+ "version": "0.1.2",
-+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
-+ "dev": true,
-+ "requires": {
-+ "define-property": "^0.2.5",
-+ "object-copy": "^0.1.0"
-+ },
-+ "dependencies": {
-+ "define-property": {
-+ "version": "0.2.5",
-+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-+ "dev": true,
-+ "requires": {
-+ "is-descriptor": "^0.1.0"
-+ }
-+ }
-+ }
-+ },
-+ "static-module": {
-+ "version": "2.2.5",
-+ "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz",
-+ "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==",
-+ "dev": true,
-+ "requires": {
-+ "concat-stream": "~1.6.0",
-+ "convert-source-map": "^1.5.1",
-+ "duplexer2": "~0.1.4",
-+ "escodegen": "~1.9.0",
-+ "falafel": "^2.1.0",
-+ "has": "^1.0.1",
-+ "magic-string": "^0.22.4",
-+ "merge-source-map": "1.0.4",
-+ "object-inspect": "~1.4.0",
-+ "quote-stream": "~1.0.2",
-+ "readable-stream": "~2.3.3",
-+ "shallow-copy": "~0.0.1",
-+ "static-eval": "^2.0.0",
-+ "through2": "~2.0.3"
-+ },
-+ "dependencies": {
-+ "object-inspect": {
-+ "version": "1.4.1",
-+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz",
-+ "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "statuses": {
-+ "version": "1.5.0",
-+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
-+ "dev": true
-+ },
-+ "stealthy-require": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
-+ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
-+ "dev": true
-+ },
-+ "stream-browserify": {
-+ "version": "2.0.2",
-+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
-+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
-+ "dev": true,
-+ "requires": {
-+ "inherits": "~2.0.1",
-+ "readable-stream": "^2.0.2"
-+ }
-+ },
-+ "stream-http": {
-+ "version": "2.8.3",
-+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
-+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
-+ "dev": true,
-+ "requires": {
-+ "builtin-status-codes": "^3.0.0",
-+ "inherits": "^2.0.1",
-+ "readable-stream": "^2.3.6",
-+ "to-arraybuffer": "^1.0.0",
-+ "xtend": "^4.0.0"
-+ }
-+ },
-+ "string-width": {
-+ "version": "3.1.0",
-+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-+ "dev": true,
-+ "requires": {
-+ "emoji-regex": "^7.0.1",
-+ "is-fullwidth-code-point": "^2.0.0",
-+ "strip-ansi": "^5.1.0"
-+ },
-+ "dependencies": {
-+ "ansi-regex": {
-+ "version": "4.1.0",
-+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-+ "dev": true
-+ },
-+ "strip-ansi": {
-+ "version": "5.2.0",
-+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-+ "dev": true,
-+ "requires": {
-+ "ansi-regex": "^4.1.0"
-+ }
-+ }
-+ }
-+ },
-+ "string.prototype.trimend": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
-+ "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
-+ "dev": true,
-+ "requires": {
-+ "define-properties": "^1.1.3",
-+ "es-abstract": "^1.17.5"
-+ }
-+ },
-+ "string.prototype.trimleft": {
-+ "version": "2.1.2",
-+ "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
-+ "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
-+ "dev": true,
-+ "requires": {
-+ "define-properties": "^1.1.3",
-+ "es-abstract": "^1.17.5",
-+ "string.prototype.trimstart": "^1.0.0"
-+ }
-+ },
-+ "string.prototype.trimright": {
-+ "version": "2.1.2",
-+ "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
-+ "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
-+ "dev": true,
-+ "requires": {
-+ "define-properties": "^1.1.3",
-+ "es-abstract": "^1.17.5",
-+ "string.prototype.trimend": "^1.0.0"
-+ }
-+ },
-+ "string.prototype.trimstart": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
-+ "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
-+ "dev": true,
-+ "requires": {
-+ "define-properties": "^1.1.3",
-+ "es-abstract": "^1.17.5"
-+ }
-+ },
-+ "string_decoder": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-+ "dev": true,
-+ "requires": {
-+ "safe-buffer": "~5.1.0"
-+ }
-+ },
-+ "strip-ansi": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-+ "dev": true,
-+ "requires": {
-+ "ansi-regex": "^3.0.0"
-+ }
-+ },
-+ "stylehacks": {
-+ "version": "4.0.3",
-+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
-+ "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
-+ "dev": true,
-+ "requires": {
-+ "browserslist": "^4.0.0",
-+ "postcss": "^7.0.0",
-+ "postcss-selector-parser": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "postcss-selector-parser": {
-+ "version": "3.1.2",
-+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-+ "dev": true,
-+ "requires": {
-+ "dot-prop": "^5.2.0",
-+ "indexes-of": "^1.0.1",
-+ "uniq": "^1.0.1"
-+ }
-+ }
-+ }
-+ },
-+ "supports-color": {
-+ "version": "6.1.0",
-+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-+ "dev": true,
-+ "requires": {
-+ "has-flag": "^3.0.0"
-+ }
-+ },
-+ "svgo": {
-+ "version": "1.3.2",
-+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
-+ "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
-+ "dev": true,
-+ "requires": {
-+ "chalk": "^2.4.1",
-+ "coa": "^2.0.2",
-+ "css-select": "^2.0.0",
-+ "css-select-base-adapter": "^0.1.1",
-+ "css-tree": "1.0.0-alpha.37",
-+ "csso": "^4.0.2",
-+ "js-yaml": "^3.13.1",
-+ "mkdirp": "~0.5.1",
-+ "object.values": "^1.1.0",
-+ "sax": "~1.2.4",
-+ "stable": "^0.1.8",
-+ "unquote": "~1.1.1",
-+ "util.promisify": "~1.0.0"
-+ }
-+ },
-+ "symbol-tree": {
-+ "version": "3.2.4",
-+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
-+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
-+ "dev": true
-+ },
-+ "temp": {
-+ "version": "0.9.0",
-+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz",
-+ "integrity": "sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==",
-+ "dev": true,
-+ "requires": {
-+ "rimraf": "~2.6.2"
-+ }
-+ },
-+ "terser": {
-+ "version": "3.17.0",
-+ "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz",
-+ "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==",
-+ "dev": true,
-+ "requires": {
-+ "commander": "^2.19.0",
-+ "source-map": "~0.6.1",
-+ "source-map-support": "~0.5.10"
-+ }
-+ },
-+ "through2": {
-+ "version": "2.0.5",
-+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
-+ "dev": true,
-+ "requires": {
-+ "readable-stream": "~2.3.6",
-+ "xtend": "~4.0.1"
-+ }
-+ },
-+ "timers-browserify": {
-+ "version": "2.0.11",
-+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz",
-+ "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==",
-+ "dev": true,
-+ "requires": {
-+ "setimmediate": "^1.0.4"
-+ }
-+ },
-+ "timsort": {
-+ "version": "0.3.0",
-+ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
-+ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
-+ "dev": true
-+ },
-+ "tiny-inflate": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
-+ "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==",
-+ "dev": true
-+ },
-+ "to-arraybuffer": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
-+ "dev": true
-+ },
-+ "to-fast-properties": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
-+ "dev": true
-+ },
-+ "to-object-path": {
-+ "version": "0.3.0",
-+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
-+ "dev": true,
-+ "requires": {
-+ "kind-of": "^3.0.2"
-+ },
-+ "dependencies": {
-+ "kind-of": {
-+ "version": "3.2.2",
-+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-+ "dev": true,
-+ "requires": {
-+ "is-buffer": "^1.1.5"
-+ }
-+ }
-+ }
-+ },
-+ "to-regex": {
-+ "version": "3.0.2",
-+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
-+ "dev": true,
-+ "requires": {
-+ "define-property": "^2.0.2",
-+ "extend-shallow": "^3.0.2",
-+ "regex-not": "^1.0.2",
-+ "safe-regex": "^1.1.0"
-+ }
-+ },
-+ "to-regex-range": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-+ "dev": true,
-+ "requires": {
-+ "is-number": "^3.0.0",
-+ "repeat-string": "^1.6.1"
-+ }
-+ },
-+ "toidentifier": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
-+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
- "dev": true
- },
-- "brace-expansion": {
-- "version": "1.1.11",
-- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-+ "tough-cookie": {
-+ "version": "2.5.0",
-+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
-+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
-+ "requires": {
-+ "psl": "^1.1.28",
-+ "punycode": "^2.1.1"
-+ }
-+ },
-+ "tr46": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
-+ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "dev": true,
- "requires": {
-- "balanced-match": "^1.0.0",
-- "concat-map": "0.0.1"
-+ "punycode": "^2.1.0"
- }
- },
-- "concat-map": {
-- "version": "0.0.1",
-- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-+ "trim-right": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
-+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
- "dev": true
- },
-- "cross-spawn": {
-- "version": "6.0.5",
-- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-+ "tty-browserify": {
-+ "version": "0.0.0",
-+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
-+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
-+ "dev": true
-+ },
-+ "tunnel-agent": {
-+ "version": "0.6.0",
-+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
-+ "requires": {
-+ "safe-buffer": "^5.0.1"
-+ }
-+ },
-+ "tweetnacl": {
-+ "version": "0.14.5",
-+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
-+ },
-+ "type-check": {
-+ "version": "0.3.2",
-+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dev": true,
- "requires": {
-- "nice-try": "^1.0.4",
-- "path-key": "^2.0.1",
-- "semver": "^5.5.0",
-- "shebang-command": "^1.2.0",
-- "which": "^1.2.9"
-+ "prelude-ls": "~1.1.2"
- }
- },
-- "elm-hot": {
-- "version": "1.1.1",
-- "resolved": "https://registry.npmjs.org/elm-hot/-/elm-hot-1.1.1.tgz",
-- "integrity": "sha512-ZHjoHd2Ev6riNXNQirj3J+GKKXXwedAUikfFBYzlVL/+3CdGs96cpZ7nhAk4c5l//Qa9ymltrqX36mOlr0pPFA==",
-+ "typedarray": {
-+ "version": "0.0.6",
-+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
- },
-- "find-elm-dependencies": {
-- "version": "2.0.2",
-- "resolved": "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-2.0.2.tgz",
-- "integrity": "sha512-nM5UCbccD1G8CGK2GsM7ykG3ksOAl9E+34jiDfl07CAl2OPnLpBVWY2hlxEmIkSBfdJjSopEowWHrO0cI8RhxQ==",
-+ "uncss": {
-+ "version": "0.17.3",
-+ "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz",
-+ "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==",
- "dev": true,
- "requires": {
-- "firstline": "1.2.0",
-- "lodash": "4.17.15"
-+ "commander": "^2.20.0",
-+ "glob": "^7.1.4",
-+ "is-absolute-url": "^3.0.1",
-+ "is-html": "^1.1.0",
-+ "jsdom": "^14.1.0",
-+ "lodash": "^4.17.15",
-+ "postcss": "^7.0.17",
-+ "postcss-selector-parser": "6.0.2",
-+ "request": "^2.88.0"
-+ },
-+ "dependencies": {
-+ "is-absolute-url": {
-+ "version": "3.0.3",
-+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
-+ "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
-+ "dev": true
-+ }
- }
- },
-- "firstline": {
-+ "unicode-canonical-property-names-ecmascript": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
-+ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
-+ "dev": true
-+ },
-+ "unicode-match-property-ecmascript": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
-+ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
-+ "dev": true,
-+ "requires": {
-+ "unicode-canonical-property-names-ecmascript": "^1.0.4",
-+ "unicode-property-aliases-ecmascript": "^1.0.4"
-+ }
-+ },
-+ "unicode-match-property-value-ecmascript": {
- "version": "1.2.0",
-- "resolved": "https://registry.npmjs.org/firstline/-/firstline-1.2.0.tgz",
-- "integrity": "sha1-yfSIbn9/vwr8EtcZQdzgaxkq6gU=",
-+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
-+ "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==",
- "dev": true
- },
-- "fs.realpath": {
-- "version": "1.0.0",
-- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-+ "unicode-property-aliases-ecmascript": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
-+ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
- "dev": true
- },
-- "glob": {
-- "version": "7.1.4",
-- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
-- "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
-+ "unicode-trie": {
-+ "version": "0.3.1",
-+ "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz",
-+ "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=",
- "dev": true,
- "requires": {
-- "fs.realpath": "^1.0.0",
-- "inflight": "^1.0.4",
-- "inherits": "2",
-- "minimatch": "^3.0.4",
-- "once": "^1.3.0",
-- "path-is-absolute": "^1.0.0"
-+ "pako": "^0.2.5",
-+ "tiny-inflate": "^1.0.0"
- }
- },
-- "inflight": {
-- "version": "1.0.6",
-- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-+ "union-value": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "requires": {
-- "once": "^1.3.0",
-- "wrappy": "1"
-+ "arr-union": "^3.1.0",
-+ "get-value": "^2.0.6",
-+ "is-extendable": "^0.1.1",
-+ "set-value": "^2.0.1"
- }
- },
-- "inherits": {
-- "version": "2.0.4",
-- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-+ "uniq": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
-+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
- "dev": true
- },
-- "isexe": {
-+ "uniqs": {
- "version": "2.0.0",
-- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-+ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
-+ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
- "dev": true
- },
-- "lodash": {
-- "version": "4.17.15",
-- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
-+ "unquote": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
-+ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
- "dev": true
- },
-- "minimatch": {
-- "version": "3.0.4",
-- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-+ "unset-value": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dev": true,
- "requires": {
-- "brace-expansion": "^1.1.7"
-+ "has-value": "^0.3.1",
-+ "isobject": "^3.0.0"
-+ },
-+ "dependencies": {
-+ "has-value": {
-+ "version": "0.3.1",
-+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
-+ "dev": true,
-+ "requires": {
-+ "get-value": "^2.0.3",
-+ "has-values": "^0.1.4",
-+ "isobject": "^2.0.0"
-+ },
-+ "dependencies": {
-+ "isobject": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-+ "dev": true,
-+ "requires": {
-+ "isarray": "1.0.0"
-+ }
-+ }
-+ }
-+ },
-+ "has-values": {
-+ "version": "0.1.4",
-+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
-+ "dev": true
-+ }
- }
- },
-- "nice-try": {
-- "version": "1.0.5",
-- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-+ "upath": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true
- },
-- "node-elm-compiler": {
-- "version": "5.0.4",
-- "resolved": "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-5.0.4.tgz",
-- "integrity": "sha512-VQsT8QSierYGkHzRed+b4MnccQVF1+qPHunE8jBoU7jD6YpuRqCDPzEoC2zfyEJS80qVnlMZrqobLnyjzX9lJg==",
-+ "uri-js": {
-+ "version": "4.2.2",
-+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
-+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
-+ "requires": {
-+ "punycode": "^2.1.0"
-+ }
-+ },
-+ "urix": {
-+ "version": "0.1.0",
-+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
-+ "dev": true
-+ },
-+ "url": {
-+ "version": "0.11.0",
-+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
- "dev": true,
- "requires": {
-- "cross-spawn": "6.0.5",
-- "find-elm-dependencies": "2.0.2",
-- "lodash": "4.17.15",
-- "temp": "^0.9.0"
-+ "punycode": "1.3.2",
-+ "querystring": "0.2.0"
-+ },
-+ "dependencies": {
-+ "punycode": {
-+ "version": "1.3.2",
-+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
-+ "dev": true
-+ }
- }
- },
-- "once": {
-- "version": "1.4.0",
-- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-+ "use": {
-+ "version": "3.1.1",
-+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
-+ "dev": true
-+ },
-+ "util": {
-+ "version": "0.11.1",
-+ "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
-+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
- "dev": true,
- "requires": {
-- "wrappy": "1"
-+ "inherits": "2.0.3"
-+ },
-+ "dependencies": {
-+ "inherits": {
-+ "version": "2.0.3",
-+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-+ "dev": true
-+ }
- }
- },
-- "path-is-absolute": {
-+ "util-deprecate": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-+ "dev": true
-+ },
-+ "util.promisify": {
- "version": "1.0.1",
-- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-+ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
-+ "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
-+ "dev": true,
-+ "requires": {
-+ "define-properties": "^1.1.3",
-+ "es-abstract": "^1.17.2",
-+ "has-symbols": "^1.0.1",
-+ "object.getownpropertydescriptors": "^2.1.0"
-+ }
-+ },
-+ "uuid": {
-+ "version": "3.4.0",
-+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
-+ },
-+ "v8-compile-cache": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
-+ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
- "dev": true
- },
-- "path-key": {
-- "version": "2.0.1",
-- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-+ "vendors": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",
-+ "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
- "dev": true
- },
-- "rimraf": {
-- "version": "2.6.3",
-- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-+ "verror": {
-+ "version": "1.10.0",
-+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
-+ "requires": {
-+ "assert-plus": "^1.0.0",
-+ "core-util-is": "1.0.2",
-+ "extsprintf": "^1.2.0"
-+ }
-+ },
-+ "vlq": {
-+ "version": "0.2.3",
-+ "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
-+ "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
-+ "dev": true
-+ },
-+ "vm-browserify": {
-+ "version": "1.1.2",
-+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
-+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
-+ "dev": true
-+ },
-+ "w3c-hr-time": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
-+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
- "dev": true,
- "requires": {
-- "glob": "^7.1.3"
-+ "browser-process-hrtime": "^1.0.0"
- }
- },
-- "semver": {
-- "version": "5.7.1",
-- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-+ "w3c-xmlserializer": {
-+ "version": "1.1.2",
-+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz",
-+ "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==",
-+ "dev": true,
-+ "requires": {
-+ "domexception": "^1.0.1",
-+ "webidl-conversions": "^4.0.2",
-+ "xml-name-validator": "^3.0.0"
-+ }
-+ },
-+ "wcwidth": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
-+ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
-+ "dev": true,
-+ "requires": {
-+ "defaults": "^1.0.3"
-+ }
-+ },
-+ "webidl-conversions": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
-+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
-- "shebang-command": {
-- "version": "1.2.0",
-- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-+ "whatwg-encoding": {
-+ "version": "1.0.5",
-+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
-+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "dev": true,
- "requires": {
-- "shebang-regex": "^1.0.0"
-+ "iconv-lite": "0.4.24"
- }
- },
-- "shebang-regex": {
-- "version": "1.0.0",
-- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-+ "whatwg-mimetype": {
-+ "version": "2.3.0",
-+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
-+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
- "dev": true
- },
-- "temp": {
-- "version": "0.9.0",
-- "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz",
-- "integrity": "sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==",
-+ "whatwg-url": {
-+ "version": "7.1.0",
-+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
-+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dev": true,
- "requires": {
-- "rimraf": "~2.6.2"
-+ "lodash.sortby": "^4.7.0",
-+ "tr46": "^1.0.1",
-+ "webidl-conversions": "^4.0.2"
- }
- },
- "which": {
-@@ -205,11 +7972,164 @@
- "isexe": "^2.0.0"
- }
- },
-+ "which-module": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-+ "dev": true
-+ },
-+ "word-wrap": {
-+ "version": "1.2.3",
-+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
-+ "dev": true
-+ },
-+ "wrap-ansi": {
-+ "version": "5.1.0",
-+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
-+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
-+ "dev": true,
-+ "requires": {
-+ "ansi-styles": "^3.2.0",
-+ "string-width": "^3.0.0",
-+ "strip-ansi": "^5.0.0"
-+ },
-+ "dependencies": {
-+ "ansi-regex": {
-+ "version": "4.1.0",
-+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-+ "dev": true
-+ },
-+ "strip-ansi": {
-+ "version": "5.2.0",
-+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-+ "dev": true,
-+ "requires": {
-+ "ansi-regex": "^4.1.0"
-+ }
-+ }
-+ }
-+ },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
-+ },
-+ "ws": {
-+ "version": "5.2.2",
-+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
-+ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
-+ "dev": true,
-+ "requires": {
-+ "async-limiter": "~1.0.0"
-+ }
-+ },
-+ "xml-name-validator": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
-+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
-+ "dev": true
-+ },
-+ "xmlchars": {
-+ "version": "2.2.0",
-+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
-+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
-+ "dev": true
-+ },
-+ "xtend": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-+ "dev": true
-+ },
-+ "y18n": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
-+ "dev": true
-+ },
-+ "yallist": {
-+ "version": "2.1.2",
-+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-+ "dev": true
-+ },
-+ "yargs": {
-+ "version": "14.2.3",
-+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz",
-+ "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==",
-+ "dev": true,
-+ "requires": {
-+ "cliui": "^5.0.0",
-+ "decamelize": "^1.2.0",
-+ "find-up": "^3.0.0",
-+ "get-caller-file": "^2.0.1",
-+ "require-directory": "^2.1.1",
-+ "require-main-filename": "^2.0.0",
-+ "set-blocking": "^2.0.0",
-+ "string-width": "^3.0.0",
-+ "which-module": "^2.0.0",
-+ "y18n": "^4.0.0",
-+ "yargs-parser": "^15.0.1"
-+ },
-+ "dependencies": {
-+ "find-up": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-+ "dev": true,
-+ "requires": {
-+ "locate-path": "^3.0.0"
-+ }
-+ },
-+ "locate-path": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-+ "dev": true,
-+ "requires": {
-+ "p-locate": "^3.0.0",
-+ "path-exists": "^3.0.0"
-+ }
-+ },
-+ "p-limit": {
-+ "version": "2.3.0",
-+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-+ "dev": true,
-+ "requires": {
-+ "p-try": "^2.0.0"
-+ }
-+ },
-+ "p-locate": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-+ "dev": true,
-+ "requires": {
-+ "p-limit": "^2.0.0"
-+ }
-+ },
-+ "p-try": {
-+ "version": "2.2.0",
-+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-+ "dev": true
-+ }
-+ }
-+ },
-+ "yargs-parser": {
-+ "version": "15.0.1",
-+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz",
-+ "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==",
-+ "dev": true,
-+ "requires": {
-+ "camelcase": "^5.0.0",
-+ "decamelize": "^1.2.0"
-+ }
- }
- }
- }
-diff --git a/src/Api.elm b/src/Api.elm
-index 82e5f6c..bd8c516 100644
---- a/src/Api.elm
-+++ b/src/Api.elm
-@@ -36,7 +36,7 @@ init url =
- { url | host = "api.codenamesgreen.com", path = "", query = Nothing, fragment = Nothing }
-
- _ ->
-- { url | host = "api." ++ url.host, path = "", query = Nothing, fragment = Nothing }
-+ { url | host = url.host, path = "/api", query = Nothing, fragment = Nothing }
- in
- { baseUrl = baseUrl }
-
-@@ -80,7 +80,7 @@ type alias Index =
-
- endpointUrl : Url.Url -> String -> String
- endpointUrl baseUrl path =
-- { baseUrl | path = path }
-+ { baseUrl | path = baseUrl.path ++ path }
- |> Url.toString
-
-
diff --git a/modules/private/websites/tools/games/codenames/default.nix b/modules/private/websites/tools/games/codenames/default.nix
deleted file mode 100644
index 25eb62d..0000000
--- a/modules/private/websites/tools/games/codenames/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ config, lib, pkgs, ... }:
-let
- greenapid = pkgs.callPackage ./greenapid.nix {};
- frontend = pkgs.callPackage ./frontend.nix { nodeEnv = pkgs.callPackage pkgs.mylibs.nodeEnv {}; };
- wordlists = pkgs.runCommand "wordlists" {} ''
- mkdir -p $out
- cp -r ${./wordlists} $out/wordlists
- '';
- cfg = config.myServices.websites.games.codenames;
-in
-{
- options.myServices.websites.games.codenames.enable = lib.mkEnableOption "Enable Codenames game";
- config = lib.mkIf cfg.enable {
- systemd.services.codenames_api = {
- description = "Api for codenames game";
- wantedBy = [ "multi-user.target" ];
- script = "${greenapid}/bin/greenapid";
- postStart = ''
- sleep 5;
- chown :wwwrun /run/codenamesgreen/socket.sock
- chmod g+w /run/codenamesgreen/socket.sock
- '';
- serviceConfig = {
- User = "codenames";
- DynamicUser = true;
- SupplementaryGroups = [ "wwwrun" ];
- Type = "simple";
- RuntimeDirectory = "codenamesgreen";
- WorkingDirectory = builtins.toString wordlists;
- };
- };
-
- services.websites.env.tools.vhostConfs.games_codenames = {
- certName = "games";
- certMainHost = "games.immae.eu";
- hosts = [ "codenames.games.immae.eu" ];
- root = frontend;
- extraConfig = [
- ''
- ProxyPass /api/ unix:///run/codenamesgreen/socket.sock|http://codenames.games.immae.eu/
- ProxyPassReverse /api/ unix:///run/codenamesgreen/socket.sock|http://codenames.games.immae.eu/
-
-
- FallbackResource index.html
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/tools/games/codenames/deps.nix b/modules/private/websites/tools/games/codenames/deps.nix
deleted file mode 100644
index fddec2e..0000000
--- a/modules/private/websites/tools/games/codenames/deps.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-[
- {
- goPackagePath = "github.com/jbowens/dictionary";
- fetch = {
- type = "git";
- url = "https://github.com/jbowens/dictionary";
- rev = "229cf68df1a675e7a2462c4028d7df4abfd98854";
- sha256 = "0gyg3xcx4xqx6w8id2dq5s280mdfhs6yc9flg2jbj8jff040s28w";
- };
- }
-]
diff --git a/modules/private/websites/tools/games/codenames/elm-srcs.nix b/modules/private/websites/tools/games/codenames/elm-srcs.nix
deleted file mode 100644
index 031e7ff..0000000
--- a/modules/private/websites/tools/games/codenames/elm-srcs.nix
+++ /dev/null
@@ -1,77 +0,0 @@
-{
-
- "elm/json" = {
- sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh";
- version = "1.1.3";
- };
-
- "perzanko/elm-loading" = {
- sha256 = "0fs7ly4jib4gwhh157g91hgjryqja096i6jhbsq7qb4k4r3c5l80";
- version = "2.0.4";
- };
-
- "elm/html" = {
- sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k";
- version = "1.0.0";
- };
-
- "elm/browser" = {
- sha256 = "1zlmx672glg7fdgkvh5jm47y85pv7pdfr5mkhg6x7ar6k000vyka";
- version = "1.0.1";
- };
-
- "elm/core" = {
- sha256 = "1l0qdbczw91kzz8sx5d5zwz9x662bspy7p21dsr3f2rigxiix2as";
- version = "1.0.2";
- };
-
- "elm/url" = {
- sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4";
- version = "1.0.0";
- };
-
- "elm/http" = {
- sha256 = "008bs76mnp48b4dw8qwjj4fyvzbxvlrl4xpa2qh1gg2kfwyw56v1";
- version = "2.0.0";
- };
-
- "elm/bytes" = {
- sha256 = "02ywbf52akvxclpxwj9n04jydajcbsbcbsnjs53yjc5lwck3abwj";
- version = "1.0.8";
- };
-
- "elm/file" = {
- sha256 = "1rljcb41dl97myidyjih2yliyzddkr2m7n74x7gg46rcw4jl0ny8";
- version = "1.0.5";
- };
-
- "rtfeldman/elm-hex" = {
- sha256 = "1y0aa16asvwdqmgbskh5iba6psp43lkcjjw9mgzj3gsrg33lp00d";
- version = "1.0.0";
- };
-
- "rtfeldman/elm-css" = {
- sha256 = "0nxiyxyw3kw55whkpwhrcgc0dr6a8zlm2nqvsaqdw6mzkykg0ba6";
- version = "16.1.0";
- };
-
- "elm/time" = {
- sha256 = "0vch7i86vn0x8b850w1p69vplll1bnbkp8s383z7pinyg94cm2z1";
- version = "1.0.0";
- };
-
- "elm/virtual-dom" = {
- sha256 = "0q1v5gi4g336bzz1lgwpn5b1639lrn63d8y6k6pimcyismp2i1yg";
- version = "1.0.2";
- };
-
- "elm-explorations/test" = {
- sha256 = "0rpynrm9irgzyynd1bws0xspww5lnwv7w7998750jb8kcrw39h0n";
- version = "1.0.0";
- };
-
- "elm/random" = {
- sha256 = "138n2455wdjwa657w6sjq18wx2r0k60ibpc4frhbqr50sncxrfdl";
- version = "1.0.0";
- };
-}
diff --git a/modules/private/websites/tools/games/codenames/frontend.nix b/modules/private/websites/tools/games/codenames/frontend.nix
deleted file mode 100644
index 0f29070..0000000
--- a/modules/private/websites/tools/games/codenames/frontend.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ callPackage, runCommand, nodejs, utillinux, nodeEnv, nodePackages, elmPackages }:
-let
- codenamesgreen_packages = callPackage ./node-packages.nix { inherit nodeEnv; };
-in
-runCommand "frontend" {
- buildInputs = [
- nodejs utillinux nodePackages.parcel-bundler elmPackages.elm
- ];
-} ''
- cp -a ${codenamesgreen_packages.package}/lib/node_modules/codenamesgreen .
- chmod -R u+w codenamesgreen
- cd codenamesgreen
- ${elmPackages.fetchElmDeps {
- elmPackages = import ./elm-srcs.nix;
- registryDat = ./registry.dat;
- elmVersion = elmPackages.elm.version;
- }}
- npx parcel build src/index.html
- cp -a dist $out
- cp -R src/images $out
- cp src/robots.txt $out
-''
diff --git a/modules/private/websites/tools/games/codenames/greenapid.nix b/modules/private/websites/tools/games/codenames/greenapid.nix
deleted file mode 100644
index 52bda3b..0000000
--- a/modules/private/websites/tools/games/codenames/greenapid.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ buildGoPackage, fetchFromGitHub, socket ? "/run/codenamesgreen/socket.sock" }:
-buildGoPackage rec {
- pname = "greenapid";
- version = "master-6d014d0";
-
- goPackagePath = "github.com/jbowens/codenamesgreen";
- subPackages = [ "cmd/greenapid" ];
-
- src = fetchFromGitHub {
- owner = "jbowens";
- repo = "codenamesgreen";
- rev = "6d014d0df14bee72495e01f12885ef31cba3bd6b";
- sha256 = "0bkaf52rnjw792q0755in4k5jbcrmgq06cl03fdl6zdr8kq2mhm0";
- };
-
- patches = [ ./greenapid.patch ];
- goDeps = ./deps.nix;
-}
diff --git a/modules/private/websites/tools/games/codenames/greenapid.patch b/modules/private/websites/tools/games/codenames/greenapid.patch
deleted file mode 100644
index 21a9fad..0000000
--- a/modules/private/websites/tools/games/codenames/greenapid.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-diff --git a/cmd/greenapid/main.go b/cmd/greenapid/main.go
-index 86499e9..1589323 100644
---- a/cmd/greenapid/main.go
-+++ b/cmd/greenapid/main.go
-@@ -1,6 +1,7 @@
- package main
-
- import (
-+ "net"
- "net/http"
-
- "github.com/jbowens/codenamesgreen/gameapi"
-@@ -13,6 +14,12 @@ func main() {
- }
-
- h := gameapi.Handler(wordLists)
-- err = http.ListenAndServe(":8080", h)
-+ server := &http.Server{Handler: h}
-+ ln, err := net.Listen("unix", "/run/codenamesgreen/socket.sock")
-+ if err != nil {
-+ panic(err)
-+ }
-+
-+ err = server.Serve(ln)
- panic(err)
- }
-diff --git a/gameapi/handler.go b/gameapi/handler.go
-index d67cf94..108e7e1 100644
---- a/gameapi/handler.go
-+++ b/gameapi/handler.go
-@@ -101,7 +101,7 @@ func (h *handler) handleIndex(rw http.ResponseWriter, req *http.Request) {
- for {
- w1 := strings.ToLower(h.allWords[h.rand.Int63n(int64(len(h.allWords)))])
- w2 := strings.ToLower(h.allWords[h.rand.Int63n(int64(len(h.allWords)))])
-- id := fmt.Sprintf("%s-%s", w1, w2)
-+ id = fmt.Sprintf("%s-%s", w1, w2)
- if _, ok := h.games[id]; !ok {
- break
- }
diff --git a/modules/private/websites/tools/games/codenames/node-packages.nix b/modules/private/websites/tools/games/codenames/node-packages.nix
deleted file mode 100644
index 02595c5..0000000
--- a/modules/private/websites/tools/games/codenames/node-packages.nix
+++ /dev/null
@@ -1,7621 +0,0 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
-
-{nodeEnv, fetchurl, fetchgit, fetchFromGitHub, runCommand, globalBuildInputs ? []}:
-
-let
- sources = {
- "@babel/code-frame-7.0.0" = {
- name = "_at_babel_slash_code-frame";
- packageName = "@babel/code-frame";
- version = "7.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz";
- sha512 = "OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==";
- };
- };
- "@babel/code-frame-7.8.3" = {
- name = "_at_babel_slash_code-frame";
- packageName = "@babel/code-frame";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz";
- sha512 = "a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==";
- };
- };
- "@babel/core-7.3.4" = {
- name = "_at_babel_slash_core";
- packageName = "@babel/core";
- version = "7.3.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz";
- sha512 = "jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==";
- };
- };
- "@babel/generator-7.3.4" = {
- name = "_at_babel_slash_generator";
- packageName = "@babel/generator";
- version = "7.3.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz";
- sha512 = "8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==";
- };
- };
- "@babel/generator-7.9.5" = {
- name = "_at_babel_slash_generator";
- packageName = "@babel/generator";
- version = "7.9.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz";
- sha512 = "GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==";
- };
- };
- "@babel/helper-annotate-as-pure-7.8.3" = {
- name = "_at_babel_slash_helper-annotate-as-pure";
- packageName = "@babel/helper-annotate-as-pure";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz";
- sha512 = "6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==";
- };
- };
- "@babel/helper-builder-binary-assignment-operator-visitor-7.8.3" = {
- name = "_at_babel_slash_helper-builder-binary-assignment-operator-visitor";
- packageName = "@babel/helper-builder-binary-assignment-operator-visitor";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz";
- sha512 = "5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==";
- };
- };
- "@babel/helper-builder-react-jsx-7.9.0" = {
- name = "_at_babel_slash_helper-builder-react-jsx";
- packageName = "@babel/helper-builder-react-jsx";
- version = "7.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz";
- sha512 = "weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==";
- };
- };
- "@babel/helper-create-regexp-features-plugin-7.8.8" = {
- name = "_at_babel_slash_helper-create-regexp-features-plugin";
- packageName = "@babel/helper-create-regexp-features-plugin";
- version = "7.8.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz";
- sha512 = "LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==";
- };
- };
- "@babel/helper-define-map-7.8.3" = {
- name = "_at_babel_slash_helper-define-map";
- packageName = "@babel/helper-define-map";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz";
- sha512 = "PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==";
- };
- };
- "@babel/helper-explode-assignable-expression-7.8.3" = {
- name = "_at_babel_slash_helper-explode-assignable-expression";
- packageName = "@babel/helper-explode-assignable-expression";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz";
- sha512 = "N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==";
- };
- };
- "@babel/helper-function-name-7.9.5" = {
- name = "_at_babel_slash_helper-function-name";
- packageName = "@babel/helper-function-name";
- version = "7.9.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz";
- sha512 = "JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==";
- };
- };
- "@babel/helper-get-function-arity-7.8.3" = {
- name = "_at_babel_slash_helper-get-function-arity";
- packageName = "@babel/helper-get-function-arity";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz";
- sha512 = "FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==";
- };
- };
- "@babel/helper-hoist-variables-7.8.3" = {
- name = "_at_babel_slash_helper-hoist-variables";
- packageName = "@babel/helper-hoist-variables";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz";
- sha512 = "ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==";
- };
- };
- "@babel/helper-member-expression-to-functions-7.8.3" = {
- name = "_at_babel_slash_helper-member-expression-to-functions";
- packageName = "@babel/helper-member-expression-to-functions";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz";
- sha512 = "fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==";
- };
- };
- "@babel/helper-module-imports-7.8.3" = {
- name = "_at_babel_slash_helper-module-imports";
- packageName = "@babel/helper-module-imports";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz";
- sha512 = "R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==";
- };
- };
- "@babel/helper-module-transforms-7.9.0" = {
- name = "_at_babel_slash_helper-module-transforms";
- packageName = "@babel/helper-module-transforms";
- version = "7.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz";
- sha512 = "0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==";
- };
- };
- "@babel/helper-optimise-call-expression-7.8.3" = {
- name = "_at_babel_slash_helper-optimise-call-expression";
- packageName = "@babel/helper-optimise-call-expression";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz";
- sha512 = "Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==";
- };
- };
- "@babel/helper-plugin-utils-7.8.3" = {
- name = "_at_babel_slash_helper-plugin-utils";
- packageName = "@babel/helper-plugin-utils";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz";
- sha512 = "j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==";
- };
- };
- "@babel/helper-regex-7.8.3" = {
- name = "_at_babel_slash_helper-regex";
- packageName = "@babel/helper-regex";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz";
- sha512 = "BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==";
- };
- };
- "@babel/helper-remap-async-to-generator-7.8.3" = {
- name = "_at_babel_slash_helper-remap-async-to-generator";
- packageName = "@babel/helper-remap-async-to-generator";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz";
- sha512 = "kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==";
- };
- };
- "@babel/helper-replace-supers-7.8.6" = {
- name = "_at_babel_slash_helper-replace-supers";
- packageName = "@babel/helper-replace-supers";
- version = "7.8.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz";
- sha512 = "PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==";
- };
- };
- "@babel/helper-simple-access-7.8.3" = {
- name = "_at_babel_slash_helper-simple-access";
- packageName = "@babel/helper-simple-access";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz";
- sha512 = "VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==";
- };
- };
- "@babel/helper-split-export-declaration-7.8.3" = {
- name = "_at_babel_slash_helper-split-export-declaration";
- packageName = "@babel/helper-split-export-declaration";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz";
- sha512 = "3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==";
- };
- };
- "@babel/helper-validator-identifier-7.9.5" = {
- name = "_at_babel_slash_helper-validator-identifier";
- packageName = "@babel/helper-validator-identifier";
- version = "7.9.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz";
- sha512 = "/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==";
- };
- };
- "@babel/helper-wrap-function-7.8.3" = {
- name = "_at_babel_slash_helper-wrap-function";
- packageName = "@babel/helper-wrap-function";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz";
- sha512 = "LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==";
- };
- };
- "@babel/helpers-7.9.2" = {
- name = "_at_babel_slash_helpers";
- packageName = "@babel/helpers";
- version = "7.9.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz";
- sha512 = "JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==";
- };
- };
- "@babel/highlight-7.9.0" = {
- name = "_at_babel_slash_highlight";
- packageName = "@babel/highlight";
- version = "7.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz";
- sha512 = "lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==";
- };
- };
- "@babel/parser-7.3.4" = {
- name = "_at_babel_slash_parser";
- packageName = "@babel/parser";
- version = "7.3.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz";
- sha512 = "tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==";
- };
- };
- "@babel/parser-7.9.4" = {
- name = "_at_babel_slash_parser";
- packageName = "@babel/parser";
- version = "7.9.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz";
- sha512 = "bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==";
- };
- };
- "@babel/plugin-proposal-async-generator-functions-7.8.3" = {
- name = "_at_babel_slash_plugin-proposal-async-generator-functions";
- packageName = "@babel/plugin-proposal-async-generator-functions";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz";
- sha512 = "NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==";
- };
- };
- "@babel/plugin-proposal-json-strings-7.8.3" = {
- name = "_at_babel_slash_plugin-proposal-json-strings";
- packageName = "@babel/plugin-proposal-json-strings";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz";
- sha512 = "KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==";
- };
- };
- "@babel/plugin-proposal-object-rest-spread-7.9.5" = {
- name = "_at_babel_slash_plugin-proposal-object-rest-spread";
- packageName = "@babel/plugin-proposal-object-rest-spread";
- version = "7.9.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz";
- sha512 = "VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==";
- };
- };
- "@babel/plugin-proposal-optional-catch-binding-7.8.3" = {
- name = "_at_babel_slash_plugin-proposal-optional-catch-binding";
- packageName = "@babel/plugin-proposal-optional-catch-binding";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz";
- sha512 = "0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==";
- };
- };
- "@babel/plugin-proposal-unicode-property-regex-7.8.8" = {
- name = "_at_babel_slash_plugin-proposal-unicode-property-regex";
- packageName = "@babel/plugin-proposal-unicode-property-regex";
- version = "7.8.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz";
- sha512 = "EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==";
- };
- };
- "@babel/plugin-syntax-async-generators-7.8.4" = {
- name = "_at_babel_slash_plugin-syntax-async-generators";
- packageName = "@babel/plugin-syntax-async-generators";
- version = "7.8.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz";
- sha512 = "tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==";
- };
- };
- "@babel/plugin-syntax-flow-7.8.3" = {
- name = "_at_babel_slash_plugin-syntax-flow";
- packageName = "@babel/plugin-syntax-flow";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz";
- sha512 = "innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==";
- };
- };
- "@babel/plugin-syntax-json-strings-7.8.3" = {
- name = "_at_babel_slash_plugin-syntax-json-strings";
- packageName = "@babel/plugin-syntax-json-strings";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz";
- sha512 = "lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==";
- };
- };
- "@babel/plugin-syntax-jsx-7.8.3" = {
- name = "_at_babel_slash_plugin-syntax-jsx";
- packageName = "@babel/plugin-syntax-jsx";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz";
- sha512 = "WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==";
- };
- };
- "@babel/plugin-syntax-object-rest-spread-7.8.3" = {
- name = "_at_babel_slash_plugin-syntax-object-rest-spread";
- packageName = "@babel/plugin-syntax-object-rest-spread";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz";
- sha512 = "XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==";
- };
- };
- "@babel/plugin-syntax-optional-catch-binding-7.8.3" = {
- name = "_at_babel_slash_plugin-syntax-optional-catch-binding";
- packageName = "@babel/plugin-syntax-optional-catch-binding";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz";
- sha512 = "6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==";
- };
- };
- "@babel/plugin-transform-arrow-functions-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-arrow-functions";
- packageName = "@babel/plugin-transform-arrow-functions";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz";
- sha512 = "0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==";
- };
- };
- "@babel/plugin-transform-async-to-generator-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-async-to-generator";
- packageName = "@babel/plugin-transform-async-to-generator";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz";
- sha512 = "imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==";
- };
- };
- "@babel/plugin-transform-block-scoped-functions-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-block-scoped-functions";
- packageName = "@babel/plugin-transform-block-scoped-functions";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz";
- sha512 = "vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==";
- };
- };
- "@babel/plugin-transform-block-scoping-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-block-scoping";
- packageName = "@babel/plugin-transform-block-scoping";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz";
- sha512 = "pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==";
- };
- };
- "@babel/plugin-transform-classes-7.9.5" = {
- name = "_at_babel_slash_plugin-transform-classes";
- packageName = "@babel/plugin-transform-classes";
- version = "7.9.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz";
- sha512 = "x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==";
- };
- };
- "@babel/plugin-transform-computed-properties-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-computed-properties";
- packageName = "@babel/plugin-transform-computed-properties";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz";
- sha512 = "O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==";
- };
- };
- "@babel/plugin-transform-destructuring-7.9.5" = {
- name = "_at_babel_slash_plugin-transform-destructuring";
- packageName = "@babel/plugin-transform-destructuring";
- version = "7.9.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz";
- sha512 = "j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==";
- };
- };
- "@babel/plugin-transform-dotall-regex-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-dotall-regex";
- packageName = "@babel/plugin-transform-dotall-regex";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz";
- sha512 = "kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==";
- };
- };
- "@babel/plugin-transform-duplicate-keys-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-duplicate-keys";
- packageName = "@babel/plugin-transform-duplicate-keys";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz";
- sha512 = "s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==";
- };
- };
- "@babel/plugin-transform-exponentiation-operator-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-exponentiation-operator";
- packageName = "@babel/plugin-transform-exponentiation-operator";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz";
- sha512 = "zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==";
- };
- };
- "@babel/plugin-transform-flow-strip-types-7.3.4" = {
- name = "_at_babel_slash_plugin-transform-flow-strip-types";
- packageName = "@babel/plugin-transform-flow-strip-types";
- version = "7.3.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.3.4.tgz";
- sha512 = "PmQC9R7DwpBFA+7ATKMyzViz3zCaMNouzZMPZN2K5PnbBbtL3AXFYTkDk+Hey5crQq2A90UG5Uthz0mel+XZrA==";
- };
- };
- "@babel/plugin-transform-for-of-7.9.0" = {
- name = "_at_babel_slash_plugin-transform-for-of";
- packageName = "@babel/plugin-transform-for-of";
- version = "7.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz";
- sha512 = "lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==";
- };
- };
- "@babel/plugin-transform-function-name-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-function-name";
- packageName = "@babel/plugin-transform-function-name";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz";
- sha512 = "rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==";
- };
- };
- "@babel/plugin-transform-literals-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-literals";
- packageName = "@babel/plugin-transform-literals";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz";
- sha512 = "3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==";
- };
- };
- "@babel/plugin-transform-modules-amd-7.9.0" = {
- name = "_at_babel_slash_plugin-transform-modules-amd";
- packageName = "@babel/plugin-transform-modules-amd";
- version = "7.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz";
- sha512 = "vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==";
- };
- };
- "@babel/plugin-transform-modules-commonjs-7.2.0" = {
- name = "_at_babel_slash_plugin-transform-modules-commonjs";
- packageName = "@babel/plugin-transform-modules-commonjs";
- version = "7.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz";
- sha512 = "V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==";
- };
- };
- "@babel/plugin-transform-modules-systemjs-7.9.0" = {
- name = "_at_babel_slash_plugin-transform-modules-systemjs";
- packageName = "@babel/plugin-transform-modules-systemjs";
- version = "7.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz";
- sha512 = "FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==";
- };
- };
- "@babel/plugin-transform-modules-umd-7.9.0" = {
- name = "_at_babel_slash_plugin-transform-modules-umd";
- packageName = "@babel/plugin-transform-modules-umd";
- version = "7.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz";
- sha512 = "uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==";
- };
- };
- "@babel/plugin-transform-named-capturing-groups-regex-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-named-capturing-groups-regex";
- packageName = "@babel/plugin-transform-named-capturing-groups-regex";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz";
- sha512 = "f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==";
- };
- };
- "@babel/plugin-transform-new-target-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-new-target";
- packageName = "@babel/plugin-transform-new-target";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz";
- sha512 = "QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==";
- };
- };
- "@babel/plugin-transform-object-super-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-object-super";
- packageName = "@babel/plugin-transform-object-super";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz";
- sha512 = "57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==";
- };
- };
- "@babel/plugin-transform-parameters-7.9.5" = {
- name = "_at_babel_slash_plugin-transform-parameters";
- packageName = "@babel/plugin-transform-parameters";
- version = "7.9.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz";
- sha512 = "0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==";
- };
- };
- "@babel/plugin-transform-react-jsx-7.3.0" = {
- name = "_at_babel_slash_plugin-transform-react-jsx";
- packageName = "@babel/plugin-transform-react-jsx";
- version = "7.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz";
- sha512 = "a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==";
- };
- };
- "@babel/plugin-transform-regenerator-7.8.7" = {
- name = "_at_babel_slash_plugin-transform-regenerator";
- packageName = "@babel/plugin-transform-regenerator";
- version = "7.8.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz";
- sha512 = "TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==";
- };
- };
- "@babel/plugin-transform-shorthand-properties-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-shorthand-properties";
- packageName = "@babel/plugin-transform-shorthand-properties";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz";
- sha512 = "I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==";
- };
- };
- "@babel/plugin-transform-spread-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-spread";
- packageName = "@babel/plugin-transform-spread";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz";
- sha512 = "CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==";
- };
- };
- "@babel/plugin-transform-sticky-regex-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-sticky-regex";
- packageName = "@babel/plugin-transform-sticky-regex";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz";
- sha512 = "9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==";
- };
- };
- "@babel/plugin-transform-template-literals-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-template-literals";
- packageName = "@babel/plugin-transform-template-literals";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz";
- sha512 = "820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==";
- };
- };
- "@babel/plugin-transform-typeof-symbol-7.8.4" = {
- name = "_at_babel_slash_plugin-transform-typeof-symbol";
- packageName = "@babel/plugin-transform-typeof-symbol";
- version = "7.8.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz";
- sha512 = "2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==";
- };
- };
- "@babel/plugin-transform-unicode-regex-7.8.3" = {
- name = "_at_babel_slash_plugin-transform-unicode-regex";
- packageName = "@babel/plugin-transform-unicode-regex";
- version = "7.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz";
- sha512 = "+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==";
- };
- };
- "@babel/preset-env-7.3.4" = {
- name = "_at_babel_slash_preset-env";
- packageName = "@babel/preset-env";
- version = "7.3.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.4.tgz";
- sha512 = "2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==";
- };
- };
- "@babel/runtime-7.3.4" = {
- name = "_at_babel_slash_runtime";
- packageName = "@babel/runtime";
- version = "7.3.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz";
- sha512 = "IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==";
- };
- };
- "@babel/runtime-7.9.2" = {
- name = "_at_babel_slash_runtime";
- packageName = "@babel/runtime";
- version = "7.9.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz";
- sha512 = "NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==";
- };
- };
- "@babel/template-7.2.2" = {
- name = "_at_babel_slash_template";
- packageName = "@babel/template";
- version = "7.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz";
- sha512 = "zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==";
- };
- };
- "@babel/template-7.8.6" = {
- name = "_at_babel_slash_template";
- packageName = "@babel/template";
- version = "7.8.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz";
- sha512 = "zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==";
- };
- };
- "@babel/traverse-7.3.4" = {
- name = "_at_babel_slash_traverse";
- packageName = "@babel/traverse";
- version = "7.3.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz";
- sha512 = "TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==";
- };
- };
- "@babel/traverse-7.9.5" = {
- name = "_at_babel_slash_traverse";
- packageName = "@babel/traverse";
- version = "7.9.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz";
- sha512 = "c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==";
- };
- };
- "@babel/types-7.3.4" = {
- name = "_at_babel_slash_types";
- packageName = "@babel/types";
- version = "7.3.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz";
- sha512 = "WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==";
- };
- };
- "@babel/types-7.9.5" = {
- name = "_at_babel_slash_types";
- packageName = "@babel/types";
- version = "7.9.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz";
- sha512 = "XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==";
- };
- };
- "@iarna/toml-2.2.5" = {
- name = "_at_iarna_slash_toml";
- packageName = "@iarna/toml";
- version = "2.2.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz";
- sha512 = "trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==";
- };
- };
- "@mrmlnc/readdir-enhanced-2.2.1" = {
- name = "_at_mrmlnc_slash_readdir-enhanced";
- packageName = "@mrmlnc/readdir-enhanced";
- version = "2.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz";
- sha512 = "bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==";
- };
- };
- "@nodelib/fs.stat-1.1.3" = {
- name = "_at_nodelib_slash_fs.stat";
- packageName = "@nodelib/fs.stat";
- version = "1.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz";
- sha512 = "shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==";
- };
- };
- "@parcel/fs-1.11.0" = {
- name = "_at_parcel_slash_fs";
- packageName = "@parcel/fs";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz";
- sha512 = "86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==";
- };
- };
- "@parcel/logger-1.11.1" = {
- name = "_at_parcel_slash_logger";
- packageName = "@parcel/logger";
- version = "1.11.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz";
- sha512 = "9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==";
- };
- };
- "@parcel/utils-1.11.0" = {
- name = "_at_parcel_slash_utils";
- packageName = "@parcel/utils";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz";
- sha512 = "cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==";
- };
- };
- "@parcel/watcher-1.12.1" = {
- name = "_at_parcel_slash_watcher";
- packageName = "@parcel/watcher";
- version = "1.12.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz";
- sha512 = "od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==";
- };
- };
- "@parcel/workers-1.11.0" = {
- name = "_at_parcel_slash_workers";
- packageName = "@parcel/workers";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz";
- sha512 = "USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==";
- };
- };
- "@types/q-1.5.2" = {
- name = "_at_types_slash_q";
- packageName = "@types/q";
- version = "1.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz";
- sha512 = "ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==";
- };
- };
- "abab-2.0.3" = {
- name = "abab";
- packageName = "abab";
- version = "2.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz";
- sha512 = "tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==";
- };
- };
- "abbrev-1.1.1" = {
- name = "abbrev";
- packageName = "abbrev";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
- sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
- };
- };
- "acorn-6.4.1" = {
- name = "acorn";
- packageName = "acorn";
- version = "6.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz";
- sha512 = "ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==";
- };
- };
- "acorn-7.1.1" = {
- name = "acorn";
- packageName = "acorn";
- version = "7.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz";
- sha512 = "add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==";
- };
- };
- "acorn-globals-4.3.4" = {
- name = "acorn-globals";
- packageName = "acorn-globals";
- version = "4.3.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz";
- sha512 = "clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==";
- };
- };
- "acorn-walk-6.2.0" = {
- name = "acorn-walk";
- packageName = "acorn-walk";
- version = "6.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz";
- sha512 = "7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==";
- };
- };
- "ajv-6.12.2" = {
- name = "ajv";
- packageName = "ajv";
- version = "6.12.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz";
- sha512 = "k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==";
- };
- };
- "alphanum-sort-1.0.2" = {
- name = "alphanum-sort";
- packageName = "alphanum-sort";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz";
- sha1 = "97a1119649b211ad33691d9f9f486a8ec9fbe0a3";
- };
- };
- "ansi-regex-2.1.1" = {
- name = "ansi-regex";
- packageName = "ansi-regex";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
- sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
- };
- };
- "ansi-regex-3.0.0" = {
- name = "ansi-regex";
- packageName = "ansi-regex";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
- sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
- };
- };
- "ansi-regex-4.1.0" = {
- name = "ansi-regex";
- packageName = "ansi-regex";
- version = "4.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz";
- sha512 = "1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==";
- };
- };
- "ansi-styles-2.2.1" = {
- name = "ansi-styles";
- packageName = "ansi-styles";
- version = "2.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
- sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
- };
- };
- "ansi-styles-3.2.1" = {
- name = "ansi-styles";
- packageName = "ansi-styles";
- version = "3.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz";
- sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==";
- };
- };
- "ansi-to-html-0.6.14" = {
- name = "ansi-to-html";
- packageName = "ansi-to-html";
- version = "0.6.14";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz";
- sha512 = "7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==";
- };
- };
- "anymatch-2.0.0" = {
- name = "anymatch";
- packageName = "anymatch";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz";
- sha512 = "5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==";
- };
- };
- "argparse-1.0.10" = {
- name = "argparse";
- packageName = "argparse";
- version = "1.0.10";
- src = fetchurl {
- url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
- sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
- };
- };
- "arr-diff-4.0.0" = {
- name = "arr-diff";
- packageName = "arr-diff";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz";
- sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
- };
- };
- "arr-flatten-1.1.0" = {
- name = "arr-flatten";
- packageName = "arr-flatten";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz";
- sha512 = "L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==";
- };
- };
- "arr-union-3.1.0" = {
- name = "arr-union";
- packageName = "arr-union";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz";
- sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
- };
- };
- "array-equal-1.0.0" = {
- name = "array-equal";
- packageName = "array-equal";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz";
- sha1 = "8c2a5ef2472fd9ea742b04c77a75093ba2757c93";
- };
- };
- "array-unique-0.3.2" = {
- name = "array-unique";
- packageName = "array-unique";
- version = "0.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz";
- sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
- };
- };
- "asn1-0.2.4" = {
- name = "asn1";
- packageName = "asn1";
- version = "0.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
- sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
- };
- };
- "asn1.js-4.10.1" = {
- name = "asn1.js";
- packageName = "asn1.js";
- version = "4.10.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz";
- sha512 = "p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==";
- };
- };
- "assert-1.5.0" = {
- name = "assert";
- packageName = "assert";
- version = "1.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz";
- sha512 = "EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==";
- };
- };
- "assert-plus-1.0.0" = {
- name = "assert-plus";
- packageName = "assert-plus";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
- sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
- };
- };
- "assign-symbols-1.0.0" = {
- name = "assign-symbols";
- packageName = "assign-symbols";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz";
- sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
- };
- };
- "async-each-1.0.3" = {
- name = "async-each";
- packageName = "async-each";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz";
- sha512 = "z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==";
- };
- };
- "async-limiter-1.0.1" = {
- name = "async-limiter";
- packageName = "async-limiter";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz";
- sha512 = "csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==";
- };
- };
- "asynckit-0.4.0" = {
- name = "asynckit";
- packageName = "asynckit";
- version = "0.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
- sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
- };
- };
- "atob-2.1.2" = {
- name = "atob";
- packageName = "atob";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz";
- sha512 = "Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==";
- };
- };
- "aws-sign2-0.7.0" = {
- name = "aws-sign2";
- packageName = "aws-sign2";
- version = "0.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
- sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
- };
- };
- "aws4-1.9.1" = {
- name = "aws4";
- packageName = "aws4";
- version = "1.9.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz";
- sha512 = "wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==";
- };
- };
- "babel-plugin-dynamic-import-node-2.3.3" = {
- name = "babel-plugin-dynamic-import-node";
- packageName = "babel-plugin-dynamic-import-node";
- version = "2.3.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz";
- sha512 = "jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==";
- };
- };
- "babel-runtime-6.26.0" = {
- name = "babel-runtime";
- packageName = "babel-runtime";
- version = "6.26.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
- sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
- };
- };
- "babel-types-6.26.0" = {
- name = "babel-types";
- packageName = "babel-types";
- version = "6.26.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz";
- sha1 = "a3b073f94ab49eb6fa55cd65227a334380632497";
- };
- };
- "babylon-walk-1.0.2" = {
- name = "babylon-walk";
- packageName = "babylon-walk";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz";
- sha1 = "3b15a5ddbb482a78b4ce9c01c8ba181702d9d6ce";
- };
- };
- "balanced-match-1.0.0" = {
- name = "balanced-match";
- packageName = "balanced-match";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
- sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
- };
- };
- "base-0.11.2" = {
- name = "base";
- packageName = "base";
- version = "0.11.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/base/-/base-0.11.2.tgz";
- sha512 = "5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==";
- };
- };
- "base64-js-1.3.1" = {
- name = "base64-js";
- packageName = "base64-js";
- version = "1.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz";
- sha512 = "mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==";
- };
- };
- "bcrypt-pbkdf-1.0.2" = {
- name = "bcrypt-pbkdf";
- packageName = "bcrypt-pbkdf";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
- sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
- };
- };
- "binary-extensions-1.13.1" = {
- name = "binary-extensions";
- packageName = "binary-extensions";
- version = "1.13.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz";
- sha512 = "Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==";
- };
- };
- "bindings-1.5.0" = {
- name = "bindings";
- packageName = "bindings";
- version = "1.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz";
- sha512 = "p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==";
- };
- };
- "bn.js-4.11.8" = {
- name = "bn.js";
- packageName = "bn.js";
- version = "4.11.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz";
- sha512 = "ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==";
- };
- };
- "boolbase-1.0.0" = {
- name = "boolbase";
- packageName = "boolbase";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz";
- sha1 = "68dff5fbe60c51eb37725ea9e3ed310dcc1e776e";
- };
- };
- "brace-expansion-1.1.11" = {
- name = "brace-expansion";
- packageName = "brace-expansion";
- version = "1.1.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
- sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
- };
- };
- "braces-2.3.2" = {
- name = "braces";
- packageName = "braces";
- version = "2.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz";
- sha512 = "aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==";
- };
- };
- "brfs-1.6.1" = {
- name = "brfs";
- packageName = "brfs";
- version = "1.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz";
- sha512 = "OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==";
- };
- };
- "brorand-1.1.0" = {
- name = "brorand";
- packageName = "brorand";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz";
- sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f";
- };
- };
- "browser-process-hrtime-1.0.0" = {
- name = "browser-process-hrtime";
- packageName = "browser-process-hrtime";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz";
- sha512 = "9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==";
- };
- };
- "browserify-aes-1.2.0" = {
- name = "browserify-aes";
- packageName = "browserify-aes";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz";
- sha512 = "+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==";
- };
- };
- "browserify-cipher-1.0.1" = {
- name = "browserify-cipher";
- packageName = "browserify-cipher";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz";
- sha512 = "sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==";
- };
- };
- "browserify-des-1.0.2" = {
- name = "browserify-des";
- packageName = "browserify-des";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz";
- sha512 = "BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==";
- };
- };
- "browserify-rsa-4.0.1" = {
- name = "browserify-rsa";
- packageName = "browserify-rsa";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz";
- sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524";
- };
- };
- "browserify-sign-4.0.4" = {
- name = "browserify-sign";
- packageName = "browserify-sign";
- version = "4.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz";
- sha1 = "aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298";
- };
- };
- "browserify-zlib-0.2.0" = {
- name = "browserify-zlib";
- packageName = "browserify-zlib";
- version = "0.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
- sha512 = "Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==";
- };
- };
- "browserslist-4.12.0" = {
- name = "browserslist";
- packageName = "browserslist";
- version = "4.12.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz";
- sha512 = "UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==";
- };
- };
- "buffer-4.9.2" = {
- name = "buffer";
- packageName = "buffer";
- version = "4.9.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz";
- sha512 = "xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==";
- };
- };
- "buffer-equal-0.0.1" = {
- name = "buffer-equal";
- packageName = "buffer-equal";
- version = "0.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz";
- sha1 = "91bc74b11ea405bc916bc6aa908faafa5b4aac4b";
- };
- };
- "buffer-from-1.1.1" = {
- name = "buffer-from";
- packageName = "buffer-from";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz";
- sha512 = "MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==";
- };
- };
- "buffer-xor-1.0.3" = {
- name = "buffer-xor";
- packageName = "buffer-xor";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz";
- sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9";
- };
- };
- "builtin-status-codes-3.0.0" = {
- name = "builtin-status-codes";
- packageName = "builtin-status-codes";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
- sha1 = "85982878e21b98e1c66425e03d0174788f569ee8";
- };
- };
- "cache-base-1.0.1" = {
- name = "cache-base";
- packageName = "cache-base";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz";
- sha512 = "AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==";
- };
- };
- "call-me-maybe-1.0.1" = {
- name = "call-me-maybe";
- packageName = "call-me-maybe";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz";
- sha1 = "26d208ea89e37b5cbde60250a15f031c16a4d66b";
- };
- };
- "caller-callsite-2.0.0" = {
- name = "caller-callsite";
- packageName = "caller-callsite";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz";
- sha1 = "847e0fce0a223750a9a027c54b33731ad3154134";
- };
- };
- "caller-path-2.0.0" = {
- name = "caller-path";
- packageName = "caller-path";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz";
- sha1 = "468f83044e369ab2010fac5f06ceee15bb2cb1f4";
- };
- };
- "callsites-2.0.0" = {
- name = "callsites";
- packageName = "callsites";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz";
- sha1 = "06eb84f00eea413da86affefacbffb36093b3c50";
- };
- };
- "camelcase-5.3.1" = {
- name = "camelcase";
- packageName = "camelcase";
- version = "5.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz";
- sha512 = "L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==";
- };
- };
- "caniuse-api-3.0.0" = {
- name = "caniuse-api";
- packageName = "caniuse-api";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz";
- sha512 = "bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==";
- };
- };
- "caniuse-lite-1.0.30001048" = {
- name = "caniuse-lite";
- packageName = "caniuse-lite";
- version = "1.0.30001048";
- src = fetchurl {
- url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz";
- sha512 = "g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg==";
- };
- };
- "caseless-0.12.0" = {
- name = "caseless";
- packageName = "caseless";
- version = "0.12.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
- sha1 = "1b681c21ff84033c826543090689420d187151dc";
- };
- };
- "chalk-1.1.3" = {
- name = "chalk";
- packageName = "chalk";
- version = "1.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
- sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
- };
- };
- "chalk-2.4.2" = {
- name = "chalk";
- packageName = "chalk";
- version = "2.4.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz";
- sha512 = "Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==";
- };
- };
- "chokidar-2.1.8" = {
- name = "chokidar";
- packageName = "chokidar";
- version = "2.1.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz";
- sha512 = "ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==";
- };
- };
- "cipher-base-1.0.4" = {
- name = "cipher-base";
- packageName = "cipher-base";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz";
- sha512 = "Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==";
- };
- };
- "class-utils-0.3.6" = {
- name = "class-utils";
- packageName = "class-utils";
- version = "0.3.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz";
- sha512 = "qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==";
- };
- };
- "cli-cursor-2.1.0" = {
- name = "cli-cursor";
- packageName = "cli-cursor";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz";
- sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5";
- };
- };
- "cli-spinners-1.3.1" = {
- name = "cli-spinners";
- packageName = "cli-spinners";
- version = "1.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz";
- sha512 = "1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==";
- };
- };
- "cliui-5.0.0" = {
- name = "cliui";
- packageName = "cliui";
- version = "5.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz";
- sha512 = "PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==";
- };
- };
- "clone-1.0.4" = {
- name = "clone";
- packageName = "clone";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz";
- sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
- };
- };
- "clone-2.1.2" = {
- name = "clone";
- packageName = "clone";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz";
- sha1 = "1b7f4b9f591f1e8f83670401600345a02887435f";
- };
- };
- "clones-1.2.0" = {
- name = "clones";
- packageName = "clones";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/clones/-/clones-1.2.0.tgz";
- sha512 = "FXDYw4TjR8wgPZYui2LeTqWh1BLpfQ8lB6upMtlpDF6WlOOxghmTTxWyngdKTgozqBgKnHbTVwTE+hOHqAykuQ==";
- };
- };
- "coa-2.0.2" = {
- name = "coa";
- packageName = "coa";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz";
- sha512 = "q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==";
- };
- };
- "collection-visit-1.0.0" = {
- name = "collection-visit";
- packageName = "collection-visit";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz";
- sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
- };
- };
- "color-3.1.2" = {
- name = "color";
- packageName = "color";
- version = "3.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/color/-/color-3.1.2.tgz";
- sha512 = "vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==";
- };
- };
- "color-convert-1.9.3" = {
- name = "color-convert";
- packageName = "color-convert";
- version = "1.9.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz";
- sha512 = "QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==";
- };
- };
- "color-name-1.1.3" = {
- name = "color-name";
- packageName = "color-name";
- version = "1.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
- sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
- };
- };
- "color-string-1.5.3" = {
- name = "color-string";
- packageName = "color-string";
- version = "1.5.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz";
- sha512 = "dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==";
- };
- };
- "combined-stream-1.0.8" = {
- name = "combined-stream";
- packageName = "combined-stream";
- version = "1.0.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
- sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
- };
- };
- "command-exists-1.2.9" = {
- name = "command-exists";
- packageName = "command-exists";
- version = "1.2.9";
- src = fetchurl {
- url = "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz";
- sha512 = "LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==";
- };
- };
- "commander-2.20.3" = {
- name = "commander";
- packageName = "commander";
- version = "2.20.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
- sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==";
- };
- };
- "component-emitter-1.3.0" = {
- name = "component-emitter";
- packageName = "component-emitter";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz";
- sha512 = "Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==";
- };
- };
- "concat-map-0.0.1" = {
- name = "concat-map";
- packageName = "concat-map";
- version = "0.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
- sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
- };
- };
- "concat-stream-1.6.2" = {
- name = "concat-stream";
- packageName = "concat-stream";
- version = "1.6.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz";
- sha512 = "27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==";
- };
- };
- "config-chain-1.1.12" = {
- name = "config-chain";
- packageName = "config-chain";
- version = "1.1.12";
- src = fetchurl {
- url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz";
- sha512 = "a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==";
- };
- };
- "console-browserify-1.2.0" = {
- name = "console-browserify";
- packageName = "console-browserify";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz";
- sha512 = "ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==";
- };
- };
- "constants-browserify-1.0.0" = {
- name = "constants-browserify";
- packageName = "constants-browserify";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz";
- sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
- };
- };
- "convert-source-map-1.7.0" = {
- name = "convert-source-map";
- packageName = "convert-source-map";
- version = "1.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz";
- sha512 = "4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==";
- };
- };
- "copy-descriptor-0.1.1" = {
- name = "copy-descriptor";
- packageName = "copy-descriptor";
- version = "0.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
- sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
- };
- };
- "core-js-2.6.11" = {
- name = "core-js";
- packageName = "core-js";
- version = "2.6.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz";
- sha512 = "5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==";
- };
- };
- "core-util-is-1.0.2" = {
- name = "core-util-is";
- packageName = "core-util-is";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
- sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
- };
- };
- "cosmiconfig-5.2.1" = {
- name = "cosmiconfig";
- packageName = "cosmiconfig";
- version = "5.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz";
- sha512 = "H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==";
- };
- };
- "create-ecdh-4.0.3" = {
- name = "create-ecdh";
- packageName = "create-ecdh";
- version = "4.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz";
- sha512 = "GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==";
- };
- };
- "create-hash-1.2.0" = {
- name = "create-hash";
- packageName = "create-hash";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz";
- sha512 = "z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==";
- };
- };
- "create-hmac-1.1.7" = {
- name = "create-hmac";
- packageName = "create-hmac";
- version = "1.1.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz";
- sha512 = "MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==";
- };
- };
- "cross-spawn-6.0.5" = {
- name = "cross-spawn";
- packageName = "cross-spawn";
- version = "6.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz";
- sha512 = "eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==";
- };
- };
- "crypto-browserify-3.12.0" = {
- name = "crypto-browserify";
- packageName = "crypto-browserify";
- version = "3.12.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
- sha512 = "fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==";
- };
- };
- "css-color-names-0.0.4" = {
- name = "css-color-names";
- packageName = "css-color-names";
- version = "0.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz";
- sha1 = "808adc2e79cf84738069b646cb20ec27beb629e0";
- };
- };
- "css-declaration-sorter-4.0.1" = {
- name = "css-declaration-sorter";
- packageName = "css-declaration-sorter";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz";
- sha512 = "BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==";
- };
- };
- "css-modules-loader-core-1.1.0" = {
- name = "css-modules-loader-core";
- packageName = "css-modules-loader-core";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz";
- sha1 = "5908668294a1becd261ae0a4ce21b0b551f21d16";
- };
- };
- "css-select-2.1.0" = {
- name = "css-select";
- packageName = "css-select";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz";
- sha512 = "Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==";
- };
- };
- "css-select-base-adapter-0.1.1" = {
- name = "css-select-base-adapter";
- packageName = "css-select-base-adapter";
- version = "0.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz";
- sha512 = "jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==";
- };
- };
- "css-selector-tokenizer-0.7.2" = {
- name = "css-selector-tokenizer";
- packageName = "css-selector-tokenizer";
- version = "0.7.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz";
- sha512 = "yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==";
- };
- };
- "css-tree-1.0.0-alpha.37" = {
- name = "css-tree";
- packageName = "css-tree";
- version = "1.0.0-alpha.37";
- src = fetchurl {
- url = "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz";
- sha512 = "DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==";
- };
- };
- "css-tree-1.0.0-alpha.39" = {
- name = "css-tree";
- packageName = "css-tree";
- version = "1.0.0-alpha.39";
- src = fetchurl {
- url = "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz";
- sha512 = "7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==";
- };
- };
- "css-what-3.2.1" = {
- name = "css-what";
- packageName = "css-what";
- version = "3.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz";
- sha512 = "WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==";
- };
- };
- "cssesc-3.0.0" = {
- name = "cssesc";
- packageName = "cssesc";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz";
- sha512 = "/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==";
- };
- };
- "cssnano-4.1.10" = {
- name = "cssnano";
- packageName = "cssnano";
- version = "4.1.10";
- src = fetchurl {
- url = "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz";
- sha512 = "5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==";
- };
- };
- "cssnano-preset-default-4.0.7" = {
- name = "cssnano-preset-default";
- packageName = "cssnano-preset-default";
- version = "4.0.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz";
- sha512 = "x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==";
- };
- };
- "cssnano-util-get-arguments-4.0.0" = {
- name = "cssnano-util-get-arguments";
- packageName = "cssnano-util-get-arguments";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz";
- sha1 = "ed3a08299f21d75741b20f3b81f194ed49cc150f";
- };
- };
- "cssnano-util-get-match-4.0.0" = {
- name = "cssnano-util-get-match";
- packageName = "cssnano-util-get-match";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz";
- sha1 = "c0e4ca07f5386bb17ec5e52250b4f5961365156d";
- };
- };
- "cssnano-util-raw-cache-4.0.1" = {
- name = "cssnano-util-raw-cache";
- packageName = "cssnano-util-raw-cache";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz";
- sha512 = "qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==";
- };
- };
- "cssnano-util-same-parent-4.0.1" = {
- name = "cssnano-util-same-parent";
- packageName = "cssnano-util-same-parent";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz";
- sha512 = "WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==";
- };
- };
- "csso-4.0.3" = {
- name = "csso";
- packageName = "csso";
- version = "4.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz";
- sha512 = "NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==";
- };
- };
- "cssom-0.3.8" = {
- name = "cssom";
- packageName = "cssom";
- version = "0.3.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz";
- sha512 = "b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==";
- };
- };
- "cssstyle-1.4.0" = {
- name = "cssstyle";
- packageName = "cssstyle";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz";
- sha512 = "GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==";
- };
- };
- "dashdash-1.14.1" = {
- name = "dashdash";
- packageName = "dashdash";
- version = "1.14.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
- sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
- };
- };
- "data-urls-1.1.0" = {
- name = "data-urls";
- packageName = "data-urls";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz";
- sha512 = "YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==";
- };
- };
- "deasync-0.1.19" = {
- name = "deasync";
- packageName = "deasync";
- version = "0.1.19";
- src = fetchurl {
- url = "https://registry.npmjs.org/deasync/-/deasync-0.1.19.tgz";
- sha512 = "oh3MRktfnPlLysCPpBpKZZzb4cUC/p0aA3SyRGp15lN30juJBTo/CiD0d4fR+f1kBtUQoJj1NE9RPNWQ7BQ9Mg==";
- };
- };
- "debug-2.6.9" = {
- name = "debug";
- packageName = "debug";
- version = "2.6.9";
- src = fetchurl {
- url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
- sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
- };
- };
- "debug-4.1.1" = {
- name = "debug";
- packageName = "debug";
- version = "4.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz";
- sha512 = "pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==";
- };
- };
- "decamelize-1.2.0" = {
- name = "decamelize";
- packageName = "decamelize";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz";
- sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
- };
- };
- "decode-uri-component-0.2.0" = {
- name = "decode-uri-component";
- packageName = "decode-uri-component";
- version = "0.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
- sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
- };
- };
- "deep-is-0.1.3" = {
- name = "deep-is";
- packageName = "deep-is";
- version = "0.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
- sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
- };
- };
- "defaults-1.0.3" = {
- name = "defaults";
- packageName = "defaults";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz";
- sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d";
- };
- };
- "define-properties-1.1.3" = {
- name = "define-properties";
- packageName = "define-properties";
- version = "1.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz";
- sha512 = "3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==";
- };
- };
- "define-property-0.2.5" = {
- name = "define-property";
- packageName = "define-property";
- version = "0.2.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz";
- sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
- };
- };
- "define-property-1.0.0" = {
- name = "define-property";
- packageName = "define-property";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz";
- sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
- };
- };
- "define-property-2.0.2" = {
- name = "define-property";
- packageName = "define-property";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz";
- sha512 = "jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==";
- };
- };
- "delayed-stream-1.0.0" = {
- name = "delayed-stream";
- packageName = "delayed-stream";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
- sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
- };
- };
- "depd-1.1.2" = {
- name = "depd";
- packageName = "depd";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
- sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
- };
- };
- "des.js-1.0.1" = {
- name = "des.js";
- packageName = "des.js";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz";
- sha512 = "Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==";
- };
- };
- "destroy-1.0.4" = {
- name = "destroy";
- packageName = "destroy";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
- sha1 = "978857442c44749e4206613e37946205826abd80";
- };
- };
- "diffie-hellman-5.0.3" = {
- name = "diffie-hellman";
- packageName = "diffie-hellman";
- version = "5.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz";
- sha512 = "kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==";
- };
- };
- "dom-serializer-0.2.2" = {
- name = "dom-serializer";
- packageName = "dom-serializer";
- version = "0.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz";
- sha512 = "2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==";
- };
- };
- "domain-browser-1.2.0" = {
- name = "domain-browser";
- packageName = "domain-browser";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz";
- sha512 = "jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==";
- };
- };
- "domelementtype-1.3.1" = {
- name = "domelementtype";
- packageName = "domelementtype";
- version = "1.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz";
- sha512 = "BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==";
- };
- };
- "domelementtype-2.0.1" = {
- name = "domelementtype";
- packageName = "domelementtype";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz";
- sha512 = "5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==";
- };
- };
- "domexception-1.0.1" = {
- name = "domexception";
- packageName = "domexception";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz";
- sha512 = "raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==";
- };
- };
- "domhandler-2.4.2" = {
- name = "domhandler";
- packageName = "domhandler";
- version = "2.4.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz";
- sha512 = "JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==";
- };
- };
- "domutils-1.7.0" = {
- name = "domutils";
- packageName = "domutils";
- version = "1.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz";
- sha512 = "Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==";
- };
- };
- "dot-prop-5.2.0" = {
- name = "dot-prop";
- packageName = "dot-prop";
- version = "5.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz";
- sha512 = "uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==";
- };
- };
- "dotenv-5.0.1" = {
- name = "dotenv";
- packageName = "dotenv";
- version = "5.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz";
- sha512 = "4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==";
- };
- };
- "dotenv-expand-4.2.0" = {
- name = "dotenv-expand";
- packageName = "dotenv-expand";
- version = "4.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz";
- sha1 = "def1f1ca5d6059d24a766e587942c21106ce1275";
- };
- };
- "duplexer2-0.1.4" = {
- name = "duplexer2";
- packageName = "duplexer2";
- version = "0.1.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz";
- sha1 = "8b12dab878c0d69e3e7891051662a32fc6bddcc1";
- };
- };
- "ecc-jsbn-0.1.2" = {
- name = "ecc-jsbn";
- packageName = "ecc-jsbn";
- version = "0.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
- sha1 = "3a83a904e54353287874c564b7549386849a98c9";
- };
- };
- "editorconfig-0.15.3" = {
- name = "editorconfig";
- packageName = "editorconfig";
- version = "0.15.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz";
- sha512 = "M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==";
- };
- };
- "ee-first-1.1.1" = {
- name = "ee-first";
- packageName = "ee-first";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
- sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
- };
- };
- "electron-to-chromium-1.3.418" = {
- name = "electron-to-chromium";
- packageName = "electron-to-chromium";
- version = "1.3.418";
- src = fetchurl {
- url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.418.tgz";
- sha512 = "i2QrQtHes5fK/F9QGG5XacM5WKEuR322fxTYF9e8O9Gu0mc0WmjjwGpV8c7Htso6Zf2Di18lc3SIPxmMeRFBug==";
- };
- };
- "elliptic-6.5.2" = {
- name = "elliptic";
- packageName = "elliptic";
- version = "6.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz";
- sha512 = "f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==";
- };
- };
- "elm-hot-1.1.1" = {
- name = "elm-hot";
- packageName = "elm-hot";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/elm-hot/-/elm-hot-1.1.1.tgz";
- sha512 = "ZHjoHd2Ev6riNXNQirj3J+GKKXXwedAUikfFBYzlVL/+3CdGs96cpZ7nhAk4c5l//Qa9ymltrqX36mOlr0pPFA==";
- };
- };
- "emoji-regex-7.0.3" = {
- name = "emoji-regex";
- packageName = "emoji-regex";
- version = "7.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz";
- sha512 = "CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==";
- };
- };
- "encodeurl-1.0.2" = {
- name = "encodeurl";
- packageName = "encodeurl";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
- sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
- };
- };
- "entities-1.1.2" = {
- name = "entities";
- packageName = "entities";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz";
- sha512 = "f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==";
- };
- };
- "entities-2.0.0" = {
- name = "entities";
- packageName = "entities";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz";
- sha512 = "D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==";
- };
- };
- "error-ex-1.3.2" = {
- name = "error-ex";
- packageName = "error-ex";
- version = "1.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz";
- sha512 = "7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==";
- };
- };
- "es-abstract-1.17.5" = {
- name = "es-abstract";
- packageName = "es-abstract";
- version = "1.17.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz";
- sha512 = "BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==";
- };
- };
- "es-to-primitive-1.2.1" = {
- name = "es-to-primitive";
- packageName = "es-to-primitive";
- version = "1.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz";
- sha512 = "QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==";
- };
- };
- "escape-html-1.0.3" = {
- name = "escape-html";
- packageName = "escape-html";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
- sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
- };
- };
- "escape-string-regexp-1.0.5" = {
- name = "escape-string-regexp";
- packageName = "escape-string-regexp";
- version = "1.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
- sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
- };
- };
- "escodegen-1.14.1" = {
- name = "escodegen";
- packageName = "escodegen";
- version = "1.14.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz";
- sha512 = "Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==";
- };
- };
- "escodegen-1.9.1" = {
- name = "escodegen";
- packageName = "escodegen";
- version = "1.9.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz";
- sha512 = "6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==";
- };
- };
- "esprima-3.1.3" = {
- name = "esprima";
- packageName = "esprima";
- version = "3.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz";
- sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
- };
- };
- "esprima-4.0.1" = {
- name = "esprima";
- packageName = "esprima";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
- sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==";
- };
- };
- "estraverse-4.3.0" = {
- name = "estraverse";
- packageName = "estraverse";
- version = "4.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz";
- sha512 = "39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==";
- };
- };
- "esutils-2.0.3" = {
- name = "esutils";
- packageName = "esutils";
- version = "2.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz";
- sha512 = "kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==";
- };
- };
- "etag-1.8.1" = {
- name = "etag";
- packageName = "etag";
- version = "1.8.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
- sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
- };
- };
- "events-3.1.0" = {
- name = "events";
- packageName = "events";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/events/-/events-3.1.0.tgz";
- sha512 = "Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==";
- };
- };
- "evp_bytestokey-1.0.3" = {
- name = "evp_bytestokey";
- packageName = "evp_bytestokey";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
- sha512 = "/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==";
- };
- };
- "expand-brackets-2.1.4" = {
- name = "expand-brackets";
- packageName = "expand-brackets";
- version = "2.1.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz";
- sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
- };
- };
- "extend-3.0.2" = {
- name = "extend";
- packageName = "extend";
- version = "3.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
- sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
- };
- };
- "extend-shallow-2.0.1" = {
- name = "extend-shallow";
- packageName = "extend-shallow";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz";
- sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
- };
- };
- "extend-shallow-3.0.2" = {
- name = "extend-shallow";
- packageName = "extend-shallow";
- version = "3.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz";
- sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
- };
- };
- "extglob-2.0.4" = {
- name = "extglob";
- packageName = "extglob";
- version = "2.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz";
- sha512 = "Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==";
- };
- };
- "extsprintf-1.3.0" = {
- name = "extsprintf";
- packageName = "extsprintf";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
- sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
- };
- };
- "falafel-2.2.4" = {
- name = "falafel";
- packageName = "falafel";
- version = "2.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz";
- sha512 = "0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==";
- };
- };
- "fast-deep-equal-3.1.1" = {
- name = "fast-deep-equal";
- packageName = "fast-deep-equal";
- version = "3.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
- sha512 = "8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==";
- };
- };
- "fast-glob-2.2.7" = {
- name = "fast-glob";
- packageName = "fast-glob";
- version = "2.2.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz";
- sha512 = "g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==";
- };
- };
- "fast-json-stable-stringify-2.1.0" = {
- name = "fast-json-stable-stringify";
- packageName = "fast-json-stable-stringify";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
- sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
- };
- };
- "fast-levenshtein-2.0.6" = {
- name = "fast-levenshtein";
- packageName = "fast-levenshtein";
- version = "2.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
- sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
- };
- };
- "fastparse-1.1.2" = {
- name = "fastparse";
- packageName = "fastparse";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz";
- sha512 = "483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==";
- };
- };
- "file-uri-to-path-1.0.0" = {
- name = "file-uri-to-path";
- packageName = "file-uri-to-path";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz";
- sha512 = "0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==";
- };
- };
- "filesize-3.6.1" = {
- name = "filesize";
- packageName = "filesize";
- version = "3.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz";
- sha512 = "7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==";
- };
- };
- "fill-range-4.0.0" = {
- name = "fill-range";
- packageName = "fill-range";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz";
- sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
- };
- };
- "find-elm-dependencies-2.0.2" = {
- name = "find-elm-dependencies";
- packageName = "find-elm-dependencies";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-2.0.2.tgz";
- sha512 = "nM5UCbccD1G8CGK2GsM7ykG3ksOAl9E+34jiDfl07CAl2OPnLpBVWY2hlxEmIkSBfdJjSopEowWHrO0cI8RhxQ==";
- };
- };
- "find-up-2.1.0" = {
- name = "find-up";
- packageName = "find-up";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz";
- sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
- };
- };
- "find-up-3.0.0" = {
- name = "find-up";
- packageName = "find-up";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz";
- sha512 = "1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==";
- };
- };
- "firstline-1.2.0" = {
- name = "firstline";
- packageName = "firstline";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/firstline/-/firstline-1.2.0.tgz";
- sha1 = "c9f4886e7f7fbf0afc12d71941dce06b192aea05";
- };
- };
- "for-in-1.0.2" = {
- name = "for-in";
- packageName = "for-in";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz";
- sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
- };
- };
- "foreach-2.0.5" = {
- name = "foreach";
- packageName = "foreach";
- version = "2.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz";
- sha1 = "0bee005018aeb260d0a3af3ae658dd0136ec1b99";
- };
- };
- "forever-agent-0.6.1" = {
- name = "forever-agent";
- packageName = "forever-agent";
- version = "0.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
- sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
- };
- };
- "form-data-2.3.3" = {
- name = "form-data";
- packageName = "form-data";
- version = "2.3.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
- sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
- };
- };
- "fragment-cache-0.2.1" = {
- name = "fragment-cache";
- packageName = "fragment-cache";
- version = "0.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz";
- sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
- };
- };
- "fresh-0.5.2" = {
- name = "fresh";
- packageName = "fresh";
- version = "0.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
- sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
- };
- };
- "fs.realpath-1.0.0" = {
- name = "fs.realpath";
- packageName = "fs.realpath";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
- sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
- };
- };
- "fsevents-1.2.12" = {
- name = "fsevents";
- packageName = "fsevents";
- version = "1.2.12";
- src = fetchurl {
- url = "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz";
- sha512 = "Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==";
- };
- };
- "function-bind-1.1.1" = {
- name = "function-bind";
- packageName = "function-bind";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz";
- sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==";
- };
- };
- "get-caller-file-2.0.5" = {
- name = "get-caller-file";
- packageName = "get-caller-file";
- version = "2.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz";
- sha512 = "DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==";
- };
- };
- "get-port-3.2.0" = {
- name = "get-port";
- packageName = "get-port";
- version = "3.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz";
- sha1 = "dd7ce7de187c06c8bf353796ac71e099f0980ebc";
- };
- };
- "get-value-2.0.6" = {
- name = "get-value";
- packageName = "get-value";
- version = "2.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz";
- sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
- };
- };
- "getpass-0.1.7" = {
- name = "getpass";
- packageName = "getpass";
- version = "0.1.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
- sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
- };
- };
- "glob-7.1.4" = {
- name = "glob";
- packageName = "glob";
- version = "7.1.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz";
- sha512 = "hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==";
- };
- };
- "glob-parent-3.1.0" = {
- name = "glob-parent";
- packageName = "glob-parent";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz";
- sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae";
- };
- };
- "glob-to-regexp-0.3.0" = {
- name = "glob-to-regexp";
- packageName = "glob-to-regexp";
- version = "0.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz";
- sha1 = "8c5a1494d2066c570cc3bfe4496175acc4d502ab";
- };
- };
- "globals-11.12.0" = {
- name = "globals";
- packageName = "globals";
- version = "11.12.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz";
- sha512 = "WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==";
- };
- };
- "graceful-fs-4.2.3" = {
- name = "graceful-fs";
- packageName = "graceful-fs";
- version = "4.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz";
- sha512 = "a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==";
- };
- };
- "grapheme-breaker-0.3.2" = {
- name = "grapheme-breaker";
- packageName = "grapheme-breaker";
- version = "0.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz";
- sha1 = "5b9e6b78c3832452d2ba2bb1cb830f96276410ac";
- };
- };
- "har-schema-2.0.0" = {
- name = "har-schema";
- packageName = "har-schema";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
- sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
- };
- };
- "har-validator-5.1.3" = {
- name = "har-validator";
- packageName = "har-validator";
- version = "5.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz";
- sha512 = "sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==";
- };
- };
- "has-1.0.3" = {
- name = "has";
- packageName = "has";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz";
- sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==";
- };
- };
- "has-ansi-2.0.0" = {
- name = "has-ansi";
- packageName = "has-ansi";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
- sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
- };
- };
- "has-flag-1.0.0" = {
- name = "has-flag";
- packageName = "has-flag";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz";
- sha1 = "9d9e793165ce017a00f00418c43f942a7b1d11fa";
- };
- };
- "has-flag-3.0.0" = {
- name = "has-flag";
- packageName = "has-flag";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz";
- sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
- };
- };
- "has-symbols-1.0.1" = {
- name = "has-symbols";
- packageName = "has-symbols";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz";
- sha512 = "PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==";
- };
- };
- "has-value-0.3.1" = {
- name = "has-value";
- packageName = "has-value";
- version = "0.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz";
- sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
- };
- };
- "has-value-1.0.0" = {
- name = "has-value";
- packageName = "has-value";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz";
- sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
- };
- };
- "has-values-0.1.4" = {
- name = "has-values";
- packageName = "has-values";
- version = "0.1.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz";
- sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
- };
- };
- "has-values-1.0.0" = {
- name = "has-values";
- packageName = "has-values";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz";
- sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
- };
- };
- "hash-base-3.0.4" = {
- name = "hash-base";
- packageName = "hash-base";
- version = "3.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz";
- sha1 = "5fc8686847ecd73499403319a6b0a3f3f6ae4918";
- };
- };
- "hash.js-1.1.7" = {
- name = "hash.js";
- packageName = "hash.js";
- version = "1.1.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz";
- sha512 = "taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==";
- };
- };
- "hex-color-regex-1.1.0" = {
- name = "hex-color-regex";
- packageName = "hex-color-regex";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz";
- sha512 = "l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==";
- };
- };
- "hmac-drbg-1.0.1" = {
- name = "hmac-drbg";
- packageName = "hmac-drbg";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
- sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1";
- };
- };
- "hsl-regex-1.0.0" = {
- name = "hsl-regex";
- packageName = "hsl-regex";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz";
- sha1 = "d49330c789ed819e276a4c0d272dffa30b18fe6e";
- };
- };
- "hsla-regex-1.0.0" = {
- name = "hsla-regex";
- packageName = "hsla-regex";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz";
- sha1 = "c1ce7a3168c8c6614033a4b5f7877f3b225f9c38";
- };
- };
- "html-comment-regex-1.1.2" = {
- name = "html-comment-regex";
- packageName = "html-comment-regex";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz";
- sha512 = "P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==";
- };
- };
- "html-encoding-sniffer-1.0.2" = {
- name = "html-encoding-sniffer";
- packageName = "html-encoding-sniffer";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz";
- sha512 = "71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==";
- };
- };
- "html-tags-1.2.0" = {
- name = "html-tags";
- packageName = "html-tags";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz";
- sha1 = "c78de65b5663aa597989dd2b7ab49200d7e4db98";
- };
- };
- "htmlnano-0.2.5" = {
- name = "htmlnano";
- packageName = "htmlnano";
- version = "0.2.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.5.tgz";
- sha512 = "X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA==";
- };
- };
- "htmlparser2-3.10.1" = {
- name = "htmlparser2";
- packageName = "htmlparser2";
- version = "3.10.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz";
- sha512 = "IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==";
- };
- };
- "http-errors-1.7.3" = {
- name = "http-errors";
- packageName = "http-errors";
- version = "1.7.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz";
- sha512 = "ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==";
- };
- };
- "http-signature-1.2.0" = {
- name = "http-signature";
- packageName = "http-signature";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
- sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
- };
- };
- "https-browserify-1.0.0" = {
- name = "https-browserify";
- packageName = "https-browserify";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz";
- sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73";
- };
- };
- "iconv-lite-0.4.24" = {
- name = "iconv-lite";
- packageName = "iconv-lite";
- version = "0.4.24";
- src = fetchurl {
- url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
- sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
- };
- };
- "icss-replace-symbols-1.1.0" = {
- name = "icss-replace-symbols";
- packageName = "icss-replace-symbols";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz";
- sha1 = "06ea6f83679a7749e386cfe1fe812ae5db223ded";
- };
- };
- "ieee754-1.1.13" = {
- name = "ieee754";
- packageName = "ieee754";
- version = "1.1.13";
- src = fetchurl {
- url = "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz";
- sha512 = "4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==";
- };
- };
- "import-fresh-2.0.0" = {
- name = "import-fresh";
- packageName = "import-fresh";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz";
- sha1 = "d81355c15612d386c61f9ddd3922d4304822a546";
- };
- };
- "indexes-of-1.0.1" = {
- name = "indexes-of";
- packageName = "indexes-of";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz";
- sha1 = "f30f716c8e2bd346c7b67d3df3915566a7c05607";
- };
- };
- "inflight-1.0.6" = {
- name = "inflight";
- packageName = "inflight";
- version = "1.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
- sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
- };
- };
- "inherits-2.0.1" = {
- name = "inherits";
- packageName = "inherits";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz";
- sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
- };
- };
- "inherits-2.0.3" = {
- name = "inherits";
- packageName = "inherits";
- version = "2.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
- sha1 = "633c2c83e3da42a502f52466022480f4208261de";
- };
- };
- "inherits-2.0.4" = {
- name = "inherits";
- packageName = "inherits";
- version = "2.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
- sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
- };
- };
- "ini-1.3.5" = {
- name = "ini";
- packageName = "ini";
- version = "1.3.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz";
- sha512 = "RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==";
- };
- };
- "invariant-2.2.4" = {
- name = "invariant";
- packageName = "invariant";
- version = "2.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz";
- sha512 = "phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==";
- };
- };
- "is-absolute-url-2.1.0" = {
- name = "is-absolute-url";
- packageName = "is-absolute-url";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz";
- sha1 = "50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6";
- };
- };
- "is-absolute-url-3.0.3" = {
- name = "is-absolute-url";
- packageName = "is-absolute-url";
- version = "3.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz";
- sha512 = "opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==";
- };
- };
- "is-accessor-descriptor-0.1.6" = {
- name = "is-accessor-descriptor";
- packageName = "is-accessor-descriptor";
- version = "0.1.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
- sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
- };
- };
- "is-accessor-descriptor-1.0.0" = {
- name = "is-accessor-descriptor";
- packageName = "is-accessor-descriptor";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
- sha512 = "m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==";
- };
- };
- "is-arrayish-0.2.1" = {
- name = "is-arrayish";
- packageName = "is-arrayish";
- version = "0.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz";
- sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
- };
- };
- "is-arrayish-0.3.2" = {
- name = "is-arrayish";
- packageName = "is-arrayish";
- version = "0.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz";
- sha512 = "eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==";
- };
- };
- "is-binary-path-1.0.1" = {
- name = "is-binary-path";
- packageName = "is-binary-path";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz";
- sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
- };
- };
- "is-buffer-1.1.6" = {
- name = "is-buffer";
- packageName = "is-buffer";
- version = "1.1.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz";
- sha512 = "NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==";
- };
- };
- "is-callable-1.1.5" = {
- name = "is-callable";
- packageName = "is-callable";
- version = "1.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz";
- sha512 = "ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==";
- };
- };
- "is-color-stop-1.1.0" = {
- name = "is-color-stop";
- packageName = "is-color-stop";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz";
- sha1 = "cfff471aee4dd5c9e158598fbe12967b5cdad345";
- };
- };
- "is-data-descriptor-0.1.4" = {
- name = "is-data-descriptor";
- packageName = "is-data-descriptor";
- version = "0.1.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
- sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
- };
- };
- "is-data-descriptor-1.0.0" = {
- name = "is-data-descriptor";
- packageName = "is-data-descriptor";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
- sha512 = "jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==";
- };
- };
- "is-date-object-1.0.2" = {
- name = "is-date-object";
- packageName = "is-date-object";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz";
- sha512 = "USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==";
- };
- };
- "is-descriptor-0.1.6" = {
- name = "is-descriptor";
- packageName = "is-descriptor";
- version = "0.1.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz";
- sha512 = "avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==";
- };
- };
- "is-descriptor-1.0.2" = {
- name = "is-descriptor";
- packageName = "is-descriptor";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz";
- sha512 = "2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==";
- };
- };
- "is-directory-0.3.1" = {
- name = "is-directory";
- packageName = "is-directory";
- version = "0.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz";
- sha1 = "61339b6f2475fc772fd9c9d83f5c8575dc154ae1";
- };
- };
- "is-extendable-0.1.1" = {
- name = "is-extendable";
- packageName = "is-extendable";
- version = "0.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz";
- sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
- };
- };
- "is-extendable-1.0.1" = {
- name = "is-extendable";
- packageName = "is-extendable";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz";
- sha512 = "arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==";
- };
- };
- "is-extglob-2.1.1" = {
- name = "is-extglob";
- packageName = "is-extglob";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz";
- sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
- };
- };
- "is-fullwidth-code-point-2.0.0" = {
- name = "is-fullwidth-code-point";
- packageName = "is-fullwidth-code-point";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
- sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
- };
- };
- "is-glob-3.1.0" = {
- name = "is-glob";
- packageName = "is-glob";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz";
- sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
- };
- };
- "is-glob-4.0.1" = {
- name = "is-glob";
- packageName = "is-glob";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz";
- sha512 = "5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==";
- };
- };
- "is-html-1.1.0" = {
- name = "is-html";
- packageName = "is-html";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz";
- sha1 = "e04f1c18d39485111396f9a0273eab51af218464";
- };
- };
- "is-number-3.0.0" = {
- name = "is-number";
- packageName = "is-number";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz";
- sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
- };
- };
- "is-obj-2.0.0" = {
- name = "is-obj";
- packageName = "is-obj";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz";
- sha512 = "drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==";
- };
- };
- "is-plain-object-2.0.4" = {
- name = "is-plain-object";
- packageName = "is-plain-object";
- version = "2.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz";
- sha512 = "h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==";
- };
- };
- "is-regex-1.0.5" = {
- name = "is-regex";
- packageName = "is-regex";
- version = "1.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz";
- sha512 = "vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==";
- };
- };
- "is-resolvable-1.1.0" = {
- name = "is-resolvable";
- packageName = "is-resolvable";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz";
- sha512 = "qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==";
- };
- };
- "is-svg-3.0.0" = {
- name = "is-svg";
- packageName = "is-svg";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz";
- sha512 = "gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==";
- };
- };
- "is-symbol-1.0.3" = {
- name = "is-symbol";
- packageName = "is-symbol";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz";
- sha512 = "OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==";
- };
- };
- "is-typedarray-1.0.0" = {
- name = "is-typedarray";
- packageName = "is-typedarray";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
- sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
- };
- };
- "is-url-1.2.4" = {
- name = "is-url";
- packageName = "is-url";
- version = "1.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz";
- sha512 = "ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==";
- };
- };
- "is-windows-1.0.2" = {
- name = "is-windows";
- packageName = "is-windows";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz";
- sha512 = "eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==";
- };
- };
- "is-wsl-1.1.0" = {
- name = "is-wsl";
- packageName = "is-wsl";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz";
- sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d";
- };
- };
- "isarray-1.0.0" = {
- name = "isarray";
- packageName = "isarray";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
- sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
- };
- };
- "isarray-2.0.5" = {
- name = "isarray";
- packageName = "isarray";
- version = "2.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz";
- sha512 = "xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==";
- };
- };
- "isexe-2.0.0" = {
- name = "isexe";
- packageName = "isexe";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
- sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
- };
- };
- "isobject-2.1.0" = {
- name = "isobject";
- packageName = "isobject";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz";
- sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
- };
- };
- "isobject-3.0.1" = {
- name = "isobject";
- packageName = "isobject";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz";
- sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
- };
- };
- "isstream-0.1.2" = {
- name = "isstream";
- packageName = "isstream";
- version = "0.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
- sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
- };
- };
- "js-beautify-1.11.0" = {
- name = "js-beautify";
- packageName = "js-beautify";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz";
- sha512 = "a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A==";
- };
- };
- "js-levenshtein-1.1.6" = {
- name = "js-levenshtein";
- packageName = "js-levenshtein";
- version = "1.1.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz";
- sha512 = "X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==";
- };
- };
- "js-tokens-4.0.0" = {
- name = "js-tokens";
- packageName = "js-tokens";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz";
- sha512 = "RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==";
- };
- };
- "js-yaml-3.13.1" = {
- name = "js-yaml";
- packageName = "js-yaml";
- version = "3.13.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz";
- sha512 = "YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==";
- };
- };
- "jsbn-0.1.1" = {
- name = "jsbn";
- packageName = "jsbn";
- version = "0.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
- sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
- };
- };
- "jsdom-14.1.0" = {
- name = "jsdom";
- packageName = "jsdom";
- version = "14.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz";
- sha512 = "O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==";
- };
- };
- "jsesc-0.5.0" = {
- name = "jsesc";
- packageName = "jsesc";
- version = "0.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz";
- sha1 = "e7dee66e35d6fc16f710fe91d5cf69f70f08911d";
- };
- };
- "jsesc-2.5.2" = {
- name = "jsesc";
- packageName = "jsesc";
- version = "2.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz";
- sha512 = "OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==";
- };
- };
- "json-parse-better-errors-1.0.2" = {
- name = "json-parse-better-errors";
- packageName = "json-parse-better-errors";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
- sha512 = "mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==";
- };
- };
- "json-schema-0.2.3" = {
- name = "json-schema";
- packageName = "json-schema";
- version = "0.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
- sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
- };
- };
- "json-schema-traverse-0.4.1" = {
- name = "json-schema-traverse";
- packageName = "json-schema-traverse";
- version = "0.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
- sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
- };
- };
- "json-stringify-safe-5.0.1" = {
- name = "json-stringify-safe";
- packageName = "json-stringify-safe";
- version = "5.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
- sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
- };
- };
- "json5-1.0.1" = {
- name = "json5";
- packageName = "json5";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz";
- sha512 = "aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==";
- };
- };
- "json5-2.1.3" = {
- name = "json5";
- packageName = "json5";
- version = "2.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz";
- sha512 = "KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==";
- };
- };
- "jsprim-1.4.1" = {
- name = "jsprim";
- packageName = "jsprim";
- version = "1.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
- sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
- };
- };
- "kind-of-3.2.2" = {
- name = "kind-of";
- packageName = "kind-of";
- version = "3.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz";
- sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
- };
- };
- "kind-of-4.0.0" = {
- name = "kind-of";
- packageName = "kind-of";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz";
- sha1 = "20813df3d712928b207378691a45066fae72dd57";
- };
- };
- "kind-of-5.1.0" = {
- name = "kind-of";
- packageName = "kind-of";
- version = "5.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz";
- sha512 = "NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==";
- };
- };
- "kind-of-6.0.3" = {
- name = "kind-of";
- packageName = "kind-of";
- version = "6.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz";
- sha512 = "dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==";
- };
- };
- "levn-0.3.0" = {
- name = "levn";
- packageName = "levn";
- version = "0.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
- sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
- };
- };
- "locate-path-2.0.0" = {
- name = "locate-path";
- packageName = "locate-path";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz";
- sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
- };
- };
- "locate-path-3.0.0" = {
- name = "locate-path";
- packageName = "locate-path";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz";
- sha512 = "7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==";
- };
- };
- "lodash-4.17.15" = {
- name = "lodash";
- packageName = "lodash";
- version = "4.17.15";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz";
- sha512 = "8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==";
- };
- };
- "lodash.clone-4.5.0" = {
- name = "lodash.clone";
- packageName = "lodash.clone";
- version = "4.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz";
- sha1 = "195870450f5a13192478df4bc3d23d2dea1907b6";
- };
- };
- "lodash.memoize-4.1.2" = {
- name = "lodash.memoize";
- packageName = "lodash.memoize";
- version = "4.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz";
- sha1 = "bcc6c49a42a2840ed997f323eada5ecd182e0bfe";
- };
- };
- "lodash.sortby-4.7.0" = {
- name = "lodash.sortby";
- packageName = "lodash.sortby";
- version = "4.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz";
- sha1 = "edd14c824e2cc9c1e0b0a1b42bb5210516a42438";
- };
- };
- "lodash.uniq-4.5.0" = {
- name = "lodash.uniq";
- packageName = "lodash.uniq";
- version = "4.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz";
- sha1 = "d0225373aeb652adc1bc82e4945339a842754773";
- };
- };
- "log-symbols-2.2.0" = {
- name = "log-symbols";
- packageName = "log-symbols";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz";
- sha512 = "VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==";
- };
- };
- "loose-envify-1.4.0" = {
- name = "loose-envify";
- packageName = "loose-envify";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz";
- sha512 = "lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==";
- };
- };
- "lru-cache-4.1.5" = {
- name = "lru-cache";
- packageName = "lru-cache";
- version = "4.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz";
- sha512 = "sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==";
- };
- };
- "magic-string-0.22.5" = {
- name = "magic-string";
- packageName = "magic-string";
- version = "0.22.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz";
- sha512 = "oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==";
- };
- };
- "map-cache-0.2.2" = {
- name = "map-cache";
- packageName = "map-cache";
- version = "0.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz";
- sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
- };
- };
- "map-visit-1.0.0" = {
- name = "map-visit";
- packageName = "map-visit";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz";
- sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
- };
- };
- "md5.js-1.3.5" = {
- name = "md5.js";
- packageName = "md5.js";
- version = "1.3.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz";
- sha512 = "xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==";
- };
- };
- "mdn-data-2.0.4" = {
- name = "mdn-data";
- packageName = "mdn-data";
- version = "2.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz";
- sha512 = "iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==";
- };
- };
- "mdn-data-2.0.6" = {
- name = "mdn-data";
- packageName = "mdn-data";
- version = "2.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz";
- sha512 = "rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==";
- };
- };
- "merge-source-map-1.0.4" = {
- name = "merge-source-map";
- packageName = "merge-source-map";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz";
- sha1 = "a5de46538dae84d4114cc5ea02b4772a6346701f";
- };
- };
- "merge2-1.3.0" = {
- name = "merge2";
- packageName = "merge2";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz";
- sha512 = "2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==";
- };
- };
- "micromatch-3.1.10" = {
- name = "micromatch";
- packageName = "micromatch";
- version = "3.1.10";
- src = fetchurl {
- url = "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz";
- sha512 = "MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==";
- };
- };
- "miller-rabin-4.0.1" = {
- name = "miller-rabin";
- packageName = "miller-rabin";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz";
- sha512 = "115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==";
- };
- };
- "mime-1.6.0" = {
- name = "mime";
- packageName = "mime";
- version = "1.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
- sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
- };
- };
- "mime-db-1.44.0" = {
- name = "mime-db";
- packageName = "mime-db";
- version = "1.44.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz";
- sha512 = "/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==";
- };
- };
- "mime-types-2.1.27" = {
- name = "mime-types";
- packageName = "mime-types";
- version = "2.1.27";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz";
- sha512 = "JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==";
- };
- };
- "mimic-fn-1.2.0" = {
- name = "mimic-fn";
- packageName = "mimic-fn";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz";
- sha512 = "jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==";
- };
- };
- "minimalistic-assert-1.0.1" = {
- name = "minimalistic-assert";
- packageName = "minimalistic-assert";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
- sha512 = "UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==";
- };
- };
- "minimalistic-crypto-utils-1.0.1" = {
- name = "minimalistic-crypto-utils";
- packageName = "minimalistic-crypto-utils";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
- sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a";
- };
- };
- "minimatch-3.0.4" = {
- name = "minimatch";
- packageName = "minimatch";
- version = "3.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
- sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
- };
- };
- "minimist-1.2.5" = {
- name = "minimist";
- packageName = "minimist";
- version = "1.2.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
- sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
- };
- };
- "mixin-deep-1.3.2" = {
- name = "mixin-deep";
- packageName = "mixin-deep";
- version = "1.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz";
- sha512 = "WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==";
- };
- };
- "mkdirp-0.5.5" = {
- name = "mkdirp";
- packageName = "mkdirp";
- version = "0.5.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
- sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
- };
- };
- "mkdirp-1.0.4" = {
- name = "mkdirp";
- packageName = "mkdirp";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz";
- sha512 = "vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==";
- };
- };
- "ms-2.0.0" = {
- name = "ms";
- packageName = "ms";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
- sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
- };
- };
- "ms-2.1.1" = {
- name = "ms";
- packageName = "ms";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
- sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==";
- };
- };
- "ms-2.1.2" = {
- name = "ms";
- packageName = "ms";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
- sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
- };
- };
- "nan-2.14.1" = {
- name = "nan";
- packageName = "nan";
- version = "2.14.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz";
- sha512 = "isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==";
- };
- };
- "nanomatch-1.2.13" = {
- name = "nanomatch";
- packageName = "nanomatch";
- version = "1.2.13";
- src = fetchurl {
- url = "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz";
- sha512 = "fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==";
- };
- };
- "nice-try-1.0.5" = {
- name = "nice-try";
- packageName = "nice-try";
- version = "1.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz";
- sha512 = "1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==";
- };
- };
- "node-addon-api-1.7.1" = {
- name = "node-addon-api";
- packageName = "node-addon-api";
- version = "1.7.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz";
- sha512 = "2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==";
- };
- };
- "node-elm-compiler-5.0.4" = {
- name = "node-elm-compiler";
- packageName = "node-elm-compiler";
- version = "5.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-5.0.4.tgz";
- sha512 = "VQsT8QSierYGkHzRed+b4MnccQVF1+qPHunE8jBoU7jD6YpuRqCDPzEoC2zfyEJS80qVnlMZrqobLnyjzX9lJg==";
- };
- };
- "node-forge-0.7.6" = {
- name = "node-forge";
- packageName = "node-forge";
- version = "0.7.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz";
- sha512 = "sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==";
- };
- };
- "node-libs-browser-2.2.1" = {
- name = "node-libs-browser";
- packageName = "node-libs-browser";
- version = "2.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz";
- sha512 = "h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==";
- };
- };
- "node-releases-1.1.53" = {
- name = "node-releases";
- packageName = "node-releases";
- version = "1.1.53";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz";
- sha512 = "wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==";
- };
- };
- "nopt-4.0.3" = {
- name = "nopt";
- packageName = "nopt";
- version = "4.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz";
- sha512 = "CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==";
- };
- };
- "normalize-html-whitespace-1.0.0" = {
- name = "normalize-html-whitespace";
- packageName = "normalize-html-whitespace";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz";
- sha512 = "9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==";
- };
- };
- "normalize-path-2.1.1" = {
- name = "normalize-path";
- packageName = "normalize-path";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz";
- sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
- };
- };
- "normalize-path-3.0.0" = {
- name = "normalize-path";
- packageName = "normalize-path";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";
- sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==";
- };
- };
- "normalize-url-3.3.0" = {
- name = "normalize-url";
- packageName = "normalize-url";
- version = "3.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz";
- sha512 = "U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==";
- };
- };
- "nth-check-1.0.2" = {
- name = "nth-check";
- packageName = "nth-check";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz";
- sha512 = "WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==";
- };
- };
- "nwsapi-2.2.0" = {
- name = "nwsapi";
- packageName = "nwsapi";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz";
- sha512 = "h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==";
- };
- };
- "oauth-sign-0.9.0" = {
- name = "oauth-sign";
- packageName = "oauth-sign";
- version = "0.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
- sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
- };
- };
- "object-assign-4.1.1" = {
- name = "object-assign";
- packageName = "object-assign";
- version = "4.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
- sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
- };
- };
- "object-copy-0.1.0" = {
- name = "object-copy";
- packageName = "object-copy";
- version = "0.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz";
- sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
- };
- };
- "object-inspect-1.4.1" = {
- name = "object-inspect";
- packageName = "object-inspect";
- version = "1.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz";
- sha512 = "wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==";
- };
- };
- "object-inspect-1.7.0" = {
- name = "object-inspect";
- packageName = "object-inspect";
- version = "1.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz";
- sha512 = "a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==";
- };
- };
- "object-keys-1.1.1" = {
- name = "object-keys";
- packageName = "object-keys";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz";
- sha512 = "NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==";
- };
- };
- "object-visit-1.0.1" = {
- name = "object-visit";
- packageName = "object-visit";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz";
- sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
- };
- };
- "object.assign-4.1.0" = {
- name = "object.assign";
- packageName = "object.assign";
- version = "4.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz";
- sha512 = "exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==";
- };
- };
- "object.getownpropertydescriptors-2.1.0" = {
- name = "object.getownpropertydescriptors";
- packageName = "object.getownpropertydescriptors";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz";
- sha512 = "Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==";
- };
- };
- "object.pick-1.3.0" = {
- name = "object.pick";
- packageName = "object.pick";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz";
- sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
- };
- };
- "object.values-1.1.1" = {
- name = "object.values";
- packageName = "object.values";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz";
- sha512 = "WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==";
- };
- };
- "on-finished-2.3.0" = {
- name = "on-finished";
- packageName = "on-finished";
- version = "2.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
- sha1 = "20f1336481b083cd75337992a16971aa2d906947";
- };
- };
- "once-1.4.0" = {
- name = "once";
- packageName = "once";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
- sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
- };
- };
- "onetime-2.0.1" = {
- name = "onetime";
- packageName = "onetime";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz";
- sha1 = "067428230fd67443b2794b22bba528b6867962d4";
- };
- };
- "opn-5.5.0" = {
- name = "opn";
- packageName = "opn";
- version = "5.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz";
- sha512 = "PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==";
- };
- };
- "optionator-0.8.3" = {
- name = "optionator";
- packageName = "optionator";
- version = "0.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz";
- sha512 = "+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==";
- };
- };
- "ora-2.1.0" = {
- name = "ora";
- packageName = "ora";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz";
- sha512 = "hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==";
- };
- };
- "os-browserify-0.3.0" = {
- name = "os-browserify";
- packageName = "os-browserify";
- version = "0.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz";
- sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27";
- };
- };
- "os-homedir-1.0.2" = {
- name = "os-homedir";
- packageName = "os-homedir";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
- sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
- };
- };
- "os-tmpdir-1.0.2" = {
- name = "os-tmpdir";
- packageName = "os-tmpdir";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
- sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
- };
- };
- "osenv-0.1.5" = {
- name = "osenv";
- packageName = "osenv";
- version = "0.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
- sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
- };
- };
- "p-limit-1.3.0" = {
- name = "p-limit";
- packageName = "p-limit";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz";
- sha512 = "vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==";
- };
- };
- "p-limit-2.3.0" = {
- name = "p-limit";
- packageName = "p-limit";
- version = "2.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz";
- sha512 = "//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==";
- };
- };
- "p-locate-2.0.0" = {
- name = "p-locate";
- packageName = "p-locate";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz";
- sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
- };
- };
- "p-locate-3.0.0" = {
- name = "p-locate";
- packageName = "p-locate";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz";
- sha512 = "x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==";
- };
- };
- "p-try-1.0.0" = {
- name = "p-try";
- packageName = "p-try";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz";
- sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
- };
- };
- "p-try-2.2.0" = {
- name = "p-try";
- packageName = "p-try";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz";
- sha512 = "R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==";
- };
- };
- "pako-0.2.9" = {
- name = "pako";
- packageName = "pako";
- version = "0.2.9";
- src = fetchurl {
- url = "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz";
- sha1 = "f3f7522f4ef782348da8161bad9ecfd51bf83a75";
- };
- };
- "pako-1.0.11" = {
- name = "pako";
- packageName = "pako";
- version = "1.0.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz";
- sha512 = "4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==";
- };
- };
- "parcel-bundler-1.12.3" = {
- name = "parcel-bundler";
- packageName = "parcel-bundler";
- version = "1.12.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.3.tgz";
- sha512 = "8bq6lj0hhQeGxD9f9xEkFMXQ3d8TIlf2+isKxoi9bciB0KVEILRGllaPkUgp++5t0anToBh9+tG6ZyInXOC1/A==";
- };
- };
- "parse-asn1-5.1.5" = {
- name = "parse-asn1";
- packageName = "parse-asn1";
- version = "5.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz";
- sha512 = "jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==";
- };
- };
- "parse-json-4.0.0" = {
- name = "parse-json";
- packageName = "parse-json";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz";
- sha1 = "be35f5425be1f7f6c747184f98a788cb99477ee0";
- };
- };
- "parse5-5.1.0" = {
- name = "parse5";
- packageName = "parse5";
- version = "5.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz";
- sha512 = "fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==";
- };
- };
- "parseurl-1.3.3" = {
- name = "parseurl";
- packageName = "parseurl";
- version = "1.3.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz";
- sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==";
- };
- };
- "pascalcase-0.1.1" = {
- name = "pascalcase";
- packageName = "pascalcase";
- version = "0.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz";
- sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
- };
- };
- "path-browserify-0.0.1" = {
- name = "path-browserify";
- packageName = "path-browserify";
- version = "0.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz";
- sha512 = "BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==";
- };
- };
- "path-dirname-1.0.2" = {
- name = "path-dirname";
- packageName = "path-dirname";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz";
- sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
- };
- };
- "path-exists-3.0.0" = {
- name = "path-exists";
- packageName = "path-exists";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz";
- sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
- };
- };
- "path-is-absolute-1.0.1" = {
- name = "path-is-absolute";
- packageName = "path-is-absolute";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
- sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
- };
- };
- "path-key-2.0.1" = {
- name = "path-key";
- packageName = "path-key";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz";
- sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
- };
- };
- "path-parse-1.0.6" = {
- name = "path-parse";
- packageName = "path-parse";
- version = "1.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz";
- sha512 = "GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==";
- };
- };
- "pbkdf2-3.0.17" = {
- name = "pbkdf2";
- packageName = "pbkdf2";
- version = "3.0.17";
- src = fetchurl {
- url = "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz";
- sha512 = "U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==";
- };
- };
- "performance-now-2.1.0" = {
- name = "performance-now";
- packageName = "performance-now";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
- sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
- };
- };
- "physical-cpu-count-2.0.0" = {
- name = "physical-cpu-count";
- packageName = "physical-cpu-count";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz";
- sha1 = "18de2f97e4bf7a9551ad7511942b5496f7aba660";
- };
- };
- "pkg-up-2.0.0" = {
- name = "pkg-up";
- packageName = "pkg-up";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz";
- sha1 = "c819ac728059a461cab1c3889a2be3c49a004d7f";
- };
- };
- "pn-1.1.0" = {
- name = "pn";
- packageName = "pn";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz";
- sha512 = "2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==";
- };
- };
- "posix-character-classes-0.1.1" = {
- name = "posix-character-classes";
- packageName = "posix-character-classes";
- version = "0.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
- sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
- };
- };
- "postcss-6.0.1" = {
- name = "postcss";
- packageName = "postcss";
- version = "6.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz";
- sha1 = "000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2";
- };
- };
- "postcss-6.0.23" = {
- name = "postcss";
- packageName = "postcss";
- version = "6.0.23";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz";
- sha512 = "soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==";
- };
- };
- "postcss-7.0.27" = {
- name = "postcss";
- packageName = "postcss";
- version = "7.0.27";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz";
- sha512 = "WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==";
- };
- };
- "postcss-calc-7.0.2" = {
- name = "postcss-calc";
- packageName = "postcss-calc";
- version = "7.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz";
- sha512 = "rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==";
- };
- };
- "postcss-colormin-4.0.3" = {
- name = "postcss-colormin";
- packageName = "postcss-colormin";
- version = "4.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz";
- sha512 = "WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==";
- };
- };
- "postcss-convert-values-4.0.1" = {
- name = "postcss-convert-values";
- packageName = "postcss-convert-values";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz";
- sha512 = "Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==";
- };
- };
- "postcss-discard-comments-4.0.2" = {
- name = "postcss-discard-comments";
- packageName = "postcss-discard-comments";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz";
- sha512 = "RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==";
- };
- };
- "postcss-discard-duplicates-4.0.2" = {
- name = "postcss-discard-duplicates";
- packageName = "postcss-discard-duplicates";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz";
- sha512 = "ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==";
- };
- };
- "postcss-discard-empty-4.0.1" = {
- name = "postcss-discard-empty";
- packageName = "postcss-discard-empty";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz";
- sha512 = "B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==";
- };
- };
- "postcss-discard-overridden-4.0.1" = {
- name = "postcss-discard-overridden";
- packageName = "postcss-discard-overridden";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz";
- sha512 = "IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==";
- };
- };
- "postcss-merge-longhand-4.0.11" = {
- name = "postcss-merge-longhand";
- packageName = "postcss-merge-longhand";
- version = "4.0.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz";
- sha512 = "alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==";
- };
- };
- "postcss-merge-rules-4.0.3" = {
- name = "postcss-merge-rules";
- packageName = "postcss-merge-rules";
- version = "4.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz";
- sha512 = "U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==";
- };
- };
- "postcss-minify-font-values-4.0.2" = {
- name = "postcss-minify-font-values";
- packageName = "postcss-minify-font-values";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz";
- sha512 = "j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==";
- };
- };
- "postcss-minify-gradients-4.0.2" = {
- name = "postcss-minify-gradients";
- packageName = "postcss-minify-gradients";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz";
- sha512 = "qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==";
- };
- };
- "postcss-minify-params-4.0.2" = {
- name = "postcss-minify-params";
- packageName = "postcss-minify-params";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz";
- sha512 = "G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==";
- };
- };
- "postcss-minify-selectors-4.0.2" = {
- name = "postcss-minify-selectors";
- packageName = "postcss-minify-selectors";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz";
- sha512 = "D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==";
- };
- };
- "postcss-modules-extract-imports-1.1.0" = {
- name = "postcss-modules-extract-imports";
- packageName = "postcss-modules-extract-imports";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz";
- sha1 = "b614c9720be6816eaee35fb3a5faa1dba6a05ddb";
- };
- };
- "postcss-modules-local-by-default-1.2.0" = {
- name = "postcss-modules-local-by-default";
- packageName = "postcss-modules-local-by-default";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz";
- sha1 = "f7d80c398c5a393fa7964466bd19500a7d61c069";
- };
- };
- "postcss-modules-scope-1.1.0" = {
- name = "postcss-modules-scope";
- packageName = "postcss-modules-scope";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz";
- sha1 = "d6ea64994c79f97b62a72b426fbe6056a194bb90";
- };
- };
- "postcss-modules-values-1.3.0" = {
- name = "postcss-modules-values";
- packageName = "postcss-modules-values";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz";
- sha1 = "ecffa9d7e192518389f42ad0e83f72aec456ea20";
- };
- };
- "postcss-normalize-charset-4.0.1" = {
- name = "postcss-normalize-charset";
- packageName = "postcss-normalize-charset";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz";
- sha512 = "gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==";
- };
- };
- "postcss-normalize-display-values-4.0.2" = {
- name = "postcss-normalize-display-values";
- packageName = "postcss-normalize-display-values";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz";
- sha512 = "3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==";
- };
- };
- "postcss-normalize-positions-4.0.2" = {
- name = "postcss-normalize-positions";
- packageName = "postcss-normalize-positions";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz";
- sha512 = "Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==";
- };
- };
- "postcss-normalize-repeat-style-4.0.2" = {
- name = "postcss-normalize-repeat-style";
- packageName = "postcss-normalize-repeat-style";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz";
- sha512 = "qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==";
- };
- };
- "postcss-normalize-string-4.0.2" = {
- name = "postcss-normalize-string";
- packageName = "postcss-normalize-string";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz";
- sha512 = "RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==";
- };
- };
- "postcss-normalize-timing-functions-4.0.2" = {
- name = "postcss-normalize-timing-functions";
- packageName = "postcss-normalize-timing-functions";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz";
- sha512 = "acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==";
- };
- };
- "postcss-normalize-unicode-4.0.1" = {
- name = "postcss-normalize-unicode";
- packageName = "postcss-normalize-unicode";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz";
- sha512 = "od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==";
- };
- };
- "postcss-normalize-url-4.0.1" = {
- name = "postcss-normalize-url";
- packageName = "postcss-normalize-url";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz";
- sha512 = "p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==";
- };
- };
- "postcss-normalize-whitespace-4.0.2" = {
- name = "postcss-normalize-whitespace";
- packageName = "postcss-normalize-whitespace";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz";
- sha512 = "tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==";
- };
- };
- "postcss-ordered-values-4.1.2" = {
- name = "postcss-ordered-values";
- packageName = "postcss-ordered-values";
- version = "4.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz";
- sha512 = "2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==";
- };
- };
- "postcss-reduce-initial-4.0.3" = {
- name = "postcss-reduce-initial";
- packageName = "postcss-reduce-initial";
- version = "4.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz";
- sha512 = "gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==";
- };
- };
- "postcss-reduce-transforms-4.0.2" = {
- name = "postcss-reduce-transforms";
- packageName = "postcss-reduce-transforms";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz";
- sha512 = "EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==";
- };
- };
- "postcss-selector-parser-3.1.2" = {
- name = "postcss-selector-parser";
- packageName = "postcss-selector-parser";
- version = "3.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz";
- sha512 = "h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==";
- };
- };
- "postcss-selector-parser-6.0.2" = {
- name = "postcss-selector-parser";
- packageName = "postcss-selector-parser";
- version = "6.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz";
- sha512 = "36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==";
- };
- };
- "postcss-svgo-4.0.2" = {
- name = "postcss-svgo";
- packageName = "postcss-svgo";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz";
- sha512 = "C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==";
- };
- };
- "postcss-unique-selectors-4.0.1" = {
- name = "postcss-unique-selectors";
- packageName = "postcss-unique-selectors";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz";
- sha512 = "+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==";
- };
- };
- "postcss-value-parser-3.3.1" = {
- name = "postcss-value-parser";
- packageName = "postcss-value-parser";
- version = "3.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz";
- sha512 = "pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==";
- };
- };
- "postcss-value-parser-4.0.3" = {
- name = "postcss-value-parser";
- packageName = "postcss-value-parser";
- version = "4.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz";
- sha512 = "N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==";
- };
- };
- "posthtml-0.11.6" = {
- name = "posthtml";
- packageName = "posthtml";
- version = "0.11.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz";
- sha512 = "C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==";
- };
- };
- "posthtml-0.12.3" = {
- name = "posthtml";
- packageName = "posthtml";
- version = "0.12.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/posthtml/-/posthtml-0.12.3.tgz";
- sha512 = "Fbpi95+JJyR0tqU7pUy1zTSQFjAsluuwB9pJ1h0jtnGk7n/O2TBtP5nDl9rV0JVACjQ1Lm5wSp4ppChr8u3MhA==";
- };
- };
- "posthtml-parser-0.4.2" = {
- name = "posthtml-parser";
- packageName = "posthtml-parser";
- version = "0.4.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz";
- sha512 = "BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==";
- };
- };
- "posthtml-render-1.2.2" = {
- name = "posthtml-render";
- packageName = "posthtml-render";
- version = "1.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz";
- sha512 = "MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==";
- };
- };
- "prelude-ls-1.1.2" = {
- name = "prelude-ls";
- packageName = "prelude-ls";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
- sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
- };
- };
- "private-0.1.8" = {
- name = "private";
- packageName = "private";
- version = "0.1.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/private/-/private-0.1.8.tgz";
- sha512 = "VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==";
- };
- };
- "process-0.11.10" = {
- name = "process";
- packageName = "process";
- version = "0.11.10";
- src = fetchurl {
- url = "https://registry.npmjs.org/process/-/process-0.11.10.tgz";
- sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
- };
- };
- "process-nextick-args-2.0.1" = {
- name = "process-nextick-args";
- packageName = "process-nextick-args";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
- sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
- };
- };
- "proto-list-1.2.4" = {
- name = "proto-list";
- packageName = "proto-list";
- version = "1.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz";
- sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
- };
- };
- "pseudomap-1.0.2" = {
- name = "pseudomap";
- packageName = "pseudomap";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz";
- sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
- };
- };
- "psl-1.8.0" = {
- name = "psl";
- packageName = "psl";
- version = "1.8.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
- sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
- };
- };
- "public-encrypt-4.0.3" = {
- name = "public-encrypt";
- packageName = "public-encrypt";
- version = "4.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz";
- sha512 = "zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==";
- };
- };
- "punycode-1.3.2" = {
- name = "punycode";
- packageName = "punycode";
- version = "1.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz";
- sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
- };
- };
- "punycode-1.4.1" = {
- name = "punycode";
- packageName = "punycode";
- version = "1.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
- sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
- };
- };
- "punycode-2.1.1" = {
- name = "punycode";
- packageName = "punycode";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
- sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
- };
- };
- "purgecss-1.4.2" = {
- name = "purgecss";
- packageName = "purgecss";
- version = "1.4.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz";
- sha512 = "hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==";
- };
- };
- "q-1.5.1" = {
- name = "q";
- packageName = "q";
- version = "1.5.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/q/-/q-1.5.1.tgz";
- sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
- };
- };
- "qs-6.5.2" = {
- name = "qs";
- packageName = "qs";
- version = "6.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
- sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
- };
- };
- "querystring-0.2.0" = {
- name = "querystring";
- packageName = "querystring";
- version = "0.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz";
- sha1 = "b209849203bb25df820da756e747005878521620";
- };
- };
- "querystring-es3-0.2.1" = {
- name = "querystring-es3";
- packageName = "querystring-es3";
- version = "0.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz";
- sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
- };
- };
- "quote-stream-1.0.2" = {
- name = "quote-stream";
- packageName = "quote-stream";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz";
- sha1 = "84963f8c9c26b942e153feeb53aae74652b7e0b2";
- };
- };
- "randombytes-2.1.0" = {
- name = "randombytes";
- packageName = "randombytes";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz";
- sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==";
- };
- };
- "randomfill-1.0.4" = {
- name = "randomfill";
- packageName = "randomfill";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz";
- sha512 = "87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==";
- };
- };
- "range-parser-1.2.1" = {
- name = "range-parser";
- packageName = "range-parser";
- version = "1.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz";
- sha512 = "Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==";
- };
- };
- "readable-stream-2.3.7" = {
- name = "readable-stream";
- packageName = "readable-stream";
- version = "2.3.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
- sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
- };
- };
- "readable-stream-3.6.0" = {
- name = "readable-stream";
- packageName = "readable-stream";
- version = "3.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
- sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
- };
- };
- "readdirp-2.2.1" = {
- name = "readdirp";
- packageName = "readdirp";
- version = "2.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz";
- sha512 = "1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==";
- };
- };
- "regenerate-1.4.0" = {
- name = "regenerate";
- packageName = "regenerate";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz";
- sha512 = "1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==";
- };
- };
- "regenerate-unicode-properties-8.2.0" = {
- name = "regenerate-unicode-properties";
- packageName = "regenerate-unicode-properties";
- version = "8.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz";
- sha512 = "F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==";
- };
- };
- "regenerator-runtime-0.11.1" = {
- name = "regenerator-runtime";
- packageName = "regenerator-runtime";
- version = "0.11.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
- sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==";
- };
- };
- "regenerator-runtime-0.12.1" = {
- name = "regenerator-runtime";
- packageName = "regenerator-runtime";
- version = "0.12.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz";
- sha512 = "odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==";
- };
- };
- "regenerator-runtime-0.13.5" = {
- name = "regenerator-runtime";
- packageName = "regenerator-runtime";
- version = "0.13.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz";
- sha512 = "ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==";
- };
- };
- "regenerator-transform-0.14.4" = {
- name = "regenerator-transform";
- packageName = "regenerator-transform";
- version = "0.14.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz";
- sha512 = "EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==";
- };
- };
- "regex-not-1.0.2" = {
- name = "regex-not";
- packageName = "regex-not";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz";
- sha512 = "J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==";
- };
- };
- "regexpu-core-4.7.0" = {
- name = "regexpu-core";
- packageName = "regexpu-core";
- version = "4.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz";
- sha512 = "TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==";
- };
- };
- "regjsgen-0.5.1" = {
- name = "regjsgen";
- packageName = "regjsgen";
- version = "0.5.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz";
- sha512 = "5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==";
- };
- };
- "regjsparser-0.6.4" = {
- name = "regjsparser";
- packageName = "regjsparser";
- version = "0.6.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz";
- sha512 = "64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==";
- };
- };
- "remove-trailing-separator-1.1.0" = {
- name = "remove-trailing-separator";
- packageName = "remove-trailing-separator";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
- sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
- };
- };
- "repeat-element-1.1.3" = {
- name = "repeat-element";
- packageName = "repeat-element";
- version = "1.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz";
- sha512 = "ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==";
- };
- };
- "repeat-string-1.6.1" = {
- name = "repeat-string";
- packageName = "repeat-string";
- version = "1.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz";
- sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
- };
- };
- "request-2.88.2" = {
- name = "request";
- packageName = "request";
- version = "2.88.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
- sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
- };
- };
- "request-promise-core-1.1.3" = {
- name = "request-promise-core";
- packageName = "request-promise-core";
- version = "1.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz";
- sha512 = "QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==";
- };
- };
- "request-promise-native-1.0.8" = {
- name = "request-promise-native";
- packageName = "request-promise-native";
- version = "1.0.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz";
- sha512 = "dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==";
- };
- };
- "require-directory-2.1.1" = {
- name = "require-directory";
- packageName = "require-directory";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz";
- sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
- };
- };
- "require-main-filename-2.0.0" = {
- name = "require-main-filename";
- packageName = "require-main-filename";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz";
- sha512 = "NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==";
- };
- };
- "resolve-1.17.0" = {
- name = "resolve";
- packageName = "resolve";
- version = "1.17.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz";
- sha512 = "ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==";
- };
- };
- "resolve-from-3.0.0" = {
- name = "resolve-from";
- packageName = "resolve-from";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz";
- sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748";
- };
- };
- "resolve-url-0.2.1" = {
- name = "resolve-url";
- packageName = "resolve-url";
- version = "0.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz";
- sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
- };
- };
- "restore-cursor-2.0.0" = {
- name = "restore-cursor";
- packageName = "restore-cursor";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz";
- sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf";
- };
- };
- "ret-0.1.15" = {
- name = "ret";
- packageName = "ret";
- version = "0.1.15";
- src = fetchurl {
- url = "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz";
- sha512 = "TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==";
- };
- };
- "rgb-regex-1.0.1" = {
- name = "rgb-regex";
- packageName = "rgb-regex";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz";
- sha1 = "c0e0d6882df0e23be254a475e8edd41915feaeb1";
- };
- };
- "rgba-regex-1.0.0" = {
- name = "rgba-regex";
- packageName = "rgba-regex";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz";
- sha1 = "43374e2e2ca0968b0ef1523460b7d730ff22eeb3";
- };
- };
- "rimraf-2.6.3" = {
- name = "rimraf";
- packageName = "rimraf";
- version = "2.6.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz";
- sha512 = "mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==";
- };
- };
- "ripemd160-2.0.2" = {
- name = "ripemd160";
- packageName = "ripemd160";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz";
- sha512 = "ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==";
- };
- };
- "safe-buffer-5.1.2" = {
- name = "safe-buffer";
- packageName = "safe-buffer";
- version = "5.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
- sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
- };
- };
- "safe-regex-1.1.0" = {
- name = "safe-regex";
- packageName = "safe-regex";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz";
- sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
- };
- };
- "safer-buffer-2.1.2" = {
- name = "safer-buffer";
- packageName = "safer-buffer";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
- sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
- };
- };
- "safer-eval-1.3.6" = {
- name = "safer-eval";
- packageName = "safer-eval";
- version = "1.3.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/safer-eval/-/safer-eval-1.3.6.tgz";
- sha512 = "DN9tBsZgtUOHODzSfO1nGCLhZtxc7Qq/d8/2SNxQZ9muYXZspSh1fO7HOsrf4lcelBNviAJLCxB/ggmG+jV1aw==";
- };
- };
- "sax-1.2.4" = {
- name = "sax";
- packageName = "sax";
- version = "1.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
- sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
- };
- };
- "saxes-3.1.11" = {
- name = "saxes";
- packageName = "saxes";
- version = "3.1.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz";
- sha512 = "Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==";
- };
- };
- "semver-5.7.1" = {
- name = "semver";
- packageName = "semver";
- version = "5.7.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz";
- sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==";
- };
- };
- "send-0.17.1" = {
- name = "send";
- packageName = "send";
- version = "0.17.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/send/-/send-0.17.1.tgz";
- sha512 = "BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==";
- };
- };
- "serialize-to-js-1.2.2" = {
- name = "serialize-to-js";
- packageName = "serialize-to-js";
- version = "1.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-1.2.2.tgz";
- sha512 = "mUc8vA5iJghe+O+3s0YDGFLMJcqitVFk787YKiv8a4sf6RX5W0u81b+gcHrp15O0fFa010dRBVZvwcKXOWsL9Q==";
- };
- };
- "serve-static-1.14.1" = {
- name = "serve-static";
- packageName = "serve-static";
- version = "1.14.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz";
- sha512 = "JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==";
- };
- };
- "set-blocking-2.0.0" = {
- name = "set-blocking";
- packageName = "set-blocking";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
- sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
- };
- };
- "set-value-2.0.1" = {
- name = "set-value";
- packageName = "set-value";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz";
- sha512 = "JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==";
- };
- };
- "setimmediate-1.0.5" = {
- name = "setimmediate";
- packageName = "setimmediate";
- version = "1.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz";
- sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
- };
- };
- "setprototypeof-1.1.1" = {
- name = "setprototypeof";
- packageName = "setprototypeof";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz";
- sha512 = "JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==";
- };
- };
- "sha.js-2.4.11" = {
- name = "sha.js";
- packageName = "sha.js";
- version = "2.4.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz";
- sha512 = "QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==";
- };
- };
- "shallow-copy-0.0.1" = {
- name = "shallow-copy";
- packageName = "shallow-copy";
- version = "0.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz";
- sha1 = "415f42702d73d810330292cc5ee86eae1a11a170";
- };
- };
- "shebang-command-1.2.0" = {
- name = "shebang-command";
- packageName = "shebang-command";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz";
- sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
- };
- };
- "shebang-regex-1.0.0" = {
- name = "shebang-regex";
- packageName = "shebang-regex";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz";
- sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
- };
- };
- "sigmund-1.0.1" = {
- name = "sigmund";
- packageName = "sigmund";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz";
- sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
- };
- };
- "signal-exit-3.0.3" = {
- name = "signal-exit";
- packageName = "signal-exit";
- version = "3.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz";
- sha512 = "VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==";
- };
- };
- "simple-swizzle-0.2.2" = {
- name = "simple-swizzle";
- packageName = "simple-swizzle";
- version = "0.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz";
- sha1 = "a4da6b635ffcccca33f70d17cb92592de95e557a";
- };
- };
- "snapdragon-0.8.2" = {
- name = "snapdragon";
- packageName = "snapdragon";
- version = "0.8.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz";
- sha512 = "FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==";
- };
- };
- "snapdragon-node-2.1.1" = {
- name = "snapdragon-node";
- packageName = "snapdragon-node";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
- sha512 = "O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==";
- };
- };
- "snapdragon-util-3.0.1" = {
- name = "snapdragon-util";
- packageName = "snapdragon-util";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
- sha512 = "mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==";
- };
- };
- "source-map-0.5.7" = {
- name = "source-map";
- packageName = "source-map";
- version = "0.5.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
- sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
- };
- };
- "source-map-0.6.1" = {
- name = "source-map";
- packageName = "source-map";
- version = "0.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
- sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
- };
- };
- "source-map-resolve-0.5.3" = {
- name = "source-map-resolve";
- packageName = "source-map-resolve";
- version = "0.5.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz";
- sha512 = "Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==";
- };
- };
- "source-map-support-0.5.19" = {
- name = "source-map-support";
- packageName = "source-map-support";
- version = "0.5.19";
- src = fetchurl {
- url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz";
- sha512 = "Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==";
- };
- };
- "source-map-url-0.4.0" = {
- name = "source-map-url";
- packageName = "source-map-url";
- version = "0.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz";
- sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
- };
- };
- "split-string-3.1.0" = {
- name = "split-string";
- packageName = "split-string";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz";
- sha512 = "NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==";
- };
- };
- "sprintf-js-1.0.3" = {
- name = "sprintf-js";
- packageName = "sprintf-js";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
- sha1 = "04e6926f662895354f3dd015203633b857297e2c";
- };
- };
- "sshpk-1.16.1" = {
- name = "sshpk";
- packageName = "sshpk";
- version = "1.16.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
- sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
- };
- };
- "stable-0.1.8" = {
- name = "stable";
- packageName = "stable";
- version = "0.1.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz";
- sha512 = "ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==";
- };
- };
- "static-eval-2.0.5" = {
- name = "static-eval";
- packageName = "static-eval";
- version = "2.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz";
- sha512 = "nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA==";
- };
- };
- "static-extend-0.1.2" = {
- name = "static-extend";
- packageName = "static-extend";
- version = "0.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz";
- sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
- };
- };
- "static-module-2.2.5" = {
- name = "static-module";
- packageName = "static-module";
- version = "2.2.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz";
- sha512 = "D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==";
- };
- };
- "statuses-1.5.0" = {
- name = "statuses";
- packageName = "statuses";
- version = "1.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
- sha1 = "161c7dac177659fd9811f43771fa99381478628c";
- };
- };
- "stealthy-require-1.1.1" = {
- name = "stealthy-require";
- packageName = "stealthy-require";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz";
- sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b";
- };
- };
- "stream-browserify-2.0.2" = {
- name = "stream-browserify";
- packageName = "stream-browserify";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz";
- sha512 = "nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==";
- };
- };
- "stream-http-2.8.3" = {
- name = "stream-http";
- packageName = "stream-http";
- version = "2.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz";
- sha512 = "+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==";
- };
- };
- "string-width-3.1.0" = {
- name = "string-width";
- packageName = "string-width";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz";
- sha512 = "vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==";
- };
- };
- "string.prototype.trimend-1.0.1" = {
- name = "string.prototype.trimend";
- packageName = "string.prototype.trimend";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz";
- sha512 = "LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==";
- };
- };
- "string.prototype.trimleft-2.1.2" = {
- name = "string.prototype.trimleft";
- packageName = "string.prototype.trimleft";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz";
- sha512 = "gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==";
- };
- };
- "string.prototype.trimright-2.1.2" = {
- name = "string.prototype.trimright";
- packageName = "string.prototype.trimright";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz";
- sha512 = "ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==";
- };
- };
- "string.prototype.trimstart-1.0.1" = {
- name = "string.prototype.trimstart";
- packageName = "string.prototype.trimstart";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz";
- sha512 = "XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==";
- };
- };
- "string_decoder-1.1.1" = {
- name = "string_decoder";
- packageName = "string_decoder";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
- sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
- };
- };
- "strip-ansi-3.0.1" = {
- name = "strip-ansi";
- packageName = "strip-ansi";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
- sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
- };
- };
- "strip-ansi-4.0.0" = {
- name = "strip-ansi";
- packageName = "strip-ansi";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
- sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
- };
- };
- "strip-ansi-5.2.0" = {
- name = "strip-ansi";
- packageName = "strip-ansi";
- version = "5.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz";
- sha512 = "DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==";
- };
- };
- "stylehacks-4.0.3" = {
- name = "stylehacks";
- packageName = "stylehacks";
- version = "4.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz";
- sha512 = "7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==";
- };
- };
- "supports-color-2.0.0" = {
- name = "supports-color";
- packageName = "supports-color";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
- sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
- };
- };
- "supports-color-3.2.3" = {
- name = "supports-color";
- packageName = "supports-color";
- version = "3.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz";
- sha1 = "65ac0504b3954171d8a64946b2ae3cbb8a5f54f6";
- };
- };
- "supports-color-5.5.0" = {
- name = "supports-color";
- packageName = "supports-color";
- version = "5.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz";
- sha512 = "QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==";
- };
- };
- "supports-color-6.1.0" = {
- name = "supports-color";
- packageName = "supports-color";
- version = "6.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz";
- sha512 = "qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==";
- };
- };
- "svgo-1.3.2" = {
- name = "svgo";
- packageName = "svgo";
- version = "1.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz";
- sha512 = "yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==";
- };
- };
- "symbol-tree-3.2.4" = {
- name = "symbol-tree";
- packageName = "symbol-tree";
- version = "3.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz";
- sha512 = "9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==";
- };
- };
- "temp-0.9.0" = {
- name = "temp";
- packageName = "temp";
- version = "0.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz";
- sha512 = "YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==";
- };
- };
- "terser-3.17.0" = {
- name = "terser";
- packageName = "terser";
- version = "3.17.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz";
- sha512 = "/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==";
- };
- };
- "terser-4.6.12" = {
- name = "terser";
- packageName = "terser";
- version = "4.6.12";
- src = fetchurl {
- url = "https://registry.npmjs.org/terser/-/terser-4.6.12.tgz";
- sha512 = "fnIwuaKjFPANG6MAixC/k1TDtnl1YlPLUlLVIxxGZUn1gfUx2+l3/zGNB72wya+lgsb50QBi2tUV75RiODwnww==";
- };
- };
- "through2-2.0.5" = {
- name = "through2";
- packageName = "through2";
- version = "2.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz";
- sha512 = "/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==";
- };
- };
- "timers-browserify-2.0.11" = {
- name = "timers-browserify";
- packageName = "timers-browserify";
- version = "2.0.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz";
- sha512 = "60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==";
- };
- };
- "timsort-0.3.0" = {
- name = "timsort";
- packageName = "timsort";
- version = "0.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz";
- sha1 = "405411a8e7e6339fe64db9a234de11dc31e02bd4";
- };
- };
- "tiny-inflate-1.0.3" = {
- name = "tiny-inflate";
- packageName = "tiny-inflate";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz";
- sha512 = "pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==";
- };
- };
- "to-arraybuffer-1.0.1" = {
- name = "to-arraybuffer";
- packageName = "to-arraybuffer";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz";
- sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43";
- };
- };
- "to-fast-properties-1.0.3" = {
- name = "to-fast-properties";
- packageName = "to-fast-properties";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz";
- sha1 = "b83571fa4d8c25b82e231b06e3a3055de4ca1a47";
- };
- };
- "to-fast-properties-2.0.0" = {
- name = "to-fast-properties";
- packageName = "to-fast-properties";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz";
- sha1 = "dc5e698cbd079265bc73e0377681a4e4e83f616e";
- };
- };
- "to-object-path-0.3.0" = {
- name = "to-object-path";
- packageName = "to-object-path";
- version = "0.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz";
- sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
- };
- };
- "to-regex-3.0.2" = {
- name = "to-regex";
- packageName = "to-regex";
- version = "3.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz";
- sha512 = "FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==";
- };
- };
- "to-regex-range-2.1.1" = {
- name = "to-regex-range";
- packageName = "to-regex-range";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz";
- sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
- };
- };
- "toidentifier-1.0.0" = {
- name = "toidentifier";
- packageName = "toidentifier";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz";
- sha512 = "yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==";
- };
- };
- "tough-cookie-2.5.0" = {
- name = "tough-cookie";
- packageName = "tough-cookie";
- version = "2.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
- sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
- };
- };
- "tr46-1.0.1" = {
- name = "tr46";
- packageName = "tr46";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz";
- sha1 = "a8b13fd6bfd2489519674ccde55ba3693b706d09";
- };
- };
- "trim-right-1.0.1" = {
- name = "trim-right";
- packageName = "trim-right";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz";
- sha1 = "cb2e1203067e0c8de1f614094b9fe45704ea6003";
- };
- };
- "tty-browserify-0.0.0" = {
- name = "tty-browserify";
- packageName = "tty-browserify";
- version = "0.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz";
- sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6";
- };
- };
- "tunnel-agent-0.6.0" = {
- name = "tunnel-agent";
- packageName = "tunnel-agent";
- version = "0.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
- sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
- };
- };
- "tweetnacl-0.14.5" = {
- name = "tweetnacl";
- packageName = "tweetnacl";
- version = "0.14.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
- sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
- };
- };
- "type-check-0.3.2" = {
- name = "type-check";
- packageName = "type-check";
- version = "0.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
- sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
- };
- };
- "typedarray-0.0.6" = {
- name = "typedarray";
- packageName = "typedarray";
- version = "0.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
- sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
- };
- };
- "uncss-0.17.3" = {
- name = "uncss";
- packageName = "uncss";
- version = "0.17.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz";
- sha512 = "ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==";
- };
- };
- "unicode-canonical-property-names-ecmascript-1.0.4" = {
- name = "unicode-canonical-property-names-ecmascript";
- packageName = "unicode-canonical-property-names-ecmascript";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz";
- sha512 = "jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==";
- };
- };
- "unicode-match-property-ecmascript-1.0.4" = {
- name = "unicode-match-property-ecmascript";
- packageName = "unicode-match-property-ecmascript";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz";
- sha512 = "L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==";
- };
- };
- "unicode-match-property-value-ecmascript-1.2.0" = {
- name = "unicode-match-property-value-ecmascript";
- packageName = "unicode-match-property-value-ecmascript";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz";
- sha512 = "wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==";
- };
- };
- "unicode-property-aliases-ecmascript-1.1.0" = {
- name = "unicode-property-aliases-ecmascript";
- packageName = "unicode-property-aliases-ecmascript";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz";
- sha512 = "PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==";
- };
- };
- "unicode-trie-0.3.1" = {
- name = "unicode-trie";
- packageName = "unicode-trie";
- version = "0.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz";
- sha1 = "d671dddd89101a08bac37b6a5161010602052085";
- };
- };
- "union-value-1.0.1" = {
- name = "union-value";
- packageName = "union-value";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz";
- sha512 = "tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==";
- };
- };
- "uniq-1.0.1" = {
- name = "uniq";
- packageName = "uniq";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz";
- sha1 = "b31c5ae8254844a3a8281541ce2b04b865a734ff";
- };
- };
- "uniqs-2.0.0" = {
- name = "uniqs";
- packageName = "uniqs";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz";
- sha1 = "ffede4b36b25290696e6e165d4a59edb998e6b02";
- };
- };
- "unquote-1.1.1" = {
- name = "unquote";
- packageName = "unquote";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz";
- sha1 = "8fded7324ec6e88a0ff8b905e7c098cdc086d544";
- };
- };
- "unset-value-1.0.0" = {
- name = "unset-value";
- packageName = "unset-value";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz";
- sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
- };
- };
- "upath-1.2.0" = {
- name = "upath";
- packageName = "upath";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz";
- sha512 = "aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==";
- };
- };
- "uri-js-4.2.2" = {
- name = "uri-js";
- packageName = "uri-js";
- version = "4.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz";
- sha512 = "KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==";
- };
- };
- "urix-0.1.0" = {
- name = "urix";
- packageName = "urix";
- version = "0.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz";
- sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
- };
- };
- "url-0.11.0" = {
- name = "url";
- packageName = "url";
- version = "0.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/url/-/url-0.11.0.tgz";
- sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
- };
- };
- "use-3.1.1" = {
- name = "use";
- packageName = "use";
- version = "3.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/use/-/use-3.1.1.tgz";
- sha512 = "cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==";
- };
- };
- "util-0.10.3" = {
- name = "util";
- packageName = "util";
- version = "0.10.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/util/-/util-0.10.3.tgz";
- sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
- };
- };
- "util-0.11.1" = {
- name = "util";
- packageName = "util";
- version = "0.11.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/util/-/util-0.11.1.tgz";
- sha512 = "HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==";
- };
- };
- "util-deprecate-1.0.2" = {
- name = "util-deprecate";
- packageName = "util-deprecate";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
- sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
- };
- };
- "util.promisify-1.0.1" = {
- name = "util.promisify";
- packageName = "util.promisify";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz";
- sha512 = "g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==";
- };
- };
- "uuid-3.4.0" = {
- name = "uuid";
- packageName = "uuid";
- version = "3.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
- sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
- };
- };
- "v8-compile-cache-2.1.0" = {
- name = "v8-compile-cache";
- packageName = "v8-compile-cache";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz";
- sha512 = "usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==";
- };
- };
- "vendors-1.0.4" = {
- name = "vendors";
- packageName = "vendors";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz";
- sha512 = "/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==";
- };
- };
- "verror-1.10.0" = {
- name = "verror";
- packageName = "verror";
- version = "1.10.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
- sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
- };
- };
- "vlq-0.2.3" = {
- name = "vlq";
- packageName = "vlq";
- version = "0.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz";
- sha512 = "DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==";
- };
- };
- "vm-browserify-1.1.2" = {
- name = "vm-browserify";
- packageName = "vm-browserify";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz";
- sha512 = "2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==";
- };
- };
- "w3c-hr-time-1.0.2" = {
- name = "w3c-hr-time";
- packageName = "w3c-hr-time";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz";
- sha512 = "z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==";
- };
- };
- "w3c-xmlserializer-1.1.2" = {
- name = "w3c-xmlserializer";
- packageName = "w3c-xmlserializer";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz";
- sha512 = "p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==";
- };
- };
- "wcwidth-1.0.1" = {
- name = "wcwidth";
- packageName = "wcwidth";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz";
- sha1 = "f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8";
- };
- };
- "webidl-conversions-4.0.2" = {
- name = "webidl-conversions";
- packageName = "webidl-conversions";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz";
- sha512 = "YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==";
- };
- };
- "whatwg-encoding-1.0.5" = {
- name = "whatwg-encoding";
- packageName = "whatwg-encoding";
- version = "1.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz";
- sha512 = "b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==";
- };
- };
- "whatwg-mimetype-2.3.0" = {
- name = "whatwg-mimetype";
- packageName = "whatwg-mimetype";
- version = "2.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz";
- sha512 = "M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==";
- };
- };
- "whatwg-url-7.1.0" = {
- name = "whatwg-url";
- packageName = "whatwg-url";
- version = "7.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz";
- sha512 = "WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==";
- };
- };
- "which-1.3.1" = {
- name = "which";
- packageName = "which";
- version = "1.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz";
- sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==";
- };
- };
- "which-module-2.0.0" = {
- name = "which-module";
- packageName = "which-module";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz";
- sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
- };
- };
- "word-wrap-1.2.3" = {
- name = "word-wrap";
- packageName = "word-wrap";
- version = "1.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz";
- sha512 = "Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==";
- };
- };
- "wrap-ansi-5.1.0" = {
- name = "wrap-ansi";
- packageName = "wrap-ansi";
- version = "5.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz";
- sha512 = "QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==";
- };
- };
- "wrappy-1.0.2" = {
- name = "wrappy";
- packageName = "wrappy";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
- sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
- };
- };
- "ws-5.2.2" = {
- name = "ws";
- packageName = "ws";
- version = "5.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz";
- sha512 = "jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==";
- };
- };
- "ws-6.2.1" = {
- name = "ws";
- packageName = "ws";
- version = "6.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz";
- sha512 = "GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==";
- };
- };
- "xml-name-validator-3.0.0" = {
- name = "xml-name-validator";
- packageName = "xml-name-validator";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz";
- sha512 = "A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==";
- };
- };
- "xmlchars-2.2.0" = {
- name = "xmlchars";
- packageName = "xmlchars";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz";
- sha512 = "JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==";
- };
- };
- "xtend-4.0.2" = {
- name = "xtend";
- packageName = "xtend";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
- sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
- };
- };
- "y18n-4.0.0" = {
- name = "y18n";
- packageName = "y18n";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz";
- sha512 = "r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==";
- };
- };
- "yallist-2.1.2" = {
- name = "yallist";
- packageName = "yallist";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz";
- sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
- };
- };
- "yargs-14.2.3" = {
- name = "yargs";
- packageName = "yargs";
- version = "14.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz";
- sha512 = "ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==";
- };
- };
- "yargs-parser-15.0.1" = {
- name = "yargs-parser";
- packageName = "yargs-parser";
- version = "15.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz";
- sha512 = "0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==";
- };
- };
- };
- args = {
- name = "codenamesgreen";
- packageName = "codenamesgreen";
- version = "1.0.0";
- src = let
- upstream = fetchFromGitHub {
- owner = "jbowens";
- repo = "codenamesgreen";
- rev = "6d014d0df14bee72495e01f12885ef31cba3bd6b";
- sha256 = "0bkaf52rnjw792q0755in4k5jbcrmgq06cl03fdl6zdr8kq2mhm0";
- };
- in
- runCommand "codenamesgreen-src" {} ''
- cp -a ${upstream} $out
- chmod -R u+w $out
- cd $out
- patch -p1 < ${./codenames.patch}
- '';
- dependencies = [
- sources."@babel/code-frame-7.0.0"
- (sources."@babel/core-7.3.4" // {
- dependencies = [
- sources."json5-2.1.3"
- sources."source-map-0.5.7"
- ];
- })
- (sources."@babel/generator-7.3.4" // {
- dependencies = [
- sources."source-map-0.5.7"
- ];
- })
- (sources."@babel/helper-annotate-as-pure-7.8.3" // {
- dependencies = [
- sources."@babel/types-7.9.5"
- ];
- })
- (sources."@babel/helper-builder-binary-assignment-operator-visitor-7.8.3" // {
- dependencies = [
- sources."@babel/types-7.9.5"
- ];
- })
- (sources."@babel/helper-builder-react-jsx-7.9.0" // {
- dependencies = [
- sources."@babel/types-7.9.5"
- ];
- })
- sources."@babel/helper-create-regexp-features-plugin-7.8.8"
- (sources."@babel/helper-define-map-7.8.3" // {
- dependencies = [
- sources."@babel/types-7.9.5"
- ];
- })
- (sources."@babel/helper-explode-assignable-expression-7.8.3" // {
- dependencies = [
- sources."@babel/code-frame-7.8.3"
- sources."@babel/generator-7.9.5"
- sources."@babel/parser-7.9.4"
- sources."@babel/traverse-7.9.5"
- sources."@babel/types-7.9.5"
- sources."source-map-0.5.7"
- ];
- })
- (sources."@babel/helper-function-name-7.9.5" // {
- dependencies = [
- sources."@babel/code-frame-7.8.3"
- sources."@babel/parser-7.9.4"
- sources."@babel/template-7.8.6"
- sources."@babel/types-7.9.5"
- ];
- })
- (sources."@babel/helper-get-function-arity-7.8.3" // {
- dependencies = [
- sources."@babel/types-7.9.5"
- ];
- })
- (sources."@babel/helper-hoist-variables-7.8.3" // {
- dependencies = [
- sources."@babel/types-7.9.5"
- ];
- })
- (sources."@babel/helper-member-expression-to-functions-7.8.3" // {
- dependencies = [
- sources."@babel/types-7.9.5"
- ];
- })
- (sources."@babel/helper-module-imports-7.8.3" // {
- dependencies = [
- sources."@babel/types-7.9.5"
- ];
- })
- (sources."@babel/helper-module-transforms-7.9.0" // {
- dependencies = [
- sources."@babel/code-frame-7.8.3"
- sources."@babel/parser-7.9.4"
- sources."@babel/template-7.8.6"
- sources."@babel/types-7.9.5"
- ];
- })
- (sources."@babel/helper-optimise-call-expression-7.8.3" // {
- dependencies = [
- sources."@babel/types-7.9.5"
- ];
- })
- sources."@babel/helper-plugin-utils-7.8.3"
- sources."@babel/helper-regex-7.8.3"
- (sources."@babel/helper-remap-async-to-generator-7.8.3" // {
- dependencies = [
- sources."@babel/code-frame-7.8.3"
- sources."@babel/generator-7.9.5"
- sources."@babel/parser-7.9.4"
- sources."@babel/template-7.8.6"
- sources."@babel/traverse-7.9.5"
- sources."@babel/types-7.9.5"
- sources."source-map-0.5.7"
- ];
- })
- (sources."@babel/helper-replace-supers-7.8.6" // {
- dependencies = [
- sources."@babel/code-frame-7.8.3"
- sources."@babel/generator-7.9.5"
- sources."@babel/parser-7.9.4"
- sources."@babel/traverse-7.9.5"
- sources."@babel/types-7.9.5"
- sources."source-map-0.5.7"
- ];
- })
- (sources."@babel/helper-simple-access-7.8.3" // {
- dependencies = [
- sources."@babel/code-frame-7.8.3"
- sources."@babel/parser-7.9.4"
- sources."@babel/template-7.8.6"
- sources."@babel/types-7.9.5"
- ];
- })
- (sources."@babel/helper-split-export-declaration-7.8.3" // {
- dependencies = [
- sources."@babel/types-7.9.5"
- ];
- })
- sources."@babel/helper-validator-identifier-7.9.5"
- (sources."@babel/helper-wrap-function-7.8.3" // {
- dependencies = [
- sources."@babel/code-frame-7.8.3"
- sources."@babel/generator-7.9.5"
- sources."@babel/parser-7.9.4"
- sources."@babel/template-7.8.6"
- sources."@babel/traverse-7.9.5"
- sources."@babel/types-7.9.5"
- sources."source-map-0.5.7"
- ];
- })
- (sources."@babel/helpers-7.9.2" // {
- dependencies = [
- sources."@babel/code-frame-7.8.3"
- sources."@babel/generator-7.9.5"
- sources."@babel/parser-7.9.4"
- sources."@babel/template-7.8.6"
- sources."@babel/traverse-7.9.5"
- sources."@babel/types-7.9.5"
- sources."source-map-0.5.7"
- ];
- })
- sources."@babel/highlight-7.9.0"
- sources."@babel/parser-7.3.4"
- sources."@babel/plugin-proposal-async-generator-functions-7.8.3"
- sources."@babel/plugin-proposal-json-strings-7.8.3"
- sources."@babel/plugin-proposal-object-rest-spread-7.9.5"
- sources."@babel/plugin-proposal-optional-catch-binding-7.8.3"
- sources."@babel/plugin-proposal-unicode-property-regex-7.8.8"
- sources."@babel/plugin-syntax-async-generators-7.8.4"
- sources."@babel/plugin-syntax-flow-7.8.3"
- sources."@babel/plugin-syntax-json-strings-7.8.3"
- sources."@babel/plugin-syntax-jsx-7.8.3"
- sources."@babel/plugin-syntax-object-rest-spread-7.8.3"
- sources."@babel/plugin-syntax-optional-catch-binding-7.8.3"
- sources."@babel/plugin-transform-arrow-functions-7.8.3"
- sources."@babel/plugin-transform-async-to-generator-7.8.3"
- sources."@babel/plugin-transform-block-scoped-functions-7.8.3"
- sources."@babel/plugin-transform-block-scoping-7.8.3"
- sources."@babel/plugin-transform-classes-7.9.5"
- sources."@babel/plugin-transform-computed-properties-7.8.3"
- sources."@babel/plugin-transform-destructuring-7.9.5"
- sources."@babel/plugin-transform-dotall-regex-7.8.3"
- sources."@babel/plugin-transform-duplicate-keys-7.8.3"
- sources."@babel/plugin-transform-exponentiation-operator-7.8.3"
- sources."@babel/plugin-transform-flow-strip-types-7.3.4"
- sources."@babel/plugin-transform-for-of-7.9.0"
- sources."@babel/plugin-transform-function-name-7.8.3"
- sources."@babel/plugin-transform-literals-7.8.3"
- sources."@babel/plugin-transform-modules-amd-7.9.0"
- sources."@babel/plugin-transform-modules-commonjs-7.2.0"
- sources."@babel/plugin-transform-modules-systemjs-7.9.0"
- sources."@babel/plugin-transform-modules-umd-7.9.0"
- sources."@babel/plugin-transform-named-capturing-groups-regex-7.8.3"
- sources."@babel/plugin-transform-new-target-7.8.3"
- sources."@babel/plugin-transform-object-super-7.8.3"
- sources."@babel/plugin-transform-parameters-7.9.5"
- sources."@babel/plugin-transform-react-jsx-7.3.0"
- sources."@babel/plugin-transform-regenerator-7.8.7"
- sources."@babel/plugin-transform-shorthand-properties-7.8.3"
- sources."@babel/plugin-transform-spread-7.8.3"
- sources."@babel/plugin-transform-sticky-regex-7.8.3"
- sources."@babel/plugin-transform-template-literals-7.8.3"
- sources."@babel/plugin-transform-typeof-symbol-7.8.4"
- sources."@babel/plugin-transform-unicode-regex-7.8.3"
- sources."@babel/preset-env-7.3.4"
- (sources."@babel/runtime-7.3.4" // {
- dependencies = [
- sources."regenerator-runtime-0.12.1"
- ];
- })
- sources."@babel/template-7.2.2"
- sources."@babel/traverse-7.3.4"
- sources."@babel/types-7.3.4"
- sources."@iarna/toml-2.2.5"
- sources."@mrmlnc/readdir-enhanced-2.2.1"
- sources."@nodelib/fs.stat-1.1.3"
- sources."@parcel/fs-1.11.0"
- sources."@parcel/logger-1.11.1"
- sources."@parcel/utils-1.11.0"
- sources."@parcel/watcher-1.12.1"
- sources."@parcel/workers-1.11.0"
- sources."@types/q-1.5.2"
- sources."abab-2.0.3"
- sources."abbrev-1.1.1"
- sources."acorn-7.1.1"
- (sources."acorn-globals-4.3.4" // {
- dependencies = [
- sources."acorn-6.4.1"
- ];
- })
- sources."acorn-walk-6.2.0"
- sources."ajv-6.12.2"
- sources."alphanum-sort-1.0.2"
- sources."ansi-regex-3.0.0"
- sources."ansi-styles-3.2.1"
- (sources."ansi-to-html-0.6.14" // {
- dependencies = [
- sources."entities-1.1.2"
- ];
- })
- (sources."anymatch-2.0.0" // {
- dependencies = [
- sources."normalize-path-2.1.1"
- ];
- })
- sources."argparse-1.0.10"
- sources."arr-diff-4.0.0"
- sources."arr-flatten-1.1.0"
- sources."arr-union-3.1.0"
- sources."array-equal-1.0.0"
- sources."array-unique-0.3.2"
- sources."asn1-0.2.4"
- sources."asn1.js-4.10.1"
- (sources."assert-1.5.0" // {
- dependencies = [
- sources."inherits-2.0.1"
- sources."util-0.10.3"
- ];
- })
- sources."assert-plus-1.0.0"
- sources."assign-symbols-1.0.0"
- sources."async-each-1.0.3"
- sources."async-limiter-1.0.1"
- sources."asynckit-0.4.0"
- sources."atob-2.1.2"
- sources."aws-sign2-0.7.0"
- sources."aws4-1.9.1"
- sources."babel-plugin-dynamic-import-node-2.3.3"
- (sources."babel-runtime-6.26.0" // {
- dependencies = [
- sources."regenerator-runtime-0.11.1"
- ];
- })
- (sources."babel-types-6.26.0" // {
- dependencies = [
- sources."to-fast-properties-1.0.3"
- ];
- })
- sources."babylon-walk-1.0.2"
- sources."balanced-match-1.0.0"
- (sources."base-0.11.2" // {
- dependencies = [
- sources."define-property-1.0.0"
- sources."is-accessor-descriptor-1.0.0"
- sources."is-data-descriptor-1.0.0"
- sources."is-descriptor-1.0.2"
- ];
- })
- sources."base64-js-1.3.1"
- sources."bcrypt-pbkdf-1.0.2"
- sources."binary-extensions-1.13.1"
- sources."bindings-1.5.0"
- sources."bn.js-4.11.8"
- sources."boolbase-1.0.0"
- sources."brace-expansion-1.1.11"
- (sources."braces-2.3.2" // {
- dependencies = [
- sources."extend-shallow-2.0.1"
- ];
- })
- sources."brfs-1.6.1"
- sources."brorand-1.1.0"
- sources."browser-process-hrtime-1.0.0"
- sources."browserify-aes-1.2.0"
- sources."browserify-cipher-1.0.1"
- sources."browserify-des-1.0.2"
- sources."browserify-rsa-4.0.1"
- sources."browserify-sign-4.0.4"
- (sources."browserify-zlib-0.2.0" // {
- dependencies = [
- sources."pako-1.0.11"
- ];
- })
- sources."browserslist-4.12.0"
- sources."buffer-4.9.2"
- sources."buffer-equal-0.0.1"
- sources."buffer-from-1.1.1"
- sources."buffer-xor-1.0.3"
- sources."builtin-status-codes-3.0.0"
- sources."cache-base-1.0.1"
- sources."call-me-maybe-1.0.1"
- sources."caller-callsite-2.0.0"
- sources."caller-path-2.0.0"
- sources."callsites-2.0.0"
- sources."camelcase-5.3.1"
- sources."caniuse-api-3.0.0"
- sources."caniuse-lite-1.0.30001048"
- sources."caseless-0.12.0"
- (sources."chalk-2.4.2" // {
- dependencies = [
- sources."supports-color-5.5.0"
- ];
- })
- (sources."chokidar-2.1.8" // {
- dependencies = [
- sources."fsevents-1.2.12"
- ];
- })
- sources."cipher-base-1.0.4"
- (sources."class-utils-0.3.6" // {
- dependencies = [
- sources."define-property-0.2.5"
- ];
- })
- sources."cli-cursor-2.1.0"
- sources."cli-spinners-1.3.1"
- (sources."cliui-5.0.0" // {
- dependencies = [
- sources."ansi-regex-4.1.0"
- sources."strip-ansi-5.2.0"
- ];
- })
- sources."clone-2.1.2"
- sources."clones-1.2.0"
- sources."coa-2.0.2"
- sources."collection-visit-1.0.0"
- sources."color-3.1.2"
- sources."color-convert-1.9.3"
- sources."color-name-1.1.3"
- sources."color-string-1.5.3"
- sources."combined-stream-1.0.8"
- sources."command-exists-1.2.9"
- sources."commander-2.20.3"
- sources."component-emitter-1.3.0"
- sources."concat-map-0.0.1"
- sources."concat-stream-1.6.2"
- sources."config-chain-1.1.12"
- sources."console-browserify-1.2.0"
- sources."constants-browserify-1.0.0"
- sources."convert-source-map-1.7.0"
- sources."copy-descriptor-0.1.1"
- sources."core-js-2.6.11"
- sources."core-util-is-1.0.2"
- sources."cosmiconfig-5.2.1"
- sources."create-ecdh-4.0.3"
- sources."create-hash-1.2.0"
- sources."create-hmac-1.1.7"
- sources."cross-spawn-6.0.5"
- sources."crypto-browserify-3.12.0"
- sources."css-color-names-0.0.4"
- sources."css-declaration-sorter-4.0.1"
- (sources."css-modules-loader-core-1.1.0" // {
- dependencies = [
- sources."ansi-regex-2.1.1"
- sources."ansi-styles-2.2.1"
- (sources."chalk-1.1.3" // {
- dependencies = [
- sources."supports-color-2.0.0"
- ];
- })
- sources."has-flag-1.0.0"
- sources."postcss-6.0.1"
- sources."source-map-0.5.7"
- sources."strip-ansi-3.0.1"
- sources."supports-color-3.2.3"
- ];
- })
- sources."css-select-2.1.0"
- sources."css-select-base-adapter-0.1.1"
- sources."css-selector-tokenizer-0.7.2"
- sources."css-tree-1.0.0-alpha.37"
- sources."css-what-3.2.1"
- sources."cssesc-3.0.0"
- sources."cssnano-4.1.10"
- sources."cssnano-preset-default-4.0.7"
- sources."cssnano-util-get-arguments-4.0.0"
- sources."cssnano-util-get-match-4.0.0"
- sources."cssnano-util-raw-cache-4.0.1"
- sources."cssnano-util-same-parent-4.0.1"
- (sources."csso-4.0.3" // {
- dependencies = [
- sources."css-tree-1.0.0-alpha.39"
- sources."mdn-data-2.0.6"
- ];
- })
- sources."cssom-0.3.8"
- sources."cssstyle-1.4.0"
- sources."dashdash-1.14.1"
- sources."data-urls-1.1.0"
- sources."deasync-0.1.19"
- sources."debug-4.1.1"
- sources."decamelize-1.2.0"
- sources."decode-uri-component-0.2.0"
- sources."deep-is-0.1.3"
- (sources."defaults-1.0.3" // {
- dependencies = [
- sources."clone-1.0.4"
- ];
- })
- sources."define-properties-1.1.3"
- (sources."define-property-2.0.2" // {
- dependencies = [
- sources."is-accessor-descriptor-1.0.0"
- sources."is-data-descriptor-1.0.0"
- sources."is-descriptor-1.0.2"
- ];
- })
- sources."delayed-stream-1.0.0"
- sources."depd-1.1.2"
- sources."des.js-1.0.1"
- sources."destroy-1.0.4"
- sources."diffie-hellman-5.0.3"
- (sources."dom-serializer-0.2.2" // {
- dependencies = [
- sources."domelementtype-2.0.1"
- ];
- })
- sources."domain-browser-1.2.0"
- sources."domelementtype-1.3.1"
- sources."domexception-1.0.1"
- sources."domhandler-2.4.2"
- sources."domutils-1.7.0"
- sources."dot-prop-5.2.0"
- sources."dotenv-5.0.1"
- sources."dotenv-expand-4.2.0"
- sources."duplexer2-0.1.4"
- sources."ecc-jsbn-0.1.2"
- sources."editorconfig-0.15.3"
- sources."ee-first-1.1.1"
- sources."electron-to-chromium-1.3.418"
- sources."elliptic-6.5.2"
- sources."elm-hot-1.1.1"
- sources."emoji-regex-7.0.3"
- sources."encodeurl-1.0.2"
- sources."entities-2.0.0"
- sources."error-ex-1.3.2"
- sources."es-abstract-1.17.5"
- sources."es-to-primitive-1.2.1"
- sources."escape-html-1.0.3"
- sources."escape-string-regexp-1.0.5"
- (sources."escodegen-1.9.1" // {
- dependencies = [
- sources."esprima-3.1.3"
- ];
- })
- sources."esprima-4.0.1"
- sources."estraverse-4.3.0"
- sources."esutils-2.0.3"
- sources."etag-1.8.1"
- sources."events-3.1.0"
- sources."evp_bytestokey-1.0.3"
- (sources."expand-brackets-2.1.4" // {
- dependencies = [
- sources."debug-2.6.9"
- sources."define-property-0.2.5"
- sources."extend-shallow-2.0.1"
- sources."ms-2.0.0"
- ];
- })
- sources."extend-3.0.2"
- (sources."extend-shallow-3.0.2" // {
- dependencies = [
- sources."is-extendable-1.0.1"
- ];
- })
- (sources."extglob-2.0.4" // {
- dependencies = [
- sources."define-property-1.0.0"
- sources."extend-shallow-2.0.1"
- sources."is-accessor-descriptor-1.0.0"
- sources."is-data-descriptor-1.0.0"
- sources."is-descriptor-1.0.2"
- ];
- })
- sources."extsprintf-1.3.0"
- (sources."falafel-2.2.4" // {
- dependencies = [
- sources."isarray-2.0.5"
- ];
- })
- sources."fast-deep-equal-3.1.1"
- sources."fast-glob-2.2.7"
- sources."fast-json-stable-stringify-2.1.0"
- sources."fast-levenshtein-2.0.6"
- sources."fastparse-1.1.2"
- sources."file-uri-to-path-1.0.0"
- sources."filesize-3.6.1"
- (sources."fill-range-4.0.0" // {
- dependencies = [
- sources."extend-shallow-2.0.1"
- ];
- })
- sources."find-elm-dependencies-2.0.2"
- sources."find-up-2.1.0"
- sources."firstline-1.2.0"
- sources."for-in-1.0.2"
- sources."foreach-2.0.5"
- sources."forever-agent-0.6.1"
- sources."form-data-2.3.3"
- sources."fragment-cache-0.2.1"
- sources."fresh-0.5.2"
- sources."fs.realpath-1.0.0"
- sources."function-bind-1.1.1"
- sources."get-caller-file-2.0.5"
- sources."get-port-3.2.0"
- sources."get-value-2.0.6"
- sources."getpass-0.1.7"
- sources."glob-7.1.4"
- (sources."glob-parent-3.1.0" // {
- dependencies = [
- sources."is-glob-3.1.0"
- ];
- })
- sources."glob-to-regexp-0.3.0"
- sources."globals-11.12.0"
- sources."graceful-fs-4.2.3"
- sources."grapheme-breaker-0.3.2"
- sources."har-schema-2.0.0"
- sources."har-validator-5.1.3"
- sources."has-1.0.3"
- (sources."has-ansi-2.0.0" // {
- dependencies = [
- sources."ansi-regex-2.1.1"
- ];
- })
- sources."has-flag-3.0.0"
- sources."has-symbols-1.0.1"
- sources."has-value-1.0.0"
- (sources."has-values-1.0.0" // {
- dependencies = [
- sources."kind-of-4.0.0"
- ];
- })
- sources."hash-base-3.0.4"
- sources."hash.js-1.1.7"
- sources."hex-color-regex-1.1.0"
- sources."hmac-drbg-1.0.1"
- sources."hsl-regex-1.0.0"
- sources."hsla-regex-1.0.0"
- sources."html-comment-regex-1.1.2"
- sources."html-encoding-sniffer-1.0.2"
- sources."html-tags-1.2.0"
- (sources."htmlnano-0.2.5" // {
- dependencies = [
- sources."posthtml-0.12.3"
- sources."terser-4.6.12"
- ];
- })
- (sources."htmlparser2-3.10.1" // {
- dependencies = [
- sources."entities-1.1.2"
- sources."readable-stream-3.6.0"
- ];
- })
- sources."http-errors-1.7.3"
- sources."http-signature-1.2.0"
- sources."https-browserify-1.0.0"
- sources."iconv-lite-0.4.24"
- sources."icss-replace-symbols-1.1.0"
- sources."ieee754-1.1.13"
- sources."import-fresh-2.0.0"
- sources."indexes-of-1.0.1"
- sources."inflight-1.0.6"
- sources."inherits-2.0.4"
- sources."ini-1.3.5"
- sources."invariant-2.2.4"
- sources."is-absolute-url-2.1.0"
- (sources."is-accessor-descriptor-0.1.6" // {
- dependencies = [
- sources."kind-of-3.2.2"
- ];
- })
- sources."is-arrayish-0.2.1"
- sources."is-binary-path-1.0.1"
- sources."is-buffer-1.1.6"
- sources."is-callable-1.1.5"
- sources."is-color-stop-1.1.0"
- (sources."is-data-descriptor-0.1.4" // {
- dependencies = [
- sources."kind-of-3.2.2"
- ];
- })
- sources."is-date-object-1.0.2"
- (sources."is-descriptor-0.1.6" // {
- dependencies = [
- sources."kind-of-5.1.0"
- ];
- })
- sources."is-directory-0.3.1"
- sources."is-extendable-0.1.1"
- sources."is-extglob-2.1.1"
- sources."is-fullwidth-code-point-2.0.0"
- sources."is-glob-4.0.1"
- sources."is-html-1.1.0"
- (sources."is-number-3.0.0" // {
- dependencies = [
- sources."kind-of-3.2.2"
- ];
- })
- sources."is-obj-2.0.0"
- sources."is-plain-object-2.0.4"
- sources."is-regex-1.0.5"
- sources."is-resolvable-1.1.0"
- sources."is-svg-3.0.0"
- sources."is-symbol-1.0.3"
- sources."is-typedarray-1.0.0"
- sources."is-url-1.2.4"
- sources."is-windows-1.0.2"
- sources."is-wsl-1.1.0"
- sources."isarray-1.0.0"
- sources."isexe-2.0.0"
- sources."isobject-3.0.1"
- sources."isstream-0.1.2"
- (sources."js-beautify-1.11.0" // {
- dependencies = [
- sources."mkdirp-1.0.4"
- ];
- })
- sources."js-levenshtein-1.1.6"
- sources."js-tokens-4.0.0"
- sources."js-yaml-3.13.1"
- sources."jsbn-0.1.1"
- (sources."jsdom-14.1.0" // {
- dependencies = [
- sources."acorn-6.4.1"
- sources."escodegen-1.14.1"
- sources."ws-6.2.1"
- ];
- })
- sources."jsesc-2.5.2"
- sources."json-parse-better-errors-1.0.2"
- sources."json-schema-0.2.3"
- sources."json-schema-traverse-0.4.1"
- sources."json-stringify-safe-5.0.1"
- sources."json5-1.0.1"
- sources."jsprim-1.4.1"
- sources."kind-of-6.0.3"
- sources."levn-0.3.0"
- sources."locate-path-2.0.0"
- sources."lodash-4.17.15"
- sources."lodash.clone-4.5.0"
- sources."lodash.memoize-4.1.2"
- sources."lodash.sortby-4.7.0"
- sources."lodash.uniq-4.5.0"
- sources."log-symbols-2.2.0"
- sources."loose-envify-1.4.0"
- sources."lru-cache-4.1.5"
- sources."magic-string-0.22.5"
- sources."map-cache-0.2.2"
- sources."map-visit-1.0.0"
- sources."md5.js-1.3.5"
- sources."mdn-data-2.0.4"
- (sources."merge-source-map-1.0.4" // {
- dependencies = [
- sources."source-map-0.5.7"
- ];
- })
- sources."merge2-1.3.0"
- sources."micromatch-3.1.10"
- sources."miller-rabin-4.0.1"
- sources."mime-1.6.0"
- sources."mime-db-1.44.0"
- sources."mime-types-2.1.27"
- sources."mimic-fn-1.2.0"
- sources."minimalistic-assert-1.0.1"
- sources."minimalistic-crypto-utils-1.0.1"
- sources."minimatch-3.0.4"
- sources."minimist-1.2.5"
- (sources."mixin-deep-1.3.2" // {
- dependencies = [
- sources."is-extendable-1.0.1"
- ];
- })
- sources."mkdirp-0.5.5"
- sources."ms-2.1.2"
- sources."nan-2.14.1"
- sources."nanomatch-1.2.13"
- sources."nice-try-1.0.5"
- sources."node-addon-api-1.7.1"
- sources."node-elm-compiler-5.0.4"
- sources."node-forge-0.7.6"
- (sources."node-libs-browser-2.2.1" // {
- dependencies = [
- sources."punycode-1.4.1"
- ];
- })
- sources."node-releases-1.1.53"
- sources."nopt-4.0.3"
- sources."normalize-html-whitespace-1.0.0"
- sources."normalize-path-3.0.0"
- sources."normalize-url-3.3.0"
- sources."nth-check-1.0.2"
- sources."nwsapi-2.2.0"
- sources."oauth-sign-0.9.0"
- sources."object-assign-4.1.1"
- (sources."object-copy-0.1.0" // {
- dependencies = [
- sources."define-property-0.2.5"
- sources."kind-of-3.2.2"
- ];
- })
- sources."object-inspect-1.7.0"
- sources."object-keys-1.1.1"
- sources."object-visit-1.0.1"
- sources."object.assign-4.1.0"
- sources."object.getownpropertydescriptors-2.1.0"
- sources."object.pick-1.3.0"
- sources."object.values-1.1.1"
- sources."on-finished-2.3.0"
- sources."once-1.4.0"
- sources."onetime-2.0.1"
- sources."opn-5.5.0"
- sources."optionator-0.8.3"
- sources."ora-2.1.0"
- sources."os-browserify-0.3.0"
- sources."os-homedir-1.0.2"
- sources."os-tmpdir-1.0.2"
- sources."osenv-0.1.5"
- sources."p-limit-1.3.0"
- sources."p-locate-2.0.0"
- sources."p-try-1.0.0"
- sources."pako-0.2.9"
- (sources."parcel-bundler-1.12.3" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- sources."parse-asn1-5.1.5"
- sources."parse-json-4.0.0"
- sources."parse5-5.1.0"
- sources."parseurl-1.3.3"
- sources."pascalcase-0.1.1"
- sources."path-browserify-0.0.1"
- sources."path-dirname-1.0.2"
- sources."path-exists-3.0.0"
- sources."path-is-absolute-1.0.1"
- sources."path-key-2.0.1"
- sources."path-parse-1.0.6"
- sources."pbkdf2-3.0.17"
- sources."performance-now-2.1.0"
- sources."physical-cpu-count-2.0.0"
- sources."pkg-up-2.0.0"
- sources."pn-1.1.0"
- sources."posix-character-classes-0.1.1"
- sources."postcss-7.0.27"
- sources."postcss-calc-7.0.2"
- (sources."postcss-colormin-4.0.3" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-convert-values-4.0.1" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- sources."postcss-discard-comments-4.0.2"
- sources."postcss-discard-duplicates-4.0.2"
- sources."postcss-discard-empty-4.0.1"
- sources."postcss-discard-overridden-4.0.1"
- (sources."postcss-merge-longhand-4.0.11" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-merge-rules-4.0.3" // {
- dependencies = [
- sources."postcss-selector-parser-3.1.2"
- ];
- })
- (sources."postcss-minify-font-values-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-minify-gradients-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-minify-params-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-minify-selectors-4.0.2" // {
- dependencies = [
- sources."postcss-selector-parser-3.1.2"
- ];
- })
- (sources."postcss-modules-extract-imports-1.1.0" // {
- dependencies = [
- sources."postcss-6.0.23"
- sources."supports-color-5.5.0"
- ];
- })
- (sources."postcss-modules-local-by-default-1.2.0" // {
- dependencies = [
- sources."postcss-6.0.23"
- sources."supports-color-5.5.0"
- ];
- })
- (sources."postcss-modules-scope-1.1.0" // {
- dependencies = [
- sources."postcss-6.0.23"
- sources."supports-color-5.5.0"
- ];
- })
- (sources."postcss-modules-values-1.3.0" // {
- dependencies = [
- sources."postcss-6.0.23"
- sources."supports-color-5.5.0"
- ];
- })
- sources."postcss-normalize-charset-4.0.1"
- (sources."postcss-normalize-display-values-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-normalize-positions-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-normalize-repeat-style-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-normalize-string-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-normalize-timing-functions-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-normalize-unicode-4.0.1" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-normalize-url-4.0.1" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-normalize-whitespace-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- (sources."postcss-ordered-values-4.1.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- sources."postcss-reduce-initial-4.0.3"
- (sources."postcss-reduce-transforms-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- sources."postcss-selector-parser-6.0.2"
- (sources."postcss-svgo-4.0.2" // {
- dependencies = [
- sources."postcss-value-parser-3.3.1"
- ];
- })
- sources."postcss-unique-selectors-4.0.1"
- sources."postcss-value-parser-4.0.3"
- sources."posthtml-0.11.6"
- sources."posthtml-parser-0.4.2"
- sources."posthtml-render-1.2.2"
- sources."prelude-ls-1.1.2"
- sources."private-0.1.8"
- sources."process-0.11.10"
- sources."process-nextick-args-2.0.1"
- sources."proto-list-1.2.4"
- sources."pseudomap-1.0.2"
- sources."psl-1.8.0"
- sources."public-encrypt-4.0.3"
- sources."punycode-2.1.1"
- sources."purgecss-1.4.2"
- sources."q-1.5.1"
- sources."qs-6.5.2"
- sources."querystring-0.2.0"
- sources."querystring-es3-0.2.1"
- sources."quote-stream-1.0.2"
- sources."randombytes-2.1.0"
- sources."randomfill-1.0.4"
- sources."range-parser-1.2.1"
- sources."readable-stream-2.3.7"
- sources."readdirp-2.2.1"
- sources."regenerate-1.4.0"
- sources."regenerate-unicode-properties-8.2.0"
- sources."regenerator-runtime-0.13.5"
- (sources."regenerator-transform-0.14.4" // {
- dependencies = [
- sources."@babel/runtime-7.9.2"
- ];
- })
- sources."regex-not-1.0.2"
- sources."regexpu-core-4.7.0"
- sources."regjsgen-0.5.1"
- (sources."regjsparser-0.6.4" // {
- dependencies = [
- sources."jsesc-0.5.0"
- ];
- })
- sources."remove-trailing-separator-1.1.0"
- sources."repeat-element-1.1.3"
- sources."repeat-string-1.6.1"
- sources."request-2.88.2"
- sources."request-promise-core-1.1.3"
- sources."request-promise-native-1.0.8"
- sources."require-directory-2.1.1"
- sources."require-main-filename-2.0.0"
- sources."resolve-1.17.0"
- sources."resolve-from-3.0.0"
- sources."resolve-url-0.2.1"
- sources."restore-cursor-2.0.0"
- sources."ret-0.1.15"
- sources."rgb-regex-1.0.1"
- sources."rgba-regex-1.0.0"
- sources."rimraf-2.6.3"
- sources."ripemd160-2.0.2"
- sources."safe-buffer-5.1.2"
- sources."safe-regex-1.1.0"
- sources."safer-buffer-2.1.2"
- sources."safer-eval-1.3.6"
- sources."sax-1.2.4"
- sources."saxes-3.1.11"
- sources."semver-5.7.1"
- (sources."send-0.17.1" // {
- dependencies = [
- (sources."debug-2.6.9" // {
- dependencies = [
- sources."ms-2.0.0"
- ];
- })
- sources."ms-2.1.1"
- ];
- })
- sources."serialize-to-js-1.2.2"
- sources."serve-static-1.14.1"
- sources."set-blocking-2.0.0"
- (sources."set-value-2.0.1" // {
- dependencies = [
- sources."extend-shallow-2.0.1"
- ];
- })
- sources."setimmediate-1.0.5"
- sources."setprototypeof-1.1.1"
- sources."sha.js-2.4.11"
- sources."shallow-copy-0.0.1"
- sources."shebang-command-1.2.0"
- sources."shebang-regex-1.0.0"
- sources."sigmund-1.0.1"
- sources."signal-exit-3.0.3"
- (sources."simple-swizzle-0.2.2" // {
- dependencies = [
- sources."is-arrayish-0.3.2"
- ];
- })
- (sources."snapdragon-0.8.2" // {
- dependencies = [
- sources."debug-2.6.9"
- sources."define-property-0.2.5"
- sources."extend-shallow-2.0.1"
- sources."ms-2.0.0"
- sources."source-map-0.5.7"
- ];
- })
- (sources."snapdragon-node-2.1.1" // {
- dependencies = [
- sources."define-property-1.0.0"
- sources."is-accessor-descriptor-1.0.0"
- sources."is-data-descriptor-1.0.0"
- sources."is-descriptor-1.0.2"
- ];
- })
- (sources."snapdragon-util-3.0.1" // {
- dependencies = [
- sources."kind-of-3.2.2"
- ];
- })
- sources."source-map-0.6.1"
- sources."source-map-resolve-0.5.3"
- sources."source-map-support-0.5.19"
- sources."source-map-url-0.4.0"
- sources."split-string-3.1.0"
- sources."sprintf-js-1.0.3"
- sources."sshpk-1.16.1"
- sources."stable-0.1.8"
- (sources."static-eval-2.0.5" // {
- dependencies = [
- sources."escodegen-1.14.1"
- ];
- })
- (sources."static-extend-0.1.2" // {
- dependencies = [
- sources."define-property-0.2.5"
- ];
- })
- (sources."static-module-2.2.5" // {
- dependencies = [
- sources."object-inspect-1.4.1"
- ];
- })
- sources."statuses-1.5.0"
- sources."stealthy-require-1.1.1"
- sources."stream-browserify-2.0.2"
- sources."stream-http-2.8.3"
- (sources."string-width-3.1.0" // {
- dependencies = [
- sources."ansi-regex-4.1.0"
- sources."strip-ansi-5.2.0"
- ];
- })
- sources."string.prototype.trimend-1.0.1"
- sources."string.prototype.trimleft-2.1.2"
- sources."string.prototype.trimright-2.1.2"
- sources."string.prototype.trimstart-1.0.1"
- sources."string_decoder-1.1.1"
- sources."strip-ansi-4.0.0"
- (sources."stylehacks-4.0.3" // {
- dependencies = [
- sources."postcss-selector-parser-3.1.2"
- ];
- })
- sources."supports-color-6.1.0"
- sources."svgo-1.3.2"
- sources."symbol-tree-3.2.4"
- sources."temp-0.9.0"
- sources."terser-3.17.0"
- sources."through2-2.0.5"
- sources."timers-browserify-2.0.11"
- sources."timsort-0.3.0"
- sources."tiny-inflate-1.0.3"
- sources."to-arraybuffer-1.0.1"
- sources."to-fast-properties-2.0.0"
- (sources."to-object-path-0.3.0" // {
- dependencies = [
- sources."kind-of-3.2.2"
- ];
- })
- sources."to-regex-3.0.2"
- sources."to-regex-range-2.1.1"
- sources."toidentifier-1.0.0"
- sources."tough-cookie-2.5.0"
- sources."tr46-1.0.1"
- sources."trim-right-1.0.1"
- sources."tty-browserify-0.0.0"
- sources."tunnel-agent-0.6.0"
- sources."tweetnacl-0.14.5"
- sources."type-check-0.3.2"
- sources."typedarray-0.0.6"
- (sources."uncss-0.17.3" // {
- dependencies = [
- sources."is-absolute-url-3.0.3"
- ];
- })
- sources."unicode-canonical-property-names-ecmascript-1.0.4"
- sources."unicode-match-property-ecmascript-1.0.4"
- sources."unicode-match-property-value-ecmascript-1.2.0"
- sources."unicode-property-aliases-ecmascript-1.1.0"
- sources."unicode-trie-0.3.1"
- sources."union-value-1.0.1"
- sources."uniq-1.0.1"
- sources."uniqs-2.0.0"
- sources."unquote-1.1.1"
- (sources."unset-value-1.0.0" // {
- dependencies = [
- (sources."has-value-0.3.1" // {
- dependencies = [
- sources."isobject-2.1.0"
- ];
- })
- sources."has-values-0.1.4"
- ];
- })
- sources."upath-1.2.0"
- sources."uri-js-4.2.2"
- sources."urix-0.1.0"
- (sources."url-0.11.0" // {
- dependencies = [
- sources."punycode-1.3.2"
- ];
- })
- sources."use-3.1.1"
- (sources."util-0.11.1" // {
- dependencies = [
- sources."inherits-2.0.3"
- ];
- })
- sources."util-deprecate-1.0.2"
- sources."util.promisify-1.0.1"
- sources."uuid-3.4.0"
- sources."v8-compile-cache-2.1.0"
- sources."vendors-1.0.4"
- sources."verror-1.10.0"
- sources."vlq-0.2.3"
- sources."vm-browserify-1.1.2"
- sources."w3c-hr-time-1.0.2"
- sources."w3c-xmlserializer-1.1.2"
- sources."wcwidth-1.0.1"
- sources."webidl-conversions-4.0.2"
- sources."whatwg-encoding-1.0.5"
- sources."whatwg-mimetype-2.3.0"
- sources."whatwg-url-7.1.0"
- sources."which-1.3.1"
- sources."which-module-2.0.0"
- sources."word-wrap-1.2.3"
- (sources."wrap-ansi-5.1.0" // {
- dependencies = [
- sources."ansi-regex-4.1.0"
- sources."strip-ansi-5.2.0"
- ];
- })
- sources."wrappy-1.0.2"
- sources."ws-5.2.2"
- sources."xml-name-validator-3.0.0"
- sources."xmlchars-2.2.0"
- sources."xtend-4.0.2"
- sources."y18n-4.0.0"
- sources."yallist-2.1.2"
- (sources."yargs-14.2.3" // {
- dependencies = [
- sources."find-up-3.0.0"
- sources."locate-path-3.0.0"
- sources."p-limit-2.3.0"
- sources."p-locate-3.0.0"
- sources."p-try-2.2.0"
- ];
- })
- sources."yargs-parser-15.0.1"
- ];
- buildInputs = globalBuildInputs;
- meta = {
- license = "MIT";
- };
- production = false;
- bypassCache = true;
- reconstructLock = false;
- };
-in
-{
- args = args;
- sources = sources;
- tarball = nodeEnv.buildNodeSourceDist args;
- package = nodeEnv.buildNodePackage args;
- shell = nodeEnv.buildNodeShell args;
-}
diff --git a/modules/private/websites/tools/games/codenames/registry.dat b/modules/private/websites/tools/games/codenames/registry.dat
deleted file mode 100644
index a8585a8..0000000
Binary files a/modules/private/websites/tools/games/codenames/registry.dat and /dev/null differ
diff --git a/modules/private/websites/tools/games/codenames/shell.nix b/modules/private/websites/tools/games/codenames/shell.nix
deleted file mode 100644
index 053696b..0000000
--- a/modules/private/websites/tools/games/codenames/shell.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ pkgs ? import {} }: with pkgs;
-let
- greenapid = callPackage ./greenapid.nix {};
- frontend = callPackage ./frontend.nix {};
- nginx_conf = writeText "nginx.conf" ''
- pid ./nginx.pid;
- error_log stderr;
- daemon off;
- events {
- }
- http {
- include ${mailcap}/etc/nginx/mime.types;
- server {
- listen 0.0.0.0:8081;
- listen [::]:8081;
- location /api/ {
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header Host $host;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_pass http://127.0.0.1:8080/;
- }
- location / {
- root ${frontend};
- try_files $uri $uri/ /index.html;
- }
- }
- }
- '';
-in
-pkgs.mkShell {
- buildInputs = [
- greenapid
- frontend
- python2
- nginx
- ];
- shellHook = ''
- greenapid &
- pid=$!
-
- finish() {
- kill $pid;
- }
-
- trap finish EXIT
-
- nginx -c ${nginx_conf} -p ./nginx/
- exit
- '';
-}
diff --git a/modules/private/websites/tools/games/codenames/wordlists/french.txt b/modules/private/websites/tools/games/codenames/wordlists/french.txt
deleted file mode 100644
index 462ddc4..0000000
--- a/modules/private/websites/tools/games/codenames/wordlists/french.txt
+++ /dev/null
@@ -1,694 +0,0 @@
-ACCIDENT
-ACHAT
-ACNÉ
-ACTION
-ADOLESCENT
-AFRIQUE
-AIGUILLE
-ALLUMER
-ALPES
-ALPHABET
-ALTITUDE
-AMÉRIQUE
-AMI
-AMOUR
-AMPOULE
-ANNIVERSAIRE
-APPÉTIT
-ARAIGNÉE
-ARBRE
-ARC
-ARC-EN-CIEL
-ARGENT
-ARME
-ARMÉE
-ASCENSEUR
-ASIE
-ASSIS
-ASTRONAUTE
-ATCHOUM
-ATHLÈTE
-ATLANTIDE
-AUBE
-AUSTRALIE
-AVEC
-AVENTURE
-AVION
-AVOCAT
-BAC
-BAGUETTE
-BAIN
-BAISER
-BALAI
-BALLE
-BALLON
-BAMBOU
-BANANE
-BANNIR
-BARBE
-BARRIÈRE
-BAS
-BASKET
-BATEAU
-BÂTON
-BATTERIE
-BÉBÉ
-BEETHOVEN
-BÊTE
-BIBERON
-BIÈRE
-BLANC
-BLÉ
-BLEU
-BOB
-BOISSON
-BOÎTE
-BOMBE
-BONBON
-BONNET
-BORD
-BORDEAUX
-BOTTE
-BOUE
-BOUGIE
-BOULE
-BOUTEILLE
-BOUTON
-BRANCHE
-BRAS
-BRAVO
-BRETAGNE
-BRISE
-BROSSE
-BRUIT
-BRUME
-BRUN
-BÛCHE
-BULLE
-BUREAU
-BUT
-CABANE
-CABINE
-CACHER
-CADEAU
-CAFARD
-CAFÉ
-CAISSE
-CALCULER
-CALME
-CAMÉRA
-CAMION
-CAMPING
-CANADA
-CANARD
-CANETTE
-CANINE
-CAP
-CAPITALISME
-CAR
-CAROTTE
-CARRÉ
-CARTE
-CARTON
-CASQUE
-CASSER
-CASSETTE
-CAUCHEMAR
-CAUSE
-CEINTURE
-CELLULE
-CERCLE
-CHAÎNE
-CHAIR
-CHAISE
-CHAMP
-CHAMPION
-CHANT
-CHAPEAU
-CHARBON
-CHARGE
-CHASSE
-CHAT
-CHÂTEAU
-CHAUD
-CHAUSSURE
-CHAUVE
-CHEF
-CHEMISE
-CHÊNE
-CHER
-CHEVAL
-CHEVALIER
-CHEVEU
-CHIEN
-CHIFFRE
-CHINE
-CHOCOLAT
-CHÔMAGE
-CIEL
-CIL
-CINÉMA
-CIRE
-CIRQUE
-CITRON
-CLÉ
-CLOU
-CLOWN
-COACH
-COCCINELLE
-CODE
-CŒUR
-COL
-COLLE
-COLLINE
-COLONNE
-CÔNE
-CONFORT
-CONTINU
-CONTRE
-CONVERSATION
-COPAIN
-COQ
-COQUILLAGE
-CORBEAU
-CORDE
-CORPS
-CÔTE
-COUDE
-COULOIR
-COUP
-COUR
-COURANT
-COURRIER
-COURS
-COURSE
-COURT
-COUTEAU
-COUVERT
-COUVERTURE
-COWBOY
-CRAC
-CRAYON
-CRÈME
-CRITIQUE
-CROCHET
-CROIX
-CROÛTE
-CUILLÈRE
-CUIR
-CUISINE
-CULOTTE
-CYCLE
-DARD
-DÉ
-DEBOUT
-DÉFAUT
-DEHORS
-DÉMOCRATIE
-DENT
-DENTISTE
-DESSIN
-DEVOIR
-DIAMANT
-DICTIONNAIRE
-DIEU
-DINOSAURE
-DISCOURS
-DISQUE
-DIX
-DOCTEUR
-DOIGT
-DOMINO
-DORMIR
-DROIT
-EAU
-ÉCHEC
-ÉCHELLE
-ÉCLAIR
-ÉCOLE
-ÉCRAN
-ÉCRASER
-ÉCRIT
-ÉGLISE
-ÉGOUT
-ÉLECTRICITÉ
-ÉLÉPHANT
-ÉLÈVE
-ELFE
-EMPREINTE
-ENCEINTE
-ÉPICE
-ÉPINE
-ERREUR
-ESPACE
-ESPION
-ESSENCE
-ÉTAT
-ÉTÉ
-ÉTOILE
-ÉTRANGER
-ÉVENTAIL
-ÉVOLUTION
-EXPLOSION
-EXTENSION
-FACE
-FAN
-FARCE
-FATIGUE
-FAUTEUIL
-FEMME
-FENÊTRE
-FER
-FÊTE
-FEU
-FEUILLE
-FIDÈLE
-FIL
-FILLE
-FLAMME
-FLÈCHE
-FLEUR
-FLEUVE
-FOND
-FOOTBALL
-FORÊT
-FORGER
-FOUDRE
-FOUET
-FOUR
-FOURMI
-FROID
-FROMAGE
-FRONT
-FRUIT
-FUIR
-FUTUR
-GARÇON
-GÂTEAU
-GAUCHE
-GAZ
-GAZON
-GEL
-GENOU
-GLACE
-GOMME
-GORGE
-GOUTTE
-GRAND
-GRÈCE
-GRENOUILLE
-GRIPPE
-GRIS
-GROS
-GROUPE
-GUITARE
-HASARD
-HAUT
-HÉLICOPTÈRE
-HERBE
-HEUREUX
-HISTOIRE
-HIVER
-HÔTEL
-HUGO
-HUILE
-HUMIDE
-HUMOUR
-INDICE
-INTERNET
-INVITER
-ITALIE
-JACQUES
-JAMBE
-JAMBON
-JARDIN
-JAUNE
-JEAN
-JEANNE
-JET
-JEU
-JOGGING
-JOUR
-JOURNAL
-JUPITER
-KILO
-KIWI
-LAINE
-LAIT
-LANGUE
-LAPIN
-LATIN
-LAVER
-LECTEUR
-LÉGER
-LENT
-LETTRE
-LIEN
-LIGNE
-LINGE
-LION
-LIT
-LIVRE
-LOI
-LONG
-LOUIS
-LOUP
-LUMIÈRE
-LUNDI
-LUNE
-LUNETTE
-MACHINE
-MACHO
-MAIN
-MAISON
-MAÎTRESSE
-MAL
-MALADIE
-MAMAN
-MAMMOUTH
-MANGER
-MARAIS
-MARC
-MARCHE
-MARIAGE
-MARIE
-MARIÉE
-MARQUE
-MARSEILLE
-MASSE
-MER
-MESSE
-MÈTRE
-MÉTRO
-MIAOU
-MICRO
-MIEUX
-MILLE
-MINE
-MIROIR
-MODERNE
-MOITIÉ
-MONDE
-MONSTRE
-MONTAGNE
-MONTRE
-MORT
-MOTEUR
-MOTO
-MOU
-MOUCHE
-MOULIN
-MOUSTACHE
-MOUTON
-MUR
-MUSCLE
-MUSIQUE
-MYSTÈRE
-NAGE
-NATURE
-NEIGE
-NEUTRE
-NEW YORK
-NEZ
-NID
-NINJA
-NIVEAU
-NOËL
-NŒUD
-NOIR
-NOUS
-NUAGE
-NUIT
-NUMÉRO
-ŒIL
-ŒUF
-OISEAU
-OLYMPIQUE
-OMBRE
-ONGLE
-OR
-ORAL
-ORANGE
-ORDINATEUR
-ORDRE
-ORDURE
-OREILLE
-ORGANE
-ORGUEIL
-OURS
-OUTIL
-OUVERT
-OVALE
-PAIN
-PALAIS
-PANNEAU
-PANTALON
-PANTIN
-PAPA
-PAPIER
-PAPILLON
-PARADIS
-PARC
-PARIS
-PAROLE
-PARTIE
-PASSE
-PÂTE
-PATIN
-PATTE
-PAUL
-PAYER
-PÊCHE
-PEINTURE
-PENDULE
-PENSER
-PERSONNE
-PETIT
-PEUR
-PHILOSOPHE
-PHOTO
-PHRASE
-PIANO
-PIÈCE
-PIED
-PIERRE
-PILE
-PILOTE
-PINCE
-PIOCHE
-PION
-PIRATE
-PIRE
-PISCINE
-PLACE
-PLAFOND
-PLAGE
-PLAIE
-PLAN
-PLANCHE
-PLANÈTE
-PLANTE
-PLASTIQUE
-PLAT
-PLOMB
-PLONGER
-PLUIE
-POCHE
-POÈTE
-POIDS
-POING
-POINT
-POIVRE
-POLICE
-POLITIQUE
-POLLEN
-POLO
-POMME
-POMPE
-PONT
-POPULATION
-PORT
-PORTE
-PORTEFEUILLE
-POSITIF
-POSTE
-POUBELLE
-POULE
-POUPÉE
-POUSSER
-POUSSIÈRE
-POUVOIR
-PRÉHISTOIRE
-PREMIER
-PRÉSENT
-PRESSE
-PRIER
-PRINCESSE
-PRISE
-PRIVÉ
-PROFESSEUR
-PSYCHOLOGIE
-PUBLIC
-PULL
-PUNK
-PUZZLE
-PYJAMA
-QUATRE
-QUINZE
-RACE
-RADIO
-RAISIN
-RAP
-RAYÉ
-RAYON
-RÉFLÉCHIR
-REINE
-REPAS
-REPTILE
-REQUIN
-RÊVE
-RICHE
-RIDEAU
-RIEN
-RIRE
-ROBINET
-ROCHE
-ROI
-ROND
-ROSE
-ROUE
-ROUGE
-ROUILLE
-ROUX
-RUSSIE
-SABLE
-SABRE
-SAC
-SAIN
-SAISON
-SALE
-SALLE
-SALUT
-SAMU
-SANDWICH
-SANG
-SAPIN
-SATELLITE
-SAUMON
-SAUT
-SAVOIR
-SCHTROUMPF
-SCIENCE
-SCOUT
-SEC
-SEINE
-SEL
-SEPT
-SERPENT
-SERRER
-SEXE
-SHAMPOOING
-SIÈCLE
-SIÈGE
-SIESTE
-SILHOUETTE
-SIRÈNE
-SKI
-SOLEIL
-SOMMEIL
-SON
-SONNER
-SORCIÈRE
-SOURD
-SOURIS
-SPORT
-STAR
-STATION
-STYLO
-SUR
-SURFACE
-SUSHI
-SWING
-TABLEAU
-TACHE
-TAILLE
-TANTE
-TAPIS
-TARD
-TAXI
-TÉLÉPHONE
-TÉLÉVISION
-TEMPLE
-TEMPS
-TENNIS
-TÊTE
-THÉ
-TIGRE
-TINTIN
-TISSU
-TITRE
-TOAST
-TOILETTE
-TOKYO
-TOMBE
-TON
-TOP
-TOUCHE
-TOUJOURS
-TOUR
-TOURNOI
-TOUT
-TRACE
-TRAIN
-TRAÎNER
-TRANSPORT
-TRAVAIL
-TRÉSOR
-TRIANGLE
-TRISTE
-TRÔNE
-TROUPEAU
-TSAR
-TUBE
-TUER
-TUPPERWARE
-TUYAU
-TWITTER
-TYPE
-UNIVERSITÉ
-VACHE
-VAGUE
-VAISSELLE
-VALEUR
-VER
-VERDICT
-VERRE
-VERS
-VERT
-VESTE
-VIANDE
-VIDE
-VIE
-VIEUX
-VILLE
-VIN
-VINGT
-VIOLON
-VIPÈRE
-VISION
-VITE
-VIVE
-VŒU
-VOILE
-VOISIN
-VOITURE
-VOL
-VOLUME
-VOTE
-VOULOIR
-VOYAGE
-ZEN
-ZÉRO
-ZODIAQUE
-ZONE
-ZOO
diff --git a/modules/private/websites/tools/games/terraforming-mars/default.nix b/modules/private/websites/tools/games/terraforming-mars/default.nix
deleted file mode 100644
index 0df5363..0000000
--- a/modules/private/websites/tools/games/terraforming-mars/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ config, lib, pkgs, ... }:
-let
- cfg = config.myServices.websites.games.terraforming-mars;
- terraforming-mars = pkgs.callPackage ./terraforming-mars.nix {};
-in
-{
- options.myServices.websites.games.terraforming-mars.enable = lib.mkEnableOption "Enable Terraforming mars game";
- config = lib.mkIf cfg.enable {
- systemd.services.terraforming-mars = {
- path = [ pkgs.nodejs pkgs.bashInteractive ];
- description = "Terraforming mars game";
- wantedBy = [ "multi-user.target" ];
- script = ''
- export PORT=/run/terraforming-mars/socket.sock
- export NODE_ENV=production
- mkdir -p /var/lib/terraforming-mars/db
- npm run start
- '';
- postStart = ''
- sleep 5;
- chown :wwwrun /run/terraforming-mars/socket.sock
- chmod g+w /run/terraforming-mars/socket.sock
- '';
- serviceConfig = {
- User = "terraformingmars";
- DynamicUser = true;
- SupplementaryGroups = [ "wwwrun" ];
- Type = "simple";
- WorkingDirectory = terraforming-mars;
- RuntimeDirectory = "terraforming-mars";
- StateDirectory = "terraforming-mars";
- };
- };
-
- services.websites.env.tools.vhostConfs.games_terraforming-mars = {
- certName = "games";
- certMainHost = "games.immae.eu";
- hosts = [ "terraforming-mars.games.immae.eu" ];
- root = null;
- extraConfig = [
- ''
- ProxyPass / unix:///run/terraforming-mars/socket.sock|http://terraforming-mars.games.immae.eu/
- ProxyPassReverse / unix:///run/terraforming-mars/socket.sock|http://terraforming-mars.games.immae.eu/
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/tools/games/terraforming-mars/node-packages.nix b/modules/private/websites/tools/games/terraforming-mars/node-packages.nix
deleted file mode 100644
index e5fac49..0000000
--- a/modules/private/websites/tools/games/terraforming-mars/node-packages.nix
+++ /dev/null
@@ -1,4353 +0,0 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
-
-{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? [], src}:
-
-let
- sources = {
- "@babel/code-frame-7.12.13" = {
- name = "_at_babel_slash_code-frame";
- packageName = "@babel/code-frame";
- version = "7.12.13";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz";
- sha512 = "HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==";
- };
- };
- "@babel/helper-validator-identifier-7.12.11" = {
- name = "_at_babel_slash_helper-validator-identifier";
- packageName = "@babel/helper-validator-identifier";
- version = "7.12.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz";
- sha512 = "np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==";
- };
- };
- "@babel/highlight-7.13.10" = {
- name = "_at_babel_slash_highlight";
- packageName = "@babel/highlight";
- version = "7.13.10";
- src = fetchurl {
- url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz";
- sha512 = "5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==";
- };
- };
- "@discoveryjs/json-ext-0.5.2" = {
- name = "_at_discoveryjs_slash_json-ext";
- packageName = "@discoveryjs/json-ext";
- version = "0.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz";
- sha512 = "HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==";
- };
- };
- "@nodelib/fs.scandir-2.1.4" = {
- name = "_at_nodelib_slash_fs.scandir";
- packageName = "@nodelib/fs.scandir";
- version = "2.1.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz";
- sha512 = "33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==";
- };
- };
- "@nodelib/fs.stat-2.0.4" = {
- name = "_at_nodelib_slash_fs.stat";
- packageName = "@nodelib/fs.stat";
- version = "2.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz";
- sha512 = "IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==";
- };
- };
- "@nodelib/fs.walk-1.2.6" = {
- name = "_at_nodelib_slash_fs.walk";
- packageName = "@nodelib/fs.walk";
- version = "1.2.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz";
- sha512 = "8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==";
- };
- };
- "@types/eslint-7.2.10" = {
- name = "_at_types_slash_eslint";
- packageName = "@types/eslint";
- version = "7.2.10";
- src = fetchurl {
- url = "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.10.tgz";
- sha512 = "kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ==";
- };
- };
- "@types/eslint-scope-3.7.0" = {
- name = "_at_types_slash_eslint-scope";
- packageName = "@types/eslint-scope";
- version = "3.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz";
- sha512 = "O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==";
- };
- };
- "@types/estree-0.0.46" = {
- name = "_at_types_slash_estree";
- packageName = "@types/estree";
- version = "0.0.46";
- src = fetchurl {
- url = "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz";
- sha512 = "laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==";
- };
- };
- "@types/json-schema-7.0.7" = {
- name = "_at_types_slash_json-schema";
- packageName = "@types/json-schema";
- version = "7.0.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz";
- sha512 = "cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==";
- };
- };
- "@types/node-10.17.58" = {
- name = "_at_types_slash_node";
- packageName = "@types/node";
- version = "10.17.58";
- src = fetchurl {
- url = "https://registry.npmjs.org/@types/node/-/node-10.17.58.tgz";
- sha512 = "Dn5RBxLohjdHFj17dVVw3rtrZAeXeWg+LQfvxDIW/fdPkSiuQk7h3frKMYtsQhtIW42wkErDcy9UMVxhGW4O7w==";
- };
- };
- "@types/pg-7.14.11" = {
- name = "_at_types_slash_pg";
- packageName = "@types/pg";
- version = "7.14.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/@types/pg/-/pg-7.14.11.tgz";
- sha512 = "EnZkZ1OMw9DvNfQkn2MTJrwKmhJYDEs5ujWrPfvseWNoI95N8B4HzU/Ltrq5ZfYxDX/Zg8mTzwr6UAyTjjFvXA==";
- };
- };
- "@types/sqlite3-3.1.7" = {
- name = "_at_types_slash_sqlite3";
- packageName = "@types/sqlite3";
- version = "3.1.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/@types/sqlite3/-/sqlite3-3.1.7.tgz";
- sha512 = "8FHV/8Uzd7IwdHm5mvmF2Aif4aC/gjrt4axWD9SmfaxITnOjtOhCbOSTuqv/VbH1uq0QrwlaTj9aTz3gmR6u4w==";
- };
- };
- "@typescript-eslint/eslint-plugin-4.22.0" = {
- name = "_at_typescript-eslint_slash_eslint-plugin";
- packageName = "@typescript-eslint/eslint-plugin";
- version = "4.22.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.0.tgz";
- sha512 = "U8SP9VOs275iDXaL08Ln1Fa/wLXfj5aTr/1c0t0j6CdbOnxh+TruXu1p4I0NAvdPBQgoPjHsgKn28mOi0FzfoA==";
- };
- };
- "@typescript-eslint/experimental-utils-4.22.0" = {
- name = "_at_typescript-eslint_slash_experimental-utils";
- packageName = "@typescript-eslint/experimental-utils";
- version = "4.22.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.0.tgz";
- sha512 = "xJXHHl6TuAxB5AWiVrGhvbGL8/hbiCQ8FiWwObO3r0fnvBdrbWEDy1hlvGQOAWc6qsCWuWMKdVWlLAEMpxnddg==";
- };
- };
- "@typescript-eslint/parser-4.22.0" = {
- name = "_at_typescript-eslint_slash_parser";
- packageName = "@typescript-eslint/parser";
- version = "4.22.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.22.0.tgz";
- sha512 = "z/bGdBJJZJN76nvAY9DkJANYgK3nlRstRRi74WHm3jjgf2I8AglrSY+6l7ogxOmn55YJ6oKZCLLy+6PW70z15Q==";
- };
- };
- "@typescript-eslint/scope-manager-4.22.0" = {
- name = "_at_typescript-eslint_slash_scope-manager";
- packageName = "@typescript-eslint/scope-manager";
- version = "4.22.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.22.0.tgz";
- sha512 = "OcCO7LTdk6ukawUM40wo61WdeoA7NM/zaoq1/2cs13M7GyiF+T4rxuA4xM+6LeHWjWbss7hkGXjFDRcKD4O04Q==";
- };
- };
- "@typescript-eslint/types-4.22.0" = {
- name = "_at_typescript-eslint_slash_types";
- packageName = "@typescript-eslint/types";
- version = "4.22.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.22.0.tgz";
- sha512 = "sW/BiXmmyMqDPO2kpOhSy2Py5w6KvRRsKZnV0c4+0nr4GIcedJwXAq+RHNK4lLVEZAJYFltnnk1tJSlbeS9lYA==";
- };
- };
- "@typescript-eslint/typescript-estree-4.22.0" = {
- name = "_at_typescript-eslint_slash_typescript-estree";
- packageName = "@typescript-eslint/typescript-estree";
- version = "4.22.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.0.tgz";
- sha512 = "TkIFeu5JEeSs5ze/4NID+PIcVjgoU3cUQUIZnH3Sb1cEn1lBo7StSV5bwPuJQuoxKXlzAObjYTilOEKRuhR5yg==";
- };
- };
- "@typescript-eslint/visitor-keys-4.22.0" = {
- name = "_at_typescript-eslint_slash_visitor-keys";
- packageName = "@typescript-eslint/visitor-keys";
- version = "4.22.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.0.tgz";
- sha512 = "nnMu4F+s4o0sll6cBSsTeVsT4cwxB7zECK3dFxzEjPBii9xLpq4yqqsy/FU5zMfan6G60DKZSCXAa3sHJZrcYw==";
- };
- };
- "@webassemblyjs/ast-1.11.0" = {
- name = "_at_webassemblyjs_slash_ast";
- packageName = "@webassemblyjs/ast";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz";
- sha512 = "kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==";
- };
- };
- "@webassemblyjs/floating-point-hex-parser-1.11.0" = {
- name = "_at_webassemblyjs_slash_floating-point-hex-parser";
- packageName = "@webassemblyjs/floating-point-hex-parser";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz";
- sha512 = "Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==";
- };
- };
- "@webassemblyjs/helper-api-error-1.11.0" = {
- name = "_at_webassemblyjs_slash_helper-api-error";
- packageName = "@webassemblyjs/helper-api-error";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz";
- sha512 = "baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==";
- };
- };
- "@webassemblyjs/helper-buffer-1.11.0" = {
- name = "_at_webassemblyjs_slash_helper-buffer";
- packageName = "@webassemblyjs/helper-buffer";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz";
- sha512 = "u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==";
- };
- };
- "@webassemblyjs/helper-numbers-1.11.0" = {
- name = "_at_webassemblyjs_slash_helper-numbers";
- packageName = "@webassemblyjs/helper-numbers";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz";
- sha512 = "DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==";
- };
- };
- "@webassemblyjs/helper-wasm-bytecode-1.11.0" = {
- name = "_at_webassemblyjs_slash_helper-wasm-bytecode";
- packageName = "@webassemblyjs/helper-wasm-bytecode";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz";
- sha512 = "MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==";
- };
- };
- "@webassemblyjs/helper-wasm-section-1.11.0" = {
- name = "_at_webassemblyjs_slash_helper-wasm-section";
- packageName = "@webassemblyjs/helper-wasm-section";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz";
- sha512 = "3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==";
- };
- };
- "@webassemblyjs/ieee754-1.11.0" = {
- name = "_at_webassemblyjs_slash_ieee754";
- packageName = "@webassemblyjs/ieee754";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz";
- sha512 = "KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==";
- };
- };
- "@webassemblyjs/leb128-1.11.0" = {
- name = "_at_webassemblyjs_slash_leb128";
- packageName = "@webassemblyjs/leb128";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz";
- sha512 = "aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==";
- };
- };
- "@webassemblyjs/utf8-1.11.0" = {
- name = "_at_webassemblyjs_slash_utf8";
- packageName = "@webassemblyjs/utf8";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz";
- sha512 = "A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==";
- };
- };
- "@webassemblyjs/wasm-edit-1.11.0" = {
- name = "_at_webassemblyjs_slash_wasm-edit";
- packageName = "@webassemblyjs/wasm-edit";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz";
- sha512 = "JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==";
- };
- };
- "@webassemblyjs/wasm-gen-1.11.0" = {
- name = "_at_webassemblyjs_slash_wasm-gen";
- packageName = "@webassemblyjs/wasm-gen";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz";
- sha512 = "BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==";
- };
- };
- "@webassemblyjs/wasm-opt-1.11.0" = {
- name = "_at_webassemblyjs_slash_wasm-opt";
- packageName = "@webassemblyjs/wasm-opt";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz";
- sha512 = "tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==";
- };
- };
- "@webassemblyjs/wasm-parser-1.11.0" = {
- name = "_at_webassemblyjs_slash_wasm-parser";
- packageName = "@webassemblyjs/wasm-parser";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz";
- sha512 = "6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==";
- };
- };
- "@webassemblyjs/wast-printer-1.11.0" = {
- name = "_at_webassemblyjs_slash_wast-printer";
- packageName = "@webassemblyjs/wast-printer";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz";
- sha512 = "Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==";
- };
- };
- "@webpack-cli/configtest-1.0.2" = {
- name = "_at_webpack-cli_slash_configtest";
- packageName = "@webpack-cli/configtest";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.2.tgz";
- sha512 = "3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==";
- };
- };
- "@webpack-cli/info-1.2.3" = {
- name = "_at_webpack-cli_slash_info";
- packageName = "@webpack-cli/info";
- version = "1.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.3.tgz";
- sha512 = "lLek3/T7u40lTqzCGpC6CAbY6+vXhdhmwFRxZLMnRm6/sIF/7qMpT8MocXCRQfz0JAh63wpbXLMnsQ5162WS7Q==";
- };
- };
- "@webpack-cli/serve-1.3.1" = {
- name = "_at_webpack-cli_slash_serve";
- packageName = "@webpack-cli/serve";
- version = "1.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.1.tgz";
- sha512 = "0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==";
- };
- };
- "@xtuc/ieee754-1.2.0" = {
- name = "_at_xtuc_slash_ieee754";
- packageName = "@xtuc/ieee754";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz";
- sha512 = "DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==";
- };
- };
- "@xtuc/long-4.2.2" = {
- name = "_at_xtuc_slash_long";
- packageName = "@xtuc/long";
- version = "4.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz";
- sha512 = "NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==";
- };
- };
- "abbrev-1.1.1" = {
- name = "abbrev";
- packageName = "abbrev";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
- sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
- };
- };
- "acorn-7.4.1" = {
- name = "acorn";
- packageName = "acorn";
- version = "7.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz";
- sha512 = "nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==";
- };
- };
- "acorn-8.1.1" = {
- name = "acorn";
- packageName = "acorn";
- version = "8.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/acorn/-/acorn-8.1.1.tgz";
- sha512 = "xYiIVjNuqtKXMxlRMDc6mZUhXehod4a3gbZ1qRlM7icK4EbxUFNLhWoPblCvFtB2Y9CIqHP3CF/rdxLItaQv8g==";
- };
- };
- "acorn-jsx-5.3.1" = {
- name = "acorn-jsx";
- packageName = "acorn-jsx";
- version = "5.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz";
- sha512 = "K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==";
- };
- };
- "ajv-6.12.6" = {
- name = "ajv";
- packageName = "ajv";
- version = "6.12.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz";
- sha512 = "j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==";
- };
- };
- "ajv-keywords-3.5.2" = {
- name = "ajv-keywords";
- packageName = "ajv-keywords";
- version = "3.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz";
- sha512 = "5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==";
- };
- };
- "ansi-colors-4.1.1" = {
- name = "ansi-colors";
- packageName = "ansi-colors";
- version = "4.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz";
- sha512 = "JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==";
- };
- };
- "ansi-escapes-4.3.2" = {
- name = "ansi-escapes";
- packageName = "ansi-escapes";
- version = "4.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz";
- sha512 = "gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==";
- };
- };
- "ansi-regex-2.1.1" = {
- name = "ansi-regex";
- packageName = "ansi-regex";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
- sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
- };
- };
- "ansi-regex-3.0.0" = {
- name = "ansi-regex";
- packageName = "ansi-regex";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
- sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
- };
- };
- "ansi-regex-4.1.0" = {
- name = "ansi-regex";
- packageName = "ansi-regex";
- version = "4.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz";
- sha512 = "1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==";
- };
- };
- "ansi-regex-5.0.0" = {
- name = "ansi-regex";
- packageName = "ansi-regex";
- version = "5.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz";
- sha512 = "bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==";
- };
- };
- "ansi-styles-3.2.1" = {
- name = "ansi-styles";
- packageName = "ansi-styles";
- version = "3.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz";
- sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==";
- };
- };
- "ansi-styles-4.3.0" = {
- name = "ansi-styles";
- packageName = "ansi-styles";
- version = "4.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz";
- sha512 = "zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==";
- };
- };
- "aproba-1.2.0" = {
- name = "aproba";
- packageName = "aproba";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
- sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==";
- };
- };
- "are-we-there-yet-1.1.5" = {
- name = "are-we-there-yet";
- packageName = "are-we-there-yet";
- version = "1.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
- sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==";
- };
- };
- "argparse-1.0.10" = {
- name = "argparse";
- packageName = "argparse";
- version = "1.0.10";
- src = fetchurl {
- url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
- sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
- };
- };
- "array-union-2.1.0" = {
- name = "array-union";
- packageName = "array-union";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz";
- sha512 = "HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==";
- };
- };
- "asn1-0.2.4" = {
- name = "asn1";
- packageName = "asn1";
- version = "0.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
- sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
- };
- };
- "assert-plus-1.0.0" = {
- name = "assert-plus";
- packageName = "assert-plus";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
- sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
- };
- };
- "astral-regex-1.0.0" = {
- name = "astral-regex";
- packageName = "astral-regex";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz";
- sha512 = "+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==";
- };
- };
- "asynckit-0.4.0" = {
- name = "asynckit";
- packageName = "asynckit";
- version = "0.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
- sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
- };
- };
- "aws-sign2-0.7.0" = {
- name = "aws-sign2";
- packageName = "aws-sign2";
- version = "0.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
- sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
- };
- };
- "aws4-1.11.0" = {
- name = "aws4";
- packageName = "aws4";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz";
- sha512 = "xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==";
- };
- };
- "balanced-match-1.0.2" = {
- name = "balanced-match";
- packageName = "balanced-match";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz";
- sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==";
- };
- };
- "bcrypt-pbkdf-1.0.2" = {
- name = "bcrypt-pbkdf";
- packageName = "bcrypt-pbkdf";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
- sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
- };
- };
- "block-stream-0.0.9" = {
- name = "block-stream";
- packageName = "block-stream";
- version = "0.0.9";
- src = fetchurl {
- url = "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz";
- sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
- };
- };
- "brace-expansion-1.1.11" = {
- name = "brace-expansion";
- packageName = "brace-expansion";
- version = "1.1.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
- sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
- };
- };
- "braces-3.0.2" = {
- name = "braces";
- packageName = "braces";
- version = "3.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz";
- sha512 = "b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==";
- };
- };
- "browserslist-4.16.4" = {
- name = "browserslist";
- packageName = "browserslist";
- version = "4.16.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/browserslist/-/browserslist-4.16.4.tgz";
- sha512 = "d7rCxYV8I9kj41RH8UKYnvDYCRENUlHRgyXy/Rhr/1BaeLGfiCptEdFE8MIrvGfWbBFNjVYx76SQWvNX1j+/cQ==";
- };
- };
- "buffer-from-1.1.1" = {
- name = "buffer-from";
- packageName = "buffer-from";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz";
- sha512 = "MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==";
- };
- };
- "buffer-writer-2.0.0" = {
- name = "buffer-writer";
- packageName = "buffer-writer";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz";
- sha512 = "a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==";
- };
- };
- "callsites-3.1.0" = {
- name = "callsites";
- packageName = "callsites";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz";
- sha512 = "P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==";
- };
- };
- "caniuse-lite-1.0.30001209" = {
- name = "caniuse-lite";
- packageName = "caniuse-lite";
- version = "1.0.30001209";
- src = fetchurl {
- url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001209.tgz";
- sha512 = "2Ktt4OeRM7EM/JaOZjuLzPYAIqmbwQMNnYbgooT+icoRGrKOyAxA1xhlnotBD1KArRSPsuJp3TdYcZYrL7qNxA==";
- };
- };
- "caseless-0.12.0" = {
- name = "caseless";
- packageName = "caseless";
- version = "0.12.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
- sha1 = "1b681c21ff84033c826543090689420d187151dc";
- };
- };
- "chalk-2.4.2" = {
- name = "chalk";
- packageName = "chalk";
- version = "2.4.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz";
- sha512 = "Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==";
- };
- };
- "chalk-4.1.0" = {
- name = "chalk";
- packageName = "chalk";
- version = "4.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz";
- sha512 = "qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==";
- };
- };
- "chardet-0.7.0" = {
- name = "chardet";
- packageName = "chardet";
- version = "0.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz";
- sha512 = "mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==";
- };
- };
- "chownr-1.1.4" = {
- name = "chownr";
- packageName = "chownr";
- version = "1.1.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz";
- sha512 = "jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==";
- };
- };
- "chrome-trace-event-1.0.3" = {
- name = "chrome-trace-event";
- packageName = "chrome-trace-event";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz";
- sha512 = "p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==";
- };
- };
- "cli-cursor-3.1.0" = {
- name = "cli-cursor";
- packageName = "cli-cursor";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz";
- sha512 = "I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==";
- };
- };
- "cli-width-3.0.0" = {
- name = "cli-width";
- packageName = "cli-width";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz";
- sha512 = "FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==";
- };
- };
- "clone-deep-4.0.1" = {
- name = "clone-deep";
- packageName = "clone-deep";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz";
- sha512 = "neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==";
- };
- };
- "code-point-at-1.1.0" = {
- name = "code-point-at";
- packageName = "code-point-at";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
- sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
- };
- };
- "color-convert-1.9.3" = {
- name = "color-convert";
- packageName = "color-convert";
- version = "1.9.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz";
- sha512 = "QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==";
- };
- };
- "color-convert-2.0.1" = {
- name = "color-convert";
- packageName = "color-convert";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz";
- sha512 = "RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==";
- };
- };
- "color-name-1.1.3" = {
- name = "color-name";
- packageName = "color-name";
- version = "1.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
- sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
- };
- };
- "color-name-1.1.4" = {
- name = "color-name";
- packageName = "color-name";
- version = "1.1.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz";
- sha512 = "dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==";
- };
- };
- "colorette-1.2.2" = {
- name = "colorette";
- packageName = "colorette";
- version = "1.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz";
- sha512 = "MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==";
- };
- };
- "combined-stream-1.0.8" = {
- name = "combined-stream";
- packageName = "combined-stream";
- version = "1.0.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
- sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
- };
- };
- "commander-2.20.3" = {
- name = "commander";
- packageName = "commander";
- version = "2.20.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
- sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==";
- };
- };
- "commander-7.2.0" = {
- name = "commander";
- packageName = "commander";
- version = "7.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz";
- sha512 = "QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==";
- };
- };
- "compression-webpack-plugin-7.1.2" = {
- name = "compression-webpack-plugin";
- packageName = "compression-webpack-plugin";
- version = "7.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-7.1.2.tgz";
- sha512 = "9DKNW6ILLjx+bNBoviHDgLx6swBhWWH9ApClC9sTH2NoFfQM47BapQfovCm9zjD9v1uZwInF5a925FB9ErGQeQ==";
- };
- };
- "concat-map-0.0.1" = {
- name = "concat-map";
- packageName = "concat-map";
- version = "0.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
- sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
- };
- };
- "config-chain-1.1.12" = {
- name = "config-chain";
- packageName = "config-chain";
- version = "1.1.12";
- src = fetchurl {
- url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz";
- sha512 = "a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==";
- };
- };
- "console-control-strings-1.1.0" = {
- name = "console-control-strings";
- packageName = "console-control-strings";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
- sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
- };
- };
- "console-stamp-3.0.0-rc4.2" = {
- name = "console-stamp";
- packageName = "console-stamp";
- version = "3.0.0-rc4.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/console-stamp/-/console-stamp-3.0.0-rc4.2.tgz";
- sha512 = "ncGYdZsfDbBYYiaPXr9NHfZbSSkoVzYyh8nHji9/3ovw35Jn4ozo0btcirtfIznXT4xNgBQW+IyTVLISnNumdQ==";
- };
- };
- "copy-anything-2.0.3" = {
- name = "copy-anything";
- packageName = "copy-anything";
- version = "2.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz";
- sha512 = "GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==";
- };
- };
- "core-util-is-1.0.2" = {
- name = "core-util-is";
- packageName = "core-util-is";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
- sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
- };
- };
- "cross-spawn-6.0.5" = {
- name = "cross-spawn";
- packageName = "cross-spawn";
- version = "6.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz";
- sha512 = "eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==";
- };
- };
- "cross-spawn-7.0.3" = {
- name = "cross-spawn";
- packageName = "cross-spawn";
- version = "7.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz";
- sha512 = "iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==";
- };
- };
- "dashdash-1.14.1" = {
- name = "dashdash";
- packageName = "dashdash";
- version = "1.14.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
- sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
- };
- };
- "dateformat-3.0.3" = {
- name = "dateformat";
- packageName = "dateformat";
- version = "3.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz";
- sha512 = "jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==";
- };
- };
- "de-indent-1.0.2" = {
- name = "de-indent";
- packageName = "de-indent";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz";
- sha1 = "b2038e846dc33baa5796128d0804b455b8c1e21d";
- };
- };
- "debug-3.2.7" = {
- name = "debug";
- packageName = "debug";
- version = "3.2.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz";
- sha512 = "CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==";
- };
- };
- "debug-4.3.1" = {
- name = "debug";
- packageName = "debug";
- version = "4.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz";
- sha512 = "doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==";
- };
- };
- "deep-extend-0.6.0" = {
- name = "deep-extend";
- packageName = "deep-extend";
- version = "0.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz";
- sha512 = "LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==";
- };
- };
- "deep-is-0.1.3" = {
- name = "deep-is";
- packageName = "deep-is";
- version = "0.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
- sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
- };
- };
- "delayed-stream-1.0.0" = {
- name = "delayed-stream";
- packageName = "delayed-stream";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
- sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
- };
- };
- "delegates-1.0.0" = {
- name = "delegates";
- packageName = "delegates";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
- sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
- };
- };
- "detect-libc-1.0.3" = {
- name = "detect-libc";
- packageName = "detect-libc";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz";
- sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
- };
- };
- "dialog-polyfill-0.5.6" = {
- name = "dialog-polyfill";
- packageName = "dialog-polyfill";
- version = "0.5.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.5.6.tgz";
- sha512 = "ZbVDJI9uvxPAKze6z146rmfUZjBqNEwcnFTVamQzXH+svluiV7swmVIGr7miwADgfgt1G2JQIytypM9fbyhX4w==";
- };
- };
- "dir-glob-3.0.1" = {
- name = "dir-glob";
- packageName = "dir-glob";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz";
- sha512 = "WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==";
- };
- };
- "doctrine-3.0.0" = {
- name = "doctrine";
- packageName = "doctrine";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz";
- sha512 = "yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==";
- };
- };
- "dotenv-8.2.0" = {
- name = "dotenv";
- packageName = "dotenv";
- version = "8.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz";
- sha512 = "8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==";
- };
- };
- "ecc-jsbn-0.1.2" = {
- name = "ecc-jsbn";
- packageName = "ecc-jsbn";
- version = "0.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
- sha1 = "3a83a904e54353287874c564b7549386849a98c9";
- };
- };
- "editorconfig-0.15.3" = {
- name = "editorconfig";
- packageName = "editorconfig";
- version = "0.15.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz";
- sha512 = "M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==";
- };
- };
- "electron-to-chromium-1.3.717" = {
- name = "electron-to-chromium";
- packageName = "electron-to-chromium";
- version = "1.3.717";
- src = fetchurl {
- url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.717.tgz";
- sha512 = "OfzVPIqD1MkJ7fX+yTl2nKyOE4FReeVfMCzzxQS+Kp43hZYwHwThlGP+EGIZRXJsxCM7dqo8Y65NOX/HP12iXQ==";
- };
- };
- "emoji-regex-7.0.3" = {
- name = "emoji-regex";
- packageName = "emoji-regex";
- version = "7.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz";
- sha512 = "CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==";
- };
- };
- "emoji-regex-8.0.0" = {
- name = "emoji-regex";
- packageName = "emoji-regex";
- version = "8.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz";
- sha512 = "MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==";
- };
- };
- "enhanced-resolve-5.7.0" = {
- name = "enhanced-resolve";
- packageName = "enhanced-resolve";
- version = "5.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz";
- sha512 = "6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==";
- };
- };
- "enquirer-2.3.6" = {
- name = "enquirer";
- packageName = "enquirer";
- version = "2.3.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz";
- sha512 = "yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==";
- };
- };
- "envinfo-7.8.1" = {
- name = "envinfo";
- packageName = "envinfo";
- version = "7.8.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz";
- sha512 = "/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==";
- };
- };
- "errno-0.1.8" = {
- name = "errno";
- packageName = "errno";
- version = "0.1.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz";
- sha512 = "dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==";
- };
- };
- "es-module-lexer-0.4.1" = {
- name = "es-module-lexer";
- packageName = "es-module-lexer";
- version = "0.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz";
- sha512 = "ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==";
- };
- };
- "escalade-3.1.1" = {
- name = "escalade";
- packageName = "escalade";
- version = "3.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz";
- sha512 = "k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==";
- };
- };
- "escape-string-regexp-1.0.5" = {
- name = "escape-string-regexp";
- packageName = "escape-string-regexp";
- version = "1.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
- sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
- };
- };
- "eslint-6.8.0" = {
- name = "eslint";
- packageName = "eslint";
- version = "6.8.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz";
- sha512 = "K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==";
- };
- };
- "eslint-config-google-0.14.0" = {
- name = "eslint-config-google";
- packageName = "eslint-config-google";
- version = "0.14.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz";
- sha512 = "WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==";
- };
- };
- "eslint-plugin-vue-6.2.2" = {
- name = "eslint-plugin-vue";
- packageName = "eslint-plugin-vue";
- version = "6.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz";
- sha512 = "Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==";
- };
- };
- "eslint-scope-5.1.1" = {
- name = "eslint-scope";
- packageName = "eslint-scope";
- version = "5.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz";
- sha512 = "2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==";
- };
- };
- "eslint-utils-1.4.3" = {
- name = "eslint-utils";
- packageName = "eslint-utils";
- version = "1.4.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz";
- sha512 = "fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==";
- };
- };
- "eslint-utils-2.1.0" = {
- name = "eslint-utils";
- packageName = "eslint-utils";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz";
- sha512 = "w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==";
- };
- };
- "eslint-visitor-keys-1.3.0" = {
- name = "eslint-visitor-keys";
- packageName = "eslint-visitor-keys";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz";
- sha512 = "6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==";
- };
- };
- "eslint-visitor-keys-2.0.0" = {
- name = "eslint-visitor-keys";
- packageName = "eslint-visitor-keys";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz";
- sha512 = "QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==";
- };
- };
- "espree-6.2.1" = {
- name = "espree";
- packageName = "espree";
- version = "6.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz";
- sha512 = "ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==";
- };
- };
- "esprima-4.0.1" = {
- name = "esprima";
- packageName = "esprima";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
- sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==";
- };
- };
- "esquery-1.4.0" = {
- name = "esquery";
- packageName = "esquery";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz";
- sha512 = "cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==";
- };
- };
- "esrecurse-4.3.0" = {
- name = "esrecurse";
- packageName = "esrecurse";
- version = "4.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz";
- sha512 = "KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==";
- };
- };
- "estraverse-4.3.0" = {
- name = "estraverse";
- packageName = "estraverse";
- version = "4.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz";
- sha512 = "39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==";
- };
- };
- "estraverse-5.2.0" = {
- name = "estraverse";
- packageName = "estraverse";
- version = "5.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz";
- sha512 = "BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==";
- };
- };
- "esutils-2.0.3" = {
- name = "esutils";
- packageName = "esutils";
- version = "2.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz";
- sha512 = "kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==";
- };
- };
- "events-3.3.0" = {
- name = "events";
- packageName = "events";
- version = "3.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/events/-/events-3.3.0.tgz";
- sha512 = "mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==";
- };
- };
- "execa-5.0.0" = {
- name = "execa";
- packageName = "execa";
- version = "5.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz";
- sha512 = "ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==";
- };
- };
- "extend-3.0.2" = {
- name = "extend";
- packageName = "extend";
- version = "3.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
- sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
- };
- };
- "external-editor-3.1.0" = {
- name = "external-editor";
- packageName = "external-editor";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz";
- sha512 = "hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==";
- };
- };
- "extsprintf-1.3.0" = {
- name = "extsprintf";
- packageName = "extsprintf";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
- sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
- };
- };
- "fast-deep-equal-3.1.3" = {
- name = "fast-deep-equal";
- packageName = "fast-deep-equal";
- version = "3.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz";
- sha512 = "f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==";
- };
- };
- "fast-glob-3.2.5" = {
- name = "fast-glob";
- packageName = "fast-glob";
- version = "3.2.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz";
- sha512 = "2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==";
- };
- };
- "fast-json-stable-stringify-2.1.0" = {
- name = "fast-json-stable-stringify";
- packageName = "fast-json-stable-stringify";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
- sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
- };
- };
- "fast-levenshtein-2.0.6" = {
- name = "fast-levenshtein";
- packageName = "fast-levenshtein";
- version = "2.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
- sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
- };
- };
- "fastest-levenshtein-1.0.12" = {
- name = "fastest-levenshtein";
- packageName = "fastest-levenshtein";
- version = "1.0.12";
- src = fetchurl {
- url = "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz";
- sha512 = "On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==";
- };
- };
- "fastq-1.11.0" = {
- name = "fastq";
- packageName = "fastq";
- version = "1.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz";
- sha512 = "7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==";
- };
- };
- "figures-3.2.0" = {
- name = "figures";
- packageName = "figures";
- version = "3.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz";
- sha512 = "yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==";
- };
- };
- "file-entry-cache-5.0.1" = {
- name = "file-entry-cache";
- packageName = "file-entry-cache";
- version = "5.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz";
- sha512 = "bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==";
- };
- };
- "fill-range-7.0.1" = {
- name = "fill-range";
- packageName = "fill-range";
- version = "7.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz";
- sha512 = "qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==";
- };
- };
- "find-up-4.1.0" = {
- name = "find-up";
- packageName = "find-up";
- version = "4.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz";
- sha512 = "PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==";
- };
- };
- "flat-cache-2.0.1" = {
- name = "flat-cache";
- packageName = "flat-cache";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz";
- sha512 = "LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==";
- };
- };
- "flatted-2.0.2" = {
- name = "flatted";
- packageName = "flatted";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz";
- sha512 = "r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==";
- };
- };
- "forever-agent-0.6.1" = {
- name = "forever-agent";
- packageName = "forever-agent";
- version = "0.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
- sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
- };
- };
- "form-data-2.3.3" = {
- name = "form-data";
- packageName = "form-data";
- version = "2.3.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
- sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
- };
- };
- "fs-minipass-1.2.7" = {
- name = "fs-minipass";
- packageName = "fs-minipass";
- version = "1.2.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz";
- sha512 = "GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==";
- };
- };
- "fs.realpath-1.0.0" = {
- name = "fs.realpath";
- packageName = "fs.realpath";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
- sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
- };
- };
- "fstream-1.0.12" = {
- name = "fstream";
- packageName = "fstream";
- version = "1.0.12";
- src = fetchurl {
- url = "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz";
- sha512 = "WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==";
- };
- };
- "function-bind-1.1.1" = {
- name = "function-bind";
- packageName = "function-bind";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz";
- sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==";
- };
- };
- "functional-red-black-tree-1.0.1" = {
- name = "functional-red-black-tree";
- packageName = "functional-red-black-tree";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz";
- sha1 = "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327";
- };
- };
- "gauge-2.7.4" = {
- name = "gauge";
- packageName = "gauge";
- version = "2.7.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
- sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
- };
- };
- "get-stream-6.0.1" = {
- name = "get-stream";
- packageName = "get-stream";
- version = "6.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz";
- sha512 = "ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==";
- };
- };
- "getpass-0.1.7" = {
- name = "getpass";
- packageName = "getpass";
- version = "0.1.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
- sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
- };
- };
- "glob-7.1.6" = {
- name = "glob";
- packageName = "glob";
- version = "7.1.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
- sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==";
- };
- };
- "glob-parent-5.1.2" = {
- name = "glob-parent";
- packageName = "glob-parent";
- version = "5.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";
- sha512 = "AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==";
- };
- };
- "glob-to-regexp-0.4.1" = {
- name = "glob-to-regexp";
- packageName = "glob-to-regexp";
- version = "0.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz";
- sha512 = "lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==";
- };
- };
- "globals-12.4.0" = {
- name = "globals";
- packageName = "globals";
- version = "12.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz";
- sha512 = "BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==";
- };
- };
- "globby-11.0.3" = {
- name = "globby";
- packageName = "globby";
- version = "11.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz";
- sha512 = "ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==";
- };
- };
- "graceful-fs-4.2.6" = {
- name = "graceful-fs";
- packageName = "graceful-fs";
- version = "4.2.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz";
- sha512 = "nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==";
- };
- };
- "har-schema-2.0.0" = {
- name = "har-schema";
- packageName = "har-schema";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
- sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
- };
- };
- "har-validator-5.1.5" = {
- name = "har-validator";
- packageName = "har-validator";
- version = "5.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz";
- sha512 = "nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==";
- };
- };
- "has-1.0.3" = {
- name = "has";
- packageName = "has";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz";
- sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==";
- };
- };
- "has-flag-3.0.0" = {
- name = "has-flag";
- packageName = "has-flag";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz";
- sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
- };
- };
- "has-flag-4.0.0" = {
- name = "has-flag";
- packageName = "has-flag";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz";
- sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==";
- };
- };
- "has-unicode-2.0.1" = {
- name = "has-unicode";
- packageName = "has-unicode";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
- sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
- };
- };
- "he-1.2.0" = {
- name = "he";
- packageName = "he";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/he/-/he-1.2.0.tgz";
- sha512 = "F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==";
- };
- };
- "http-signature-1.2.0" = {
- name = "http-signature";
- packageName = "http-signature";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
- sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
- };
- };
- "human-signals-2.1.0" = {
- name = "human-signals";
- packageName = "human-signals";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz";
- sha512 = "B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==";
- };
- };
- "iconv-lite-0.4.24" = {
- name = "iconv-lite";
- packageName = "iconv-lite";
- version = "0.4.24";
- src = fetchurl {
- url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
- sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
- };
- };
- "ignore-4.0.6" = {
- name = "ignore";
- packageName = "ignore";
- version = "4.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz";
- sha512 = "cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==";
- };
- };
- "ignore-5.1.8" = {
- name = "ignore";
- packageName = "ignore";
- version = "5.1.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz";
- sha512 = "BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==";
- };
- };
- "ignore-walk-3.0.3" = {
- name = "ignore-walk";
- packageName = "ignore-walk";
- version = "3.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz";
- sha512 = "m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==";
- };
- };
- "image-size-0.5.5" = {
- name = "image-size";
- packageName = "image-size";
- version = "0.5.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz";
- sha1 = "09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c";
- };
- };
- "import-fresh-3.3.0" = {
- name = "import-fresh";
- packageName = "import-fresh";
- version = "3.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz";
- sha512 = "veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==";
- };
- };
- "import-local-3.0.2" = {
- name = "import-local";
- packageName = "import-local";
- version = "3.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz";
- sha512 = "vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==";
- };
- };
- "imurmurhash-0.1.4" = {
- name = "imurmurhash";
- packageName = "imurmurhash";
- version = "0.1.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz";
- sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
- };
- };
- "inflight-1.0.6" = {
- name = "inflight";
- packageName = "inflight";
- version = "1.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
- sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
- };
- };
- "inherits-2.0.4" = {
- name = "inherits";
- packageName = "inherits";
- version = "2.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
- sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
- };
- };
- "ini-1.3.8" = {
- name = "ini";
- packageName = "ini";
- version = "1.3.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz";
- sha512 = "JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==";
- };
- };
- "inquirer-7.3.3" = {
- name = "inquirer";
- packageName = "inquirer";
- version = "7.3.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz";
- sha512 = "JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==";
- };
- };
- "interpret-2.2.0" = {
- name = "interpret";
- packageName = "interpret";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz";
- sha512 = "Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==";
- };
- };
- "is-core-module-2.2.0" = {
- name = "is-core-module";
- packageName = "is-core-module";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz";
- sha512 = "XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==";
- };
- };
- "is-extglob-2.1.1" = {
- name = "is-extglob";
- packageName = "is-extglob";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz";
- sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
- };
- };
- "is-fullwidth-code-point-1.0.0" = {
- name = "is-fullwidth-code-point";
- packageName = "is-fullwidth-code-point";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
- sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
- };
- };
- "is-fullwidth-code-point-2.0.0" = {
- name = "is-fullwidth-code-point";
- packageName = "is-fullwidth-code-point";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
- sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
- };
- };
- "is-fullwidth-code-point-3.0.0" = {
- name = "is-fullwidth-code-point";
- packageName = "is-fullwidth-code-point";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz";
- sha512 = "zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==";
- };
- };
- "is-glob-4.0.1" = {
- name = "is-glob";
- packageName = "is-glob";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz";
- sha512 = "5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==";
- };
- };
- "is-number-7.0.0" = {
- name = "is-number";
- packageName = "is-number";
- version = "7.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz";
- sha512 = "41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==";
- };
- };
- "is-plain-object-2.0.4" = {
- name = "is-plain-object";
- packageName = "is-plain-object";
- version = "2.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz";
- sha512 = "h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==";
- };
- };
- "is-stream-2.0.0" = {
- name = "is-stream";
- packageName = "is-stream";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz";
- sha512 = "XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==";
- };
- };
- "is-typedarray-1.0.0" = {
- name = "is-typedarray";
- packageName = "is-typedarray";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
- sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
- };
- };
- "is-what-3.14.1" = {
- name = "is-what";
- packageName = "is-what";
- version = "3.14.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz";
- sha512 = "sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==";
- };
- };
- "isarray-1.0.0" = {
- name = "isarray";
- packageName = "isarray";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
- sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
- };
- };
- "isexe-2.0.0" = {
- name = "isexe";
- packageName = "isexe";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
- sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
- };
- };
- "isobject-3.0.1" = {
- name = "isobject";
- packageName = "isobject";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz";
- sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
- };
- };
- "isstream-0.1.2" = {
- name = "isstream";
- packageName = "isstream";
- version = "0.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
- sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
- };
- };
- "jest-worker-26.6.2" = {
- name = "jest-worker";
- packageName = "jest-worker";
- version = "26.6.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz";
- sha512 = "KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==";
- };
- };
- "js-beautify-1.13.13" = {
- name = "js-beautify";
- packageName = "js-beautify";
- version = "1.13.13";
- src = fetchurl {
- url = "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.13.tgz";
- sha512 = "oH+nc0U5mOAqX8M5JO1J0Pw/7Q35sAdOsM5W3i87pir9Ntx6P/5Gx1xLNoK+MGyvHk4rqqRCE4Oq58H6xl2W7A==";
- };
- };
- "js-tokens-4.0.0" = {
- name = "js-tokens";
- packageName = "js-tokens";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz";
- sha512 = "RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==";
- };
- };
- "js-yaml-3.14.1" = {
- name = "js-yaml";
- packageName = "js-yaml";
- version = "3.14.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz";
- sha512 = "okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==";
- };
- };
- "jsbn-0.1.1" = {
- name = "jsbn";
- packageName = "jsbn";
- version = "0.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
- sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
- };
- };
- "json-parse-better-errors-1.0.2" = {
- name = "json-parse-better-errors";
- packageName = "json-parse-better-errors";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
- sha512 = "mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==";
- };
- };
- "json-schema-0.2.3" = {
- name = "json-schema";
- packageName = "json-schema";
- version = "0.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
- sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
- };
- };
- "json-schema-traverse-0.4.1" = {
- name = "json-schema-traverse";
- packageName = "json-schema-traverse";
- version = "0.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
- sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
- };
- };
- "json-stable-stringify-without-jsonify-1.0.1" = {
- name = "json-stable-stringify-without-jsonify";
- packageName = "json-stable-stringify-without-jsonify";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz";
- sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
- };
- };
- "json-stringify-safe-5.0.1" = {
- name = "json-stringify-safe";
- packageName = "json-stringify-safe";
- version = "5.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
- sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
- };
- };
- "jsprim-1.4.1" = {
- name = "jsprim";
- packageName = "jsprim";
- version = "1.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
- sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
- };
- };
- "kind-of-6.0.3" = {
- name = "kind-of";
- packageName = "kind-of";
- version = "6.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz";
- sha512 = "dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==";
- };
- };
- "less-3.13.1" = {
- name = "less";
- packageName = "less";
- version = "3.13.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/less/-/less-3.13.1.tgz";
- sha512 = "SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==";
- };
- };
- "levn-0.3.0" = {
- name = "levn";
- packageName = "levn";
- version = "0.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
- sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
- };
- };
- "loader-runner-4.2.0" = {
- name = "loader-runner";
- packageName = "loader-runner";
- version = "4.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz";
- sha512 = "92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==";
- };
- };
- "locate-path-5.0.0" = {
- name = "locate-path";
- packageName = "locate-path";
- version = "5.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz";
- sha512 = "t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==";
- };
- };
- "lodash-4.17.21" = {
- name = "lodash";
- packageName = "lodash";
- version = "4.17.21";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz";
- sha512 = "v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==";
- };
- };
- "lru-cache-4.1.5" = {
- name = "lru-cache";
- packageName = "lru-cache";
- version = "4.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz";
- sha512 = "sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==";
- };
- };
- "lru-cache-6.0.0" = {
- name = "lru-cache";
- packageName = "lru-cache";
- version = "6.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz";
- sha512 = "Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==";
- };
- };
- "make-dir-2.1.0" = {
- name = "make-dir";
- packageName = "make-dir";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz";
- sha512 = "LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==";
- };
- };
- "merge-stream-2.0.0" = {
- name = "merge-stream";
- packageName = "merge-stream";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz";
- sha512 = "abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==";
- };
- };
- "merge2-1.4.1" = {
- name = "merge2";
- packageName = "merge2";
- version = "1.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz";
- sha512 = "8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==";
- };
- };
- "micromatch-4.0.4" = {
- name = "micromatch";
- packageName = "micromatch";
- version = "4.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz";
- sha512 = "pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==";
- };
- };
- "mime-1.6.0" = {
- name = "mime";
- packageName = "mime";
- version = "1.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
- sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
- };
- };
- "mime-db-1.47.0" = {
- name = "mime-db";
- packageName = "mime-db";
- version = "1.47.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz";
- sha512 = "QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==";
- };
- };
- "mime-types-2.1.30" = {
- name = "mime-types";
- packageName = "mime-types";
- version = "2.1.30";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz";
- sha512 = "crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==";
- };
- };
- "mimic-fn-2.1.0" = {
- name = "mimic-fn";
- packageName = "mimic-fn";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz";
- sha512 = "OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==";
- };
- };
- "minimatch-3.0.4" = {
- name = "minimatch";
- packageName = "minimatch";
- version = "3.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
- sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
- };
- };
- "minimist-1.2.5" = {
- name = "minimist";
- packageName = "minimist";
- version = "1.2.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
- sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
- };
- };
- "minipass-2.9.0" = {
- name = "minipass";
- packageName = "minipass";
- version = "2.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz";
- sha512 = "wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==";
- };
- };
- "minizlib-1.3.3" = {
- name = "minizlib";
- packageName = "minizlib";
- version = "1.3.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz";
- sha512 = "6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==";
- };
- };
- "mkdirp-0.5.5" = {
- name = "mkdirp";
- packageName = "mkdirp";
- version = "0.5.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
- sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
- };
- };
- "mkdirp-1.0.4" = {
- name = "mkdirp";
- packageName = "mkdirp";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz";
- sha512 = "vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==";
- };
- };
- "mnemonist-0.38.3" = {
- name = "mnemonist";
- packageName = "mnemonist";
- version = "0.38.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz";
- sha512 = "2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==";
- };
- };
- "ms-2.1.2" = {
- name = "ms";
- packageName = "ms";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
- sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
- };
- };
- "mute-stream-0.0.8" = {
- name = "mute-stream";
- packageName = "mute-stream";
- version = "0.0.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz";
- sha512 = "nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==";
- };
- };
- "native-request-1.0.8" = {
- name = "native-request";
- packageName = "native-request";
- version = "1.0.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz";
- sha512 = "vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==";
- };
- };
- "natural-compare-1.4.0" = {
- name = "natural-compare";
- packageName = "natural-compare";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz";
- sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
- };
- };
- "needle-2.6.0" = {
- name = "needle";
- packageName = "needle";
- version = "2.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz";
- sha512 = "KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==";
- };
- };
- "neo-async-2.6.2" = {
- name = "neo-async";
- packageName = "neo-async";
- version = "2.6.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz";
- sha512 = "Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==";
- };
- };
- "nice-try-1.0.5" = {
- name = "nice-try";
- packageName = "nice-try";
- version = "1.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz";
- sha512 = "1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==";
- };
- };
- "node-addon-api-3.1.0" = {
- name = "node-addon-api";
- packageName = "node-addon-api";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz";
- sha512 = "flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==";
- };
- };
- "node-gyp-3.8.0" = {
- name = "node-gyp";
- packageName = "node-gyp";
- version = "3.8.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz";
- sha512 = "3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==";
- };
- };
- "node-pre-gyp-0.11.0" = {
- name = "node-pre-gyp";
- packageName = "node-pre-gyp";
- version = "0.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz";
- sha512 = "TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==";
- };
- };
- "node-releases-1.1.71" = {
- name = "node-releases";
- packageName = "node-releases";
- version = "1.1.71";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz";
- sha512 = "zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==";
- };
- };
- "nopt-3.0.6" = {
- name = "nopt";
- packageName = "nopt";
- version = "3.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz";
- sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
- };
- };
- "nopt-4.0.3" = {
- name = "nopt";
- packageName = "nopt";
- version = "4.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz";
- sha512 = "CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==";
- };
- };
- "nopt-5.0.0" = {
- name = "nopt";
- packageName = "nopt";
- version = "5.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz";
- sha512 = "Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==";
- };
- };
- "npm-bundled-1.1.1" = {
- name = "npm-bundled";
- packageName = "npm-bundled";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz";
- sha512 = "gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==";
- };
- };
- "npm-normalize-package-bin-1.0.1" = {
- name = "npm-normalize-package-bin";
- packageName = "npm-normalize-package-bin";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz";
- sha512 = "EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==";
- };
- };
- "npm-packlist-1.4.8" = {
- name = "npm-packlist";
- packageName = "npm-packlist";
- version = "1.4.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz";
- sha512 = "5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==";
- };
- };
- "npm-run-path-4.0.1" = {
- name = "npm-run-path";
- packageName = "npm-run-path";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz";
- sha512 = "S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==";
- };
- };
- "npmlog-4.1.2" = {
- name = "npmlog";
- packageName = "npmlog";
- version = "4.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
- sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==";
- };
- };
- "number-is-nan-1.0.1" = {
- name = "number-is-nan";
- packageName = "number-is-nan";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
- sha1 = "097b602b53422a522c1afb8790318336941a011d";
- };
- };
- "oauth-sign-0.9.0" = {
- name = "oauth-sign";
- packageName = "oauth-sign";
- version = "0.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
- sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
- };
- };
- "object-assign-4.1.1" = {
- name = "object-assign";
- packageName = "object-assign";
- version = "4.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
- sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
- };
- };
- "obliterator-1.6.1" = {
- name = "obliterator";
- packageName = "obliterator";
- version = "1.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz";
- sha512 = "9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==";
- };
- };
- "once-1.4.0" = {
- name = "once";
- packageName = "once";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
- sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
- };
- };
- "onetime-5.1.2" = {
- name = "onetime";
- packageName = "onetime";
- version = "5.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz";
- sha512 = "kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==";
- };
- };
- "optionator-0.8.3" = {
- name = "optionator";
- packageName = "optionator";
- version = "0.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz";
- sha512 = "+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==";
- };
- };
- "os-homedir-1.0.2" = {
- name = "os-homedir";
- packageName = "os-homedir";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
- sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
- };
- };
- "os-tmpdir-1.0.2" = {
- name = "os-tmpdir";
- packageName = "os-tmpdir";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
- sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
- };
- };
- "osenv-0.1.5" = {
- name = "osenv";
- packageName = "osenv";
- version = "0.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
- sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
- };
- };
- "p-limit-2.3.0" = {
- name = "p-limit";
- packageName = "p-limit";
- version = "2.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz";
- sha512 = "//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==";
- };
- };
- "p-limit-3.1.0" = {
- name = "p-limit";
- packageName = "p-limit";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz";
- sha512 = "TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==";
- };
- };
- "p-locate-4.1.0" = {
- name = "p-locate";
- packageName = "p-locate";
- version = "4.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz";
- sha512 = "R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==";
- };
- };
- "p-try-2.2.0" = {
- name = "p-try";
- packageName = "p-try";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz";
- sha512 = "R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==";
- };
- };
- "packet-reader-1.0.0" = {
- name = "packet-reader";
- packageName = "packet-reader";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz";
- sha512 = "HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==";
- };
- };
- "parent-module-1.0.1" = {
- name = "parent-module";
- packageName = "parent-module";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz";
- sha512 = "GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==";
- };
- };
- "path-exists-4.0.0" = {
- name = "path-exists";
- packageName = "path-exists";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz";
- sha512 = "ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==";
- };
- };
- "path-is-absolute-1.0.1" = {
- name = "path-is-absolute";
- packageName = "path-is-absolute";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
- sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
- };
- };
- "path-key-2.0.1" = {
- name = "path-key";
- packageName = "path-key";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz";
- sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
- };
- };
- "path-key-3.1.1" = {
- name = "path-key";
- packageName = "path-key";
- version = "3.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz";
- sha512 = "ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==";
- };
- };
- "path-parse-1.0.6" = {
- name = "path-parse";
- packageName = "path-parse";
- version = "1.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz";
- sha512 = "GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==";
- };
- };
- "path-type-4.0.0" = {
- name = "path-type";
- packageName = "path-type";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz";
- sha512 = "gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==";
- };
- };
- "performance-now-2.1.0" = {
- name = "performance-now";
- packageName = "performance-now";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
- sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
- };
- };
- "pg-8.6.0" = {
- name = "pg";
- packageName = "pg";
- version = "8.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pg/-/pg-8.6.0.tgz";
- sha512 = "qNS9u61lqljTDFvmk/N66EeGq3n6Ujzj0FFyNMGQr6XuEv4tgNTXvJQTfJdcvGit5p5/DWPu+wj920hAJFI+QQ==";
- };
- };
- "pg-connection-string-2.5.0" = {
- name = "pg-connection-string";
- packageName = "pg-connection-string";
- version = "2.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz";
- sha512 = "r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==";
- };
- };
- "pg-int8-1.0.1" = {
- name = "pg-int8";
- packageName = "pg-int8";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz";
- sha512 = "WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==";
- };
- };
- "pg-pool-3.3.0" = {
- name = "pg-pool";
- packageName = "pg-pool";
- version = "3.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pg-pool/-/pg-pool-3.3.0.tgz";
- sha512 = "0O5huCql8/D6PIRFAlmccjphLYWC+JIzvUhSzXSpGaf+tjTZc4nn+Lr7mLXBbFJfvwbP0ywDv73EiaBsxn7zdg==";
- };
- };
- "pg-protocol-1.5.0" = {
- name = "pg-protocol";
- packageName = "pg-protocol";
- version = "1.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz";
- sha512 = "muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==";
- };
- };
- "pg-types-2.2.0" = {
- name = "pg-types";
- packageName = "pg-types";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz";
- sha512 = "qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==";
- };
- };
- "pgpass-1.0.4" = {
- name = "pgpass";
- packageName = "pgpass";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz";
- sha512 = "YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==";
- };
- };
- "picomatch-2.2.3" = {
- name = "picomatch";
- packageName = "picomatch";
- version = "2.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz";
- sha512 = "KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==";
- };
- };
- "pify-4.0.1" = {
- name = "pify";
- packageName = "pify";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz";
- sha512 = "uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==";
- };
- };
- "pkg-dir-4.2.0" = {
- name = "pkg-dir";
- packageName = "pkg-dir";
- version = "4.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz";
- sha512 = "HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==";
- };
- };
- "postgres-array-2.0.0" = {
- name = "postgres-array";
- packageName = "postgres-array";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz";
- sha512 = "VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==";
- };
- };
- "postgres-bytea-1.0.0" = {
- name = "postgres-bytea";
- packageName = "postgres-bytea";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
- sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
- };
- };
- "postgres-date-1.0.7" = {
- name = "postgres-date";
- packageName = "postgres-date";
- version = "1.0.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz";
- sha512 = "suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==";
- };
- };
- "postgres-interval-1.2.0" = {
- name = "postgres-interval";
- packageName = "postgres-interval";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz";
- sha512 = "9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==";
- };
- };
- "prelude-ls-1.1.2" = {
- name = "prelude-ls";
- packageName = "prelude-ls";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
- sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
- };
- };
- "process-nextick-args-2.0.1" = {
- name = "process-nextick-args";
- packageName = "process-nextick-args";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
- sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
- };
- };
- "progress-2.0.3" = {
- name = "progress";
- packageName = "progress";
- version = "2.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz";
- sha512 = "7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==";
- };
- };
- "proto-list-1.2.4" = {
- name = "proto-list";
- packageName = "proto-list";
- version = "1.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz";
- sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
- };
- };
- "prr-1.0.1" = {
- name = "prr";
- packageName = "prr";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz";
- sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
- };
- };
- "pseudomap-1.0.2" = {
- name = "pseudomap";
- packageName = "pseudomap";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz";
- sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
- };
- };
- "psl-1.8.0" = {
- name = "psl";
- packageName = "psl";
- version = "1.8.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
- sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
- };
- };
- "punycode-2.1.1" = {
- name = "punycode";
- packageName = "punycode";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
- sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
- };
- };
- "qs-6.5.2" = {
- name = "qs";
- packageName = "qs";
- version = "6.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
- sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
- };
- };
- "queue-microtask-1.2.3" = {
- name = "queue-microtask";
- packageName = "queue-microtask";
- version = "1.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz";
- sha512 = "NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==";
- };
- };
- "randombytes-2.1.0" = {
- name = "randombytes";
- packageName = "randombytes";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz";
- sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==";
- };
- };
- "rc-1.2.8" = {
- name = "rc";
- packageName = "rc";
- version = "1.2.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz";
- sha512 = "y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==";
- };
- };
- "readable-stream-2.3.7" = {
- name = "readable-stream";
- packageName = "readable-stream";
- version = "2.3.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
- sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
- };
- };
- "readable-stream-3.6.0" = {
- name = "readable-stream";
- packageName = "readable-stream";
- version = "3.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
- sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
- };
- };
- "rechoir-0.7.0" = {
- name = "rechoir";
- packageName = "rechoir";
- version = "0.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz";
- sha512 = "ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==";
- };
- };
- "regexpp-2.0.1" = {
- name = "regexpp";
- packageName = "regexpp";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz";
- sha512 = "lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==";
- };
- };
- "regexpp-3.1.0" = {
- name = "regexpp";
- packageName = "regexpp";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz";
- sha512 = "ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==";
- };
- };
- "request-2.88.2" = {
- name = "request";
- packageName = "request";
- version = "2.88.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
- sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
- };
- };
- "resolve-1.20.0" = {
- name = "resolve";
- packageName = "resolve";
- version = "1.20.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz";
- sha512 = "wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==";
- };
- };
- "resolve-cwd-3.0.0" = {
- name = "resolve-cwd";
- packageName = "resolve-cwd";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz";
- sha512 = "OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==";
- };
- };
- "resolve-from-4.0.0" = {
- name = "resolve-from";
- packageName = "resolve-from";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz";
- sha512 = "pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==";
- };
- };
- "resolve-from-5.0.0" = {
- name = "resolve-from";
- packageName = "resolve-from";
- version = "5.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz";
- sha512 = "qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==";
- };
- };
- "restore-cursor-3.1.0" = {
- name = "restore-cursor";
- packageName = "restore-cursor";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz";
- sha512 = "l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==";
- };
- };
- "reusify-1.0.4" = {
- name = "reusify";
- packageName = "reusify";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz";
- sha512 = "U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==";
- };
- };
- "rimraf-2.6.3" = {
- name = "rimraf";
- packageName = "rimraf";
- version = "2.6.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz";
- sha512 = "mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==";
- };
- };
- "run-async-2.4.1" = {
- name = "run-async";
- packageName = "run-async";
- version = "2.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz";
- sha512 = "tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==";
- };
- };
- "run-parallel-1.2.0" = {
- name = "run-parallel";
- packageName = "run-parallel";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz";
- sha512 = "5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==";
- };
- };
- "rxjs-6.6.7" = {
- name = "rxjs";
- packageName = "rxjs";
- version = "6.6.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz";
- sha512 = "hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==";
- };
- };
- "safe-buffer-5.1.2" = {
- name = "safe-buffer";
- packageName = "safe-buffer";
- version = "5.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
- sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
- };
- };
- "safe-buffer-5.2.1" = {
- name = "safe-buffer";
- packageName = "safe-buffer";
- version = "5.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz";
- sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==";
- };
- };
- "safer-buffer-2.1.2" = {
- name = "safer-buffer";
- packageName = "safer-buffer";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
- sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
- };
- };
- "sax-1.2.4" = {
- name = "sax";
- packageName = "sax";
- version = "1.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
- sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
- };
- };
- "schema-utils-3.0.0" = {
- name = "schema-utils";
- packageName = "schema-utils";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz";
- sha512 = "6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==";
- };
- };
- "semver-5.3.0" = {
- name = "semver";
- packageName = "semver";
- version = "5.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz";
- sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
- };
- };
- "semver-5.7.1" = {
- name = "semver";
- packageName = "semver";
- version = "5.7.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz";
- sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==";
- };
- };
- "semver-6.3.0" = {
- name = "semver";
- packageName = "semver";
- version = "6.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz";
- sha512 = "b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==";
- };
- };
- "semver-7.3.5" = {
- name = "semver";
- packageName = "semver";
- version = "7.3.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz";
- sha512 = "PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==";
- };
- };
- "serialize-javascript-5.0.1" = {
- name = "serialize-javascript";
- packageName = "serialize-javascript";
- version = "5.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz";
- sha512 = "SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==";
- };
- };
- "set-blocking-2.0.0" = {
- name = "set-blocking";
- packageName = "set-blocking";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
- sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
- };
- };
- "shallow-clone-3.0.1" = {
- name = "shallow-clone";
- packageName = "shallow-clone";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz";
- sha512 = "/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==";
- };
- };
- "shebang-command-1.2.0" = {
- name = "shebang-command";
- packageName = "shebang-command";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz";
- sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
- };
- };
- "shebang-command-2.0.0" = {
- name = "shebang-command";
- packageName = "shebang-command";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz";
- sha512 = "kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==";
- };
- };
- "shebang-regex-1.0.0" = {
- name = "shebang-regex";
- packageName = "shebang-regex";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz";
- sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
- };
- };
- "shebang-regex-3.0.0" = {
- name = "shebang-regex";
- packageName = "shebang-regex";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz";
- sha512 = "7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==";
- };
- };
- "sigmund-1.0.1" = {
- name = "sigmund";
- packageName = "sigmund";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz";
- sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
- };
- };
- "signal-exit-3.0.3" = {
- name = "signal-exit";
- packageName = "signal-exit";
- version = "3.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz";
- sha512 = "VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==";
- };
- };
- "slash-3.0.0" = {
- name = "slash";
- packageName = "slash";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz";
- sha512 = "g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==";
- };
- };
- "slice-ansi-2.1.0" = {
- name = "slice-ansi";
- packageName = "slice-ansi";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz";
- sha512 = "Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==";
- };
- };
- "source-list-map-2.0.1" = {
- name = "source-list-map";
- packageName = "source-list-map";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz";
- sha512 = "qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==";
- };
- };
- "source-map-0.6.1" = {
- name = "source-map";
- packageName = "source-map";
- version = "0.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
- sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
- };
- };
- "source-map-0.7.3" = {
- name = "source-map";
- packageName = "source-map";
- version = "0.7.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz";
- sha512 = "CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==";
- };
- };
- "source-map-support-0.5.19" = {
- name = "source-map-support";
- packageName = "source-map-support";
- version = "0.5.19";
- src = fetchurl {
- url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz";
- sha512 = "Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==";
- };
- };
- "spectre.css-0.5.9" = {
- name = "spectre.css";
- packageName = "spectre.css";
- version = "0.5.9";
- src = fetchurl {
- url = "https://registry.npmjs.org/spectre.css/-/spectre.css-0.5.9.tgz";
- sha512 = "9jUqwZmCnvflrxFGcK+ize43TvjwDjqMwZPVubEtSIHzvinH0TBUESm1LcOJx3Ur7bdPaeOHQIjOqBl1Y5kLFw==";
- };
- };
- "split2-3.2.2" = {
- name = "split2";
- packageName = "split2";
- version = "3.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz";
- sha512 = "9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==";
- };
- };
- "sprintf-js-1.0.3" = {
- name = "sprintf-js";
- packageName = "sprintf-js";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
- sha1 = "04e6926f662895354f3dd015203633b857297e2c";
- };
- };
- "sqlite3-5.0.2" = {
- name = "sqlite3";
- packageName = "sqlite3";
- version = "5.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz";
- sha512 = "1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==";
- };
- };
- "sshpk-1.16.1" = {
- name = "sshpk";
- packageName = "sshpk";
- version = "1.16.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
- sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
- };
- };
- "string-width-1.0.2" = {
- name = "string-width";
- packageName = "string-width";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
- sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
- };
- };
- "string-width-2.1.1" = {
- name = "string-width";
- packageName = "string-width";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz";
- sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==";
- };
- };
- "string-width-3.1.0" = {
- name = "string-width";
- packageName = "string-width";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz";
- sha512 = "vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==";
- };
- };
- "string-width-4.2.2" = {
- name = "string-width";
- packageName = "string-width";
- version = "4.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz";
- sha512 = "XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==";
- };
- };
- "string_decoder-1.1.1" = {
- name = "string_decoder";
- packageName = "string_decoder";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
- sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
- };
- };
- "string_decoder-1.3.0" = {
- name = "string_decoder";
- packageName = "string_decoder";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz";
- sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==";
- };
- };
- "strip-ansi-3.0.1" = {
- name = "strip-ansi";
- packageName = "strip-ansi";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
- sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
- };
- };
- "strip-ansi-4.0.0" = {
- name = "strip-ansi";
- packageName = "strip-ansi";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
- sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
- };
- };
- "strip-ansi-5.2.0" = {
- name = "strip-ansi";
- packageName = "strip-ansi";
- version = "5.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz";
- sha512 = "DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==";
- };
- };
- "strip-ansi-6.0.0" = {
- name = "strip-ansi";
- packageName = "strip-ansi";
- version = "6.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz";
- sha512 = "AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==";
- };
- };
- "strip-final-newline-2.0.0" = {
- name = "strip-final-newline";
- packageName = "strip-final-newline";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz";
- sha512 = "BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==";
- };
- };
- "strip-json-comments-2.0.1" = {
- name = "strip-json-comments";
- packageName = "strip-json-comments";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
- sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
- };
- };
- "strip-json-comments-3.1.1" = {
- name = "strip-json-comments";
- packageName = "strip-json-comments";
- version = "3.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz";
- sha512 = "6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==";
- };
- };
- "supports-color-5.5.0" = {
- name = "supports-color";
- packageName = "supports-color";
- version = "5.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz";
- sha512 = "QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==";
- };
- };
- "supports-color-7.2.0" = {
- name = "supports-color";
- packageName = "supports-color";
- version = "7.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz";
- sha512 = "qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==";
- };
- };
- "table-5.4.6" = {
- name = "table";
- packageName = "table";
- version = "5.4.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/table/-/table-5.4.6.tgz";
- sha512 = "wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==";
- };
- };
- "tapable-2.2.0" = {
- name = "tapable";
- packageName = "tapable";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz";
- sha512 = "FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==";
- };
- };
- "tar-2.2.2" = {
- name = "tar";
- packageName = "tar";
- version = "2.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz";
- sha512 = "FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==";
- };
- };
- "tar-4.4.13" = {
- name = "tar";
- packageName = "tar";
- version = "4.4.13";
- src = fetchurl {
- url = "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz";
- sha512 = "w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==";
- };
- };
- "terser-5.6.1" = {
- name = "terser";
- packageName = "terser";
- version = "5.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz";
- sha512 = "yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==";
- };
- };
- "terser-webpack-plugin-5.1.1" = {
- name = "terser-webpack-plugin";
- packageName = "terser-webpack-plugin";
- version = "5.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz";
- sha512 = "5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==";
- };
- };
- "text-table-0.2.0" = {
- name = "text-table";
- packageName = "text-table";
- version = "0.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz";
- sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
- };
- };
- "through-2.3.8" = {
- name = "through";
- packageName = "through";
- version = "2.3.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
- sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
- };
- };
- "tmp-0.0.33" = {
- name = "tmp";
- packageName = "tmp";
- version = "0.0.33";
- src = fetchurl {
- url = "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz";
- sha512 = "jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==";
- };
- };
- "to-regex-range-5.0.1" = {
- name = "to-regex-range";
- packageName = "to-regex-range";
- version = "5.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz";
- sha512 = "65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==";
- };
- };
- "tough-cookie-2.5.0" = {
- name = "tough-cookie";
- packageName = "tough-cookie";
- version = "2.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
- sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
- };
- };
- "tslib-1.14.1" = {
- name = "tslib";
- packageName = "tslib";
- version = "1.14.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz";
- sha512 = "Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==";
- };
- };
- "tsutils-3.21.0" = {
- name = "tsutils";
- packageName = "tsutils";
- version = "3.21.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz";
- sha512 = "mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==";
- };
- };
- "tunnel-agent-0.6.0" = {
- name = "tunnel-agent";
- packageName = "tunnel-agent";
- version = "0.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
- sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
- };
- };
- "tweetnacl-0.14.5" = {
- name = "tweetnacl";
- packageName = "tweetnacl";
- version = "0.14.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
- sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
- };
- };
- "type-check-0.3.2" = {
- name = "type-check";
- packageName = "type-check";
- version = "0.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
- sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
- };
- };
- "type-fest-0.21.3" = {
- name = "type-fest";
- packageName = "type-fest";
- version = "0.21.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz";
- sha512 = "t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==";
- };
- };
- "type-fest-0.8.1" = {
- name = "type-fest";
- packageName = "type-fest";
- version = "0.8.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz";
- sha512 = "4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==";
- };
- };
- "typescript-4.2.4" = {
- name = "typescript";
- packageName = "typescript";
- version = "4.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz";
- sha512 = "V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==";
- };
- };
- "uri-js-4.4.1" = {
- name = "uri-js";
- packageName = "uri-js";
- version = "4.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz";
- sha512 = "7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==";
- };
- };
- "util-deprecate-1.0.2" = {
- name = "util-deprecate";
- packageName = "util-deprecate";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
- sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
- };
- };
- "uuid-3.4.0" = {
- name = "uuid";
- packageName = "uuid";
- version = "3.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
- sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
- };
- };
- "v8-compile-cache-2.3.0" = {
- name = "v8-compile-cache";
- packageName = "v8-compile-cache";
- version = "2.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz";
- sha512 = "l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==";
- };
- };
- "verror-1.10.0" = {
- name = "verror";
- packageName = "verror";
- version = "1.10.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
- sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
- };
- };
- "vue-2.6.10" = {
- name = "vue";
- packageName = "vue";
- version = "2.6.10";
- src = fetchurl {
- url = "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz";
- sha512 = "ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==";
- };
- };
- "vue-eslint-parser-7.6.0" = {
- name = "vue-eslint-parser";
- packageName = "vue-eslint-parser";
- version = "7.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz";
- sha512 = "QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==";
- };
- };
- "vue-template-compiler-2.6.10" = {
- name = "vue-template-compiler";
- packageName = "vue-template-compiler";
- version = "2.6.10";
- src = fetchurl {
- url = "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz";
- sha512 = "jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==";
- };
- };
- "watchpack-2.1.1" = {
- name = "watchpack";
- packageName = "watchpack";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz";
- sha512 = "Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==";
- };
- };
- "webpack-5.33.2" = {
- name = "webpack";
- packageName = "webpack";
- version = "5.33.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/webpack/-/webpack-5.33.2.tgz";
- sha512 = "X4b7F1sYBmJx8mlh2B7mV5szEkE0jYNJ2y3akgAP0ERi0vLCG1VvdsIxt8lFd4st6SUy0lf7W0CCQS566MBpJg==";
- };
- };
- "webpack-cli-4.6.0" = {
- name = "webpack-cli";
- packageName = "webpack-cli";
- version = "4.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.6.0.tgz";
- sha512 = "9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==";
- };
- };
- "webpack-merge-5.7.3" = {
- name = "webpack-merge";
- packageName = "webpack-merge";
- version = "5.7.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz";
- sha512 = "6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==";
- };
- };
- "webpack-sources-2.2.0" = {
- name = "webpack-sources";
- packageName = "webpack-sources";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz";
- sha512 = "bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==";
- };
- };
- "which-1.3.1" = {
- name = "which";
- packageName = "which";
- version = "1.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz";
- sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==";
- };
- };
- "which-2.0.2" = {
- name = "which";
- packageName = "which";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/which/-/which-2.0.2.tgz";
- sha512 = "BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==";
- };
- };
- "wide-align-1.1.3" = {
- name = "wide-align";
- packageName = "wide-align";
- version = "1.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
- sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
- };
- };
- "wildcard-2.0.0" = {
- name = "wildcard";
- packageName = "wildcard";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz";
- sha512 = "JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==";
- };
- };
- "word-wrap-1.2.3" = {
- name = "word-wrap";
- packageName = "word-wrap";
- version = "1.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz";
- sha512 = "Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==";
- };
- };
- "wrappy-1.0.2" = {
- name = "wrappy";
- packageName = "wrappy";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
- sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
- };
- };
- "write-1.0.3" = {
- name = "write";
- packageName = "write";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/write/-/write-1.0.3.tgz";
- sha512 = "/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==";
- };
- };
- "xtend-4.0.2" = {
- name = "xtend";
- packageName = "xtend";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
- sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
- };
- };
- "yallist-2.1.2" = {
- name = "yallist";
- packageName = "yallist";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz";
- sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
- };
- };
- "yallist-3.1.1" = {
- name = "yallist";
- packageName = "yallist";
- version = "3.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz";
- sha512 = "a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==";
- };
- };
- "yallist-4.0.0" = {
- name = "yallist";
- packageName = "yallist";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz";
- sha512 = "3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==";
- };
- };
- "yocto-queue-0.1.0" = {
- name = "yocto-queue";
- packageName = "yocto-queue";
- version = "0.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz";
- sha512 = "rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==";
- };
- };
- };
- args = {
- name = "terraforming-mars";
- packageName = "terraforming-mars";
- version = "1.0.0";
- inherit src;
- dependencies = [
- sources."@babel/code-frame-7.12.13"
- sources."@babel/helper-validator-identifier-7.12.11"
- sources."@babel/highlight-7.13.10"
- sources."@discoveryjs/json-ext-0.5.2"
- sources."@nodelib/fs.scandir-2.1.4"
- sources."@nodelib/fs.stat-2.0.4"
- sources."@nodelib/fs.walk-1.2.6"
- sources."@types/eslint-7.2.10"
- sources."@types/eslint-scope-3.7.0"
- sources."@types/estree-0.0.46"
- sources."@types/json-schema-7.0.7"
- sources."@types/node-10.17.58"
- sources."@types/pg-7.14.11"
- sources."@types/sqlite3-3.1.7"
- sources."@typescript-eslint/eslint-plugin-4.22.0"
- sources."@typescript-eslint/experimental-utils-4.22.0"
- sources."@typescript-eslint/parser-4.22.0"
- sources."@typescript-eslint/scope-manager-4.22.0"
- sources."@typescript-eslint/types-4.22.0"
- sources."@typescript-eslint/typescript-estree-4.22.0"
- sources."@typescript-eslint/visitor-keys-4.22.0"
- sources."@webassemblyjs/ast-1.11.0"
- sources."@webassemblyjs/floating-point-hex-parser-1.11.0"
- sources."@webassemblyjs/helper-api-error-1.11.0"
- sources."@webassemblyjs/helper-buffer-1.11.0"
- sources."@webassemblyjs/helper-numbers-1.11.0"
- sources."@webassemblyjs/helper-wasm-bytecode-1.11.0"
- sources."@webassemblyjs/helper-wasm-section-1.11.0"
- sources."@webassemblyjs/ieee754-1.11.0"
- sources."@webassemblyjs/leb128-1.11.0"
- sources."@webassemblyjs/utf8-1.11.0"
- sources."@webassemblyjs/wasm-edit-1.11.0"
- sources."@webassemblyjs/wasm-gen-1.11.0"
- sources."@webassemblyjs/wasm-opt-1.11.0"
- sources."@webassemblyjs/wasm-parser-1.11.0"
- sources."@webassemblyjs/wast-printer-1.11.0"
- sources."@webpack-cli/configtest-1.0.2"
- sources."@webpack-cli/info-1.2.3"
- sources."@webpack-cli/serve-1.3.1"
- sources."@xtuc/ieee754-1.2.0"
- sources."@xtuc/long-4.2.2"
- sources."abbrev-1.1.1"
- sources."acorn-7.4.1"
- sources."acorn-jsx-5.3.1"
- sources."ajv-6.12.6"
- sources."ajv-keywords-3.5.2"
- sources."ansi-colors-4.1.1"
- (sources."ansi-escapes-4.3.2" // {
- dependencies = [
- sources."type-fest-0.21.3"
- ];
- })
- sources."ansi-regex-4.1.0"
- sources."ansi-styles-3.2.1"
- sources."aproba-1.2.0"
- (sources."are-we-there-yet-1.1.5" // {
- dependencies = [
- sources."readable-stream-2.3.7"
- sources."string_decoder-1.1.1"
- ];
- })
- sources."argparse-1.0.10"
- sources."array-union-2.1.0"
- sources."asn1-0.2.4"
- sources."assert-plus-1.0.0"
- sources."astral-regex-1.0.0"
- sources."asynckit-0.4.0"
- sources."aws-sign2-0.7.0"
- sources."aws4-1.11.0"
- sources."balanced-match-1.0.2"
- sources."bcrypt-pbkdf-1.0.2"
- sources."block-stream-0.0.9"
- sources."brace-expansion-1.1.11"
- sources."braces-3.0.2"
- sources."browserslist-4.16.4"
- sources."buffer-from-1.1.1"
- sources."buffer-writer-2.0.0"
- sources."callsites-3.1.0"
- sources."caniuse-lite-1.0.30001209"
- sources."caseless-0.12.0"
- sources."chalk-2.4.2"
- sources."chardet-0.7.0"
- sources."chownr-1.1.4"
- sources."chrome-trace-event-1.0.3"
- sources."cli-cursor-3.1.0"
- sources."cli-width-3.0.0"
- (sources."clone-deep-4.0.1" // {
- dependencies = [
- sources."kind-of-6.0.3"
- ];
- })
- sources."code-point-at-1.1.0"
- sources."color-convert-1.9.3"
- sources."color-name-1.1.3"
- sources."colorette-1.2.2"
- sources."combined-stream-1.0.8"
- sources."commander-2.20.3"
- sources."compression-webpack-plugin-7.1.2"
- sources."concat-map-0.0.1"
- sources."config-chain-1.1.12"
- sources."console-control-strings-1.1.0"
- sources."console-stamp-3.0.0-rc4.2"
- sources."copy-anything-2.0.3"
- sources."core-util-is-1.0.2"
- (sources."cross-spawn-6.0.5" // {
- dependencies = [
- sources."semver-5.7.1"
- ];
- })
- sources."dashdash-1.14.1"
- sources."dateformat-3.0.3"
- sources."de-indent-1.0.2"
- sources."debug-4.3.1"
- sources."deep-extend-0.6.0"
- sources."deep-is-0.1.3"
- sources."delayed-stream-1.0.0"
- sources."delegates-1.0.0"
- sources."detect-libc-1.0.3"
- sources."dialog-polyfill-0.5.6"
- sources."dir-glob-3.0.1"
- sources."doctrine-3.0.0"
- sources."dotenv-8.2.0"
- sources."ecc-jsbn-0.1.2"
- (sources."editorconfig-0.15.3" // {
- dependencies = [
- sources."semver-5.7.1"
- ];
- })
- sources."electron-to-chromium-1.3.717"
- sources."emoji-regex-8.0.0"
- sources."enhanced-resolve-5.7.0"
- sources."enquirer-2.3.6"
- sources."envinfo-7.8.1"
- sources."errno-0.1.8"
- sources."es-module-lexer-0.4.1"
- sources."escalade-3.1.1"
- sources."escape-string-regexp-1.0.5"
- (sources."eslint-6.8.0" // {
- dependencies = [
- sources."eslint-utils-1.4.3"
- sources."eslint-visitor-keys-1.3.0"
- sources."regexpp-2.0.1"
- sources."semver-6.3.0"
- ];
- })
- sources."eslint-config-google-0.14.0"
- (sources."eslint-plugin-vue-6.2.2" // {
- dependencies = [
- sources."semver-5.7.1"
- ];
- })
- sources."eslint-scope-5.1.1"
- (sources."eslint-utils-2.1.0" // {
- dependencies = [
- sources."eslint-visitor-keys-1.3.0"
- ];
- })
- sources."eslint-visitor-keys-2.0.0"
- (sources."espree-6.2.1" // {
- dependencies = [
- sources."eslint-visitor-keys-1.3.0"
- ];
- })
- sources."esprima-4.0.1"
- (sources."esquery-1.4.0" // {
- dependencies = [
- sources."estraverse-5.2.0"
- ];
- })
- (sources."esrecurse-4.3.0" // {
- dependencies = [
- sources."estraverse-5.2.0"
- ];
- })
- sources."estraverse-4.3.0"
- sources."esutils-2.0.3"
- sources."events-3.3.0"
- (sources."execa-5.0.0" // {
- dependencies = [
- sources."cross-spawn-7.0.3"
- sources."is-stream-2.0.0"
- sources."path-key-3.1.1"
- sources."shebang-command-2.0.0"
- sources."shebang-regex-3.0.0"
- sources."which-2.0.2"
- ];
- })
- sources."extend-3.0.2"
- sources."external-editor-3.1.0"
- sources."extsprintf-1.3.0"
- sources."fast-deep-equal-3.1.3"
- sources."fast-glob-3.2.5"
- sources."fast-json-stable-stringify-2.1.0"
- sources."fast-levenshtein-2.0.6"
- sources."fastest-levenshtein-1.0.12"
- sources."fastq-1.11.0"
- sources."figures-3.2.0"
- sources."file-entry-cache-5.0.1"
- sources."fill-range-7.0.1"
- sources."flat-cache-2.0.1"
- sources."flatted-2.0.2"
- sources."forever-agent-0.6.1"
- sources."form-data-2.3.3"
- sources."fs-minipass-1.2.7"
- sources."fs.realpath-1.0.0"
- sources."fstream-1.0.12"
- sources."function-bind-1.1.1"
- sources."functional-red-black-tree-1.0.1"
- (sources."gauge-2.7.4" // {
- dependencies = [
- sources."ansi-regex-2.1.1"
- sources."is-fullwidth-code-point-1.0.0"
- sources."string-width-1.0.2"
- sources."strip-ansi-3.0.1"
- ];
- })
- sources."get-stream-6.0.1"
- sources."getpass-0.1.7"
- sources."glob-7.1.6"
- sources."glob-parent-5.1.2"
- sources."glob-to-regexp-0.4.1"
- sources."globals-12.4.0"
- (sources."globby-11.0.3" // {
- dependencies = [
- sources."ignore-5.1.8"
- ];
- })
- sources."graceful-fs-4.2.6"
- sources."har-schema-2.0.0"
- sources."har-validator-5.1.5"
- sources."has-1.0.3"
- sources."has-flag-3.0.0"
- sources."has-unicode-2.0.1"
- sources."he-1.2.0"
- sources."http-signature-1.2.0"
- sources."human-signals-2.1.0"
- sources."iconv-lite-0.4.24"
- sources."ignore-4.0.6"
- sources."ignore-walk-3.0.3"
- sources."image-size-0.5.5"
- sources."import-fresh-3.3.0"
- (sources."import-local-3.0.2" // {
- dependencies = [
- sources."find-up-4.1.0"
- sources."locate-path-5.0.0"
- sources."p-limit-2.3.0"
- sources."p-locate-4.1.0"
- sources."pkg-dir-4.2.0"
- ];
- })
- sources."imurmurhash-0.1.4"
- sources."inflight-1.0.6"
- sources."inherits-2.0.4"
- sources."ini-1.3.8"
- (sources."inquirer-7.3.3" // {
- dependencies = [
- sources."ansi-regex-5.0.0"
- sources."ansi-styles-4.3.0"
- sources."chalk-4.1.0"
- sources."color-convert-2.0.1"
- sources."color-name-1.1.4"
- sources."has-flag-4.0.0"
- sources."strip-ansi-6.0.0"
- sources."supports-color-7.2.0"
- ];
- })
- sources."interpret-2.2.0"
- sources."is-core-module-2.2.0"
- sources."is-extglob-2.1.1"
- sources."is-fullwidth-code-point-3.0.0"
- sources."is-glob-4.0.1"
- sources."is-number-7.0.0"
- sources."is-plain-object-2.0.4"
- sources."is-typedarray-1.0.0"
- sources."is-what-3.14.1"
- sources."isarray-1.0.0"
- sources."isexe-2.0.0"
- sources."isobject-3.0.1"
- sources."isstream-0.1.2"
- (sources."jest-worker-26.6.2" // {
- dependencies = [
- sources."has-flag-4.0.0"
- sources."supports-color-7.2.0"
- ];
- })
- (sources."js-beautify-1.13.13" // {
- dependencies = [
- sources."mkdirp-1.0.4"
- ];
- })
- sources."js-tokens-4.0.0"
- sources."js-yaml-3.14.1"
- sources."jsbn-0.1.1"
- sources."json-parse-better-errors-1.0.2"
- sources."json-schema-0.2.3"
- sources."json-schema-traverse-0.4.1"
- sources."json-stable-stringify-without-jsonify-1.0.1"
- sources."json-stringify-safe-5.0.1"
- sources."jsprim-1.4.1"
- sources."less-3.13.1"
- sources."levn-0.3.0"
- sources."loader-runner-4.2.0"
- sources."lodash-4.17.21"
- sources."lru-cache-4.1.5"
- (sources."make-dir-2.1.0" // {
- dependencies = [
- sources."semver-5.7.1"
- ];
- })
- sources."merge-stream-2.0.0"
- sources."merge2-1.4.1"
- sources."micromatch-4.0.4"
- sources."mime-1.6.0"
- sources."mime-db-1.47.0"
- sources."mime-types-2.1.30"
- sources."mimic-fn-2.1.0"
- sources."minimatch-3.0.4"
- sources."minimist-1.2.5"
- (sources."minipass-2.9.0" // {
- dependencies = [
- sources."yallist-3.1.1"
- ];
- })
- sources."minizlib-1.3.3"
- sources."mkdirp-0.5.5"
- sources."mnemonist-0.38.3"
- sources."ms-2.1.2"
- sources."mute-stream-0.0.8"
- sources."native-request-1.0.8"
- sources."natural-compare-1.4.0"
- (sources."needle-2.6.0" // {
- dependencies = [
- sources."debug-3.2.7"
- ];
- })
- sources."neo-async-2.6.2"
- sources."nice-try-1.0.5"
- sources."node-addon-api-3.1.0"
- (sources."node-gyp-3.8.0" // {
- dependencies = [
- sources."nopt-3.0.6"
- sources."semver-5.3.0"
- ];
- })
- (sources."node-pre-gyp-0.11.0" // {
- dependencies = [
- sources."nopt-4.0.3"
- sources."semver-5.7.1"
- sources."tar-4.4.13"
- sources."yallist-3.1.1"
- ];
- })
- sources."node-releases-1.1.71"
- sources."nopt-5.0.0"
- sources."npm-bundled-1.1.1"
- sources."npm-normalize-package-bin-1.0.1"
- sources."npm-packlist-1.4.8"
- (sources."npm-run-path-4.0.1" // {
- dependencies = [
- sources."path-key-3.1.1"
- ];
- })
- sources."npmlog-4.1.2"
- sources."number-is-nan-1.0.1"
- sources."oauth-sign-0.9.0"
- sources."object-assign-4.1.1"
- sources."obliterator-1.6.1"
- sources."once-1.4.0"
- sources."onetime-5.1.2"
- sources."optionator-0.8.3"
- sources."os-homedir-1.0.2"
- sources."os-tmpdir-1.0.2"
- sources."osenv-0.1.5"
- sources."p-limit-3.1.0"
- sources."p-try-2.2.0"
- sources."packet-reader-1.0.0"
- sources."parent-module-1.0.1"
- sources."path-exists-4.0.0"
- sources."path-is-absolute-1.0.1"
- sources."path-key-2.0.1"
- sources."path-parse-1.0.6"
- sources."path-type-4.0.0"
- sources."performance-now-2.1.0"
- sources."pg-8.6.0"
- sources."pg-connection-string-2.5.0"
- sources."pg-int8-1.0.1"
- sources."pg-pool-3.3.0"
- sources."pg-protocol-1.5.0"
- sources."pg-types-2.2.0"
- sources."pgpass-1.0.4"
- sources."picomatch-2.2.3"
- sources."pify-4.0.1"
- sources."postgres-array-2.0.0"
- sources."postgres-bytea-1.0.0"
- sources."postgres-date-1.0.7"
- sources."postgres-interval-1.2.0"
- sources."prelude-ls-1.1.2"
- sources."process-nextick-args-2.0.1"
- sources."progress-2.0.3"
- sources."proto-list-1.2.4"
- sources."prr-1.0.1"
- sources."pseudomap-1.0.2"
- sources."psl-1.8.0"
- sources."punycode-2.1.1"
- sources."qs-6.5.2"
- sources."queue-microtask-1.2.3"
- sources."randombytes-2.1.0"
- (sources."rc-1.2.8" // {
- dependencies = [
- sources."strip-json-comments-2.0.1"
- ];
- })
- sources."readable-stream-3.6.0"
- sources."rechoir-0.7.0"
- sources."regexpp-3.1.0"
- (sources."request-2.88.2" // {
- dependencies = [
- sources."tough-cookie-2.5.0"
- ];
- })
- sources."resolve-1.20.0"
- (sources."resolve-cwd-3.0.0" // {
- dependencies = [
- sources."resolve-from-5.0.0"
- ];
- })
- sources."resolve-from-4.0.0"
- sources."restore-cursor-3.1.0"
- sources."reusify-1.0.4"
- sources."rimraf-2.6.3"
- sources."run-async-2.4.1"
- sources."run-parallel-1.2.0"
- sources."rxjs-6.6.7"
- sources."safe-buffer-5.1.2"
- sources."safer-buffer-2.1.2"
- sources."sax-1.2.4"
- sources."schema-utils-3.0.0"
- (sources."semver-7.3.5" // {
- dependencies = [
- sources."lru-cache-6.0.0"
- sources."yallist-4.0.0"
- ];
- })
- sources."serialize-javascript-5.0.1"
- sources."set-blocking-2.0.0"
- (sources."shallow-clone-3.0.1" // {
- dependencies = [
- sources."kind-of-6.0.3"
- ];
- })
- sources."shebang-command-1.2.0"
- sources."shebang-regex-1.0.0"
- sources."sigmund-1.0.1"
- sources."signal-exit-3.0.3"
- sources."slash-3.0.0"
- (sources."slice-ansi-2.1.0" // {
- dependencies = [
- sources."is-fullwidth-code-point-2.0.0"
- ];
- })
- sources."source-list-map-2.0.1"
- sources."source-map-0.6.1"
- sources."source-map-support-0.5.19"
- sources."spectre.css-0.5.9"
- sources."split2-3.2.2"
- sources."sprintf-js-1.0.3"
- sources."sqlite3-5.0.2"
- sources."sshpk-1.16.1"
- (sources."string-width-4.2.2" // {
- dependencies = [
- sources."ansi-regex-5.0.0"
- sources."strip-ansi-6.0.0"
- ];
- })
- (sources."string_decoder-1.3.0" // {
- dependencies = [
- sources."safe-buffer-5.2.1"
- ];
- })
- sources."strip-ansi-5.2.0"
- sources."strip-final-newline-2.0.0"
- sources."strip-json-comments-3.1.1"
- sources."supports-color-5.5.0"
- (sources."table-5.4.6" // {
- dependencies = [
- sources."emoji-regex-7.0.3"
- sources."is-fullwidth-code-point-2.0.0"
- sources."string-width-3.1.0"
- ];
- })
- sources."tapable-2.2.0"
- sources."tar-2.2.2"
- (sources."terser-5.6.1" // {
- dependencies = [
- sources."source-map-0.7.3"
- ];
- })
- sources."terser-webpack-plugin-5.1.1"
- sources."text-table-0.2.0"
- sources."through-2.3.8"
- sources."tmp-0.0.33"
- sources."to-regex-range-5.0.1"
- sources."tslib-1.14.1"
- sources."tsutils-3.21.0"
- sources."tunnel-agent-0.6.0"
- sources."tweetnacl-0.14.5"
- sources."type-check-0.3.2"
- sources."type-fest-0.8.1"
- sources."typescript-4.2.4"
- sources."uri-js-4.4.1"
- sources."util-deprecate-1.0.2"
- sources."uuid-3.4.0"
- sources."v8-compile-cache-2.3.0"
- sources."verror-1.10.0"
- sources."vue-2.6.10"
- (sources."vue-eslint-parser-7.6.0" // {
- dependencies = [
- sources."eslint-visitor-keys-1.3.0"
- ];
- })
- sources."vue-template-compiler-2.6.10"
- sources."watchpack-2.1.1"
- (sources."webpack-5.33.2" // {
- dependencies = [
- sources."acorn-8.1.1"
- ];
- })
- (sources."webpack-cli-4.6.0" // {
- dependencies = [
- sources."commander-7.2.0"
- ];
- })
- sources."webpack-merge-5.7.3"
- sources."webpack-sources-2.2.0"
- sources."which-1.3.1"
- (sources."wide-align-1.1.3" // {
- dependencies = [
- sources."ansi-regex-3.0.0"
- sources."is-fullwidth-code-point-2.0.0"
- sources."string-width-2.1.1"
- sources."strip-ansi-4.0.0"
- ];
- })
- sources."wildcard-2.0.0"
- sources."word-wrap-1.2.3"
- sources."wrappy-1.0.2"
- sources."write-1.0.3"
- sources."xtend-4.0.2"
- sources."yallist-2.1.2"
- sources."yocto-queue-0.1.0"
- ];
- buildInputs = globalBuildInputs;
- meta = {
- description = "Terraforming Mars Game";
- homepage = "https://github.com/bafolts/terraforming-mars#readme";
- license = "ISC";
- };
- production = true;
- bypassCache = true;
- reconstructLock = false;
- };
-in
-{
- args = args;
- sources = sources;
- tarball = nodeEnv.buildNodeSourceDist args;
- package = nodeEnv.buildNodePackage args;
- shell = nodeEnv.buildNodeShell args;
-}
diff --git a/modules/private/websites/tools/games/terraforming-mars/terraforming-mars.nix b/modules/private/websites/tools/games/terraforming-mars/terraforming-mars.nix
deleted file mode 100644
index 502a553..0000000
--- a/modules/private/websites/tools/games/terraforming-mars/terraforming-mars.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ fetchgit, runCommand, callPackage, mylibs, nodePackages, nodejs, git }:
-let
- source = fetchgit {
- url = "https://github.com/bafolts/terraforming-mars";
- rev = "25b3f80e276cc0c1fc283a78b6ae94b13c545ab6";
- sha256 = "03xcwvxv2mlmswngklzqp3lf30hgkvdilqq7p1z4h8xmy50cy12k";
- leaveDotGit = true;
- fetchSubmodules = true;
- };
- patchedSource = runCommand "patch-source" {} ''
- cp -r ${source} $out
- chmod -R u+w $out
- sed -i -e 's/"lockfileVersion": 2,/"lockfileVersion": 1,/' $out/package-lock.json
- '';
- packages = callPackage ./node-packages.nix {
- src = patchedSource;
- nodeEnv = callPackage mylibs.nodeEnv {};
- globalBuildInputs = [ nodePackages.node-pre-gyp ];
- };
- terraforming-mars = runCommand "terraforming-mars" {
- buildInputs = [ nodejs git ];
- } ''
- cp -r ${source} ./source
- chmod -R u+w source
- cd source
- ln -s ${packages.package}/lib/node_modules/terraforming-mars/node_modules .
- npm run build
- mkdir $out
- cp -a build $out/
- cp -a assets $out/
- cp package.json $out/
- ln -s ${packages.package}/lib/node_modules/terraforming-mars/node_modules $out
- ln -s /var/lib/terraforming-mars/db $out/db
- '';
-in
- terraforming-mars
diff --git a/modules/private/websites/tools/git/default.nix b/modules/private/websites/tools/git/default.nix
deleted file mode 100644
index 8f611ee..0000000
--- a/modules/private/websites/tools/git/default.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- mantisbt = pkgs.callPackage ./mantisbt.nix {
- inherit (pkgs.webapps) mantisbt_2 mantisbt_2-plugins;
- env = config.myEnv.tools.mantisbt;
- inherit config;
- };
- gitweb = pkgs.callPackage ./gitweb.nix {
- gitoliteDir = config.myServices.gitolite.gitoliteDir;
- };
-
- cfg = config.myServices.websites.tools.git;
-in {
- options.myServices.websites.tools.git = {
- enable = lib.mkEnableOption "enable git's website";
- };
-
- config = lib.mkIf cfg.enable {
- secrets.keys = mantisbt.keys;
- services.websites.env.tools.modules =
- gitweb.apache.modules ++
- mantisbt.apache.modules;
-
- system.activationScripts.mantisbt = mantisbt.activationScript;
- services.websites.env.tools.vhostConfs.git = {
- certName = "eldiron";
- addToCerts = true;
- hosts = ["git.immae.eu" ];
- root = gitweb.apache.root;
- extraConfig = [
- gitweb.apache.vhostConf
- (mantisbt.apache.vhostConf config.services.phpfpm.pools.mantisbt.socket)
- ''
- RewriteEngine on
- RewriteCond %{REQUEST_URI} ^/releases
- RewriteRule /releases(.*) https://release.immae.eu$1 [P,L]
- ''
- ];
- };
- services.phpfpm.pools = {
- mantisbt = {
- user = config.services.httpd.Tools.user;
- group = config.services.httpd.Tools.group;
- settings = mantisbt.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- };
- };
-}
diff --git a/modules/private/websites/tools/git/gitweb.nix b/modules/private/websites/tools/git/gitweb.nix
deleted file mode 100644
index ff34da5..0000000
--- a/modules/private/websites/tools/git/gitweb.nix
+++ /dev/null
@@ -1,119 +0,0 @@
-{ gitweb, writeText, stdenv, coreutils, writeScript, gitolite, git, cgit, gitoliteDir, mailcap, highlight }:
-rec {
- varDir = gitoliteDir;
- config = writeText "gitweb.conf" ''
- $git_temp = "/tmp";
-
- # The directories where your projects are. Must not end with a
- # slash.
- $projectroot = "${varDir}/repositories";
-
- $projects_list = "${varDir}/projects.list";
- $strict_export = "true";
-
- # Base URLs for links displayed in the web interface.
- our @git_base_url_list = qw(ssh://gitolite@git.immae.eu https://git.immae.eu);
-
- $feature{'blame'}{'default'} = [1];
- $feature{'avatar'}{'default'} = ['gravatar'];
- $feature{'highlight'}{'default'} = [1];
-
- @stylesheets = ("gitweb-theme/gitweb.css");
- $logo = "gitweb-theme/git-logo.png";
- $favicon = "gitweb-theme/git-favicon.png";
- $javascript = "gitweb-theme/gitweb.js";
- $logo_url = "https://git.immae.eu/";
- $projects_list_group_categories = "true";
- $projects_list_description_width = 60;
- $project_list_default_category = "__Others__";
- $highlight_bin = "${highlight}/bin/highlight";
- '';
- aboutFilter = writeScript "about-filter.sh" ''
- #!${stdenv.shell}
-
- if [ -f "$CGIT_REPO_PATH/README.html" ]; then
- cat "$CGIT_REPO_PATH/README.html"
- else
- ${cgit}/lib/cgit/filters/about-formatting.sh "$@"
- fi
- '';
- cgitConfig = writeText "cgitrc" ''
- css=/cgit-css/cgit.css
- logo=/cgit-css/cgit.png
- favicon=/cgit-css/favicon.ico
-
- root-title=Immae’s git
- root-desc=To go back to the old interface: https://git.immae.eu/?old
- readme=:README.md
- readme=:readme.md
- readme=:README
- readme=:DOCUMENTATION.md
- about-filter=${aboutFilter}
- #${cgit}/lib/cgit/filters/about-formatting.sh
- source-filter=${cgit}/lib/cgit/filters/syntax-highlighting.py
-
- enable-blame=1
- enable-index-links=1
- enable-commit-graph=1
- enable-log-filecount=1
- enable-log-linecount=1
-
- enable-html-serving=1
- # Allow using gitweb.* keys
- enable-git-config=1
-
- side-by-side-diffs=1
- snapshots=tar.gz tar.zst zip
- mimetype-file=${mailcap}/etc/mime.types
-
- section=__Others__
- clone-url=ssh://gitolite@git.immae.eu/$CGIT_REPO_URL https://git.immae.eu/$CGIT_REPO_URL
- #section-from-path=1
- project-list=${varDir}/projects.list
- scan-path=${varDir}/repositories
- '';
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "cgid" ];
- root = gitweb;
- vhostConf = ''
- SetEnv GIT_PROJECT_ROOT ${varDir}/repositories/
- ScriptAliasMatch \
- "(?x)^/(.*/(HEAD | \
- info/refs | \
- objects/(info/[^/]+ | \
- [0-9a-f]{2}/[0-9a-f]{38} | \
- pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
- git-(upload|receive)-pack))$" \
- ${git}/libexec/git-core/git-http-backend/$1
-
-
- Require all granted
-
-
- DirectoryIndex gitweb.cgi
- Require all granted
- AllowOverride None
- Options ExecCGI FollowSymLinks
-
- SetHandler cgi-script
- SetEnv GITWEB_CONFIG "${config}"
-
-
-
- SetEnv CGIT_CONFIG ${cgitConfig}
- ScriptAlias /cgit "${cgit}/cgit/cgit.cgi/"
- Alias /cgit-css "${cgit}/cgit"
-
- AllowOverride None
- Options ExecCGI FollowSymlinks
- Require all granted
-
-
- RewriteEngine On
- RewriteCond %{QUERY_STRING} ^$
- RewriteRule ^/?$ /cgit [L,R=302]
- '';
- };
-}
diff --git a/modules/private/websites/tools/git/mantisbt.nix b/modules/private/websites/tools/git/mantisbt.nix
deleted file mode 100644
index 2ef76af..0000000
--- a/modules/private/websites/tools/git/mantisbt.nix
+++ /dev/null
@@ -1,91 +0,0 @@
-{ env, mantisbt_2, mantisbt_2-plugins, config }:
-rec {
- activationScript = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d /var/lib/php/sessions/mantisbt
- '';
- };
- keys."webapps/tools-mantisbt" = {
- user = apache.user;
- group = apache.group;
- permissions = "0400";
- text = ''
-
- DirectoryIndex index.php
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- AllowOverride All
- SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
- Options FollowSymlinks
- Require all granted
-
-
- #Reenable during upgrade
- Require all denied
-
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "postgresql.service" "openldap.service" ];
- basedir = builtins.concatStringsSep ":" (
- [ webRoot config.secrets.fullPaths."webapps/tools-mantisbt" ]
- ++ webRoot.plugins);
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- "php_admin_value[upload_max_filesize]" = "5000000";
-
- "php_admin_value[open_basedir]" = "${basedir}:/tmp:/var/lib/php/sessions/mantisbt";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/mantisbt";
- };
- };
-}
diff --git a/modules/private/websites/tools/im/default.nix b/modules/private/websites/tools/im/default.nix
deleted file mode 100644
index 94dc4f8..0000000
--- a/modules/private/websites/tools/im/default.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ config, lib, pkgs, ... }:
-let
- cfg = config.myServices.websites.tools.im;
-in
-{
- options.myServices.websites.tools.im = {
- enable = lib.mkEnableOption "enable im website";
- };
-
- config = lib.mkIf cfg.enable {
- services.websites.env.tools.vhostConfs.im = {
- certName = "eldiron";
- addToCerts = true;
- hosts = ["im.immae.fr"];
- root = ./www;
- extraConfig = [
- ''
- Alias /glowing-bear ${pkgs.glowing-bear}
- Alias /converse ${./www}/converse.html
- ProxyPreserveHost On
-
- ProxyPass http://localhost:5280/bosh
- ProxyPassReverse http://localhost:5280/bosh
-
-
- ProxyPass ws://localhost:5280/ws
-
- ProxyPass /upload http://localhost:5280/upload
- ProxyPassReverse /upload http://localhost:5280/upload
- ProxyPass /admin http://localhost:5280/admin
- ProxyPassReverse /admin http://localhost:5280/admin
- ProxyPass /api http://localhost:5280/api
- ProxyPassReverse /api http://localhost:5280/api
-
- AllowOverride none
- Require all granted
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/tools/im/www/converse.html b/modules/private/websites/tools/im/www/converse.html
deleted file mode 100644
index 936dde4..0000000
--- a/modules/private/websites/tools/im/www/converse.html
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
- Converse
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/private/websites/tools/im/www/index.html b/modules/private/websites/tools/im/www/index.html
deleted file mode 100644
index 90c5458..0000000
--- a/modules/private/websites/tools/im/www/index.html
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
- Instant messaging configuration (Jabber/XMPP)
-
-
-
-
- Pre-configured clients:
-
-
-
- Technical details:
-
- HTTP-bind/BOSH access (XEP-0124 / XEP-0206): https://im.immae.fr/bosh
- WS access (RFC 7395): wss://im.immae.fr/ws
-
-
-
-
diff --git a/modules/private/websites/tools/mail/default.nix b/modules/private/websites/tools/mail/default.nix
deleted file mode 100644
index 390f7ad..0000000
--- a/modules/private/websites/tools/mail/default.nix
+++ /dev/null
@@ -1,79 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- roundcubemail = pkgs.callPackage ./roundcubemail.nix {
- inherit (pkgs.webapps) roundcubemail;
- env = config.myEnv.tools.roundcubemail;
- inherit config;
- };
- rainloop = pkgs.callPackage ./rainloop.nix {
- rainloop = pkgs.rainloop-community;
- };
- cfg = config.myServices.websites.tools.email;
- pcfg = config.services.phpfpm.pools;
-in
-{
- options.myServices.websites.tools.email = {
- enable = lib.mkEnableOption "enable email website";
- };
-
- imports = [
- ./mta-sts.nix
- ];
-
- config = lib.mkIf cfg.enable {
- secrets.keys = roundcubemail.keys;
-
- services.websites.env.tools.modules =
- [ "proxy_fcgi" ]
- ++ rainloop.apache.modules
- ++ roundcubemail.apache.modules;
-
- services.websites.env.tools.vhostConfs.mail = {
- certName = "mail";
- addToCerts = true;
- hosts = ["mail.immae.eu"];
- root = ./www;
- extraConfig = [
- (rainloop.apache.vhostConf pcfg.rainloop.socket)
- (roundcubemail.apache.vhostConf pcfg.roundcubemail.socket)
- ''
-
- Require all granted
- Options -Indexes
-
- ''
- ];
- };
- systemd.services = {
- phpfpm-rainloop = {
- after = lib.mkAfter rainloop.phpFpm.serviceDeps;
- wants = rainloop.phpFpm.serviceDeps;
- };
- phpfpm-roundcubemail = {
- after = lib.mkAfter roundcubemail.phpFpm.serviceDeps;
- wants = roundcubemail.phpFpm.serviceDeps;
- };
- };
-
- services.phpfpm.pools.roundcubemail = {
- user = "wwwrun";
- group = "wwwrun";
- settings = roundcubemail.phpFpm.pool;
- phpOptions = config.services.phpfpm.phpOptions + ''
- date.timezone = 'CET'
- '';
- phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [ all.imagick ]);
- };
- services.phpfpm.pools.rainloop = {
- user = "wwwrun";
- group = "wwwrun";
- settings = rainloop.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- system.activationScripts = {
- roundcubemail = roundcubemail.activationScript;
- rainloop = rainloop.activationScript;
- };
- };
-
-}
diff --git a/modules/private/websites/tools/mail/mta-sts.nix b/modules/private/websites/tools/mail/mta-sts.nix
deleted file mode 100644
index 77ba2d4..0000000
--- a/modules/private/websites/tools/mail/mta-sts.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- domains = (lib.remove null (lib.flatten (map
- (zone: map
- (e: if e.receive
- then {
- domain = "${e.domain}${lib.optionalString (e.domain != "") "."}${zone.name}";
- mail = zone.name;
- }
- else null
- )
- (zone.withEmail or [])
- )
- config.myEnv.dns.masterZones
- )));
- mxes = lib.mapAttrsToList
- (n: v: v.mx.subdomain)
- (lib.attrsets.filterAttrs (n: v: v.mx.enable) config.myEnv.servers);
- # FIXME: increase the id number in modules/private/dns.nix when this
- # file change (date -u +'%Y%m%d%H%M%S'Z)
- file = domain: pkgs.writeText "mta-sts-${domain.domain}.txt" (
- builtins.concatStringsSep "\r\n" ([ "version: STSv1" "mode: testing" ]
- ++ (map (v: "mx: ${v}.${domain.mail}") mxes)
- ++ [ "max_age: 604800" ]
- ));
- root = pkgs.runCommand "mta-sts_root" {} ''
- mkdir -p $out
- ${builtins.concatStringsSep "\n" (map (d:
- "cp ${file d} $out/${d.domain}.txt"
- ) domains)}
- '';
- cfg = config.myServices.websites.tools.email;
-in
-{
- config = lib.mkIf cfg.enable {
- services.websites.env.tools.vhostConfs.mta_sts = {
- certName = "mail";
- addToCerts = true;
- hosts = ["mta-sts.mail.immae.eu"] ++ map (v: "mta-sts.${v.domain}") domains;
- root = root;
- extraConfig = [
- ''
- RewriteEngine on
- RewriteCond %{HTTP_HOST} ^mta-sts.(.*)$
- RewriteRule ^/.well-known/mta-sts.txt$ %{DOCUMENT_ROOT}/%1.txt [L]
-
- Require all granted
- Options -Indexes
-
- ''
- ];
- };
- };
-}
diff --git a/modules/private/websites/tools/mail/rainloop.nix b/modules/private/websites/tools/mail/rainloop.nix
deleted file mode 100644
index 20e43a1..0000000
--- a/modules/private/websites/tools/mail/rainloop.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ lib, rainloop, writeText, stdenv, fetchurl }:
-rec {
- varDir = "/var/lib/rainloop";
- activationScript = {
- deps = [ "wrappers" ];
- text = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}
- install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
- install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/data
- '';
- };
- webRoot = rainloop.override { dataPath = "${varDir}/data"; };
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /rainloop "${root}"
-
- DirectoryIndex index.php
- AllowOverride All
- Options -FollowSymlinks
- Require all granted
-
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
-
-
- Require all denied
-
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "postgresql.service" ];
- basedir = builtins.concatStringsSep ":" [ webRoot varDir ];
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "RainloopPHPSESSID";
- "php_admin_value[upload_max_filesize]" = "200M";
- "php_admin_value[post_max_size]" = "200M";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- };
- };
-}
diff --git a/modules/private/websites/tools/mail/roundcubemail.nix b/modules/private/websites/tools/mail/roundcubemail.nix
deleted file mode 100644
index 2661b55..0000000
--- a/modules/private/websites/tools/mail/roundcubemail.nix
+++ /dev/null
@@ -1,118 +0,0 @@
-{ env, roundcubemail, apacheHttpd, config }:
-rec {
- varDir = "/var/lib/roundcubemail";
- activationScript = {
- deps = [ "wrappers" ];
- text = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
- ${varDir}/cache ${varDir}/logs
- install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
- '';
- };
- keys."webapps/tools-roundcube" = {
- user = apache.user;
- group = apache.group;
- permissions = "0400";
- text =
- let
- psql_url = with env.postgresql; "pgsql://${user}:${password}@unix(${socket}:${port})/${database}";
- in ''
- "mail.immae.eu"
- );
- $config['imap_conn_options'] = array("ssl" => array("verify_peer" => false));
- $config['smtp_server'] = 'tls://smtp.immae.eu';
- $config['smtp_port'] = '587';
- $config['managesieve_host'] = 'imap.immae.eu';
- $config['managesieve_port'] = '4190';
- $config['managesieve_usetls'] = true;
- $config['managesieve_conn_options'] = array("ssl" => array("verify_peer" => false));
-
- $config['imap_cache'] = 'db';
- $config['messages_cache'] = 'db';
-
- $config['support_url'] = ''';
-
- $config['des_key'] = '${env.secret}';
-
- $config['skin'] = 'elastic';
- $config['plugins'] = array(
- 'attachment_reminder',
- 'emoticons',
- 'filesystem_attachments',
- 'hide_blockquote',
- 'identicon',
- 'identity_select',
- 'jqueryui',
- 'markasjunk',
- 'managesieve',
- 'newmail_notifier',
- 'vcard_attachments',
- 'zipdownload',
-
- 'automatic_addressbook',
- 'message_highlight',
- 'carddav',
- // Ne marche pas ?: 'ident_switch',
- // Ne marche pas ?: 'thunderbird_labels',
- );
-
- $config['language'] = 'fr_FR';
-
- $config['drafts_mbox'] = 'Drafts';
- $config['junk_mbox'] = 'Junk';
- $config['sent_mbox'] = 'Sent';
- $config['trash_mbox'] = 'Trash';
- $config['default_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash');
- $config['draft_autosave'] = 60;
- $config['enable_installer'] = false;
- $config['log_driver'] = 'file';
- $config['temp_dir'] = '${varDir}/cache';
- $config['mime_types'] = '${apacheHttpd}/conf/mime.types';
- '';
- };
- webRoot = (roundcubemail.override { roundcube_config = config.secrets.fullPaths."webapps/tools-roundcube"; }).withPlugins (p: [ p.automatic_addressbook p.carddav p.contextmenu p.contextmenu_folder p.html5_notifier p.ident_switch p.message_highlight p.thunderbird_labels ]);
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /roundcube "${root}"
-
- DirectoryIndex index.php
- AllowOverride All
- Options FollowSymlinks
- Require all granted
-
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "postgresql.service" ];
- basedir = builtins.concatStringsSep ":" (
- [ webRoot config.secrets.fullPaths."webapps/tools-roundcube" varDir ]
- ++ webRoot.plugins
- ++ webRoot.skins);
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "RoundcubemailPHPSESSID";
- "php_admin_value[upload_max_filesize]" = "200M";
- "php_admin_value[post_max_size]" = "200M";
- "php_admin_value[open_basedir]" = "${basedir}:${apacheHttpd}/conf/mime.types:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- };
- };
-}
diff --git a/modules/private/websites/tools/mail/www/index.html b/modules/private/websites/tools/mail/www/index.html
deleted file mode 100644
index 88b0ebd..0000000
--- a/modules/private/websites/tools/mail/www/index.html
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
- E-mail configuration
-
-
-
-
- Email configuration. For automatic configuration in your smart e-mail
- client, use login@mail.immae.eu . If it
- doesn’t work, the details are there:
-
- IMAP: imap.immae.eu
-
- No unencrypted access
- STARTTLS: 143
- SSL: 993
-
-
- POP3: pop3.immae.eu
-
- No unencrypted access
- STARTTLS: 110
- SSL: 995
-
-
- SMTP: smtp.immae.eu
-
- No unencrypted access
- STARTTLS: 587
- SSL: 465
-
-
- Sieve: imap.immae.eu
-
- No unencrypted access
- STARTTLS: 4190
-
-
-
-
- Webmails:
-
-
-
-
-
diff --git a/modules/private/websites/tools/mastodon/default.nix b/modules/private/websites/tools/mastodon/default.nix
deleted file mode 100644
index 173a4b8..0000000
--- a/modules/private/websites/tools/mastodon/default.nix
+++ /dev/null
@@ -1,136 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- env = config.myEnv.tools.mastodon;
- root = "${mcfg.workdir}/public/";
- cfg = config.myServices.websites.tools.mastodon;
- mcfg = config.services.mastodon;
-in {
- options.myServices.websites.tools.mastodon = {
- enable = lib.mkEnableOption "enable mastodon's website";
- };
-
- config = lib.mkIf cfg.enable {
- secrets.keys."webapps/tools-mastodon" = {
- user = "mastodon";
- group = "mastodon";
- permissions = "0400";
- text = ''
- REDIS_HOST=${env.redis.host}
- REDIS_PORT=${env.redis.port}
- REDIS_DB=${env.redis.db}
- DB_HOST=${env.postgresql.socket}
- DB_USER=${env.postgresql.user}
- DB_NAME=${env.postgresql.database}
- DB_PASS=${env.postgresql.password}
- DB_PORT=${env.postgresql.port}
-
- LOCAL_DOMAIN=mastodon.immae.eu
- LOCAL_HTTPS=true
- ALTERNATE_DOMAINS=immae.eu
-
- PAPERCLIP_SECRET=${env.paperclip_secret}
- SECRET_KEY_BASE=${env.secret_key_base}
- OTP_SECRET=${env.otp_secret}
-
- VAPID_PRIVATE_KEY=${env.vapid.private}
- VAPID_PUBLIC_KEY=${env.vapid.public}
-
- SMTP_DELIVERY_METHOD=sendmail
- SMTP_FROM_ADDRESS=mastodon@tools.immae.eu
- SENDMAIL_LOCATION="/run/wrappers/bin/sendmail"
- PAPERCLIP_ROOT_PATH=${mcfg.dataDir}
-
- STREAMING_CLUSTER_NUM=1
-
- RAILS_LOG_LEVEL=warn
-
- # LDAP authentication (optional)
- LDAP_ENABLED=true
- LDAP_HOST=${env.ldap.host}
- LDAP_PORT=636
- LDAP_METHOD=simple_tls
- LDAP_BASE="${env.ldap.base}"
- LDAP_BIND_DN="${env.ldap.dn}"
- LDAP_PASSWORD="${env.ldap.password}"
- LDAP_UID="uid"
- LDAP_SEARCH_FILTER="${env.ldap.filter}"
- '';
- };
- services.mastodon = {
- enable = true;
- configFile = config.secrets.fullPaths."webapps/tools-mastodon";
- socketsPrefix = "live_immae";
- dataDir = "/var/lib/mastodon_immae";
- };
- services.filesWatcher.mastodon-streaming = {
- restart = true;
- paths = [ mcfg.configFile ];
- };
- services.filesWatcher.mastodon-web = {
- restart = true;
- paths = [ mcfg.configFile ];
- };
- services.filesWatcher.mastodon-sidekiq = {
- restart = true;
- paths = [ mcfg.configFile ];
- };
-
-
- services.websites.env.tools.modules = [
- "headers" "proxy" "proxy_wstunnel" "proxy_http"
- ];
- services.websites.env.tools.vhostConfs.mastodon = {
- certName = "eldiron";
- addToCerts = true;
- hosts = ["mastodon.immae.eu" ];
- root = root;
- extraConfig = [ ''
- Header always set Referrer-Policy "strict-origin-when-cross-origin"
- Header always set Strict-Transport-Security "max-age=31536000"
-
-
- Header always set Cache-Control "public, max-age=31536000, immutable"
- Require all granted
-
-
- ProxyPreserveHost On
- RequestHeader set X-Forwarded-Proto "https"
-
- RewriteEngine On
-
- ProxyPass /500.html !
- ProxyPass /sw.js !
- ProxyPass /embed.js !
- ProxyPass /robots.txt !
- ProxyPass /manifest.json !
- ProxyPass /browserconfig.xml !
- ProxyPass /mask-icon.svg !
- ProxyPassMatch ^(/.*\.(png|ico|gif)$) !
- ProxyPassMatch ^/(assets|avatars|emoji|headers|packs|sounds|system|.well-known/acme-challenge) !
-
- RewriteRule ^/api/v1/streaming/(.+)$ unix://${mcfg.sockets.node}|http://mastodon.immae.eu/api/v1/streaming/$1 [P,NE,QSA,L]
- RewriteRule ^/api/v1/streaming/$ unix://${mcfg.sockets.node}|ws://mastodon.immae.eu/ [P,NE,QSA,L]
- ProxyPass / unix://${mcfg.sockets.rails}|http://mastodon.immae.eu/
- ProxyPassReverse / unix://${mcfg.sockets.rails}|http://mastodon.immae.eu/
-
- Alias /system ${mcfg.dataDir}
-
-
- Require all granted
- Options -MultiViews
-
-
-
- Require all granted
- Options -MultiViews +FollowSymlinks
-
-
- ErrorDocument 500 /500.html
- ErrorDocument 501 /500.html
- ErrorDocument 502 /500.html
- ErrorDocument 503 /500.html
- ErrorDocument 504 /500.html
- '' ];
- };
- };
-}
diff --git a/modules/private/websites/tools/mgoblin/default.nix b/modules/private/websites/tools/mgoblin/default.nix
deleted file mode 100644
index 1e5f5a0..0000000
--- a/modules/private/websites/tools/mgoblin/default.nix
+++ /dev/null
@@ -1,134 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- env = config.myEnv.tools.mediagoblin;
- cfg = config.myServices.websites.tools.mediagoblin;
- mcfg = config.services.mediagoblin;
-in {
- options.myServices.websites.tools.mediagoblin = {
- enable = lib.mkEnableOption "enable mediagoblin's website";
- };
-
- config = lib.mkIf cfg.enable {
- secrets.keys."webapps/tools-mediagoblin" = {
- user = "mediagoblin";
- group = "mediagoblin";
- permissions = "0400";
- text =
- let
- psql_url = with env.postgresql; "postgresql://${user}:${password}@:${port}/${database}?host=${socket}";
- redis_url = with env.redis; "redis+socket://${socket}?virtual_host=${db}";
- in
- ''
- [DEFAULT]
- data_basedir = "${mcfg.dataDir}"
-
- [mediagoblin]
- direct_remote_path = /mgoblin_static/
- email_sender_address = "mediagoblin@tools.immae.eu"
-
- #sql_engine = sqlite:///%(data_basedir)s/mediagoblin.db
- sql_engine = ${psql_url}
-
- email_debug_mode = false
- allow_registration = false
- allow_reporting = true
-
- theme = airymodified
-
- user_privilege_scheme = "uploader,commenter,reporter"
-
- # We need to redefine them here since we override data_basedir
- # cf /usr/share/webapps/mediagoblin/mediagoblin/config_spec.ini
- workbench_path = %(data_basedir)s/media/workbench
- crypto_path = %(data_basedir)s/crypto
- theme_install_dir = %(data_basedir)s/themes/
- theme_linked_assets_dir = %(data_basedir)s/theme_static/
- plugin_linked_assets_dir = %(data_basedir)s/plugin_static/
-
- [storage:queuestore]
- base_dir = %(data_basedir)s/media/queue
-
- [storage:publicstore]
- base_dir = %(data_basedir)s/media/public
- base_url = /mgoblin_media/
-
- [celery]
- CELERY_RESULT_DBURI = ${redis_url}
- BROKER_URL = ${redis_url}
- CELERYD_CONCURRENCY = 1
-
- [plugins]
- [[mediagoblin.plugins.geolocation]]
- [[mediagoblin.plugins.ldap]]
- [[[immae.eu]]]
- LDAP_SERVER_URI = 'ldaps://${env.ldap.host}:636'
- LDAP_SEARCH_BASE = '${env.ldap.base}'
- LDAP_BIND_DN = '${env.ldap.dn}'
- LDAP_BIND_PW = '${env.ldap.password}'
- LDAP_SEARCH_FILTER = '${env.ldap.filter}'
- EMAIL_SEARCH_FIELD = 'mail'
- [[mediagoblin.plugins.basicsearch]]
- [[mediagoblin.plugins.piwigo]]
- [[mediagoblin.plugins.processing_info]]
- [[mediagoblin.media_types.image]]
- [[mediagoblin.media_types.video]]
- '';
- };
-
- users.users.mediagoblin.extraGroups = [ "keys" ];
-
- services.mediagoblin = {
- enable = true;
- package = pkgs.webapps.mediagoblin.withPlugins (p: [p.basicsearch]);
- configFile = config.secrets.fullPaths."webapps/tools-mediagoblin";
- };
- services.filesWatcher.mediagoblin-web = {
- restart = true;
- paths = [ mcfg.configFile ];
- };
- services.filesWatcher.mediagoblin-celeryd = {
- restart = true;
- paths = [ mcfg.configFile ];
- };
-
- services.websites.env.tools.modules = [
- "proxy" "proxy_http"
- ];
- users.users.wwwrun.extraGroups = [ "mediagoblin" ];
- services.websites.env.tools.vhostConfs.mgoblin = {
- certName = "eldiron";
- addToCerts = true;
- hosts = ["mgoblin.immae.eu" ];
- root = null;
- extraConfig = [ ''
- Alias /mgoblin_media ${mcfg.dataDir}/media/public
-
- Options -Indexes +FollowSymLinks +MultiViews +Includes
- Require all granted
-
-
- Alias /theme_static ${mcfg.dataDir}/theme_static
-
- Options -Indexes +FollowSymLinks +MultiViews +Includes
- Require all granted
-
-
- Alias /plugin_static ${mcfg.dataDir}/plugin_static
-
- Options -Indexes +FollowSymLinks +MultiViews +Includes
- Require all granted
-
-
- ProxyPreserveHost on
- ProxyVia On
- ProxyRequests Off
- ProxyPass /mgoblin_media !
- ProxyPass /theme_static !
- ProxyPass /plugin_static !
- ProxyPassMatch ^/.well-known/acme-challenge !
- ProxyPass / unix://${mcfg.sockets.paster}|http://mgoblin.immae.eu/
- ProxyPassReverse / unix://${mcfg.sockets.paster}|http://mgoblin.immae.eu/
- '' ];
- };
- };
-}
diff --git a/modules/private/websites/tools/peertube/default.nix b/modules/private/websites/tools/peertube/default.nix
deleted file mode 100644
index 68c992f..0000000
--- a/modules/private/websites/tools/peertube/default.nix
+++ /dev/null
@@ -1,94 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- env = config.myEnv.tools.peertube;
- cfg = config.myServices.websites.tools.peertube;
- pcfg = config.services.peertube;
-in {
- options.myServices.websites.tools.peertube = {
- enable = lib.mkEnableOption "enable Peertube's website";
- };
-
- config = lib.mkIf cfg.enable {
- services.peertube = {
- enable = true;
- configFile = config.secrets.fullPaths."webapps/tools-peertube";
- };
- users.users.peertube.extraGroups = [ "keys" ];
-
- secrets.keys."webapps/tools-peertube" = {
- user = "peertube";
- group = "peertube";
- permissions = "0640";
- text = ''
- listen:
- hostname: 'localhost'
- port: ${toString config.myEnv.ports.peertube}
- webserver:
- https: true
- hostname: 'peertube.immae.eu'
- port: 443
- database:
- hostname: '${env.postgresql.socket}'
- port: 5432
- suffix: '_prod'
- username: '${env.postgresql.user}'
- password: '${env.postgresql.password}'
- pool:
- max: 5
- redis:
- socket: '${env.redis.socket}'
- auth: null
- db: ${env.redis.db}
- smtp:
- transport: sendmail
- sendmail: '/run/wrappers/bin/sendmail'
- from_address: 'peertube@tools.immae.eu'
- storage:
- tmp: '${pcfg.dataDir}/storage/tmp/'
- avatars: '${pcfg.dataDir}/storage/avatars/'
- videos: '${pcfg.dataDir}/storage/videos/'
- streaming_playlists: '${pcfg.dataDir}/storage/streaming-playlists/'
- redundancy: '${pcfg.dataDir}/storage/videos/'
- logs: '${pcfg.dataDir}/storage/logs/'
- previews: '${pcfg.dataDir}/storage/previews/'
- thumbnails: '${pcfg.dataDir}/storage/thumbnails/'
- torrents: '${pcfg.dataDir}/storage/torrents/'
- captions: '${pcfg.dataDir}/storage/captions/'
- cache: '${pcfg.dataDir}/storage/cache/'
- plugins: '${pcfg.dataDir}/storage/plugins/'
- client_overrides: '${pcfg.dataDir}/storage/client-overrides/'
- '';
- };
-
- services.websites.env.tools.modules = [
- "headers" "proxy" "proxy_http" "proxy_wstunnel"
- ];
- services.filesWatcher.peertube = {
- restart = true;
- paths = [ pcfg.configFile ];
- };
-
- services.websites.env.tools.vhostConfs.peertube = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [ "peertube.immae.eu" ];
- root = null;
- extraConfig = [ ''
- RewriteEngine On
-
- RewriteCond %{REQUEST_URI} ^/socket.io [NC]
- RewriteCond %{QUERY_STRING} transport=websocket [NC]
- RewriteRule /(.*) ws://localhost:${toString env.listenPort}/$1 [P,NE,QSA,L]
-
- RewriteCond %{REQUEST_URI} ^/tracker/socket [NC]
- RewriteRule /(.*) ws://localhost:${toString env.listenPort}/$1 [P,NE,QSA,L]
-
- ProxyPass / http://localhost:${toString env.listenPort}/
- ProxyPassReverse / http://localhost:${toString env.listenPort}/
-
- ProxyPreserveHost On
- RequestHeader set X-Real-IP %{REMOTE_ADDR}s
- '' ];
- };
- };
-}
diff --git a/modules/private/websites/tools/performance/default.nix b/modules/private/websites/tools/performance/default.nix
deleted file mode 100644
index 5715ff0..0000000
--- a/modules/private/websites/tools/performance/default.nix
+++ /dev/null
@@ -1,88 +0,0 @@
-{ pkgs, lib, config, ... }:
-let
- env = config.myEnv.tools.status_engine;
- package = pkgs.status_engine.interface.override({ config_file = config.secrets.fullPaths."status_engine_ui"; });
- apacheRoot = "${package}/public";
- cfg = config.myServices.websites.tools.performance;
-in
-{
- options.myServices.websites.tools.performance = {
- enable = lib.mkEnableOption "Enable performance website";
- };
-
- config = lib.mkIf cfg.enable {
- secrets.keys = {
- status_engine_ui = {
- permissions = "0400";
- user = "wwwrun";
- group = "wwwrun";
- text = ''
- allow_anonymous: 0
- anonymous_can_submit_commands: 0
- urls_without_login:
- - login
- - loginstate
- auth_type: ldap
- ldap_server: ${env.ldap.host}
- ldap_use_ssl: 1
- ldap_port: 636
- ldap_bind_dn: ${env.ldap.dn}
- ldap_bind_password: ${env.ldap.password}
- ldap_base_dn: ${env.ldap.base}
- ldap_filter: "${env.ldap.filter}"
- ldap_attribute:
- - memberOf
- use_crate: 0
- use_mysql: 1
- mysql:
- host: 127.0.0.1
- port: ${env.mysql.port}
- username: ${env.mysql.user}
- password: ${env.mysql.password}
- database: ${env.mysql.database}
- display_perfdata: 1
- perfdata_backend: mysql
- '';
- };
- };
-
- services.websites.env.tools.modules = [ "proxy_fcgi" ];
-
- services.websites.env.tools.vhostConfs.performance = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [ "performance.immae.eu" ];
- root = apacheRoot;
- extraConfig = [
- ''
-
- DirectoryIndex index.html
- AllowOverride None
- Require all granted
-
- SetHandler "proxy:unix:${config.services.phpfpm.pools.status_engine.socket}|fcgi://localhost"
-
-
- ''
- ];
- };
-
- services.phpfpm.pools.status_engine = {
- user = "wwwrun";
- group = "wwwrun";
- settings = {
- "listen.owner" = "wwwrun";
- "listen.group" = "wwwrun";
- "pm" = "dynamic";
- "pm.max_children" = "60";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "10";
-
- "php_admin_value[open_basedir]" = "${package}:/tmp:${config.secrets.fullPaths."status_engine_ui"}";
- };
- phpPackage = pkgs.php74;
- };
-
- };
-}
diff --git a/modules/private/websites/tools/stats/default.nix b/modules/private/websites/tools/stats/default.nix
deleted file mode 100644
index 71e31a3..0000000
--- a/modules/private/websites/tools/stats/default.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ config, lib, pkgs, ... }:
-let
- cfg = config.myServices.websites.tools.stats;
- myCfg = config.myEnv.tools.umami;
-in
-{
- options.myServices.websites.tools.stats.enable = lib.mkEnableOption "Enable stats site";
- config = lib.mkIf cfg.enable {
- secrets.keys = {
- "uami/env" = {
- permission = "0400";
- text = ''
- PORT=${toString myCfg.listenPort}
- HOSTNAME=127.0.0.1
- DATABASE_URL=postgresql://${myCfg.postgresql.user}:${myCfg.postgresql.password}@localhost:${myCfg.postgresql.port}/${myCfg.postgresql.database}?sslmode=disable&host=${myCfg.postgresql.socket}
- HASH_SALT=${myCfg.hashSalt}
- '';
- };
- };
-
- services.websites.env.tools.vhostConfs.stats = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [ "stats.immae.eu" ];
- root = null;
- extraConfig = [
- ''
- ProxyPass / http://localhost:${toString myCfg.listenPort}/
- ProxyPassReverse / http://localhost:${toString myCfg.listenPort}/
- ProxyPreserveHost On
- ''
- ];
- };
- systemd.services.umami = {
- description = "Umami service";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
- wants = [ "postgresql.service" ];
- path = [ pkgs.nodejs pkgs.bashInteractive ];
- serviceConfig = {
- Type = "simple";
- User = "umami";
- Group = "umami";
- DynamicUser = true;
- SupplementaryGroups = [ "keys" ];
- ExecStart = "${pkgs.umami}/bin/umami";
- EnvironmentFile = config.secrets.fullPaths."umami/env";
- };
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/adminer.nix b/modules/private/websites/tools/tools/adminer.nix
deleted file mode 100644
index c280684..0000000
--- a/modules/private/websites/tools/tools/adminer.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ webapps, php74, myPhpPackages, lib, forcePhpSocket ? null }:
-rec {
- activationScript = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d /var/lib/php/sessions/adminer
- '';
- };
- webRoot = webapps.adminer;
- phpFpm = rec {
- user = apache.user;
- group = apache.group;
- phpPackage = php74.withExtensions ({ enabled, all }: (lib.remove all.mysqli enabled) ++ [myPhpPackages.mysqli_pam]);
- settings = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "5";
- "pm.process_idle_timeout" = "60";
- #"php_admin_flag[log_errors]" = "on";
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "AdminerPHPSESSID";
- "php_admin_value[open_basedir]" = "${webRoot}:/tmp:/var/lib/php/sessions/adminer";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/adminer";
- };
- };
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /adminer ${webRoot}
-
- DirectoryIndex index.php
-
- SetHandler "proxy:unix:${if forcePhpSocket != null then forcePhpSocket else socket}|fcgi://localhost"
-
-
- Use LDAPConnect
- Require ldap-group cn=users,cn=mysql,cn=pam,ou=services,dc=immae,dc=eu
- Require ldap-group cn=users,cn=postgresql,cn=pam,ou=services,dc=immae,dc=eu
-
- '';
- };
-}
diff --git a/modules/private/websites/tools/tools/csp_reports.nix b/modules/private/websites/tools/tools/csp_reports.nix
deleted file mode 100644
index 9b3f0cf..0000000
--- a/modules/private/websites/tools/tools/csp_reports.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ env }:
-rec {
- keys."webapps/tools-csp-reports.conf" = {
- user = "wwwrun";
- group = "wwwrun";
- permissions = "0400";
- text = with env.postgresql; ''
- env[CSP_REPORT_URI] = "host=${socket} dbname=${database} user=${user} password=${password}"
- '';
- };
-}
diff --git a/modules/private/websites/tools/tools/default.nix b/modules/private/websites/tools/tools/default.nix
deleted file mode 100644
index 90fcbe1..0000000
--- a/modules/private/websites/tools/tools/default.nix
+++ /dev/null
@@ -1,429 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- flakeCompat = import ../../../../../lib/flake-compat.nix;
-
- adminer = pkgs.callPackage ./adminer.nix {};
- ympd = pkgs.callPackage ./ympd.nix {
- env = config.myEnv.tools.ympd;
- };
- ttrss = pkgs.callPackage ./ttrss.nix {
- inherit (pkgs.webapps) ttrss ttrss-plugins;
- env = config.myEnv.tools.ttrss;
- php = pkgs.php72;
- inherit config;
- };
- kanboard = pkgs.callPackage ./kanboard.nix {
- inherit config;
- env = config.myEnv.tools.kanboard;
- };
- wallabag = pkgs.callPackage ./wallabag.nix {
- wallabag = pkgs.webapps.wallabag.override {
- composerEnv = pkgs.composerEnv.override {
- php = pkgs.php73.withExtensions({ enabled, all }: enabled ++ [all.tidy]);
- };
- };
- env = config.myEnv.tools.wallabag;
- inherit config;
- };
- yourls = pkgs.callPackage ./yourls.nix {
- inherit (pkgs.webapps) yourls yourls-plugins;
- env = config.myEnv.tools.yourls;
- inherit config;
- };
- rompr = pkgs.callPackage ./rompr.nix {
- inherit (pkgs.webapps) rompr;
- env = config.myEnv.tools.rompr;
- };
- shaarli = pkgs.callPackage ./shaarli.nix {
- env = config.myEnv.tools.shaarli;
- inherit config;
- };
- dokuwiki = pkgs.callPackage ./dokuwiki.nix {
- inherit (pkgs.webapps) dokuwiki dokuwiki-plugins;
- };
- ldap = pkgs.callPackage ./ldap.nix {
- inherit (pkgs.webapps) phpldapadmin;
- env = config.myEnv.tools.phpldapadmin;
- inherit config;
- };
- grocy = pkgs.callPackage ./grocy.nix {
- grocy = pkgs.webapps.grocy.override { composerEnv = pkgs.composerEnv.override { php = pkgs.php72; }; };
- };
- phpbb = pkgs.callPackage ./phpbb.nix {
- phpbb = (pkgs.webapps.phpbb.withLangs (l: [ l.fr ])).withExts (e: [
- e.alfredoramos.markdown e.davidiq.mailinglist e.dmzx.mchat
- e.empteintesduweb.monitoranswers e.lr94.autosubscribe
- e.phpbbmodders.adduser ]);
- };
- webhooks = pkgs.callPackage ./webhooks.nix {
- env = config.myEnv.tools.webhooks;
- };
- dmarc-reports = pkgs.callPackage ./dmarc_reports.nix {
- env = config.myEnv.tools.dmarc_reports;
- inherit config;
- };
- csp-reports = pkgs.callPackage ./csp_reports.nix {
- env = config.myEnv.tools.csp_reports;
- };
-
- landing = pkgs.callPackage ./landing.nix {};
-
- cfg = config.myServices.websites.tools.tools;
- pcfg = config.services.phpfpm.pools;
-in {
- imports =
- builtins.attrValues (flakeCompat ../../../../../flakes/private/paste).nixosModules;
-
- options.myServices.websites.tools.tools = {
- enable = lib.mkEnableOption "enable tools website";
- };
-
- config = lib.mkIf cfg.enable {
- secrets.keys =
- kanboard.keys
- // ldap.keys
- // shaarli.keys
- // ttrss.keys
- // wallabag.keys
- // yourls.keys
- // dmarc-reports.keys
- // csp-reports.keys
- // webhooks.keys;
-
- services.websites.env.tools.modules =
- [ "proxy_fcgi" ]
- ++ adminer.apache.modules
- ++ ympd.apache.modules
- ++ ttrss.apache.modules
- ++ wallabag.apache.modules
- ++ yourls.apache.modules
- ++ rompr.apache.modules
- ++ shaarli.apache.modules
- ++ dokuwiki.apache.modules
- ++ dmarc-reports.apache.modules
- ++ phpbb.apache.modules
- ++ ldap.apache.modules
- ++ kanboard.apache.modules;
-
- services.websites.env.integration.vhostConfs.devtools = {
- certName = "integration";
- certMainHost = "tools.immae.dev";
- addToCerts = true;
- hosts = [ "tools.immae.dev" ];
- root = "/var/lib/ftp/immae/devtools";
- extraConfig = [
- ''
- Use Apaxy "/var/lib/ftp/immae/devtools" "title"
- Timeout 600
- ProxyTimeout 600
- Header always set Content-Security-Policy-Report-Only "${config.myEnv.tools.csp_reports.policies.inline}"
-
- DirectoryIndex index.php index.htm index.html
- AllowOverride all
- Require all granted
-
- SetHandler "proxy:unix:${pcfg.devtools.socket}|fcgi://localhost"
-
-
- ''
- ];
- };
-
- services.websites.env.tools.vhostConfs.tools = {
- certName = "eldiron";
- addToCerts = true;
- hosts = ["tools.immae.eu" ];
- root = landing;
- extraConfig = [
- ''
- RedirectMatch 301 ^/vpn(.*)$ https://vpn.immae.eu$1
- RedirectMatch 301 ^/roundcube(.*)$ https://mail.immae.eu/roundcube$1
- RedirectMatch 301 ^/jappix(.*)$ https://im.immae.fr/converse
-
-
- DirectoryIndex index.html
- AllowOverride None
- Require all granted
-
-
- SetHandler "proxy:unix:${pcfg.tools.socket}|fcgi://localhost"
-
-
- ''
- (adminer.apache.vhostConf pcfg.adminer.socket)
- ympd.apache.vhostConf
- (ttrss.apache.vhostConf pcfg.ttrss.socket)
- (wallabag.apache.vhostConf pcfg.wallabag.socket)
- (yourls.apache.vhostConf pcfg.yourls.socket)
- (rompr.apache.vhostConf pcfg.rompr.socket)
- (shaarli.apache.vhostConf pcfg.shaarli.socket)
- (dokuwiki.apache.vhostConf pcfg.dokuwiki.socket)
- (ldap.apache.vhostConf pcfg.ldap.socket)
- (kanboard.apache.vhostConf pcfg.kanboard.socket)
- (grocy.apache.vhostConf pcfg.grocy.socket)
- (phpbb.apache.vhostConf pcfg.phpbb.socket)
- (dmarc-reports.apache.vhostConf pcfg.dmarc-reports.socket)
- ''
-
- ProxyPass unix://${config.services.paste.sockets.gunicorn}|http://tools.immae.eu/paste/
- ProxyPassReverse unix://${config.services.paste.sockets.gunicorn}|http://tools.immae.eu/paste/
- ProxyPreserveHost on
-
-
- ProxyPass unix://${config.services.paste.sockets.gunicorn}|http://tools.immae.eu/paste/
- ProxyPassReverse unix://${config.services.paste.sockets.gunicorn}|http://tools.immae.eu/paste/
- ProxyPreserveHost on
-
-
- Alias /BIP39 /var/lib/buildbot/outputs/immae/bip39
-
- DirectoryIndex index.html
- AllowOverride None
- Require all granted
-
-
- Alias /webhooks ${config.secrets.fullPaths."webapps/webhooks"}
-
- Options -Indexes
- Require all granted
- AllowOverride None
-
- SetHandler "proxy:unix:${pcfg.tools.socket}|fcgi://localhost"
-
-
- ''
- ];
- };
-
- services.websites.env.tools.vhostConfs.outils = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [ "outils.immae.eu" ];
- root = null;
- extraConfig = [
- ''
- RedirectMatch 301 ^/mediagoblin(.*)$ https://mgoblin.immae.eu$1
-
- RedirectMatch 301 ^/ether(.*)$ https://ether.immae.eu$1
-
- RedirectMatch 301 ^/nextcloud(.*)$ https://cloud.immae.eu$1
- RedirectMatch 301 ^/owncloud(.*)$ https://cloud.immae.eu$1
-
- RedirectMatch 301 ^/carddavmate(.*)$ https://dav.immae.eu/infcloud$1
- RedirectMatch 301 ^/caldavzap(.*)$ https://dav.immae.eu/infcloud$1
- RedirectMatch 301 ^/caldav.php(.*)$ https://dav.immae.eu/caldav.php$1
- RedirectMatch 301 ^/davical(.*)$ https://dav.immae.eu/davical$1
-
- RedirectMatch 301 ^/taskweb(.*)$ https://task.immae.eu/taskweb$1
-
- RedirectMatch 301 ^/roundcube(.*)$ https://mail.immae.eu/roundcube$1
-
- RedirectMatch 301 ^/jappix(.*)$ https://im.immae.fr/converse
-
- RedirectMatch 301 ^/vpn(.*)$ https://vpn.immae.eu$1
-
- RedirectMatch 301 ^/(.*)$ https://tools.immae.eu/$1
- ''
- ];
- };
-
- systemd.services = {
- phpfpm-dokuwiki = {
- after = lib.mkAfter dokuwiki.phpFpm.serviceDeps;
- wants = dokuwiki.phpFpm.serviceDeps;
- };
- phpfpm-phpbb = {
- after = lib.mkAfter phpbb.phpFpm.serviceDeps;
- wants = phpbb.phpFpm.serviceDeps;
- };
- phpfpm-kanboard = {
- after = lib.mkAfter kanboard.phpFpm.serviceDeps;
- wants = kanboard.phpFpm.serviceDeps;
- };
- phpfpm-ldap = {
- after = lib.mkAfter ldap.phpFpm.serviceDeps;
- wants = ldap.phpFpm.serviceDeps;
- };
- phpfpm-shaarli = {
- after = lib.mkAfter shaarli.phpFpm.serviceDeps;
- wants = shaarli.phpFpm.serviceDeps;
- };
- phpfpm-ttrss = {
- after = lib.mkAfter ttrss.phpFpm.serviceDeps;
- wants = ttrss.phpFpm.serviceDeps;
- };
- phpfpm-wallabag = {
- after = lib.mkAfter wallabag.phpFpm.serviceDeps;
- wants = wallabag.phpFpm.serviceDeps;
- preStart = lib.mkAfter wallabag.phpFpm.preStart;
- };
- phpfpm-yourls = {
- after = lib.mkAfter yourls.phpFpm.serviceDeps;
- wants = yourls.phpFpm.serviceDeps;
- };
- ympd = {
- description = "Standalone MPD Web GUI written in C";
- wantedBy = [ "multi-user.target" ];
- script = ''
- export MPD_PASSWORD=$(cat ${config.secrets.fullPaths."mpd"})
- ${pkgs.ympd}/bin/ympd --host ${ympd.config.host} --port ${toString ympd.config.port} --webport ${ympd.config.webPort} --user nobody
- '';
- };
- tt-rss = {
- description = "Tiny Tiny RSS feeds update daemon";
- serviceConfig = {
- User = "wwwrun";
- ExecStart = "${pkgs.php72}/bin/php ${ttrss.webRoot}/update.php --daemon";
- StandardOutput = "syslog";
- StandardError = "syslog";
- PermissionsStartOnly = true;
- };
-
- wantedBy = [ "multi-user.target" ];
- requires = ["postgresql.service"];
- after = ["network.target" "postgresql.service"];
- };
- };
-
- services.filesWatcher.ympd = {
- restart = true;
- paths = [ config.secrets.fullPaths."mpd" ];
- };
-
- services.phpfpm.pools = {
- tools = {
- user = "wwwrun";
- group = "wwwrun";
- settings = {
- "listen.owner" = "wwwrun";
- "listen.group" = "wwwrun";
- "pm" = "dynamic";
- "pm.max_children" = "60";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "10";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "ToolsPHPSESSID";
- "php_admin_value[open_basedir]" = builtins.concatStringsSep ":" [
- "/run/wrappers/bin/sendmail" landing "/tmp"
- config.secrets.fullPaths."webapps/webhooks"
- ];
- "include" = config.secrets.fullPaths."webapps/tools-csp-reports.conf";
- };
- phpEnv = {
- CONTACT_EMAIL = config.myEnv.tools.contact;
- };
- phpPackage = pkgs.php72;
- };
- devtools = {
- user = "wwwrun";
- group = "wwwrun";
- settings = {
- "listen.owner" = "wwwrun";
- "listen.group" = "wwwrun";
- "pm" = "dynamic";
- "pm.max_children" = "60";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "10";
-
- "php_admin_value[open_basedir]" = "/run/wrappers/bin/sendmail:/var/lib/ftp/immae/devtools:/tmp";
- };
- phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.mysqli all.redis all.apcu all.opcache ]);
- };
- adminer = adminer.phpFpm;
- ttrss = {
- user = "wwwrun";
- group = "wwwrun";
- settings = ttrss.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- wallabag = {
- user = "wwwrun";
- group = "wwwrun";
- settings = wallabag.phpFpm.pool;
- phpPackage = pkgs.php73.withExtensions({ enabled, all }: enabled ++ [all.tidy]);
- };
- yourls = {
- user = "wwwrun";
- group = "wwwrun";
- settings = yourls.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- rompr = {
- user = "wwwrun";
- group = "wwwrun";
- settings = rompr.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- shaarli = {
- user = "wwwrun";
- group = "wwwrun";
- settings = shaarli.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- dmarc-reports = {
- user = "wwwrun";
- group = "wwwrun";
- settings = dmarc-reports.phpFpm.pool;
- phpEnv = dmarc-reports.phpFpm.phpEnv;
- phpPackage = pkgs.php72;
- };
- dokuwiki = {
- user = "wwwrun";
- group = "wwwrun";
- settings = dokuwiki.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- phpbb = {
- user = "wwwrun";
- group = "wwwrun";
- settings = phpbb.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- ldap = {
- user = "wwwrun";
- group = "wwwrun";
- settings = ldap.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- kanboard = {
- user = "wwwrun";
- group = "wwwrun";
- settings = kanboard.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- grocy = {
- user = "wwwrun";
- group = "wwwrun";
- settings = grocy.phpFpm.pool;
- phpPackage = pkgs.php72;
- };
- };
-
- system.activationScripts = {
- adminer = adminer.activationScript;
- grocy = grocy.activationScript;
- ttrss = ttrss.activationScript;
- wallabag = wallabag.activationScript;
- yourls = yourls.activationScript;
- rompr = rompr.activationScript;
- shaarli = shaarli.activationScript;
- dokuwiki = dokuwiki.activationScript;
- phpbb = phpbb.activationScript;
- kanboard = kanboard.activationScript;
- ldap = ldap.activationScript;
- };
-
- services.websites.env.tools.watchPaths = [
- config.secrets.fullPaths."webapps/tools-shaarli"
- ];
- services.filesWatcher.phpfpm-wallabag = {
- restart = true;
- paths = [ config.secrets.fullPaths."webapps/tools-wallabag" ];
- };
-
- };
-}
-
diff --git a/modules/private/websites/tools/tools/dmarc_reports.nix b/modules/private/websites/tools/tools/dmarc_reports.nix
deleted file mode 100644
index 8a77b13..0000000
--- a/modules/private/websites/tools/tools/dmarc_reports.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ env, config }:
-rec {
- keys."webapps/tools-dmarc-reports.php" = {
- user = "wwwrun";
- group = "wwwrun";
- permissions = "0400";
- text = ''
-
- '';
- };
- webRoot = ./dmarc_reports;
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /dmarc-reports "${root}"
-
- DirectoryIndex index.html
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- AllowOverride None
- Options +FollowSymlinks
-
- SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
- Use LDAPConnect
- Require all granted
- Require ldap-attribute uid=immae
-
- '';
- };
- phpFpm = rec {
- basedir = builtins.concatStringsSep ":"
- [ webRoot config.secrets.fullPaths."webapps/tools-dmarc-reports.php" ];
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_admin_value[open_basedir]" = "${basedir}:/tmp";
- };
- phpEnv = {
- SECRETS_FILE = config.secrets.fullPaths."webapps/tools-dmarc-reports.php";
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/dmarc_reports/api.php b/modules/private/websites/tools/tools/dmarc_reports/api.php
deleted file mode 100644
index 850f9ce..0000000
--- a/modules/private/websites/tools/tools/dmarc_reports/api.php
+++ /dev/null
@@ -1,122 +0,0 @@
- "ok",
-);
-$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname, $dbport);
-
-function error_die($text, $number) {
- http_response_code("500");
- $message = array(
- "status" => "error",
- "message" => $text,
- "code" => $number
- );
-
- die(json_encode($message));
-}
-
-$anonymous = isset($_GET['anonymous']) && $_GET['anonymous'];
-function maybe_anonymize($string, $long = false) {
- global $anonymous_key;
- global $anonymous;
- if ($anonymous) {
- if ($long) {
- return md5($anonymous_key . ":" . $string);
- } else {
- return substr(md5($anonymous_key . ":" . $string), 0, 6);
- }
- } else {
- return $string;
- }
-}
-
-if (!$anonymous && (!isset($_SERVER['HTTP_AUTHORIZATION']) || $_SERVER['HTTP_AUTHORIZATION'] === "")) {
- header('WWW-Authenticate: Basic realm="Immae"');
- header('HTTP/1.0 401 Unauthorized');
- echo "You need to be authenticated to access private information";
- exit;
-}
-
-if ($mysqli->connect_errno) {
- error_die($mysqli->connect_error, $mysqli->connect_errno);
-}
-
-if (!isset($_GET['serial'])) {
- $response["domains"] = array();
- $query = $mysqli->query("SELECT DISTINCT domain FROM `report` ORDER BY domain");
- if ($mysqli->error) { error_die($mysqli->error, $mysqli->errno); }
- while($row = $query->fetch_assoc()) {
- $response["domains"][] = maybe_anonymize($row['domain']);
- }
-
- $response["orgs"] = array();
- $query = $mysqli->query("SELECT DISTINCT org FROM `report` ORDER BY org");
- if ($mysqli->error) { error_die($mysqli->error, $mysqli->errno); }
- while($row = $query->fetch_assoc()) {
- $response["orgs"][] = maybe_anonymize($row['org']);
- }
-
- $response["dates"] = array();
- $query = $mysqli->query("SELECT DISTINCT DISTINCT year(mindate) as year, month(mindate) as month FROM `report` ORDER BY year DESC,month DESC");
- if ($mysqli->error) { error_die($mysqli->error, $mysqli->errno); }
- while($row = $query->fetch_assoc()) {
- $response["dates"][] = sprintf( "%'.04d-%'.02d", $row['year'], $row['month'] );
- }
-
- $response["summaries"] = array();
- if (isset($_GET['errors_only'])) {
- $where = " WHERE (spfresult != 'pass' or dkimresult != 'pass')";
- } else {
- $where = "";
- }
-
- $sql = "SELECT report.* , sum(rptrecord.rcount) AS rcount, MIN(rptrecord.dkimresult) AS dkimresult, MIN(rptrecord.spfresult) AS spfresult FROM report LEFT JOIN (SELECT rcount, COALESCE(dkimresult, 'neutral') AS dkimresult, COALESCE(spfresult, 'neutral') AS spfresult, serial FROM rptrecord) AS rptrecord ON report.serial = rptrecord.serial$where GROUP BY serial ORDER BY mindate ASC, maxdate ASC, org";
- $query = $mysqli->query($sql);
- if ($mysqli->error) { error_die($mysqli->error, $mysqli->errno); }
- while($row = $query->fetch_assoc()) {
- $wanted_keys = array(
- 'domain', 'org', 'reportid', 'mindate', 'maxdate', 'rcount', 'serial', 'policy_adkim', 'policy_aspf', 'policy_none', 'policy_sp', 'policy_pct', 'spfresult', 'dkimresult'
- );
- $row = array_intersect_key($row, array_fill_keys($wanted_keys, '1'));
- $row["domain"] = maybe_anonymize($row["domain"]);
- $row["org"] = maybe_anonymize($row["org"]);
- $row["reportid"] = maybe_anonymize($row["reportid"], true);
- $response["summaries"][] = $row;
- }
-} else {
- $response["rptrecord"] = [];
- $sql = $mysqli->prepare("SELECT * FROM rptrecord where serial = ?");
- $sql->bind_param("s", $_GET["serial"]);
- $sql->execute();
- $query = $sql->get_result();
- if ($mysqli->error) { error_die($mysqli->error, $mysqli->errno); }
- while($row = $query->fetch_assoc()) {
- if ($row['ip']) {
- $ip = long2ip($row['ip']);
- $host = gethostbyaddr($ip);
- } elseif ( $row['ip6'] ) {
- $ip = inet_ntop($row['ip6']);
- $host = gethostbyaddr($ip);
- } else {
- $ip = "-";
- $host = "-";
- }
- $wanted_keys = array(
- 'ip', 'host', 'rcount', 'disposition', 'reason', 'dkimdomain', 'dkimresult', 'spfdomain', 'spfresult'
- );
- $row = array_intersect_key($row, array_fill_keys($wanted_keys, '1'));
- $row['ip'] = maybe_anonymize($ip);
- $row['host'] = maybe_anonymize($host);
- $row['dkimdomain'] = maybe_anonymize($row['dkimdomain']);
- $row['spfdomain'] = maybe_anonymize($row['spfdomain']);
- $response["rptrecord"][] = $row;
- }
-}
-
-header("Content-Type: application/json");
-
-echo json_encode($response, JSON_PRETTY_PRINT);
-?>
diff --git a/modules/private/websites/tools/tools/dmarc_reports/app.js b/modules/private/websites/tools/tools/dmarc_reports/app.js
deleted file mode 100644
index 8e8a6c4..0000000
--- a/modules/private/websites/tools/tools/dmarc_reports/app.js
+++ /dev/null
@@ -1,103 +0,0 @@
-const app = new Vue({
- el: '#app',
- data: {
- info: null,
- summaries: null,
- selectedSummary: null,
- filterGreen: true,
- filterDomain: null,
- filterOrg: null,
- //filterDate: (new Date()).toISOString().substring(0, 7),
- filterDate: null,
- reverse: true,
- anonymous: true,
- },
- created: async function () {
- let that = this;
-
- if ('anonymous' in localStorage) {
- this.anonymous = JSON.parse(localStorage.anonymous);
- }
- this.fetchAll();
- },
- methods: {
- fetchAll: async function() {
- try {
- this.info = await this.getInfo();
- this.summaries = this.info.summaries;
- } catch (error) {
- this.info = null;
- this.summaries = null;
- }
- },
- toggleAnonymous: function() {
- this.anonymous = !this.anonymous;
- localStorage.anonymous = this.anonymous;
- this.fetchAll();
- },
- filtered: function () {
- let that = this;
- let filtered = this.summaries.filter(function (summary) {
- return (!that.filterGreen || that.getColor(summary) !== "lime")
- && (!that.filterDomain || summary.domain === that.filterDomain)
- && (!that.filterOrg || summary.org === that.filterOrg)
- && (!that.filterDate || that.inDates(summary));
- });
- if (this.reverse) {
- return filtered.reverse();
- } else {
- return filtered;
- }
- },
- toggle: async function(summary) {
- if (this.selectedSummary && this.selectedSummary.serial === summary.serial) {
- this.selectedSummary = null;
- } else {
- if (!summary.details) {
- summary.details = await this.getDetails(summary.serial);
- }
- this.selectedSummary = summary;
- }
- },
- inDates: function(summary) {
- if (!this.filterDate) { return true; }
-
- let mindate = (new Date(summary.mindate)).toISOString().substring(0, 7);
- let maxdate = (new Date(summary.maxdate)).toISOString().substring(0, 7);
-
- return mindate === this.filterDate || maxdate === this.filterDate;
- },
- printDate: function (date) {
- return (new Date(date)).toISOString().replace("T", " ").replace(/\..*Z$/, " UTC");
- },
- getColor: function (element) {
- if (element.dkimresult === "fail" && element.spfresult === "fail") {
- return "red";
- } else if (element.dkimresult === "fail" || element.spfresult === "fail") {
- return "orange";
- } else if (element.dkimresult === "pass" && element.spfresult === "pass") {
- return "lime";
- } else {
- return "yellow";
- }
- },
- getInfo: function (event) {
- let anonymous = this.anonymous ? "anonymous=1" : "";
- return fetch(`api.php?${anonymous}`).then(function (response) {
- if (response.status != 200) { return; }
- return response.text().then(function (body) {
- return JSON.parse(body);
- });
- });
- },
- getDetails: function (serial) {
- let anonymous = this.anonymous ? "&anonymous=1" : "";
- return fetch(`api.php?serial=${serial}${anonymous}`).then(function (response) {
- if (response.status != 200) { return; }
- return response.text().then(function (body) {
- return JSON.parse(body);
- });
- });
- }
- }
-});
diff --git a/modules/private/websites/tools/tools/dmarc_reports/default.css b/modules/private/websites/tools/tools/dmarc_reports/default.css
deleted file mode 100644
index 9e0c63f..0000000
--- a/modules/private/websites/tools/tools/dmarc_reports/default.css
+++ /dev/null
@@ -1,130 +0,0 @@
-h1 {
- text-align: center;
-}
-
-p.warninginfo {
- text-align: center;
-}
-
-table.reportlist {
- margin: 2em auto 2em auto;
- border-collapse: collapse;
- clear: both;
-}
-
-table.reportlist td, table.reportlist th {
- padding:3px;
-}
-
-table.reportlist thead {
- border-top: 1px solid grey;
- border-bottom: 1px solid grey;
-
-}
-table.reportlist tbody tr:first-child td {
- padding-top: 10px;
-}
-table.reportlist tr.sum {
- border-top: 1px solid grey;
-}
-table.reportlist tr.selected {
- background-color: lightgrey;
-}
-.reportdesc {
- font-weight: bold;
- width: 90%;
- margin-left: auto;
- margin-right: auto;
-}
-
-tr.summaryrow {
- cursor: pointer;
-}
-
-tr.summaryrow:hover, tr.summaryrow.selected {
- background-color: lightgray;
- border-left: 1px solid lightgray;
-}
-
-td.reportcell {
- border-bottom: 1px solid lightgray;
- border-left: 1px solid lightgray;
- border-right: 1px solid lightgray;
-}
-
-table.reportdata {
- margin: 0px auto 0px auto;
- border-collapse: separate;
- border-spacing: 2px;
-}
-
-table.reportdata tr th, table.reportdata tr td {
- text-align: center;
- padding: 3px;
-}
-
-table.reportdata tr.red {
- background-color: #FF0000;
-}
-
-table.reportdata tr.orange {
- background-color: #FFA500;
-}
-
-table.reportdata tr.lime {
- background-color: #00FF00;
-}
-
-table.reportdata tr.yellow {
- background-color: #FFFF00;
-}
-
-.optionblock {
- background: lightgrey;
- padding: 0.4em;
- float: right;
- margin: auto 2em 1em auto;
- white-space: nowrap;
-}
-
-.optionlabel {
- font-weight: bold;
- float: left; clear: left;
- margin-right: 1em;
-}
-
-.options {
- font-size: 70%;
- text-align: right;
- border: none;
- width: 97%;
- padding: 0.4em;
-}
-
-.center {
- text-align:center;
-}
-
-.circle_lime:before {
- content: ' \25CF';
- font-size: 25px;
- color: #00FF00;
-}
-
-.circle_red:before {
- content: ' \25CF';
- font-size: 25px;
- color: #FF0000;
-}
-
-.circle_yellow:before {
- content: ' \25CF';
- font-size: 25px;
- color: #FFFF00;
-}
-
-.circle_orange:before {
- content: ' \25CF';
- font-size: 25px;
- color: #FFA500;
-}
diff --git a/modules/private/websites/tools/tools/dmarc_reports/index.html b/modules/private/websites/tools/tools/dmarc_reports/index.html
deleted file mode 100644
index 0afc82f..0000000
--- a/modules/private/websites/tools/tools/dmarc_reports/index.html
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
-
-
-
-
- Dmarc reports
-
-
-
-
-
-
-
-
DMARC Reports
-
- No information could be fetched. If in non-anonymous mode you need to be logged-in
-
-
-
-
-
- Start Date
- End Date
- Domain
- Reporting Organization
- Report ID
- Messages
-
-
-
-
-
-
- {{ printDate(summary.mindate) }}
- {{ printDate(summary.maxdate) }}
- {{ summary.domain }}
- {{ summary.org }}
- {{ summary.reportid }}
- {{ summary.rcount }}
-
-
-
-
-
Policies: adkim={{ summary.policy_adkim }}, aspf={{ summary.policy_aspf }}, p={{ summary.policy_none }}, sp={{ summary.policy_sp }}, pct={{ summary.policy_pct }}
-
-
-
-
- IP Address
- Host Name
- Message Count
- Disposition
- Reason
- DKIM Domain
- Raw DKIM Result
- SPF Domain
- Raw SPF Result
-
-
-
-
- {{ record.ip }}
- {{ record.host }}
- {{ record.rcount }}
- {{ record.disposition }}
- {{ record.reason }}
- {{ record.dkimdomain }}
- {{ record.dkimresult }}
- {{ record.spfdomain }}
- {{ record.spfresult }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/private/websites/tools/tools/dokuwiki.nix b/modules/private/websites/tools/tools/dokuwiki.nix
deleted file mode 100644
index aee495a..0000000
--- a/modules/private/websites/tools/tools/dokuwiki.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-{ lib, stdenv, dokuwiki, dokuwiki-plugins }:
-rec {
- varDir = "/var/lib/dokuwiki";
- activationScript = {
- deps = [ "wrappers" ];
- text = ''
- if [ ! -d ${varDir} ]; then
- install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
- ${varDir}/animals
- cp -a ${webRoot}/conf.dist ${varDir}/conf
- cp -a ${webRoot}/data.dist ${varDir}/data
- cp -a ${webRoot}/
- chown -R ${apache.user}:${apache.user} ${varDir}/config ${varDir}/data
- chmod -R 755 ${varDir}/config ${varDir}/data
- fi
- install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
- '';
- };
- webRoot = dokuwiki.withPlugins (p: [ p.farmer p.todo ]);
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /dokuwiki "${root}"
-
- DirectoryIndex index.php
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- AllowOverride All
- Options +FollowSymlinks
- Require all granted
-
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "openldap.service" ];
- basedir = builtins.concatStringsSep ":" (
- [ webRoot varDir ] ++ webRoot.plugins);
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "DokuwikiPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/grocy.nix b/modules/private/websites/tools/tools/grocy.nix
deleted file mode 100644
index 3c45261..0000000
--- a/modules/private/websites/tools/tools/grocy.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ lib, stdenv, grocy }:
-rec {
- varDir = "/var/lib/grocy";
- activationScript = {
- deps = [ "wrappers" ];
- text = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/data
- install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
- '';
- };
- webRoot = grocy.webRoot;
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /grocy "${root}"
-
- DirectoryIndex index.php
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- AllowOverride All
- Options +FollowSymlinks
- Require all granted
-
- '';
- };
- phpFpm = rec {
- basedir = builtins.concatStringsSep ":" (
- [ grocy grocy.yarnModules varDir ]);
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "grocyPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- };
- };
-}
-
diff --git a/modules/private/websites/tools/tools/kanboard.nix b/modules/private/websites/tools/tools/kanboard.nix
deleted file mode 100644
index 4809a42..0000000
--- a/modules/private/websites/tools/tools/kanboard.nix
+++ /dev/null
@@ -1,80 +0,0 @@
-{ env, kanboard, config }:
-rec {
- varDir = "/var/lib/kanboard";
- activationScript = {
- deps = [ "wrappers" ];
- text = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/data
- install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
- install -TDm644 ${webRoot}/dataold/.htaccess ${varDir}/data/.htaccess
- install -TDm644 ${webRoot}/dataold/web.config ${varDir}/data/web.config
- '';
- };
- keys."webapps/tools-kanboard" = {
- user = apache.user;
- group = apache.group;
- permissions = "0400";
- text = ''
-
- '';
- };
- webRoot = kanboard { kanboard_config = config.secrets.fullPaths."webapps/tools-kanboard"; };
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /kanboard "${root}"
-
- DirectoryIndex index.php
- AllowOverride All
- Options FollowSymlinks
- Require all granted
-
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
-
- Require all denied
-
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "postgresql.service" "openldap.service" ];
- basedir = builtins.concatStringsSep ":" [ webRoot varDir config.secrets.fullPaths."webapps/tools-kanboard" ];
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "KanboardPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/landing.nix b/modules/private/websites/tools/tools/landing.nix
deleted file mode 100644
index 2acc323..0000000
--- a/modules/private/websites/tools/tools/landing.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ sources, stdenv, yarn2nix-moretea }:
-let
- yarnModules = yarn2nix-moretea.mkYarnModules rec {
- name = "landing";
- pname = name;
- version = "v1.0.0";
- packageJSON = "${sources.webapps-landing}/package.json";
- yarnLock = "${sources.webapps-landing}/yarn.lock";
- yarnNix = ./landing/yarn-packages.nix;
- };
-in
- stdenv.mkDerivation rec {
- pname = "landing";
- version = "v1.0.0";
- src = sources.webapps-landing;
-
- buildInputs = [ yarnModules yarn2nix-moretea.yarn ];
- configurePhase = ''
- ln -s ${yarnModules}/node_modules .
- '';
- buildPhase = ''
- yarn build
- '';
- installPhase = ''
- cp -a dist $out
- cp ${./landing}/*.php $out/
- ln -s service-worker.js $out/worker.js
- '';
- }
diff --git a/modules/private/websites/tools/tools/landing/ldap_password.php b/modules/private/websites/tools/tools/landing/ldap_password.php
deleted file mode 100644
index b6079e5..0000000
--- a/modules/private/websites/tools/tools/landing/ldap_password.php
+++ /dev/null
@@ -1,140 +0,0 @@
-
- * @website: http://technology.mattrude.com/2010/11/ldap-php-change-password-webpage/
- *
- *
- * GNU GENERAL PUBLIC LICENSE
- * Version 2, June 1991
- *
- * Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- * Everyone is permitted to copy and distribute verbatim copies
- * of this license document, but changing it is not allowed.
- */
-
-$message = array();
-$message_css = "";
-
-function changePassword($user,$oldPassword,$newPassword,$newPasswordCnf){
- global $message;
- global $message_css;
-
- $server = "ldaps://ldap.immae.eu";
-
- error_reporting(0);
- $con = ldap_connect($server);
- ldap_set_option($con, LDAP_OPT_PROTOCOL_VERSION, 3);
-
- $user_dn = "uid=$user,ou=users,dc=immae,dc=eu";
-
- if (ldap_bind($con, $user_dn, $oldPassword) === false) {
- $user_dn = "uid=$user,ou=group_users,dc=immae,dc=eu";
- if (ldap_bind($con, $user_dn, $oldPassword) === false) {
- $message[] = "Error E101 - Current Username or Password is wrong.";
- return false;
- }
- }
- if ($newPassword != $newPasswordCnf ) {
- $message[] = "Error E102 - Your New passwords do not match!";
- return false;
- }
- if (strlen($newPassword) < 6 ) {
- $message[] = "Error E103 - Your new password is too short. Your password must be at least 6 characters long.";
- return false;
- }
-
- $salt = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',4)),0,4);
- $encoded_newPassword = "{SSHA}" . base64_encode(pack("H*", sha1($newPassword.$salt)).$salt);
-
- $user_search = ldap_search($con,"dc=immae,dc=eu","(uid=$user)");
- $auth_entry = ldap_first_entry($con, $user_search);
-
- $mail_addresses = ldap_get_values($con, $auth_entry, "mail");
- $given_names = ldap_get_values($con, $auth_entry, "givenName");
- $mail_address = $mail_addresses[0];
- $first_name = $given_names[0];
-
- /* And Finally, Change the password */
- $entry = array();
- $entry["userPassword"] = "$encoded_newPassword";
-
- if (ldap_modify($con,$user_dn,$entry) === false){
- $error = ldap_error($con);
- $errno = ldap_errno($con);
- $message[] = "E201 - Your password cannot be changed, please contact the administrator.";
- $message[] = "$errno - $error";
- } else {
- $message_css = "yes";
- mail($mail_address,"Password change notice","Dear $first_name,
-Your password on https://tools.immae.eu/ldap_password.php for account $user was just changed.
-If you did not make this change, please contact me.
-If you were the one who changed your password, you may disregard this message.
-
-Thanks
---
-Immae / Ismaël", "From: " . getenv("CONTACT_EMAIL"));
- $message[] = "The password for $user has been changed. An informational email has been sent to $mail_address. Your new password is now fully active.";
- }
-}
-
-?>
-
-
-
-Password Change Page
-
-
-
-
-
-
-
-
-
diff --git a/modules/private/websites/tools/tools/landing/ldap_ssh_keys.php b/modules/private/websites/tools/tools/landing/ldap_ssh_keys.php
deleted file mode 100644
index 259e28d..0000000
--- a/modules/private/websites/tools/tools/landing/ldap_ssh_keys.php
+++ /dev/null
@@ -1,348 +0,0 @@
-
-
-
- ImmaeEu Account
-
-
-
-
-
-
-
-
Gestion des clés SSH
- $apps,
- 'public_key' => $publicKey,
- 'comment' => $comment,
- ];
- }
-
- return $keys;
-}
-
-function pushLdapInfos($keys)
-{
- $con = doConnect();
- if (!isset($_SESSION["user_dn"]))
- return false;
-
- return ldap_mod_replace($con, $_SESSION["user_dn"], array("immaeSshKey" => $keys));
-}
-
-
-// Script
-if (isset($_POST['deconnexion'])) {
- $_SESSION = [];
-}
-
-if (isset($_POST['sauvegarder'])) {
- $editedKeys = [];
- $errors = false;
- $keysToSave = [];
- foreach($_POST['keys'] as $id => $key) {
- $editedKeys[$id] = $key;
- if (!checkSshKey($key['public_key'])) {
- $editedKeys[$id]['error'] = true;
- $errors = true;
- }
-
- if (!isset($key['apps'])) {
- $editedKeys[$id]['apps'] = $key['apps'] = [];
-
- }
- foreach ($key['apps'] as $app) {
- if (!in_array($app, apps)) {
- die("integrity");
- }
- }
-
- if (!isset($editedKeys[$id]['error']) || $editedKeys[$id]['error'] !== true) {
- $keysToSave[] = implode('|', $key['apps']) . ' ' . $key['public_key'] . ' ' . $key['comment'];
- }
- }
-
- if (!$errors) {
- $successSave = pushLdapInfos($keysToSave);
- }
-}
-
-$loginErrors = "";
-if (isset($_POST['login'])) {
- if (empty($_POST['username']) || empty($_POST['password'])) {
- $loginErrors = "Le nom d'utilisateur et le mot de passe sont requis.";
- } elseif (!checkLogin($_POST['username'], $_POST['password'])) {
- $loginErrors = "Identifiants incorrects.";
- } else {
- $_SESSION['login'] = $_POST['username'];
- }
-}
-
-if (isUserLogged()) :
- $keys = isset($editedKeys) ? $editedKeys : getLdapInfo();
-?>
-
Connecté en tant que = $_SESSION['login']; ?>
-
-
-
-
-
Clés enregistrées avec succès.
-
-
-
-
-
-
- Login
-
-
- = $loginErrors; ?>
-
-
- Utilisateur :
-
-
- Mot de passe :
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/private/websites/tools/tools/landing/myip.php b/modules/private/websites/tools/tools/landing/myip.php
deleted file mode 100644
index 9ec1c6c..0000000
--- a/modules/private/websites/tools/tools/landing/myip.php
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/modules/private/websites/tools/tools/landing/node-packages.nix b/modules/private/websites/tools/tools/landing/node-packages.nix
deleted file mode 100644
index 9ebf254..0000000
--- a/modules/private/websites/tools/tools/landing/node-packages.nix
+++ /dev/null
@@ -1,130 +0,0 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
-
-{nodeEnv, fetchurl, fetchgit, src, globalBuildInputs ? []}:
-
-let
- sources = {
- "@fortawesome/fontawesome-free-5.13.1" = {
- name = "_at_fortawesome_slash_fontawesome-free";
- packageName = "@fortawesome/fontawesome-free";
- version = "5.13.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.1.tgz";
- sha512 = "D819f34FLHeBN/4xvw0HR0u7U2G7RqjPSggXqf7LktsxWQ48VAfGwvMrhcVuaZV2fF069c/619RdgCCms0DHhw==";
- };
- };
- "argparse-1.0.10" = {
- name = "argparse";
- packageName = "argparse";
- version = "1.0.10";
- src = fetchurl {
- url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
- sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
- };
- };
- "bulma-0.8.2" = {
- name = "bulma";
- packageName = "bulma";
- version = "0.8.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/bulma/-/bulma-0.8.2.tgz";
- sha512 = "vMM/ijYSxX+Sm+nD7Lmc1UgWDy2JcL2nTKqwgEqXuOMU+IGALbXd5MLt/BcjBAPLIx36TtzhzBcSnOP974gcqA==";
- };
- };
- "core-js-3.6.5" = {
- name = "core-js";
- packageName = "core-js";
- version = "3.6.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz";
- sha512 = "vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==";
- };
- };
- "esprima-4.0.1" = {
- name = "esprima";
- packageName = "esprima";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
- sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==";
- };
- };
- "js-yaml-3.14.0" = {
- name = "js-yaml";
- packageName = "js-yaml";
- version = "3.14.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz";
- sha512 = "/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==";
- };
- };
- "lodash.merge-4.6.2" = {
- name = "lodash.merge";
- packageName = "lodash.merge";
- version = "4.6.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz";
- sha512 = "0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==";
- };
- };
- "register-service-worker-1.7.1" = {
- name = "register-service-worker";
- packageName = "register-service-worker";
- version = "1.7.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.1.tgz";
- sha512 = "IdTfUZ4u8iJL8o1w8es8l6UMGPmkwHolUdT+UmM1UypC80IB4KbpuIlvwWVj8UDS7eJwkEYRcKRgfRX+oTmJsw==";
- };
- };
- "sprintf-js-1.0.3" = {
- name = "sprintf-js";
- packageName = "sprintf-js";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
- sha1 = "04e6926f662895354f3dd015203633b857297e2c";
- };
- };
- "vue-2.6.11" = {
- name = "vue";
- packageName = "vue";
- version = "2.6.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz";
- sha512 = "VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==";
- };
- };
- };
- args = {
- name = "homer";
- packageName = "homer";
- version = "20.06.1";
- inherit src;
- dependencies = [
- sources."@fortawesome/fontawesome-free-5.13.1"
- sources."argparse-1.0.10"
- sources."bulma-0.8.2"
- sources."core-js-3.6.5"
- sources."esprima-4.0.1"
- sources."js-yaml-3.14.0"
- sources."lodash.merge-4.6.2"
- sources."register-service-worker-1.7.1"
- sources."sprintf-js-1.0.3"
- sources."vue-2.6.11"
- ];
- buildInputs = globalBuildInputs;
- meta = {
- license = "Apache-2.0";
- };
- production = true;
- bypassCache = true;
- reconstructLock = true;
- };
-in
-{
- args = args;
- sources = sources;
- tarball = nodeEnv.buildNodeSourceDist args;
- package = nodeEnv.buildNodePackage args;
- shell = nodeEnv.buildNodeShell args;
-}
diff --git a/modules/private/websites/tools/tools/landing/report_csp_violation.php b/modules/private/websites/tools/tools/landing/report_csp_violation.php
deleted file mode 100644
index 30140b2..0000000
--- a/modules/private/websites/tools/tools/landing/report_csp_violation.php
+++ /dev/null
@@ -1,22 +0,0 @@
-custom->appearance['show_clear_password'] = true;
- $config->custom->appearance['hide_template_warning'] = true;
- $config->custom->appearance['theme'] = "tango";
- $config->custom->appearance['minimalMode'] = false;
- $config->custom->appearance['tree'] = 'AJAXTree';
-
- $servers = new Datastore();
-
- $servers->newServer('ldap_pla');
- $servers->setValue('server','name','Immae’s LDAP');
- $servers->setValue('server','host','ldaps://${env.ldap.host}');
- $servers->setValue('login','auth_type','cookie');
- $servers->setValue('login','bind_id','${env.ldap.dn}');
- $servers->setValue('login','bind_pass','${env.ldap.password}');
- $servers->setValue('appearance','pla_password_hash','ssha');
- $servers->setValue('login','attr','uid');
- $servers->setValue('login','fallback_dn',true);
- '';
- };
- webRoot = phpldapadmin.override { config = config.secrets.fullPaths."webapps/tools-ldap"; };
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = "${webRoot}/htdocs";
- vhostConf = socket: ''
- Alias /ldap "${root}"
-
- DirectoryIndex index.php
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- AllowOverride None
- Require all granted
-
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "openldap.service" ];
- basedir = builtins.concatStringsSep ":" [ webRoot config.secrets.fullPaths."webapps/tools-ldap" ];
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "LdapPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp:/var/lib/php/sessions/phpldapadmin";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/phpldapadmin";
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/phpbb.nix b/modules/private/websites/tools/tools/phpbb.nix
deleted file mode 100644
index 77845c3..0000000
--- a/modules/private/websites/tools/tools/phpbb.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{ lib, phpbb, gnused }:
-rec {
- varDir = "/var/lib/phpbb";
- activationScript = {
- deps = [ "wrappers" ];
- text = ''
- if [ ! -d ${varDir} ]; then
- install -m 0755 -o ${apache.user} -g ${apache.user} -d ${varDir}
- cp -a ${phpbb}/vars/* ${varDir}
- chown -R ${apache.user}:${apache.user} ${varDir}
- fi
- install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
- '';
- };
- webRoot = phpbb;
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /forum "${root}"
-
- DirectoryIndex index.php
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- AllowOverride All
- Options FollowSymlinks
- Require all granted
-
- # add instal to the list after install
-
- Require all denied
-
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "postgresql.service" ];
- basedir = builtins.concatStringsSep ":" [ "/run/wrappers/bin/sendmail" phpbb varDir ];
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "PhpBBPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/rompr.nix b/modules/private/websites/tools/tools/rompr.nix
deleted file mode 100644
index e80d6b2..0000000
--- a/modules/private/websites/tools/tools/rompr.nix
+++ /dev/null
@@ -1,72 +0,0 @@
-{ lib, env, rompr }:
-rec {
- varDir = "/var/lib/rompr";
- activationScript = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
- ${varDir}/prefs ${varDir}/albumart ${varDir}/phpSessions
- '';
- webRoot = rompr;
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "headers" "mime" "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /rompr ${root}
-
-
- Options Indexes FollowSymLinks
- DirectoryIndex index.php
- AllowOverride all
- Require all granted
- Order allow,deny
- Allow from all
- ErrorDocument 404 /rompr/404.php
- AddType image/x-icon .ico
-
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
-
-
- Header Set Cache-Control "max-age=0, no-store"
- Header Set Cache-Control "no-cache, must-revalidate"
-
-
-
- Header Set Cache-Control "max-age=0, no-store"
- Header Set Cache-Control "no-cache, must-revalidate"
-
-
-
- Use LDAPConnect
- Require ldap-group cn=users,cn=mpd,ou=services,dc=immae,dc=eu
-
- '';
- };
- phpFpm = rec {
- basedir = builtins.concatStringsSep ":" [ webRoot varDir ];
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "RomprPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- "php_flag[magic_quotes_gpc]" = "Off";
- "php_flag[track_vars]" = "On";
- "php_flag[register_globals]" = "Off";
- "php_admin_flag[allow_url_fopen]" = "On";
- "php_value[include_path]" = "${webRoot}";
- "php_admin_value[upload_tmp_dir]" = "${varDir}/prefs";
- "php_admin_value[post_max_size]" = "32M";
- "php_admin_value[upload_max_filesize]" = "32M";
- "php_admin_value[memory_limit]" = "256M";
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/shaarli.nix b/modules/private/websites/tools/tools/shaarli.nix
deleted file mode 100644
index d128465..0000000
--- a/modules/private/websites/tools/tools/shaarli.nix
+++ /dev/null
@@ -1,66 +0,0 @@
-{ lib, env, stdenv, fetchurl, shaarli, config }:
-let
- varDir = "/var/lib/shaarli";
-in rec {
- activationScript = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
- ${varDir}/cache ${varDir}/pagecache ${varDir}/tmp ${varDir}/data \
- ${varDir}/phpSessions
- '';
- webRoot = shaarli varDir;
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" "rewrite" "env" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /Shaarli "${root}"
-
- Include ${config.secrets.fullPaths."webapps/tools-shaarli"}
-
- Header set Access-Control-Allow-Origin "*"
- Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
- Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization, Client-Security-Token, Accept-Encoding"
-
-
- DirectoryIndex index.php index.htm index.html
- Options Indexes FollowSymLinks MultiViews Includes
- AllowOverride All
- Require all granted
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- '';
- };
- keys."webapps/tools-shaarli" = {
- user = apache.user;
- group = apache.group;
- permissions = "0400";
- text = ''
- SetEnv SHAARLI_LDAP_PASSWORD "${env.ldap.password}"
- SetEnv SHAARLI_LDAP_DN "${env.ldap.dn}"
- SetEnv SHAARLI_LDAP_HOST "ldaps://${env.ldap.host}"
- SetEnv SHAARLI_LDAP_BASE "${env.ldap.base}"
- SetEnv SHAARLI_LDAP_FILTER "${env.ldap.filter}"
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "openldap.service" ];
- basedir = builtins.concatStringsSep ":" [ webRoot varDir ];
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "ShaarliPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- "php_admin_value[upload_max_filesize]" = "200M";
- "php_admin_value[post_max_size]" = "200M";
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/ttrss.nix b/modules/private/websites/tools/tools/ttrss.nix
deleted file mode 100644
index 1dc99ed..0000000
--- a/modules/private/websites/tools/tools/ttrss.nix
+++ /dev/null
@@ -1,129 +0,0 @@
-{ php, env, ttrss, ttrss-plugins, config }:
-rec {
- varDir = "/var/lib/ttrss";
- activationScript = {
- deps = [ "wrappers" ];
- text = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
- ${varDir}/lock ${varDir}/cache ${varDir}/feed-icons
- install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/cache/export/ \
- ${varDir}/cache/feeds/ \
- ${varDir}/cache/images/ \
- ${varDir}/cache/js/ \
- ${varDir}/cache/simplepie/ \
- ${varDir}/cache/upload/
- touch ${varDir}/feed-icons/index.html
- install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
- '';
- };
- keys."webapps/tools-ttrss" = {
- user = apache.user;
- group = apache.group;
- permissions = "0400";
- text = ''
-
- DirectoryIndex index.php
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- AllowOverride All
- Options FollowSymlinks
- Require all granted
-
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "postgresql.service" "openldap.service" ];
- basedir = builtins.concatStringsSep ":" (
- [ webRoot config.secrets.fullPaths."webapps/tools-ttrss" varDir ]
- ++ webRoot.plugins);
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "TtrssPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp";
- "php_admin_value[session.save_path]" = "${varDir}/phpSessions";
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/wallabag.nix b/modules/private/websites/tools/tools/wallabag.nix
deleted file mode 100644
index 0ebdb0b..0000000
--- a/modules/private/websites/tools/tools/wallabag.nix
+++ /dev/null
@@ -1,142 +0,0 @@
-{ env, wallabag, mylibs, config }:
-rec {
- varDir = "/var/lib/wallabag";
- keys."webapps/tools-wallabag" = {
- user = apache.user;
- group = apache.group;
- permissions = "0400";
- text = ''
- # This file is auto-generated during the composer install
- parameters:
- database_driver: pdo_pgsql
- database_driver_class: Wallabag\CoreBundle\Doctrine\DBAL\Driver\CustomPostgreSQLDriver
- database_host: ${env.postgresql.socket}
- database_port: ${env.postgresql.port}
- database_name: ${env.postgresql.database}
- database_user: ${env.postgresql.user}
- database_password: ${env.postgresql.password}
- database_path: null
- database_table_prefix: wallabag_
- database_socket: null
- database_charset: utf8
- domain_name: https://tools.immae.eu/wallabag
- mailer_transport: sendmail
- mailer_host: 127.0.0.1
- mailer_user: null
- mailer_password: null
- locale: fr
- secret: ${env.secret}
- twofactor_auth: true
- twofactor_sender: wallabag@tools.immae.eu
- fosuser_registration: false
- fosuser_confirmation: true
- from_email: wallabag@tools.immae.eu
- rss_limit: 50
- rabbitmq_host: localhost
- rabbitmq_port: 5672
- rabbitmq_user: guest
- rabbitmq_password: guest
- rabbitmq_prefetch_count: 10
- redis_scheme: unix
- redis_host: null
- redis_port: null
- redis_path: ${env.redis.socket}
- redis_password: null
- sites_credentials: { }
- ldap_enabled: true
- ldap_host: ${env.ldap.host}
- ldap_port: 636
- ldap_tls: false
- ldap_ssl: true
- ldap_bind_requires_dn: true
- ldap_base: '${env.ldap.base}'
- ldap_manager_dn: '${env.ldap.dn}'
- ldap_manager_pw: ${env.ldap.password}
- ldap_filter: '${env.ldap.filter}'
- ldap_admin_filter: '${env.ldap.admin_filter}'
- ldap_username_attribute: uid
- ldap_email_attribute: mail
- ldap_name_attribute: cn
- ldap_enabled_attribute: null
- services:
- swiftmailer.mailer.default.transport:
- class: Swift_SendmailTransport
- arguments: ['/run/wrappers/bin/sendmail -bs']
- '';
- };
- webappDir = wallabag.override { ldap = true; wallabag_config = config.secrets.fullPaths."webapps/tools-wallabag"; };
- activationScript = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
- ${varDir}/var ${varDir}/data/db ${varDir}/assets/images
- '';
- webRoot = "${webappDir}/web";
- # Domain migration: Table wallabag_entry contains whole
- # https://tools.immae.eu/wallabag domain name in preview_picture
- apache = rec {
- user = "wwwrun";
- group = "wwwrun";
- modules = [ "proxy_fcgi" ];
- root = webRoot;
- vhostConf = socket: ''
- Alias /wallabag "${root}"
-
- AllowOverride None
- Require all granted
- # For OAuth (apps)
- CGIPassAuth On
-
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
-
- Options -MultiViews
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule ^(.*)$ app.php [QSA,L]
-
-
-
-
- RewriteEngine Off
-
-
-
- AllowOverride None
- Require all granted
-
- '';
- };
- phpFpm = rec {
- preStart = ''
- if [ ! -f "${varDir}/currentWebappDir" -o \
- ! -f "${varDir}/currentKey" -o \
- "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ] \
- || ! sha512sum -c --status ${varDir}/currentKey; then
- pushd ${webappDir} > /dev/null
- /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=prod cache:clear
- rm -rf /var/lib/wallabag/var/cache/pro_
- /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=prod doctrine:migrations:migrate --no-interaction
- popd > /dev/null
- echo -n "${webappDir}" > ${varDir}/currentWebappDir
- sha512sum ${config.secrets.fullPaths."webapps/tools-wallabag"} > ${varDir}/currentKey
- fi
- '';
- serviceDeps = [ "postgresql.service" "openldap.service" ];
- basedir = builtins.concatStringsSep ":" [ webappDir config.secrets.fullPaths."webapps/tools-wallabag" varDir ];
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "dynamic";
- "pm.max_children" = "60";
- "pm.start_servers" = "2";
- "pm.min_spare_servers" = "1";
- "pm.max_spare_servers" = "10";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "WallabagPHPSESSID";
- "php_admin_value[open_basedir]" = "/run/wrappers/bin/sendmail:${basedir}:/tmp";
- "php_value[max_execution_time]" = "300";
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/webhooks.nix b/modules/private/websites/tools/tools/webhooks.nix
deleted file mode 100644
index 785e22b..0000000
--- a/modules/private/websites/tools/tools/webhooks.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ lib, env }:
-{
- keys = lib.attrsets.mapAttrs' (k: v:
- lib.nameValuePair "webapps/webhooks/${k}.php" {
- user = "wwwrun";
- group = "wwwrun";
- permissions = "0400";
- text = v;
- }) env // {
- "webapps/webhooks" = {
- isDir = true;
- user = "wwwrun";
- group = "wwwrun";
- permissions = "0500";
- };
- };
-}
diff --git a/modules/private/websites/tools/tools/ympd.nix b/modules/private/websites/tools/tools/ympd.nix
deleted file mode 100644
index 531b1a9..0000000
--- a/modules/private/websites/tools/tools/ympd.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ env }:
-let
- ympd = rec {
- config = {
- webPort = "localhost:${toString env.listenPort}";
- host = env.mpd.host;
- port = env.mpd.port;
- };
- apache = {
- modules = [
- "proxy_wstunnel"
- ];
- vhostConf = ''
-
- Use LDAPConnect
- Require ldap-group cn=users,cn=mpd,ou=services,dc=immae,dc=eu
-
-
- RedirectMatch permanent "^/mpd$" "/mpd/"
-
- ProxyPass http://${config.webPort}/
- ProxyPassReverse http://${config.webPort}/
- ProxyPreserveHost on
-
-
- ProxyPass ws://${config.webPort}/ws
-
-
- ProxyPass unix:///run/mpd/mp3.sock|http://tools.immae.eu/mpd/mp3
- ProxyPassReverse unix:///run/mpd/mp3.sock|http://tools.immae.eu/mpd/mp3
-
-
- ProxyPass unix:///run/mpd/ogg.sock|http://tools.immae.eu/mpd/ogg
- ProxyPassReverse unix:///run/mpd/ogg.sock|http://tools.immae.eu/mpd/ogg
-
- '';
- };
- };
-in
- ympd
diff --git a/modules/private/websites/tools/tools/yourls.nix b/modules/private/websites/tools/tools/yourls.nix
deleted file mode 100644
index 3717520..0000000
--- a/modules/private/websites/tools/tools/yourls.nix
+++ /dev/null
@@ -1,86 +0,0 @@
-{ env, yourls, yourls-plugins, config }:
-rec {
- activationScript = {
- deps = [ "httpd" ];
- text = ''
- install -m 0755 -o ${apache.user} -g ${apache.group} -d /var/lib/php/sessions/yourls
- '';
- };
- keys."webapps/tools-yourls" = {
- user = apache.user;
- group = apache.group;
- permissions = "0400";
- text = ''
-
-
- SetHandler "proxy:unix:${socket}|fcgi://localhost"
-
-
- AllowOverride None
- Require all granted
-
- RewriteEngine On
- RewriteBase /url/
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule ^.*$ /url/yourls-loader.php [L]
-
- DirectoryIndex index.php
-
- '';
- };
- phpFpm = rec {
- serviceDeps = [ "mysql.service" "openldap.service" ];
- basedir = builtins.concatStringsSep ":" (
- [ webRoot config.secrets.fullPaths."webapps/tools-yourls" ]
- ++ webRoot.plugins);
- pool = {
- "listen.owner" = apache.user;
- "listen.group" = apache.group;
- "pm" = "ondemand";
- "pm.max_children" = "60";
- "pm.process_idle_timeout" = "60";
-
- # Needed to avoid clashes in browser cookies (same domain)
- "php_value[session.name]" = "YourlsPHPSESSID";
- "php_admin_value[open_basedir]" = "${basedir}:/tmp:/var/lib/php/sessions/yourls";
- "php_admin_value[session.save_path]" = "/var/lib/php/sessions/yourls";
- };
- };
-}
diff --git a/modules/private/websites/tools/vpn/default.nix b/modules/private/websites/tools/vpn/default.nix
deleted file mode 100644
index 9cd499b..0000000
--- a/modules/private/websites/tools/vpn/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- cfg = config.myServices.vpn;
-in {
- config = lib.mkIf cfg.enable {
- services.websites.env.tools.vhostConfs.vpn = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [ "vpn.immae.eu" ];
- root = ./www;
- };
- };
-}
diff --git a/modules/private/websites/tools/vpn/www/index.html b/modules/private/websites/tools/vpn/www/index.html
deleted file mode 100644
index fc2618a..0000000
--- a/modules/private/websites/tools/vpn/www/index.html
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
- VPN configuration
-
-
-
-
-
-
-
Installation
-
- Installer tinc
- Créer un fichier /etc/tinc/Immae/tinc.conf sur ce modèle, en remplaçant la ligne A choisir
par un nom de la forme DomaineMachine. La machine sera accessible par machine.domaine.immae.eu
par la suite
-
-Name = A choisir
-Mode = switch
-Interface = vpn6
-ConnectTo = ImmaeEu
-
-# The tap device tinc will use.
-# Default is /dev/tap0 for ethertap or FreeBSD,
-# /dev/tun0 for Solaris and OpenBSD,
-# and /dev/net/tun for Linux tun/tap device.
-Device = /dev/net/tun
-LocalDiscovery = yes
-
-
- Vérifier l'existence du device indiqué à la ligne "Device
" dans le système.
- ls /dev/net/tun
-
- Si tinc tourne déjà, l'arrêter !!
- Générer les clés :
- tincd -K -n Immae
- Stocker la clé privée dans /etc/tinc/Immae/rsa_key.priv
et la clé publique dans un autre dossier
- (pas /etc/tinc/Immae/hosts/
comme proposé par défaut ).
- L'endroit importe peu, elle ne sera pas conservée.
- M'envoyer le nom choisi dans tinc.conf
, et la clé publique
- Cloner le dépôt des hôtes du réseau
-
-cd /etc/tinc/Immae
-git clone https://git.immae.eu/perso/Immae/Config/tinc/hosts
-
-
- Une fois que j'ai confirmé avoir reçu la clé :
-
-cd /etc/tinc/Immae/hosts
-git pull origin master
-
-
- Uniquement pour Debian/Ubuntu: Ajouter Immae
dans /etc/tinc/nets.boot
(créer le fichier si nécessaire).
- Selon le système, démarrer tinc :
-
-/etc/init.d/tinc start
-
- ou
-
-systemctl enable tincd@Immae.service
-systemctl start tincd@Immae.service
-
-
-
-
-
Choix d'ip
-
-
-
-
diff --git a/modules/private/websites/tools/vpn/www/style.css b/modules/private/websites/tools/vpn/www/style.css
deleted file mode 100644
index b177fec..0000000
--- a/modules/private/websites/tools/vpn/www/style.css
+++ /dev/null
@@ -1,61 +0,0 @@
-* {
- margin:0;
- padding:0;
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing: border-box;
-}
-
-html {
- min-height:100%;
- border-top:10px solid #ECEEF1;
- border-bottom:10px solid #ECEEF1;
- color:#61666c;
- font-weight:400;
- font-size:1em;
- font-family:'Open Sans', sans-serif;
- line-height:2em;
-}
-body {
- padding:20px;
- -webkit-backface-visibility:hidden;
-}
-code {
- font-family:consolas,monospace;
-}
-a {
- color:#61666c;
- text-decoration:none;
-}
-a, img {
- border:none;
- outline:none
-}
-a:hover {
- color:#2a2a2a;
-}
-
-.instructions {
- margin:0 auto;
- padding-top:20px;
- max-width:80%;
-}
-
-.instructions a {
- text-decoration: underline;
-}
-
-.instructions h2 {
- margin-top: 10px;
-}
-.instructions em.important:before {
- content: "⚠ Important ⚠ ";
- color: red;
-}
-.instructions pre {
- width: 50em;
- padding: 10px 15px;
- display: table;
- border: 1px inset black;
- line-height: 1em;
-}
diff --git a/modules/webapps/diaspora.nix b/modules/webapps/diaspora.nix
deleted file mode 100644
index d9e9989..0000000
--- a/modules/webapps/diaspora.nix
+++ /dev/null
@@ -1,173 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- name = "diaspora";
- cfg = config.services.diaspora;
-
- uid = config.ids.uids.diaspora;
- gid = config.ids.gids.diaspora;
-in
-{
- options.services.diaspora = {
- enable = lib.mkEnableOption "Enable Diaspora’s service";
- user = lib.mkOption {
- type = lib.types.str;
- default = name;
- description = "User account under which Diaspora runs";
- };
- group = lib.mkOption {
- type = lib.types.str;
- default = name;
- description = "Group under which Diaspora runs";
- };
- adminEmail = lib.mkOption {
- type = lib.types.str;
- example = "admin@example.com";
- description = "Admin e-mail for Diaspora";
- };
- dataDir = lib.mkOption {
- type = lib.types.path;
- default = "/var/lib/${name}";
- description = ''
- The directory where Diaspora stores its data.
- '';
- };
- socketsDir = lib.mkOption {
- type = lib.types.path;
- default = "/run/${name}";
- description = ''
- The directory where Diaspora puts runtime files and sockets.
- '';
- };
- configDir = lib.mkOption {
- type = lib.types.path;
- description = ''
- The configuration path for Diaspora.
- '';
- };
- package = lib.mkOption {
- type = lib.types.package;
- default = pkgs.webapps.diaspora;
- description = ''
- Diaspora package to use.
- '';
- };
- # Output variables
- systemdStateDirectory = lib.mkOption {
- type = lib.types.str;
- # Use ReadWritePaths= instead if varDir is outside of /var/lib
- default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
- lib.strings.removePrefix "/var/lib/" cfg.dataDir;
- description = ''
- Adjusted Diaspora data directory for systemd
- '';
- readOnly = true;
- };
- systemdRuntimeDirectory = lib.mkOption {
- type = lib.types.str;
- # Use ReadWritePaths= instead if socketsDir is outside of /run
- default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir;
- lib.strings.removePrefix "/run/" cfg.socketsDir;
- description = ''
- Adjusted Diaspora sockets directory for systemd
- '';
- readOnly = true;
- };
- workdir = lib.mkOption {
- type = lib.types.package;
- default = cfg.package.override {
- varDir = cfg.dataDir;
- podmin_email = cfg.adminEmail;
- config_dir = cfg.configDir;
- };
- description = ''
- Adjusted diaspora package with overriden values
- '';
- readOnly = true;
- };
- sockets = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- rails = "${cfg.socketsDir}/diaspora.sock";
- eye = "${cfg.socketsDir}/eye.sock";
- };
- readOnly = true;
- description = ''
- Diaspora sockets
- '';
- };
- pids = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- eye = "${cfg.socketsDir}/eye.pid";
- };
- readOnly = true;
- description = ''
- Diaspora pids
- '';
- };
- };
-
- config = lib.mkIf cfg.enable {
- users.users = lib.optionalAttrs (cfg.user == name) {
- "${name}" = {
- inherit uid;
- group = cfg.group;
- description = "Diaspora user";
- home = cfg.dataDir;
- packages = [ cfg.workdir.gems pkgs.nodejs cfg.workdir.gems.ruby ];
- useDefaultShell = true;
- };
- };
- users.groups = lib.optionalAttrs (cfg.group == name) {
- "${name}" = {
- inherit gid;
- };
- };
-
- systemd.services.diaspora = {
- description = "Diaspora";
- wantedBy = [ "multi-user.target" ];
- after = [
- "network.target" "redis.service" "postgresql.service"
- ];
- wants = [
- "redis.service" "postgresql.service"
- ];
-
- environment.RAILS_ENV = "production";
- environment.BUNDLE_PATH = "${cfg.workdir.gems}/${cfg.workdir.gems.ruby.gemPath}";
- environment.BUNDLE_GEMFILE = "${cfg.workdir.gems.confFiles}/Gemfile";
- environment.EYE_SOCK = cfg.sockets.eye;
- environment.EYE_PID = cfg.pids.eye;
-
- path = [ cfg.workdir.gems pkgs.nodejs cfg.workdir.gems.ruby pkgs.curl pkgs.which pkgs.gawk ];
-
- preStart = ''
- install -m 0755 -d ${cfg.dataDir}/uploads ${cfg.dataDir}/tmp ${cfg.dataDir}/log
- install -m 0700 -d ${cfg.dataDir}/tmp/pids
- if [ ! -f ${cfg.dataDir}/schedule.yml ]; then
- echo "{}" > ${cfg.dataDir}/schedule.yml
- fi
- ./bin/bundle exec rails db:migrate
- '';
-
- script = ''
- exec ${cfg.workdir}/script/server
- '';
-
- serviceConfig = {
- User = cfg.user;
- PrivateTmp = true;
- Restart = "always";
- Type = "simple";
- WorkingDirectory = cfg.workdir;
- StateDirectory = cfg.systemdStateDirectory;
- RuntimeDirectory = cfg.systemdRuntimeDirectory;
- StandardInput = "null";
- KillMode = "control-group";
- };
-
- unitConfig.RequiresMountsFor = cfg.dataDir;
- };
- };
-}
diff --git a/modules/webapps/etherpad-lite.nix b/modules/webapps/etherpad-lite.nix
deleted file mode 100644
index 2e09952..0000000
--- a/modules/webapps/etherpad-lite.nix
+++ /dev/null
@@ -1,162 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- name = "etherpad-lite";
- cfg = config.services.etherpad-lite;
-
- uid = config.ids.uids.etherpad-lite;
- gid = config.ids.gids.etherpad-lite;
-in
-{
- options.services.etherpad-lite = {
- enable = lib.mkEnableOption "Enable Etherpad lite’s service";
- user = lib.mkOption {
- type = lib.types.str;
- default = name;
- description = "User account under which Etherpad lite runs";
- };
- group = lib.mkOption {
- type = lib.types.str;
- default = name;
- description = "Group under which Etherpad lite runs";
- };
- dataDir = lib.mkOption {
- type = lib.types.path;
- default = "/var/lib/${name}";
- description = ''
- The directory where Etherpad lite stores its data.
- '';
- };
- socketsDir = lib.mkOption {
- type = lib.types.path;
- default = "/run/${name}";
- description = ''
- The directory where Etherpad lite stores its sockets.
- '';
- };
- configFile = lib.mkOption {
- type = lib.types.path;
- description = ''
- The config file path for Etherpad lite.
- '';
- };
- sessionKeyFile = lib.mkOption {
- type = lib.types.path;
- description = ''
- The Session key file path for Etherpad lite.
- '';
- };
- apiKeyFile = lib.mkOption {
- type = lib.types.path;
- description = ''
- The API key file path for Etherpad lite.
- '';
- };
- package = lib.mkOption {
- type = lib.types.package;
- default = pkgs.webapps.etherpad-lite;
- description = ''
- Etherpad lite package to use.
- '';
- example = lib.literalExample ''
- pkgs.webapps.etherpad-lite.withModules (p: [ p.ep_align ]);
- '';
- };
- modules = lib.mkOption {
- type = lib.types.listOf lib.types.package;
- default = [];
- description = ''
- Etherpad lite modules to use.
- DEPRECATED: use package directly
- '';
- };
- # Output variables
- workdir = lib.mkOption {
- type = lib.types.package;
- default = cfg.package.withModules (_: cfg.modules);
- description = ''
- Adjusted Etherpad lite package with plugins
- '';
- readOnly = true;
- };
- systemdStateDirectory = lib.mkOption {
- type = lib.types.str;
- # Use ReadWritePaths= instead if varDir is outside of /var/lib
- default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
- lib.strings.removePrefix "/var/lib/" cfg.dataDir;
- description = ''
- Adjusted Etherpad lite data directory for systemd
- '';
- readOnly = true;
- };
- systemdRuntimeDirectory = lib.mkOption {
- type = lib.types.str;
- # Use ReadWritePaths= instead if socketsDir is outside of /run
- default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir;
- lib.strings.removePrefix "/run/" cfg.socketsDir;
- description = ''
- Adjusted Etherpad lite sockets directory for systemd
- '';
- readOnly = true;
- };
- sockets = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- node = "${cfg.socketsDir}/etherpad-lite.sock";
- };
- readOnly = true;
- description = ''
- Etherpad lite sockets
- '';
- };
- };
-
- config = lib.mkIf cfg.enable {
- systemd.services.etherpad-lite = {
- description = "Etherpad-lite";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" "postgresql.service" ];
- wants = [ "postgresql.service" ];
-
- environment.NODE_ENV = "production";
- environment.HOME = cfg.workdir;
-
- path = [ pkgs.nodejs ];
-
- script = ''
- exec ${pkgs.nodejs}/bin/node ${cfg.workdir}/src/node/server.js \
- --sessionkey ${cfg.sessionKeyFile} \
- --apikey ${cfg.apiKeyFile} \
- --settings ${cfg.configFile}
- '';
-
- postStart = ''
- while [ ! -S ${cfg.sockets.node} ]; do
- sleep 0.5
- done
- chmod a+w ${cfg.sockets.node}
- '';
- serviceConfig = {
- DynamicUser = true;
- User = cfg.user;
- Group = cfg.group;
- WorkingDirectory = cfg.workdir;
- PrivateTmp = true;
- NoNewPrivileges = true;
- PrivateDevices = true;
- ProtectHome = true;
- ProtectControlGroups = true;
- ProtectKernelModules = true;
- Restart = "always";
- Type = "simple";
- TimeoutSec = 60;
- RuntimeDirectory = cfg.systemdRuntimeDirectory;
- StateDirectory= cfg.systemdStateDirectory;
- ExecStartPre = [
- "+${pkgs.coreutils}/bin/install -d -m 0755 -o ${cfg.user} -g ${cfg.group} ${cfg.dataDir}/ep_initialized"
- "+${pkgs.coreutils}/bin/chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir} ${cfg.configFile} ${cfg.sessionKeyFile} ${cfg.apiKeyFile}"
- ];
- };
- };
-
- };
-}
diff --git a/modules/webapps/mastodon.nix b/modules/webapps/mastodon.nix
deleted file mode 100644
index df2dbb2..0000000
--- a/modules/webapps/mastodon.nix
+++ /dev/null
@@ -1,265 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- name = "mastodon";
- cfg = config.services.mastodon;
-
- uid = config.ids.uids.mastodon;
- gid = config.ids.gids.mastodon;
-in
-{
- options.services.mastodon = {
- enable = lib.mkEnableOption "Enable Mastodon’s service";
- user = lib.mkOption {
- type = lib.types.str;
- default = name;
- description = "User account under which Mastodon runs";
- };
- group = lib.mkOption {
- type = lib.types.str;
- default = name;
- description = "Group under which Mastodon runs";
- };
- dataDir = lib.mkOption {
- type = lib.types.path;
- default = "/var/lib/${name}";
- description = ''
- The directory where Mastodon stores its data.
- '';
- };
- socketsPrefix = lib.mkOption {
- type = lib.types.str;
- default = "live";
- description = ''
- The prefix to use for Mastodon sockets.
- '';
- };
- socketsDir = lib.mkOption {
- type = lib.types.path;
- default = "/run/${name}";
- description = ''
- The directory where Mastodon puts runtime files and sockets.
- '';
- };
- configFile = lib.mkOption {
- type = lib.types.path;
- description = ''
- The configuration file path for Mastodon.
- '';
- };
- package = lib.mkOption {
- type = lib.types.package;
- default = pkgs.webapps.mastodon;
- description = ''
- Mastodon package to use.
- '';
- };
- # Output variables
- workdir = lib.mkOption {
- type = lib.types.package;
- default = cfg.package.override { varDir = cfg.dataDir; };
- description = ''
- Adjusted mastodon package with overriden varDir
- '';
- readOnly = true;
- };
- systemdStateDirectory = lib.mkOption {
- type = lib.types.str;
- # Use ReadWritePaths= instead if varDir is outside of /var/lib
- default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
- lib.strings.removePrefix "/var/lib/" cfg.dataDir;
- description = ''
- Adjusted Mastodon data directory for systemd
- '';
- readOnly = true;
- };
- systemdRuntimeDirectory = lib.mkOption {
- type = lib.types.str;
- # Use ReadWritePaths= instead if socketsDir is outside of /run
- default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir;
- lib.strings.removePrefix "/run/" cfg.socketsDir;
- description = ''
- Adjusted Mastodon sockets directory for systemd
- '';
- readOnly = true;
- };
- sockets = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- node = "${cfg.socketsDir}/${cfg.socketsPrefix}_node.sock";
- rails = "${cfg.socketsDir}/${cfg.socketsPrefix}_puma.sock";
- };
- readOnly = true;
- description = ''
- Mastodon sockets
- '';
- };
- };
-
- config = lib.mkIf cfg.enable {
- users.users = lib.optionalAttrs (cfg.user == name) {
- "${name}" = {
- inherit uid;
- group = cfg.group;
- description = "Mastodon user";
- home = cfg.dataDir;
- useDefaultShell = true;
- };
- };
- users.groups = lib.optionalAttrs (cfg.group == name) {
- "${name}" = {
- inherit gid;
- };
- };
-
- systemd.slices.mastodon = {
- description = "Mastodon slice";
- };
-
- systemd.services.mastodon-streaming = {
- description = "Mastodon Streaming";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" "mastodon-web.service" ];
-
- environment.NODE_ENV = "production";
- environment.SOCKET = cfg.sockets.node;
-
- path = [ pkgs.nodejs pkgs.bashInteractive ];
-
- script = ''
- exec npm run start
- '';
-
- postStart = ''
- while [ ! -S $SOCKET ]; do
- sleep 0.5
- done
- chmod a+w $SOCKET
- '';
-
- postStop = ''
- rm $SOCKET
- '';
-
- serviceConfig = {
- Slice = "mastodon.slice";
- User = cfg.user;
- EnvironmentFile = cfg.configFile;
- PrivateTmp = true;
- Restart = "always";
- TimeoutSec = 15;
- Type = "simple";
- WorkingDirectory = cfg.workdir;
- StateDirectory = cfg.systemdStateDirectory;
- RuntimeDirectory = cfg.systemdRuntimeDirectory;
- RuntimeDirectoryPreserve = "yes";
- };
-
- unitConfig.RequiresMountsFor = cfg.dataDir;
- };
-
- systemd.services.mastodon-web = {
- description = "Mastodon Web app";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
-
- environment.RAILS_ENV = "production";
- environment.BUNDLE_PATH = "${cfg.workdir.gems}/${cfg.workdir.gems.ruby.gemPath}";
- environment.BUNDLE_GEMFILE = "${cfg.workdir.gems.confFiles}/Gemfile";
- environment.SOCKET = cfg.sockets.rails;
-
- path = [ cfg.workdir.gems cfg.workdir.gems.ruby pkgs.file pkgs.imagemagick ];
-
- preStart = ''
- install -m 0755 -d ${cfg.dataDir}/tmp/cache
- ./bin/bundle exec rails db:migrate
- '';
-
- script = ''
- exec ./bin/bundle exec puma -C config/puma.rb
- '';
-
- postStart = ''
- exec ./bin/tootctl cache clear
- '';
- serviceConfig = {
- Slice = "mastodon.slice";
- User = cfg.user;
- EnvironmentFile = cfg.configFile;
- PrivateTmp = true;
- Restart = "always";
- TimeoutSec = 60;
- Type = "simple";
- WorkingDirectory = cfg.workdir;
- StateDirectory = cfg.systemdStateDirectory;
- RuntimeDirectory = cfg.systemdRuntimeDirectory;
- RuntimeDirectoryPreserve = "yes";
- };
-
- unitConfig.RequiresMountsFor = cfg.dataDir;
- };
-
- systemd.services.mastodon-cleanup = {
- description = "Cleanup mastodon";
- startAt = "daily";
- restartIfChanged = false;
-
- environment.RAILS_ENV = "production";
- environment.BUNDLE_PATH = "${cfg.workdir.gems}/${cfg.workdir.gems.ruby.gemPath}";
- environment.BUNDLE_GEMFILE = "${cfg.workdir.gems.confFiles}/Gemfile";
- environment.SOCKET = cfg.sockets.rails;
-
- path = [ cfg.workdir.gems cfg.workdir.gems.ruby pkgs.file ];
-
- script = ''
- exec ./bin/tootctl media remove --days 30
- '';
-
- serviceConfig = {
- User = cfg.user;
- EnvironmentFile = cfg.configFile;
- PrivateTmp = true;
- Type = "oneshot";
- WorkingDirectory = cfg.workdir;
- StateDirectory = cfg.systemdStateDirectory;
- RuntimeDirectory = cfg.systemdRuntimeDirectory;
- RuntimeDirectoryPreserve = "yes";
- };
-
- unitConfig.RequiresMountsFor = cfg.dataDir;
- };
-
- systemd.services.mastodon-sidekiq = {
- description = "Mastodon Sidekiq";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" "mastodon-web.service" ];
-
- environment.RAILS_ENV="production";
- environment.BUNDLE_PATH = "${cfg.workdir.gems}/${cfg.workdir.gems.ruby.gemPath}";
- environment.BUNDLE_GEMFILE = "${cfg.workdir.gems.confFiles}/Gemfile";
- environment.DB_POOL="5";
-
- path = [ cfg.workdir.gems cfg.workdir.gems.ruby pkgs.imagemagick pkgs.ffmpeg pkgs.file ];
-
- script = ''
- exec ./bin/bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push
- '';
-
- serviceConfig = {
- Slice = "mastodon.slice";
- User = cfg.user;
- EnvironmentFile = cfg.configFile;
- PrivateTmp = true;
- Restart = "always";
- TimeoutSec = 15;
- Type = "simple";
- WorkingDirectory = cfg.workdir;
- StateDirectory = cfg.systemdStateDirectory;
- RuntimeDirectory = cfg.systemdRuntimeDirectory;
- RuntimeDirectoryPreserve = "yes";
- };
-
- unitConfig.RequiresMountsFor = cfg.dataDir;
- };
-
- };
-}
diff --git a/modules/webapps/mediagoblin.nix b/modules/webapps/mediagoblin.nix
deleted file mode 100644
index 3fe5e38..0000000
--- a/modules/webapps/mediagoblin.nix
+++ /dev/null
@@ -1,231 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- name = "mediagoblin";
- cfg = config.services.mediagoblin;
-
- uid = config.ids.uids.mediagoblin;
- gid = config.ids.gids.mediagoblin;
-
- paste_local = pkgs.writeText "paste_local.ini" ''
- [DEFAULT]
- debug = false
-
- [pipeline:main]
- pipeline = mediagoblin
-
- [app:mediagoblin]
- use = egg:mediagoblin#app
- config = ${cfg.configFile} ${cfg.package}/mediagoblin.ini
- /mgoblin_static = ${cfg.package}/mediagoblin/static
-
- [loggers]
- keys = root
-
- [handlers]
- keys = console
-
- [formatters]
- keys = generic
-
- [logger_root]
- level = INFO
- handlers = console
-
- [handler_console]
- class = StreamHandler
- args = (sys.stderr,)
- level = NOTSET
- formatter = generic
-
- [formatter_generic]
- format = %(levelname)-7.7s [%(name)s] %(message)s
-
- [filter:errors]
- use = egg:mediagoblin#errors
- debug = false
-
- [server:main]
- use = egg:waitress#main
- unix_socket = ${cfg.sockets.paster}
- unix_socket_perms = 777
- url_scheme = https
- '';
-in
-{
- options.services.mediagoblin = {
- enable = lib.mkEnableOption "Enable Mediagoblin’s service";
- user = lib.mkOption {
- type = lib.types.str;
- default = name;
- description = "User account under which Mediagoblin runs";
- };
- group = lib.mkOption {
- type = lib.types.str;
- default = name;
- description = "Group under which Mediagoblin runs";
- };
- dataDir = lib.mkOption {
- type = lib.types.path;
- default = "/var/lib/${name}";
- description = ''
- The directory where Mediagoblin stores its data.
- '';
- };
- socketsDir = lib.mkOption {
- type = lib.types.path;
- default = "/run/${name}";
- description = ''
- The directory where Mediagoblin puts runtime files and sockets.
- '';
- };
- configFile = lib.mkOption {
- type = lib.types.path;
- description = ''
- The configuration file path for Mediagoblin.
- '';
- };
- package = lib.mkOption {
- type = lib.types.package;
- default = pkgs.webapps.mediagoblin;
- example = lib.literalExample ''
- pkgs.webapps.mediagoblin.withPlugins (p: [p.basicsearch])
- '';
- description = ''
- Mediagoblin package to use.
- '';
- };
- systemdStateDirectory = lib.mkOption {
- type = lib.types.str;
- # Use ReadWritePaths= instead if varDir is outside of /var/lib
- default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
- lib.strings.removePrefix "/var/lib/" cfg.dataDir;
- description = ''
- Adjusted Mediagoblin data directory for systemd
- '';
- readOnly = true;
- };
- systemdRuntimeDirectory = lib.mkOption {
- type = lib.types.str;
- # Use ReadWritePaths= instead if socketsDir is outside of /run
- default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir;
- lib.strings.removePrefix "/run/" cfg.socketsDir;
- description = ''
- Adjusted Mediagoblin sockets directory for systemd
- '';
- readOnly = true;
- };
- sockets = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- paster = "${cfg.socketsDir}/mediagoblin.sock";
- };
- readOnly = true;
- description = ''
- Mediagoblin sockets
- '';
- };
- pids = lib.mkOption {
- type = lib.types.attrsOf lib.types.path;
- default = {
- paster = "${cfg.socketsDir}/mediagoblin.pid";
- celery = "${cfg.socketsDir}/mediagoblin-celeryd.pid";
- };
- readOnly = true;
- description = ''
- Mediagoblin pid files
- '';
- };
- };
-
- config = lib.mkIf cfg.enable {
- users.users = lib.optionalAttrs (cfg.user == name) {
- "${name}" = {
- inherit uid;
- group = cfg.group;
- description = "Mediagoblin user";
- home = cfg.dataDir;
- useDefaultShell = true;
- };
- };
- users.groups = lib.optionalAttrs (cfg.group == name) {
- "${name}" = {
- inherit gid;
- };
- };
-
- systemd.slices.mediagoblin = {
- description = "Mediagoblin slice";
- };
- systemd.services.mediagoblin-web = {
- description = "Mediagoblin service";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" ];
- wants = [ "postgresql.service" "redis.service" ];
-
- environment.SCRIPT_NAME = "/mediagoblin/";
-
- script = ''
- exec ./bin/paster serve \
- ${paste_local} \
- --pid-file=${cfg.pids.paster}
- '';
- preStop = ''
- exec ./bin/paster serve \
- --pid-file=${cfg.pids.paster} \
- ${paste_local} stop
- '';
- preStart = ''
- if [ -d ${cfg.dataDir}/plugin_static/ ]; then
- rm ${cfg.dataDir}/plugin_static/coreplugin_basic_auth
- ln -sf ${cfg.package}/mediagoblin/plugins/basic_auth/static ${cfg.dataDir}/plugin_static/coreplugin_basic_auth
- fi
- ./bin/gmg -cf ${cfg.configFile} dbupdate
- '';
-
- serviceConfig = {
- Slice = "mediagoblin.slice";
- User = cfg.user;
- PrivateTmp = true;
- Restart = "always";
- TimeoutSec = 15;
- Type = "simple";
- WorkingDirectory = cfg.package;
- RuntimeDirectory = cfg.systemdRuntimeDirectory;
- StateDirectory= cfg.systemdStateDirectory;
- PIDFile = cfg.pids.paster;
- };
-
- unitConfig.RequiresMountsFor = cfg.dataDir;
- };
-
- systemd.services.mediagoblin-celeryd = {
- description = "Mediagoblin service";
- wantedBy = [ "multi-user.target" ];
- after = [ "network.target" "mediagoblin-web.service" ];
-
- environment.MEDIAGOBLIN_CONFIG = cfg.configFile;
- environment.CELERY_CONFIG_MODULE = "mediagoblin.init.celery.from_celery";
-
- script = ''
- exec ./bin/celery worker \
- --logfile=${cfg.dataDir}/celery.log \
- --loglevel=INFO
- '';
-
- serviceConfig = {
- Slice = "mediagoblin.slice";
- User = cfg.user;
- PrivateTmp = true;
- Restart = "always";
- TimeoutSec = 60;
- Type = "simple";
- WorkingDirectory = cfg.package;
- RuntimeDirectory = cfg.systemdRuntimeDirectory;
- StateDirectory= cfg.systemdStateDirectory;
- PIDFile = cfg.pids.celery;
- };
-
- unitConfig.RequiresMountsFor = cfg.dataDir;
- };
- };
-}
diff --git a/modules/webapps/webstats/default.nix b/modules/webapps/webstats/default.nix
deleted file mode 100644
index e873af2..0000000
--- a/modules/webapps/webstats/default.nix
+++ /dev/null
@@ -1,80 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
- name = "goaccess";
- cfg = config.services.webstats;
-in {
- options.services.webstats = {
- dataDir = lib.mkOption {
- type = lib.types.path;
- default = "/var/lib/${name}";
- description = ''
- The directory where Goaccess stores its data.
- '';
- };
- sites = lib.mkOption {
- type = lib.types.listOf (lib.types.submodule {
- options = {
- conf = lib.mkOption {
- type = lib.types.nullOr lib.types.path;
- default = null;
- description = ''
- use custom goaccess configuration file instead of the
- default one.
- '';
- };
- name = lib.mkOption {
- type = lib.types.str;
- description = ''
- Domain name. Corresponds to the Apache file name and the
- folder name in which the state will be saved.
- '';
- };
- };
- });
- default = [];
- description = "Sites to generate stats";
- };
- };
-
- config = lib.mkIf (builtins.length cfg.sites > 0) {
- users.users.root.packages = [
- pkgs.goaccess
- ];
-
- services.cron = {
- enable = true;
- systemCronJobs = let
- stats = domain: conf: let
- config = if builtins.isNull conf
- then pkgs.runCommand "goaccess.conf" {
- dbPath = "${cfg.dataDir}/${domain}";
- } "substituteAll ${./goaccess.conf} $out"
- else conf;
- d = pkgs.writeScriptBin "stats-${domain}" ''
- #!${pkgs.stdenv.shell}
- set -e
- shopt -s nullglob
- TMPFILE=$(mktemp)
- trap "rm -f $TMPFILE" EXIT
-
- mkdir -p ${cfg.dataDir}/${domain}
- for i in /var/log/httpd/access-${domain}*.gz; do
- zcat "$i" >> $TMPFILE
- done
- cat /var/log/httpd/access-${domain}.log > $TMPFILE
- ${pkgs.goaccess}/bin/goaccess $TMPFILE --no-progress -o ${cfg.dataDir}/${domain}/index.html -p ${config}
- '';
- in "${d}/bin/stats-${domain}";
- allStats = sites: pkgs.writeScript "stats" ''
- #!${pkgs.stdenv.shell}
-
- mkdir -p ${cfg.dataDir}
- ${builtins.concatStringsSep "\n" (map (v: stats v.name v.conf) sites)}
- '';
- in
- [
- "5 0 * * * root ${allStats cfg.sites}"
- ];
- };
- };
-}
diff --git a/modules/webapps/webstats/goaccess.conf b/modules/webapps/webstats/goaccess.conf
deleted file mode 100644
index c6c244a..0000000
--- a/modules/webapps/webstats/goaccess.conf
+++ /dev/null
@@ -1,100 +0,0 @@
-time-format %H:%M:%S
-date-format %d/%b/%Y
-
-log-format VCOMBINED
-#= %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
-
-html-prefs {"theme":"bright","layout":"vertical"}
-
-# old
-exclude-ip 188.165.209.148
-exclude-ip 178.33.252.96
-exclude-ip 2001:41d0:2:9c94::1
-exclude-ip 2001:41d0:2:9c94::
-# eldiron
-exclude-ip 176.9.151.89
-exclude-ip 2a01:4f8:160:3445::
-# monitoring-1
-exclude-ip 95.216.164.150
-exclude-ip 2a01:4f9:c010:1c95::
-
-no-query-string true
-
-persist true
-restore true
-db-path @dbPath@
-
-ignore-panel REFERRERS
-ignore-panel KEYPHRASES
-
-static-file .css
-static-file .js
-static-file .jpg
-static-file .png
-static-file .gif
-static-file .ico
-static-file .jpeg
-static-file .pdf
-static-file .csv
-static-file .mpeg
-static-file .mpg
-static-file .swf
-static-file .woff
-static-file .woff2
-static-file .xls
-static-file .xlsx
-static-file .doc
-static-file .docx
-static-file .ppt
-static-file .pptx
-static-file .txt
-static-file .zip
-static-file .ogg
-static-file .mp3
-static-file .mp4
-static-file .exe
-static-file .iso
-static-file .gz
-static-file .rar
-static-file .svg
-static-file .bmp
-static-file .tar
-static-file .tgz
-static-file .tiff
-static-file .tif
-static-file .ttf
-static-file .flv
-#static-file .less
-#static-file .ac3
-#static-file .avi
-#static-file .bz2
-#static-file .class
-#static-file .cue
-#static-file .dae
-#static-file .dat
-#static-file .dts
-#static-file .ejs
-#static-file .eot
-#static-file .eps
-#static-file .img
-#static-file .jar
-#static-file .map
-#static-file .mid
-#static-file .midi
-#static-file .ogv
-#static-file .webm
-#static-file .mkv
-#static-file .odp
-#static-file .ods
-#static-file .odt
-#static-file .otf
-#static-file .pict
-#static-file .pls
-#static-file .ps
-#static-file .qt
-#static-file .rm
-#static-file .svgz
-#static-file .wav
-#static-file .webp
-
-
diff --git a/modules/websites/default.nix b/modules/websites/default.nix
deleted file mode 100644
index 6658c66..0000000
--- a/modules/websites/default.nix
+++ /dev/null
@@ -1,281 +0,0 @@
-{ lib, config, pkgs, ... }: with lib;
-let
- cfg = config.services.websites;
-in
-{
- options.services.websites = with types; {
- certs = mkOption {
- description = "Default websites configuration for certificates as accepted by acme";
- };
- env = mkOption {
- default = {};
- description = "Each type of website to enable will target a distinct httpd server";
- type = attrsOf (submodule {
- options = {
- enable = mkEnableOption "Enable websites of this type";
- adminAddr = mkOption {
- type = str;
- description = "Admin e-mail address of the instance";
- };
- httpdName = mkOption {
- type = str;
- description = "Name of the httpd instance to assign this type to";
- };
- ips = mkOption {
- type = listOf str;
- default = [];
- description = "ips to listen to";
- };
- modules = mkOption {
- type = listOf str;
- default = [];
- description = "Additional modules to load in Apache";
- };
- extraConfig = mkOption {
- type = listOf lines;
- default = [];
- description = "Additional configuration to append to Apache";
- };
- nosslVhost = mkOption {
- description = "A default nossl vhost for captive portals";
- default = {};
- type = submodule {
- options = {
- enable = mkEnableOption "Add default no-ssl vhost for this instance";
- host = mkOption {
- type = str;
- description = "The hostname to use for this vhost";
- };
- root = mkOption {
- type = path;
- default = ./nosslVhost;
- description = "The root folder to serve";
- };
- indexFile = mkOption {
- type = str;
- default = "index.html";
- description = "The index file to show.";
- };
- };
- };
- };
- fallbackVhost = mkOption {
- description = "The fallback vhost that will be defined as first vhost in Apache";
- type = submodule {
- options = {
- certName = mkOption { type = str; };
- hosts = mkOption { type = listOf str; };
- root = mkOption { type = nullOr path; };
- forceSSL = mkOption {
- type = bool;
- default = true;
- description = ''
- Automatically create a corresponding non-ssl vhost
- that will only redirect to the ssl version
- '';
- };
- extraConfig = mkOption { type = listOf lines; default = []; };
- };
- };
- };
- vhostNoSSLConfs = mkOption {
- default = {};
- description = "List of no ssl vhosts to define for Apache";
- type = attrsOf (submodule {
- options = {
- hosts = mkOption { type = listOf str; };
- root = mkOption { type = nullOr path; };
- extraConfig = mkOption { type = listOf lines; default = []; };
- };
- });
- };
- vhostConfs = mkOption {
- default = {};
- description = "List of vhosts to define for Apache";
- type = attrsOf (submodule {
- options = {
- certName = mkOption { type = str; };
- addToCerts = mkOption {
- type = bool;
- default = false;
- description = "Use these to certificates. Is ignored (considered true) if certMainHost is not null";
- };
- certMainHost = mkOption {
- type = nullOr str;
- description = "Use that host as 'main host' for acme certs";
- default = null;
- };
- hosts = mkOption { type = listOf str; };
- root = mkOption { type = nullOr path; };
- forceSSL = mkOption {
- type = bool;
- default = true;
- description = ''
- Automatically create a corresponding non-ssl vhost
- that will only redirect to the ssl version
- '';
- };
- extraConfig = mkOption { type = listOf lines; default = []; };
- };
- });
- };
- watchPaths = mkOption {
- type = listOf str;
- default = [];
- description = ''
- Paths to watch that should trigger a reload of httpd
- '';
- };
- };
- });
- };
- };
-
- config.services.httpd = let
- nosslVhost = ips: cfg: {
- listen = map (ip: { inherit ip; port = 80; }) ips;
- hostName = cfg.host;
- logFormat = "combinedVhost";
- documentRoot = cfg.root;
- extraConfig = ''
-
- DirectoryIndex ${cfg.indexFile}
- AllowOverride None
- Require all granted
-
- RewriteEngine on
- RewriteRule ^/(.+) / [L]
-
- '';
- };
- toVhost = ips: vhostConf: {
- forceSSL = vhostConf.forceSSL or true;
- useACMEHost = vhostConf.certName;
- logFormat = "combinedVhost";
- listen = if vhostConf.forceSSL
- then lists.flatten (map (ip: [{ inherit ip; port = 443; ssl = true; } { inherit ip; port = 80; }]) ips)
- else map (ip: { inherit ip; port = 443; ssl = true; }) ips;
- hostName = builtins.head vhostConf.hosts;
- serverAliases = builtins.tail vhostConf.hosts or [];
- documentRoot = vhostConf.root;
- extraConfig = builtins.concatStringsSep "\n" vhostConf.extraConfig;
- };
- toVhostNoSSL = ips: vhostConf: {
- logFormat = "combinedVhost";
- listen = map (ip: { inherit ip; port = 80; }) ips;
- hostName = builtins.head vhostConf.hosts;
- serverAliases = builtins.tail vhostConf.hosts or [];
- documentRoot = vhostConf.root;
- extraConfig = builtins.concatStringsSep "\n" vhostConf.extraConfig;
- };
- in attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
- icfg.httpdName (mkIf icfg.enable {
- enable = true;
- logPerVirtualHost = true;
- multiProcessingModule = "worker";
- # https://ssl-config.mozilla.org/#server=apache&version=2.4.41&config=intermediate&openssl=1.0.2t&guideline=5.4
- # test with https://www.ssllabs.com/ssltest/analyze.html?d=www.immae.eu&s=176.9.151.154&latest
- sslProtocols = "all -SSLv3 -TLSv1 -TLSv1.1";
- sslCiphers = builtins.concatStringsSep ":" [
- "ECDHE-ECDSA-AES128-GCM-SHA256" "ECDHE-RSA-AES128-GCM-SHA256"
- "ECDHE-ECDSA-AES256-GCM-SHA384" "ECDHE-RSA-AES256-GCM-SHA384"
- "ECDHE-ECDSA-CHACHA20-POLY1305" "ECDHE-RSA-CHACHA20-POLY1305"
- "DHE-RSA-AES128-GCM-SHA256" "DHE-RSA-AES256-GCM-SHA384"
- ];
- inherit (icfg) adminAddr;
- logFormat = "combinedVhost";
- extraModules = lists.unique icfg.modules;
- extraConfig = builtins.concatStringsSep "\n" icfg.extraConfig;
-
- virtualHosts = with attrsets; {
- ___fallbackVhost = toVhost icfg.ips icfg.fallbackVhost;
- } // (optionalAttrs icfg.nosslVhost.enable {
- nosslVhost = nosslVhost icfg.ips icfg.nosslVhost;
- }) // (mapAttrs' (n: v: nameValuePair ("nossl_" + n) (toVhostNoSSL icfg.ips v)) icfg.vhostNoSSLConfs)
- // (mapAttrs' (n: v: nameValuePair ("ssl_" + n) (toVhost icfg.ips v)) icfg.vhostConfs);
- })
- ) cfg.env;
-
- config.services.filesWatcher = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
- "httpd${icfg.httpdName}" {
- paths = icfg.watchPaths;
- waitTime = 5;
- }
- ) cfg.env;
-
- config.security.acme.certs = let
- typesToManage = attrsets.filterAttrs (k: v: v.enable) cfg.env;
- flatVhosts = lists.flatten (attrsets.mapAttrsToList (k: v:
- attrValues v.vhostConfs
- ) typesToManage);
- groupedCerts = attrsets.filterAttrs
- (_: group: builtins.any (v: v.addToCerts || !isNull v.certMainHost) group)
- (lists.groupBy (v: v.certName) flatVhosts);
- groupToDomain = group:
- let
- nonNull = builtins.filter (v: !isNull v.certMainHost) group;
- domains = lists.unique (map (v: v.certMainHost) nonNull);
- in
- if builtins.length domains == 0
- then null
- else assert (builtins.length domains == 1); (elemAt domains 0);
- extraDomains = group:
- let
- mainDomain = groupToDomain group;
- in
- lists.remove mainDomain (
- lists.unique (
- lists.flatten (map (c: optionals (c.addToCerts || !isNull c.certMainHost) c.hosts) group)
- )
- );
- in attrsets.mapAttrs (k: g:
- if (!isNull (groupToDomain g))
- then cfg.certs // {
- domain = groupToDomain g;
- extraDomains = builtins.listToAttrs (
- map (d: attrsets.nameValuePair d null) (extraDomains g));
- }
- else {
- extraDomains = builtins.listToAttrs (
- map (d: attrsets.nameValuePair d null) (extraDomains g));
- }
- ) groupedCerts;
-
- config.systemd.services = let
- package = httpdName: config.services.httpd.${httpdName}.package.out;
- cfgFile = httpdName: config.services.httpd.${httpdName}.configFile;
- serviceChange = attrsets.mapAttrs' (name: icfg:
- attrsets.nameValuePair
- "httpd${icfg.httpdName}" {
- stopIfChanged = false;
- serviceConfig.ExecStart =
- lib.mkForce "@${package icfg.httpdName}/bin/httpd httpd -f /etc/httpd/httpd_${icfg.httpdName}.conf";
- serviceConfig.ExecStop =
- lib.mkForce "${package icfg.httpdName}/bin/httpd -f /etc/httpd/httpd_${icfg.httpdName}.conf -k graceful-stop";
- serviceConfig.ExecReload =
- lib.mkForce "${package icfg.httpdName}/bin/httpd -f /etc/httpd/httpd_${icfg.httpdName}.conf -k graceful";
- }
- ) cfg.env;
- serviceReload = attrsets.mapAttrs' (name: icfg:
- attrsets.nameValuePair
- "httpd${icfg.httpdName}-config-reload" {
- wants = [ "httpd${icfg.httpdName}.service" ];
- wantedBy = [ "multi-user.target" ];
- restartTriggers = [ (cfgFile icfg.httpdName) ];
- # commented, because can cause extra delays during activate for this config:
- # services.nginx.virtualHosts."_".locations."/".proxyPass = "http://blabla:3000";
- # stopIfChanged = false;
- serviceConfig.Type = "oneshot";
- serviceConfig.TimeoutSec = 60;
- script = ''
- if ${pkgs.systemd}/bin/systemctl -q is-active httpd${icfg.httpdName}.service ; then
- ${package icfg.httpdName}/bin/httpd -f /etc/httpd/httpd_${icfg.httpdName}.conf -t && \
- ${pkgs.systemd}/bin/systemctl reload httpd${icfg.httpdName}.service
- fi
- '';
- serviceConfig.RemainAfterExit = true;
- }
- ) cfg.env;
- in
- serviceChange // serviceReload;
-}
diff --git a/modules/websites/httpd-service-builder.nix b/modules/websites/httpd-service-builder.nix
deleted file mode 100644
index 1f7488d..0000000
--- a/modules/websites/httpd-service-builder.nix
+++ /dev/null
@@ -1,735 +0,0 @@
-# to help backporting this builder should stay as close as possible to
-# nixos/modules/services/web-servers/apache-httpd/default.nix
-{ httpdName, withUsers ? true }:
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
-
- cfg = config.services.httpd."${httpdName}";
-
- runtimeDir = "/run/httpd_${httpdName}";
-
- pkg = cfg.package.out;
-
- httpdConf = cfg.configFile;
-
- php = cfg.phpPackage.override { apacheHttpd = pkg.dev; /* otherwise it only gets .out */ };
-
- phpMajorVersion = lib.versions.major (lib.getVersion php);
-
- mod_perl = pkgs.apacheHttpdPackages.mod_perl.override { apacheHttpd = pkg; };
-
- vhosts = attrValues cfg.virtualHosts;
-
- mkListenInfo = hostOpts:
- if hostOpts.listen != [] then hostOpts.listen
- else (
- optional (hostOpts.onlySSL || hostOpts.addSSL || hostOpts.forceSSL) { ip = "*"; port = 443; ssl = true; } ++
- optional (!hostOpts.onlySSL) { ip = "*"; port = 80; ssl = false; }
- );
-
- listenInfo = unique (concatMap mkListenInfo vhosts);
-
- enableHttp2 = any (vhost: vhost.http2) vhosts;
- enableSSL = any (listen: listen.ssl) listenInfo;
- enableUserDir = any (vhost: vhost.enableUserDir) vhosts;
-
- # NOTE: generally speaking order of modules is very important
- modules =
- [ # required apache modules our httpd service cannot run without
- "authn_core" "authz_core"
- "log_config"
- "mime" "autoindex" "negotiation" "dir"
- "alias" "rewrite"
- "unixd" "slotmem_shm" "socache_shmcb"
- "mpm_${cfg.multiProcessingModule}"
- ]
- ++ (if cfg.multiProcessingModule == "prefork" then [ "cgi" ] else [ "cgid" ])
- ++ optional enableHttp2 "http2"
- ++ optional enableSSL "ssl"
- ++ optional enableUserDir "userdir"
- ++ optional cfg.enableMellon { name = "auth_mellon"; path = "${pkgs.apacheHttpdPackages.mod_auth_mellon}/modules/mod_auth_mellon.so"; }
- ++ optional cfg.enablePHP { name = "php${phpMajorVersion}"; path = "${php}/modules/libphp${phpMajorVersion}.so"; }
- ++ optional cfg.enablePerl { name = "perl"; path = "${mod_perl}/modules/mod_perl.so"; }
- ++ cfg.extraModules;
-
- loggingConf = (if cfg.logFormat != "none" then ''
- ErrorLog ${cfg.logDir}/error.log
-
- LogLevel notice
-
- LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
- LogFormat "%h %l %u %t \"%r\" %>s %b" common
- LogFormat "%{Referer}i -> %U" referer
- LogFormat "%{User-agent}i" agent
-
- CustomLog ${cfg.logDir}/access.log ${cfg.logFormat}
- '' else ''
- ErrorLog /dev/null
- '');
-
-
- browserHacks = ''
-
- BrowserMatch "Mozilla/2" nokeepalive
- BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
- BrowserMatch "RealPlayer 4\.0" force-response-1.0
- BrowserMatch "Java/1\.0" force-response-1.0
- BrowserMatch "JDK/1\.0" force-response-1.0
- BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
- BrowserMatch "^WebDrive" redirect-carefully
- BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
- BrowserMatch "^gnome-vfs" redirect-carefully
-
- '';
-
-
- sslConf = ''
-
- SSLSessionCache shmcb:${runtimeDir}/ssl_scache(512000)
-
- Mutex posixsem
-
- SSLRandomSeed startup builtin
- SSLRandomSeed connect builtin
-
- SSLProtocol ${cfg.sslProtocols}
- SSLCipherSuite ${cfg.sslCiphers}
- SSLHonorCipherOrder on
-
- '';
-
-
- mimeConf = ''
- TypesConfig ${pkg}/conf/mime.types
-
- AddType application/x-x509-ca-cert .crt
- AddType application/x-pkcs7-crl .crl
- AddType application/x-httpd-php .php .phtml
-
-
- MIMEMagicFile ${pkg}/conf/magic
-
- '';
-
- mkVHostConf = hostOpts:
- let
- adminAddr = if hostOpts.adminAddr != null then hostOpts.adminAddr else cfg.adminAddr;
- listen = filter (listen: !listen.ssl) (mkListenInfo hostOpts);
- listenSSL = filter (listen: listen.ssl) (mkListenInfo hostOpts);
-
- useACME = hostOpts.enableACME || hostOpts.useACMEHost != null;
- sslCertDir =
- if hostOpts.enableACME then config.security.acme.certs.${hostOpts.hostName}.directory
- else if hostOpts.useACMEHost != null then config.security.acme.certs.${hostOpts.useACMEHost}.directory
- else abort "This case should never happen.";
-
- sslServerCert = if useACME then "${sslCertDir}/full.pem" else hostOpts.sslServerCert;
- sslServerKey = if useACME then "${sslCertDir}/key.pem" else hostOpts.sslServerKey;
- sslServerChain = if useACME then "${sslCertDir}/fullchain.pem" else hostOpts.sslServerChain;
-
- acmeChallenge = optionalString useACME ''
- Alias /.well-known/acme-challenge/ "${hostOpts.acmeRoot}/.well-known/acme-challenge/"
-
- AllowOverride None
- Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
- Require method GET POST OPTIONS
- Require all granted
-
- '';
- in
- optionalString (listen != []) ''
-
- ServerName ${hostOpts.hostName}
- ${concatMapStrings (alias: "ServerAlias ${alias}\n") hostOpts.serverAliases}
- ServerAdmin ${adminAddr}
-
- SSLEngine off
-
- ${acmeChallenge}
- ${if hostOpts.forceSSL then ''
-
- RewriteEngine on
- RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge [NC]
- RewriteCond %{HTTPS} off
- RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
-
- '' else mkVHostCommonConf hostOpts}
-
- '' +
- optionalString (listenSSL != []) ''
-
- ServerName ${hostOpts.hostName}
- ${concatMapStrings (alias: "ServerAlias ${alias}\n") hostOpts.serverAliases}
- ServerAdmin ${adminAddr}
- SSLEngine on
- SSLCertificateFile ${sslServerCert}
- SSLCertificateKeyFile ${sslServerKey}
- ${optionalString hostOpts.http2 "Protocols h2 h2c http/1.1"}
- ${acmeChallenge}
- ${mkVHostCommonConf hostOpts}
-
- ''
- ;
-
- mkVHostCommonConf = hostOpts:
- let
- documentRoot = if hostOpts.documentRoot != null
- then hostOpts.documentRoot
- else pkgs.runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out"
- ;
-
- mkLocations = locations: concatStringsSep "\n" (map (config: ''
-
- ${optionalString (config.proxyPass != null) ''
-
- ProxyPass ${config.proxyPass}
- ProxyPassReverse ${config.proxyPass}
-
- ''}
- ${optionalString (config.index != null) ''
-
- DirectoryIndex ${config.index}
-
- ''}
- ${optionalString (config.alias != null) ''
-
- Alias "${config.alias}"
-
- ''}
- ${config.extraConfig}
-
- '') (sortProperties (mapAttrsToList (k: v: v // { location = k; }) locations)));
- in
- ''
- ${optionalString cfg.logPerVirtualHost ''
- ErrorLog ${cfg.logDir}/error-${hostOpts.hostName}.log
- CustomLog ${cfg.logDir}/access-${hostOpts.hostName}.log ${hostOpts.logFormat}
- ''}
-
- ${optionalString (hostOpts.robotsEntries != "") ''
- Alias /robots.txt ${pkgs.writeText "robots.txt" hostOpts.robotsEntries}
- ''}
-
- DocumentRoot "${documentRoot}"
-
-
- Options Indexes FollowSymLinks
- AllowOverride None
- Require all granted
-
-
- ${optionalString hostOpts.enableUserDir ''
- UserDir public_html
- UserDir disabled root
-
- AllowOverride FileInfo AuthConfig Limit Indexes
- Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
-
- Require all granted
-
-
- Require all denied
-
-
- ''}
-
- ${optionalString (hostOpts.globalRedirect != null && hostOpts.globalRedirect != "") ''
- RedirectPermanent / ${hostOpts.globalRedirect}
- ''}
-
- ${
- let makeDirConf = elem: ''
- Alias ${elem.urlPath} ${elem.dir}/
-
- Options +Indexes
- Require all granted
- AllowOverride All
-
- '';
- in concatMapStrings makeDirConf hostOpts.servedDirs
- }
-
- ${mkLocations hostOpts.locations}
- ${hostOpts.extraConfig}
- ''
- ;
-
-
- confFile = pkgs.writeText "httpd.conf" ''
-
- ServerRoot ${pkg}
- ServerName ${config.networking.hostName}
- DefaultRuntimeDir ${runtimeDir}/runtime
-
- PidFile ${runtimeDir}/httpd.pid
-
- ${optionalString (cfg.multiProcessingModule != "prefork") ''
- # mod_cgid requires this.
- ScriptSock ${runtimeDir}/cgisock
- ''}
-
-
- MaxClients ${toString cfg.maxClients}
- MaxRequestsPerChild ${toString cfg.maxRequestsPerChild}
-
-
- ${let
- toStr = listen: "Listen ${listen.ip}:${toString listen.port} ${if listen.ssl then "https" else "http"}";
- uniqueListen = uniqList {inputList = map toStr listenInfo;};
- in concatStringsSep "\n" uniqueListen
- }
-
- User ${cfg.user}
- Group ${cfg.group}
-
- ${let
- mkModule = module:
- if isString module then { name = module; path = "${pkg}/modules/mod_${module}.so"; }
- else if isAttrs module then { inherit (module) name path; }
- else throw "Expecting either a string or attribute set including a name and path.";
- in
- concatMapStringsSep "\n" (module: "LoadModule ${module.name}_module ${module.path}") (unique (map mkModule modules))
- }
-
- AddHandler type-map var
-
-
- Require all denied
-
-
- ${mimeConf}
- ${loggingConf}
- ${browserHacks}
-
- Include ${pkg}/conf/extra/httpd-default.conf
- Include ${pkg}/conf/extra/httpd-autoindex.conf
- Include ${pkg}/conf/extra/httpd-multilang-errordoc.conf
- Include ${pkg}/conf/extra/httpd-languages.conf
-
- TraceEnable off
-
- ${sslConf}
-
- # Fascist default - deny access to everything.
-
- Options FollowSymLinks
- AllowOverride None
- Require all denied
-
-
- ${cfg.extraConfig}
-
- ${concatMapStringsSep "\n" mkVHostConf vhosts}
- '';
-
- # Generate the PHP configuration file. Should probably be factored
- # out into a separate module.
- phpIni = pkgs.runCommand "php.ini"
- { options = cfg.phpOptions;
- preferLocalBuild = true;
- }
- ''
- cat ${php}/etc/php.ini > $out
- echo "$options" >> $out
- '';
-
-in
-
-
-{
-
- imports = [
- (mkRemovedOptionModule [ "services" "httpd" httpdName "extraSubservices" ] "Most existing subservices have been ported to the NixOS module system. Please update your configuration accordingly.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "stateDir" ] "The httpd module now uses /run/httpd as a runtime directory.")
-
- # virtualHosts options
- (mkRemovedOptionModule [ "services" "httpd" httpdName "documentRoot" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "enableSSL" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "enableUserDir" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "globalRedirect" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "hostName" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "listen" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "robotsEntries" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "servedDirs" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "servedFiles" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "serverAliases" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "sslServerCert" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "sslServerChain" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- (mkRemovedOptionModule [ "services" "httpd" httpdName "sslServerKey" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- ];
-
- # interface
-
- options = {
-
- services.httpd."${httpdName}" = {
-
- enable = mkEnableOption "the Apache HTTP Server";
-
- package = mkOption {
- type = types.package;
- default = pkgs.apacheHttpd;
- defaultText = "pkgs.apacheHttpd";
- description = ''
- Overridable attribute of the Apache HTTP Server package to use.
- '';
- };
-
- configFile = mkOption {
- type = types.path;
- default = confFile;
- defaultText = "confFile";
- example = literalExample ''pkgs.writeText "httpd.conf" "# my custom config file ..."'';
- description = ''
- Override the configuration file used by Apache. By default,
- NixOS generates one automatically.
- '';
- };
-
- extraConfig = mkOption {
- type = types.lines;
- default = "";
- description = ''
- Configuration lines appended to the generated Apache
- configuration file. Note that this mechanism will not work
- when configFile is overridden.
- '';
- };
-
- extraModules = mkOption {
- type = types.listOf types.unspecified;
- default = [];
- example = literalExample ''
- [
- "proxy_connect"
- { name = "jk"; path = "''${pkgs.tomcat_connectors}/modules/mod_jk.so"; }
- ]
- '';
- description = ''
- Additional Apache modules to be used. These can be
- specified as a string in the case of modules distributed
- with Apache, or as an attribute set specifying the
- name and path of the
- module.
- '';
- };
-
- adminAddr = mkOption {
- type = types.str;
- example = "admin@example.org";
- description = "E-mail address of the server administrator.";
- };
-
- logFormat = mkOption {
- type = types.str;
- default = "common";
- example = "combined";
- description = ''
- Log format for log files. Possible values are: combined, common, referer, agent.
- See for more details.
- '';
- };
-
- logPerVirtualHost = mkOption {
- type = types.bool;
- default = true;
- description = ''
- If enabled, each virtual host gets its own
- access.log and
- error.log , namely suffixed by the
- hostName of the virtual host.
- '';
- };
-
- user = mkOption {
- type = types.str;
- default = "wwwrun";
- description = ''
- User account under which httpd runs.
- '';
- };
-
- group = mkOption {
- type = types.str;
- default = "wwwrun";
- description = ''
- Group under which httpd runs.
- '';
- };
-
- logDir = mkOption {
- type = types.path;
- default = "/var/log/httpd";
- description = ''
- Directory for Apache's log files. It is created automatically.
- '';
- };
-
- virtualHosts = mkOption {
- type = with types; attrsOf (submodule (import ));
- default = {
- localhost = {
- documentRoot = "${pkg}/htdocs";
- };
- };
- example = literalExample ''
- {
- "foo.example.com" = {
- forceSSL = true;
- documentRoot = "/var/www/foo.example.com"
- };
- "bar.example.com" = {
- addSSL = true;
- documentRoot = "/var/www/bar.example.com";
- };
- }
- '';
- description = ''
- Specification of the virtual hosts served by Apache. Each
- element should be an attribute set specifying the
- configuration of the virtual host.
- '';
- };
-
- enableMellon = mkOption {
- type = types.bool;
- default = false;
- description = "Whether to enable the mod_auth_mellon module.";
- };
-
- enablePHP = mkOption {
- type = types.bool;
- default = false;
- description = "Whether to enable the PHP module.";
- };
-
- phpPackage = mkOption {
- type = types.package;
- default = pkgs.php;
- defaultText = "pkgs.php";
- description = ''
- Overridable attribute of the PHP package to use.
- '';
- };
-
- enablePerl = mkOption {
- type = types.bool;
- default = false;
- description = "Whether to enable the Perl module (mod_perl).";
- };
-
- phpOptions = mkOption {
- type = types.lines;
- default = "";
- example =
- ''
- date.timezone = "CET"
- '';
- description = ''
- Options appended to the PHP configuration file php.ini .
- '';
- };
-
- multiProcessingModule = mkOption {
- type = types.enum [ "event" "prefork" "worker" ];
- default = "prefork";
- example = "worker";
- description =
- ''
- Multi-processing module to be used by Apache. Available
- modules are prefork (the default;
- handles each request in a separate child process),
- worker (hybrid approach that starts a
- number of child processes each running a number of
- threads) and event (a recent variant of
- worker that handles persistent
- connections more efficiently).
- '';
- };
-
- maxClients = mkOption {
- type = types.int;
- default = 150;
- example = 8;
- description = "Maximum number of httpd processes (prefork)";
- };
-
- maxRequestsPerChild = mkOption {
- type = types.int;
- default = 0;
- example = 500;
- description = ''
- Maximum number of httpd requests answered per httpd child (prefork), 0 means unlimited.
- '';
- };
-
- sslCiphers = mkOption {
- type = types.str;
- default = "HIGH:!aNULL:!MD5:!EXP";
- description = "Cipher Suite available for negotiation in SSL proxy handshake.";
- };
-
- sslProtocols = mkOption {
- type = types.str;
- default = "All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1";
- example = "All -SSLv2 -SSLv3";
- description = "Allowed SSL/TLS protocol versions.";
- };
- };
-
- };
-
- # implementation
-
- config = mkIf cfg.enable {
-
- assertions = [
- {
- assertion = all (hostOpts: !hostOpts.enableSSL) vhosts;
- message = ''
- The option `services.httpd.virtualHosts..enableSSL` no longer has any effect; please remove it.
- Select one of `services.httpd.virtualHosts..addSSL`, `services.httpd.virtualHosts..forceSSL`,
- or `services.httpd.virtualHosts..onlySSL`.
- '';
- }
- {
- assertion = all (hostOpts: with hostOpts; !(addSSL && onlySSL) && !(forceSSL && onlySSL) && !(addSSL && forceSSL)) vhosts;
- message = ''
- Options `services.httpd.virtualHosts..addSSL`,
- `services.httpd.virtualHosts..onlySSL` and `services.httpd.virtualHosts..forceSSL`
- are mutually exclusive.
- '';
- }
- {
- assertion = all (hostOpts: !(hostOpts.enableACME && hostOpts.useACMEHost != null)) vhosts;
- message = ''
- Options `services.httpd.virtualHosts..enableACME` and
- `services.httpd.virtualHosts..useACMEHost` are mutually exclusive.
- '';
- }
- ];
-
- warnings =
- mapAttrsToList (name: hostOpts: ''
- Using config.services.httpd.virtualHosts."${name}".servedFiles is deprecated and will become unsupported in a future release. Your configuration will continue to work as is but please migrate your configuration to config.services.httpd.virtualHosts."${name}".locations before the 20.09 release of NixOS.
- '') (filterAttrs (name: hostOpts: hostOpts.servedFiles != []) cfg.virtualHosts);
-
- users.users = optionalAttrs (withUsers && cfg.user == "wwwrun") {
- wwwrun = {
- group = cfg.group;
- description = "Apache httpd user";
- uid = config.ids.uids.wwwrun;
- };
- };
-
- users.groups = optionalAttrs (withUsers && cfg.group == "wwwrun") {
- wwwrun.gid = config.ids.gids.wwwrun;
- };
-
- security.acme.certs = mapAttrs (name: hostOpts: {
- user = cfg.user;
- group = mkDefault cfg.group;
- email = if hostOpts.adminAddr != null then hostOpts.adminAddr else cfg.adminAddr;
- webroot = hostOpts.acmeRoot;
- extraDomains = genAttrs hostOpts.serverAliases (alias: null);
- postRun = "systemctl reload httpd.service";
- }) (filterAttrs (name: hostOpts: hostOpts.enableACME) cfg.virtualHosts);
-
- environment.systemPackages = [ pkg ];
-
- # required for "apachectl configtest"
- environment.etc."httpd/httpd_${httpdName}.conf".source = httpdConf;
-
- services.httpd."${httpdName}" = { phpOptions =
- ''
- ; Needed for PHP's mail() function.
- sendmail_path = sendmail -t -i
-
- ; Don't advertise PHP
- expose_php = off
- '' + optionalString (config.time.timeZone != null) ''
-
- ; Apparently PHP doesn't use $TZ.
- date.timezone = "${config.time.timeZone}"
- '';
-
- extraModules = mkBefore [
- # HTTP authentication mechanisms: basic and digest.
- "auth_basic" "auth_digest"
-
- # Authentication: is the user who he claims to be?
- "authn_file" "authn_dbm" "authn_anon"
-
- # Authorization: is the user allowed access?
- "authz_user" "authz_groupfile" "authz_host"
-
- # Other modules.
- "ext_filter" "include" "env" "mime_magic"
- "cern_meta" "expires" "headers" "usertrack" "setenvif"
- "dav" "status" "asis" "info" "dav_fs"
- "vhost_alias" "imagemap" "actions" "speling"
- "proxy" "proxy_http"
- "cache" "cache_disk"
-
- # For compatibility with old configurations, the new module mod_access_compat is provided.
- "access_compat"
- ];
- };
-
- systemd.tmpfiles.rules =
- let
- svc = config.systemd.services."httpd${httpdName}".serviceConfig;
- in
- [
- "d '${cfg.logDir}' 0700 ${svc.User} ${svc.Group}"
- "Z '${cfg.logDir}' - ${svc.User} ${svc.Group}"
- ];
-
- systemd.services."httpd${httpdName}" =
- let
- vhostsACME = filter (hostOpts: hostOpts.enableACME) vhosts;
- in
- { description = "Apache HTTPD";
-
- wantedBy = [ "multi-user.target" ];
- wants = concatLists (map (hostOpts: [ "acme-${hostOpts.hostName}.service" "acme-selfsigned-${hostOpts.hostName}.service" ]) vhostsACME);
- after = [ "network.target" "fs.target" ] ++ map (hostOpts: "acme-selfsigned-${hostOpts.hostName}.service") vhostsACME;
-
- path =
- [ pkg pkgs.coreutils pkgs.gnugrep ]
- ++ optional cfg.enablePHP pkgs.system-sendmail; # Needed for PHP's mail() function.
-
- environment =
- optionalAttrs cfg.enablePHP { PHPRC = phpIni; }
- // optionalAttrs cfg.enableMellon { LD_LIBRARY_PATH = "${pkgs.xmlsec}/lib"; };
-
- preStart =
- ''
- # Get rid of old semaphores. These tend to accumulate across
- # server restarts, eventually preventing it from restarting
- # successfully.
- for i in $(${pkgs.utillinux}/bin/ipcs -s | grep ' ${cfg.user} ' | cut -f2 -d ' '); do
- ${pkgs.utillinux}/bin/ipcrm -s $i
- done
- '';
-
- serviceConfig = {
- ExecStart = "@${pkg}/bin/httpd httpd -f ${httpdConf}";
- ExecStop = "${pkg}/bin/httpd -f ${httpdConf} -k graceful-stop";
- ExecReload = "${pkg}/bin/httpd -f ${httpdConf} -k graceful";
- User = "root";
- Group = cfg.group;
- Type = "forking";
- PIDFile = "${runtimeDir}/httpd.pid";
- Restart = "always";
- RestartSec = "5s";
- RuntimeDirectory = "httpd_${httpdName} httpd_${httpdName}/runtime";
- RuntimeDirectoryMode = "0750";
- };
- };
-
- };
-}
diff --git a/modules/websites/httpd-service-builder.patch b/modules/websites/httpd-service-builder.patch
deleted file mode 100644
index f0ad836..0000000
--- a/modules/websites/httpd-service-builder.patch
+++ /dev/null
@@ -1,150 +0,0 @@
---- /nix/store/xj651aslybfsma20hpbi5nznfcffq8ky-nixexprs.tar.xz/nixos/modules/services/web-servers/apache-httpd/default.nix 1970-01-01 01:00:01.000000000 +0100
-+++ modules/websites/httpd-service-builder.nix 2020-04-04 03:08:29.068490345 +0200
-@@ -1,12 +1,15 @@
-+# to help backporting this builder should stay as close as possible to
-+# nixos/modules/services/web-servers/apache-httpd/default.nix
-+{ httpdName, withUsers ? true }:
- { config, lib, pkgs, ... }:
-
- with lib;
-
- let
-
-- cfg = config.services.httpd;
-+ cfg = config.services.httpd."${httpdName}";
-
-- runtimeDir = "/run/httpd";
-+ runtimeDir = "/run/httpd_${httpdName}";
-
- pkg = cfg.package.out;
-
-@@ -318,13 +321,6 @@
- Require all denied
-
-
-- # But do allow access to files in the store so that we don't have
-- # to generate clauses for every generated file that we
-- # want to serve.
--
-- Require all granted
--
--
- ${cfg.extraConfig}
-
- ${concatMapStringsSep "\n" mkVHostConf vhosts}
-@@ -347,30 +343,30 @@
- {
-
- imports = [
-- (mkRemovedOptionModule [ "services" "httpd" "extraSubservices" ] "Most existing subservices have been ported to the NixOS module system. Please update your configuration accordingly.")
-- (mkRemovedOptionModule [ "services" "httpd" "stateDir" ] "The httpd module now uses /run/httpd as a runtime directory.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "extraSubservices" ] "Most existing subservices have been ported to the NixOS module system. Please update your configuration accordingly.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "stateDir" ] "The httpd module now uses /run/httpd as a runtime directory.")
-
- # virtualHosts options
-- (mkRemovedOptionModule [ "services" "httpd" "documentRoot" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "enableSSL" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "enableUserDir" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "globalRedirect" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "hostName" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "listen" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "robotsEntries" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "servedDirs" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "servedFiles" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "serverAliases" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "sslServerCert" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "sslServerChain" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-- (mkRemovedOptionModule [ "services" "httpd" "sslServerKey" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "documentRoot" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "enableSSL" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "enableUserDir" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "globalRedirect" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "hostName" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "listen" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "robotsEntries" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "servedDirs" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "servedFiles" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "serverAliases" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "sslServerCert" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "sslServerChain" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
-+ (mkRemovedOptionModule [ "services" "httpd" httpdName "sslServerKey" ] "Please define a virtual host using `services.httpd.virtualHosts`.")
- ];
-
- # interface
-
- options = {
-
-- services.httpd = {
-+ services.httpd."${httpdName}" = {
-
- enable = mkEnableOption "the Apache HTTP Server";
-
-@@ -622,7 +618,7 @@
- Using config.services.httpd.virtualHosts."${name}".servedFiles is deprecated and will become unsupported in a future release. Your configuration will continue to work as is but please migrate your configuration to config.services.httpd.virtualHosts."${name}".locations before the 20.09 release of NixOS.
- '') (filterAttrs (name: hostOpts: hostOpts.servedFiles != []) cfg.virtualHosts);
-
-- users.users = optionalAttrs (cfg.user == "wwwrun") {
-+ users.users = optionalAttrs (withUsers && cfg.user == "wwwrun") {
- wwwrun = {
- group = cfg.group;
- description = "Apache httpd user";
-@@ -630,7 +626,7 @@
- };
- };
-
-- users.groups = optionalAttrs (cfg.group == "wwwrun") {
-+ users.groups = optionalAttrs (withUsers && cfg.group == "wwwrun") {
- wwwrun.gid = config.ids.gids.wwwrun;
- };
-
-@@ -646,9 +642,9 @@
- environment.systemPackages = [ pkg ];
-
- # required for "apachectl configtest"
-- environment.etc."httpd/httpd.conf".source = httpdConf;
-+ environment.etc."httpd/httpd_${httpdName}.conf".source = httpdConf;
-
-- services.httpd.phpOptions =
-+ services.httpd."${httpdName}" = { phpOptions =
- ''
- ; Needed for PHP's mail() function.
- sendmail_path = sendmail -t -i
-@@ -661,7 +657,7 @@
- date.timezone = "${config.time.timeZone}"
- '';
-
-- services.httpd.extraModules = mkBefore [
-+ extraModules = mkBefore [
- # HTTP authentication mechanisms: basic and digest.
- "auth_basic" "auth_digest"
-
-@@ -682,17 +678,18 @@
- # For compatibility with old configurations, the new module mod_access_compat is provided.
- "access_compat"
- ];
-+ };
-
- systemd.tmpfiles.rules =
- let
-- svc = config.systemd.services.httpd.serviceConfig;
-+ svc = config.systemd.services."httpd${httpdName}".serviceConfig;
- in
- [
- "d '${cfg.logDir}' 0700 ${svc.User} ${svc.Group}"
- "Z '${cfg.logDir}' - ${svc.User} ${svc.Group}"
- ];
-
-- systemd.services.httpd =
-+ systemd.services."httpd${httpdName}" =
- let
- vhostsACME = filter (hostOpts: hostOpts.enableACME) vhosts;
- in
-@@ -730,7 +727,7 @@
- PIDFile = "${runtimeDir}/httpd.pid";
- Restart = "always";
- RestartSec = "5s";
-- RuntimeDirectory = "httpd httpd/runtime";
-+ RuntimeDirectory = "httpd_${httpdName} httpd_${httpdName}/runtime";
- RuntimeDirectoryMode = "0750";
- };
- };
diff --git a/modules/websites/nosslVhost/index.html b/modules/websites/nosslVhost/index.html
deleted file mode 100644
index 4401a80..0000000
--- a/modules/websites/nosslVhost/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- No SSL site
-
-
- No SSL on this site
- Use for wifi networks with login page that doesn't work well with
- https.
-
-
diff --git a/modules/websites/php-application.nix b/modules/websites/php-application.nix
deleted file mode 100644
index 3a43a45..0000000
--- a/modules/websites/php-application.nix
+++ /dev/null
@@ -1,224 +0,0 @@
-{ lib, config, pkgs, ... }:
-with lib;
-let
- cfg = config.services.phpApplication;
- cfgByEnv = lists.groupBy (x: x.websiteEnv) (builtins.attrValues cfg.apps);
-in
-{
- options = with types; {
- services.phpApplication.apps = mkOption {
- default = {};
- description = ''
- php applications to define
- '';
- type = attrsOf (submodule {
- options = {
- varDir = mkOption {
- type = nullOr path;
- description = ''
- Path to application’s vardir.
- '';
- };
- varDirPaths = mkOption {
- type = attrsOf str;
- default = {};
- description = ''
- Map of additional folders => mode to create under varDir
- '';
- };
- mode = mkOption {
- type = str;
- default = "0700";
- description = ''
- Mode to apply to the vardir
- '';
- };
- phpSession = mkOption {
- type = bool;
- default = true;
- description = "Handle phpsession files separately in vardir";
- };
- phpListen = mkOption {
- type = nullOr str;
- default = null;
- description = "Name of the socket to listen to. Defaults to app name if null";
- };
- phpPool = mkOption {
- type = attrsOf str;
- default = {};
- description = "Pool configuration to append";
- };
- phpEnv = mkOption {
- type = attrsOf str;
- default = {};
- description = "Pool environment to append";
- };
- phpPackage = mkOption {
- type = attrsOf str;
- default = pkgs.php;
- description = "Php package to use";
- };
- phpOptions = mkOption {
- type = lines;
- default = "";
- description = "php configuration to append";
- };
- phpOpenbasedir = mkOption {
- type = listOf path;
- default = [];
- description = ''
- paths to add to php open_basedir configuration in addition to app and vardir
- '';
- };
- phpWatchFiles = mkOption {
- type = listOf path;
- default = [];
- description = ''
- Path to other files to watch to trigger preStart scripts
- '';
- };
- websiteEnv = mkOption {
- type = str;
- description = ''
- website instance name to use
- '';
- };
- httpdUser = mkOption {
- type = str;
- default = config.services.httpd.user;
- description = ''
- httpd user to run the prestart scripts as.
- '';
- };
- httpdGroup = mkOption {
- type = str;
- default = config.services.httpd.group;
- description = ''
- httpd group to run the prestart scripts as.
- '';
- };
- httpdWatchFiles = mkOption {
- type = listOf path;
- default = [];
- description = ''
- Path to other files to watch to trigger httpd reload
- '';
- };
- app = mkOption {
- type = path;
- description = ''
- Path to application root
- '';
- };
- webRoot = mkOption {
- type = nullOr path;
- description = ''
- Path to the web root path of the application. May differ from the application itself (usually a subdirectory)
- '';
- };
- preStartActions = mkOption {
- type = listOf str;
- default = [];
- description = ''
- List of actions to run as apache user at preStart when
- whatchFiles or app dir changed.
- '';
- };
- serviceDeps = mkOption {
- type = listOf str;
- default = [];
- description = ''
- List of systemd services this application depends on
- '';
- };
- };
- });
- };
- # Read-only variables
- services.phpApplication.phpListenPaths = mkOption {
- type = attrsOf path;
- default = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
- name config.services.phpfpm.pools."${name}".socket
- ) cfg.apps;
- readOnly = true;
- description = ''
- Full paths to listen for php
- '';
- };
- };
-
- config = {
- services.websites.env = attrsets.mapAttrs' (name: cfgs: attrsets.nameValuePair
- name {
- modules = [ "proxy_fcgi" ];
- watchPaths = builtins.concatLists (map (c: c.httpdWatchFiles) cfgs);
- }
- ) cfgByEnv;
-
- services.phpfpm.pools = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
- name {
- user = icfg.httpdUser;
- group = icfg.httpdUser;
- settings = {
- "listen.owner" = icfg.httpdUser;
- "listen.group" = icfg.httpdGroup;
- "php_admin_value[open_basedir]" = builtins.concatStringsSep ":" ([icfg.app icfg.varDir] ++ icfg.phpWatchFiles ++ icfg.phpOpenbasedir);
- }
- // optionalAttrs (icfg.phpSession) { "php_admin_value[session.save_path]" = "${icfg.varDir}/phpSessions"; }
- // icfg.phpPool;
- phpOptions = config.services.phpfpm.phpOptions + icfg.phpOptions;
- inherit (icfg) phpEnv phpPackage;
- }
- ) cfg.apps;
-
- services.filesWatcher = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
- "phpfpm-${name}" {
- restart = true;
- paths = icfg.phpWatchFiles;
- }
- ) (attrsets.filterAttrs (n: v: builtins.length v.phpWatchFiles > 0) cfg.apps);
-
- systemd.services = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
- "phpfpm-${name}" {
- after = lib.mkAfter icfg.serviceDeps;
- wants = icfg.serviceDeps;
- preStart = lib.mkAfter (optionalString (!isNull icfg.varDir) ''
- watchFilesChanged() {
- ${optionalString (builtins.length icfg.phpWatchFiles == 0) "return 1"}
- [ ! -f "${icfg.varDir}"/watchedFiles ] \
- || ! sha512sum -c --status ${icfg.varDir}/watchedFiles
- }
- appDirChanged() {
- [ ! -f "${icfg.varDir}/currentWebappDir" -o \
- "${icfg.app}" != "$(cat ${icfg.varDir}/currentWebappDir 2>/dev/null)" ]
- }
- updateWatchFiles() {
- ${optionalString (builtins.length icfg.phpWatchFiles == 0) "return 0"}
- sha512sum ${builtins.concatStringsSep " " icfg.phpWatchFiles} > ${icfg.varDir}/watchedFiles
- }
-
- if watchFilesChanged || appDirChanged; then
- pushd ${icfg.app} > /dev/null
- ${builtins.concatStringsSep "\n " (map (c: "/run/wrappers/bin/sudo -u ${icfg.httpdUser} ${c}") icfg.preStartActions) }
- popd > /dev/null
- echo -n "${icfg.app}" > ${icfg.varDir}/currentWebappDir
- updateWatchFiles
- fi
- '');
- }
- ) cfg.apps;
-
- system.activationScripts = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
- name {
- deps = [];
- text = optionalString (!isNull icfg.varDir) ''
- install -m ${icfg.mode} -o ${icfg.httpdUser} -g ${icfg.httpdGroup} -d ${icfg.varDir}
- '' + optionalString (icfg.phpSession) ''
- install -m 0700 -o ${icfg.httpdUser} -g ${icfg.httpdGroup} -d ${icfg.varDir}/phpSessions
- '' + builtins.concatStringsSep "\n" (attrsets.mapAttrsToList (n: v: ''
- install -m ${v} -o ${icfg.httpdUser} -g ${icfg.httpdGroup} -d ${icfg.varDir}/${n}
- '') icfg.varDirPaths);
- }
- ) cfg.apps;
- };
-}
diff --git a/modules/zrepl.nix b/modules/zrepl.nix
deleted file mode 100644
index 5bcc17b..0000000
--- a/modules/zrepl.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ config, lib, pkgs, ... }:
-let
- cfg = config.services.zrepl;
-in
-{
- options = {
- services.zrepl = {
- enable = lib.mkEnableOption "Enable the zrepl daemon";
-
- config = lib.mkOption {
- type = lib.types.lines;
- default = "";
- description = "Configuration";
- };
- };
- };
-
- config = lib.mkIf cfg.enable {
- secrets.keys = {
- "zrepl/zrepl.yml" = {
- permissions = "0400";
- text = cfg.config;
- user = config.systemd.services.zrepl.serviceConfig.User or "root";
- group = config.systemd.services.zrepl.serviceConfig.Group or "root";
- };
- };
- services.filesWatcher.zrepl = {
- restart = true;
- paths = [ config.secrets.fullPaths."zrepl/zrepl.yml" ];
- };
- systemd.services.zrepl = {
- description = "zrepl daemon";
- wantedBy = [ "multi-user.target" ];
- path = [ pkgs.zfs pkgs.openssh ];
- serviceConfig = {
- ExecStart =
- let configFile = config.secrets.fullPaths."zrepl/zrepl.yml";
- in "${pkgs.zrepl}/bin/zrepl daemon --config ${configFile}";
- Type = "simple";
- RuntimeDirectory= "zrepl";
- RuntimeDirectoryMode= "0700";
- };
- };
- };
-}
diff --git a/nix/README.md b/nix/README.md
deleted file mode 100644
index 7bf996c..0000000
--- a/nix/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory is handled by niv, but it prefers to have a directory
-named "nix"
diff --git a/nix/sources.json b/nix/sources.json
deleted file mode 100644
index 1a1cf5a..0000000
--- a/nix/sources.json
+++ /dev/null
@@ -1,209 +0,0 @@
-{
- "buildbot-cours-deps": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/perso/Immae/Sites/Cours",
- "rev": "33f139f2e2ea0a16b8ed813c5436e5a5bb506f6d",
- "type": "git"
- },
- "buildbot-cours-nixpkgs": {
- "branch": "nixos-unstable",
- "description": "Frozen nixpkgs snapshot for texlive",
- "homepage": "https://github.com/NixOS/nixpkgs",
- "owner": "NixOS",
- "repo": "nixpkgs-channels",
- "rev": "fce7562cf46727fdaf801b232116bc9ce0512049",
- "sha256": "14rvi69ji61x3z88vbn17rg5vxrnw2wbnanxb7y0qzyqrj7spapx",
- "type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs-channels/archive/fce7562cf46727fdaf801b232116bc9ce0512049.tar.gz",
- "url_template": "https://github.com///archive/.tar.gz"
- },
- "buildbot-denise-aventuriers-nixpkgs": {
- "branch": "nixos-unstable",
- "description": "Frozen nixpkgs snapshot for texlive",
- "homepage": "https://github.com/NixOS/nixpkgs",
- "owner": "NixOS",
- "repo": "nixpkgs-channels",
- "rev": "8e2b14aceb1d40c7e8b84c03a7c78955359872bb",
- "sha256": "0zzjpd9smr7rxzrdf6raw9kbj42fbvafxb5bz36lcxgv290pgsm8",
- "type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs-channels/archive/8e2b14aceb1d40c7e8b84c03a7c78955359872bb.tar.gz",
- "url_template": "https://github.com///archive/.tar.gz"
- },
- "buildbot-history-deps": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/perso/Immae/Sites/History",
- "rev": "5f2aae4f9c92107accfc6fb6db6cb3c1f97ed9dc",
- "type": "git"
- },
- "buildbot-normalesup-deps": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/perso/Immae/Projets/Sites/Normalesup",
- "rev": "de294da4027e80a7b8bf7ec8c393ca0b60218575",
- "type": "git"
- },
- "buildbot-normalesup-nixpkgs": {
- "description": "Frozen nixpkgs snapshot for texlive",
- "revision": "173017.85f820d6e41",
- "sha256": "0fs390gvz8d3n7v4zj538gf3n1b14sikbf0ijrxgxib5i0704mdb",
- "type": "tarball",
- "url": "https://releases.nixos.org/nixos/19.03/nixos-19.03.173017.85f820d6e41/nixexprs.tar.xz",
- "url_template": "https://releases.nixos.org/nixos//nixos-./nixexprs.tar.xz",
- "version": "19.03"
- },
- "buildbot-plugin-buildslist": {
- "ref": "master",
- "repo": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist",
- "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0",
- "type": "git",
- "version": "f1d42ba-master"
- },
- "home-manager": {
- "branch": "master",
- "description": "Manage a user environment using Nix",
- "homepage": "https://rycee.gitlab.io/home-manager/",
- "owner": "rycee",
- "repo": "home-manager",
- "rev": "6cf6b587b575493e7718bf08b209013d7dcf4d58",
- "sha256": "0666ayxazbphjn5xcrczv8m7k2q62k224fvf0kz1lx9qjn93wkvr",
- "type": "tarball",
- "url": "https://github.com/rycee/home-manager/archive/6cf6b587b575493e7718bf08b209013d7dcf4d58.tar.gz",
- "url_template": "https://github.com///archive/.tar.gz"
- },
- "niv": {
- "branch": "master",
- "description": "Easy dependency management for Nix projects",
- "homepage": "https://github.com/nmattia/niv",
- "owner": "nmattia",
- "repo": "niv",
- "rev": "372f96bff217a7a019de27667d04118cffa9841b",
- "sha256": "1l0z6162zw60pdcdj03aq64qgf1vyzmf24i9pxca64i4sprl1b7p",
- "type": "tarball",
- "url": "https://github.com/nmattia/niv/archive/372f96bff217a7a019de27667d04118cffa9841b.tar.gz",
- "url_template": "https://github.com///archive/.tar.gz"
- },
- "nixpkgs": {
- "branch": "nixos-unstable",
- "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
- "homepage": "https://github.com/NixOS/nixpkgs",
- "owner": "NixOS",
- "repo": "nixpkgs-channels",
- "rev": "fce7562cf46727fdaf801b232116bc9ce0512049",
- "sha256": "14rvi69ji61x3z88vbn17rg5vxrnw2wbnanxb7y0qzyqrj7spapx",
- "type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs-channels/archive/fce7562cf46727fdaf801b232116bc9ce0512049.tar.gz",
- "url_template": "https://github.com///archive/.tar.gz"
- },
- "nixpkgs-home-manager": {
- "branch": "nixos-unstable",
- "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
- "homepage": "https://github.com/NixOS/nixpkgs",
- "owner": "NixOS",
- "repo": "nixpkgs-channels",
- "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
- "sha256": "1ak7jqx94fjhc68xh1lh35kh3w3ndbadprrb762qgvcfb8351x8v",
- "type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs-channels/archive/c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38.tar.gz",
- "url_template": "https://github.com///archive/.tar.gz"
- },
- "nixpkgs-nix": {
- "branch": "nixos-unstable",
- "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
- "homepage": "https://github.com/NixOS/nixpkgs",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "891f607d5301d6730cb1f9dcf3618bcb1ab7f10e",
- "sha256": "1cr39f0sbr0h5d83dv1q34mcpwnkwwbdk5fqlyqp2mnxghzwssng",
- "type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs/archive/891f607d5301d6730cb1f9dcf3618bcb1ab7f10e.tar.gz",
- "url_template": "https://github.com///archive/.tar.gz"
- },
- "nixpkgs-nixops": {
- "branch": "nixos-unstable",
- "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
- "homepage": "https://github.com/NixOS/nixpkgs",
- "owner": "NixOS",
- "repo": "nixpkgs-channels",
- "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
- "sha256": "14q3kvnmgz19pgwyq52gxx0cs90ddf24pnplmq33pdddbb6c51zn",
- "type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs-channels/archive/840c782d507d60aaa49aa9e3f6d0b0e780912742.tar.gz",
- "url_template": "https://github.com///archive/.tar.gz"
- },
- "webapps-landing": {
- "ref": "gitolite_local/local_changes",
- "repo": "https://git.immae.eu/github/bastienwirtz/homer.git",
- "rev": "bb60c5b869931f305f15c5bfa9cdb3f68702f01f",
- "type": "git",
- "version": "e0a72b7-local"
- },
- "webapps-surfer": {
- "ref": "master",
- "repo": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git",
- "rev": "476177380452c9c7c5b1624805feedc824c5995e",
- "type": "git",
- "version": "4761773-master"
- },
- "webapps-ttrss": {
- "ref": "master",
- "repo": "https://git.tt-rss.org/fox/tt-rss.git",
- "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
- "type": "git",
- "version": "986ca25-master"
- },
- "websites-chloe-app": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/perso/Immae/Sites/Chloe",
- "rev": "882f166999a59081ad896f26318e6a04db9f9f43",
- "type": "git",
- "version": "882f166-master"
- },
- "websites-connexionswing-app": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/perso/Immae/Projets/Connexionswing",
- "rev": "ed5874396d35766e0810a6d4e78e1a8f6b170835",
- "type": "git",
- "version": "ed58743-master"
- },
- "websites-florian-app": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/perso/florian_telles/stabilo",
- "rev": "1793d5c7912d1b20ad1df1ac59be9d7f1220e919",
- "type": "git",
- "version": "1793d5c-master"
- },
- "websites-isabelle-aten": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/perso/Immae/Sites/Aten",
- "rev": "b99537fdad41291afb4f1bb8b2e2aa4081c71fae",
- "type": "git",
- "version": "b99537f-master"
- },
- "websites-isabelle-iridologie": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/perso/Immae/Sites/Iridologie",
- "rev": "2f2ec6b003f4de97e9f8651db540c9114ac877c2",
- "type": "git",
- "version": "2f2ec6b-master"
- },
- "websites-ludivine-app": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/perso/Immae/Sites/Ludivine",
- "rev": "eae633b7c5e92184b24141ebf267d51dbc5d2acc",
- "type": "git",
- "version": "0dacc32-master"
- },
- "websites-piedsjaloux-app": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/Pieds_jaloux/NewSite",
- "rev": "2b67b9897180af3d34f87648362337dbf3981158",
- "type": "git",
- "version": "2b67b98-master"
- },
- "websites-richie-app": {
- "ref": "master",
- "repo": "ssh://gitolite@git.immae.eu/perso/Immae/Sites/Richie",
- "rev": "2a09e29dd9fc4f6abc5add82744bedf1978a35d5",
- "type": "git",
- "version": "2a09e29-master"
- }
-}
diff --git a/nix/sources.nix b/nix/sources.nix
deleted file mode 100644
index 45c97d1..0000000
--- a/nix/sources.nix
+++ /dev/null
@@ -1,135 +0,0 @@
-# This file has been generated by Niv.
-
-let
-
- #
- # The fetchers. fetch_ fetches specs of type .
- #
-
- fetch_file = pkgs: spec:
- if spec.builtin or true then
- builtins_fetchurl { inherit (spec) url sha256; }
- else
- pkgs.fetchurl { inherit (spec) url sha256; };
-
- fetch_tarball = pkgs: name: spec:
- let
- ok = str: ! builtins.isNull (builtins.match "[a-zA-Z0-9+-._?=]" str);
- # sanitize the name, though nix will still fail if name starts with period
- name' = stringAsChars (x: if ! ok x then "-" else x) "${name}-src";
- in
- if spec.builtin or true then
- builtins_fetchTarball { name = name'; inherit (spec) url sha256; }
- else
- pkgs.fetchzip { name = name'; inherit (spec) url sha256; };
-
- fetch_git = spec:
- builtins.fetchGit { url = spec.repo; inherit (spec) rev ref; };
-
- fetch_builtin-tarball = name: throw
- ''[${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`.
- $ niv modify ${name} -a type=tarball -a builtin=true'';
-
- fetch_builtin-url = name: throw
- ''[${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`.
- $ niv modify ${name} -a type=file -a builtin=true'';
-
- #
- # Various helpers
- #
-
- # The set of packages used when specs are fetched using non-builtins.
- mkPkgs = sources:
- let
- sourcesNixpkgs =
- import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) {};
- hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
- hasThisAsNixpkgsPath = == ./.;
- in
- if builtins.hasAttr "nixpkgs" sources
- then sourcesNixpkgs
- else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then
- import {}
- else
- abort
- ''
- Please specify either (through -I or NIX_PATH=nixpkgs=...) or
- add a package called "nixpkgs" to your sources.json.
- '';
-
- # The actual fetching function.
- fetch = pkgs: name: spec:
-
- if ! builtins.hasAttr "type" spec then
- abort "ERROR: niv spec ${name} does not have a 'type' attribute"
- else if spec.type == "file" then fetch_file pkgs spec
- else if spec.type == "tarball" then fetch_tarball pkgs name spec
- else if spec.type == "git" then fetch_git spec
- else if spec.type == "builtin-tarball" then fetch_builtin-tarball name
- else if spec.type == "builtin-url" then fetch_builtin-url name
- else
- abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
-
- # Ports of functions for older nix versions
-
- # a Nix version of mapAttrs if the built-in doesn't exist
- mapAttrs = builtins.mapAttrs or (
- f: set: with builtins;
- listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))
- );
-
- # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295
- range = first: last: if first > last then [] else builtins.genList (n: first + n) (last - first + 1);
-
- # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257
- stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1));
-
- # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269
- stringAsChars = f: s: concatStrings (map f (stringToCharacters s));
- concatStrings = builtins.concatStringsSep "";
-
- # fetchTarball version that is compatible between all the versions of Nix
- builtins_fetchTarball = { url, name, sha256 }@attrs:
- let
- inherit (builtins) lessThan nixVersion fetchTarball;
- in
- if lessThan nixVersion "1.12" then
- fetchTarball { inherit name url; }
- else
- fetchTarball attrs;
-
- # fetchurl version that is compatible between all the versions of Nix
- builtins_fetchurl = { url, sha256 }@attrs:
- let
- inherit (builtins) lessThan nixVersion fetchurl;
- in
- if lessThan nixVersion "1.12" then
- fetchurl { inherit url; }
- else
- fetchurl attrs;
-
- # Create the final "sources" from the config
- mkSources = config:
- mapAttrs (
- name: spec:
- if builtins.hasAttr "outPath" spec
- then abort
- "The values in sources.json should not have an 'outPath' attribute"
- else
- spec // { outPath = fetch config.pkgs name spec; }
- ) config.sources;
-
- # The "config" used by the fetchers
- mkConfig =
- { sourcesFile ? ./sources.json
- , sources ? builtins.fromJSON (builtins.readFile sourcesFile)
- , pkgs ? mkPkgs sources
- }: rec {
- # The sources, i.e. the attribute set of spec name to spec
- inherit sources;
-
- # The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
- inherit pkgs;
- };
-in
-mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); }
diff --git a/nixops/.gitignore b/nixops/.gitignore
deleted file mode 100644
index 2ea467b..0000000
--- a/nixops/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/state
diff --git a/nixops/.sops.yaml b/nixops/.sops.yaml
deleted file mode 100644
index 04826a2..0000000
--- a/nixops/.sops.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-keys:
- - &Immae F82806FDA1BF5B9A1B3014E7C9FCED6CA6B79454
- # obtained with: ssh-keyscan eldiron | nix-shell -p ssh-to-age --run ssh-to-age
- - &eldiron age1dxr5lhvtnjssfaqpnf6qx80h8gfwkxg3tdf35m6n9wljmk7wadfs3kmahj
- - &monitoring-1 age1dn4lzhgxusqrpjjnzm7w8ml39ptf326htuzmpqdqs2gg3wq7cqzqxuvx8k
- - &backup-2 age1kk3nr27qu42j28mcfdag5lhq0zu2pky7gfanvne8l4z2ctevjpgskmw0sr
- - &dilion age1x49n6qa0arkdpq8530s7umgm0gqkq90exv4jep97q30rfnzknpaqate06a
- - &quatresaisons age1yz8u6xvh2fltvyp96ep8crce3qx4tuceyhun6pwddfe0uvcrkarscxl7e7
-creation_rules:
- - path_regex: vars.yml
- key_groups:
- - pgp:
- - *Immae
- age:
- - *eldiron
- - *monitoring-1
- - *backup-2
- - *dilion
- - *quatresaisons
diff --git a/nixops/Makefile b/nixops/Makefile
deleted file mode 100644
index fb9da4c..0000000
--- a/nixops/Makefile
+++ /dev/null
@@ -1,102 +0,0 @@
-ifndef NIXOPS_ENV_LOADED
- $(error "Please load environment with direnv")
-endif
-
-###### Current channel information
-nix-info:
- @version=$$(nix eval --raw nixpkgs.lib.version) && \
- mainversion=$$(echo $$version | cut -d"." -f -2) && \
- echo "https://releases.nixos.org/nixos/$$mainversion/nixos-$$version/nixexprs.tar.xz" && \
- nix-instantiate --find-file nixpkgs
-.PHONY: nix-info
-
-###### Initial setup
-setup:
- ./scripts/setup
-.PHONY: setup
-
-###### Morph regular tasks
-PROFILE=/nix/var/nix/profiles/per-user/immae/morph/immaeEu
-TARGET ?=
-MORPH_ARGS ?=
-ifdef TARGET
- # multiple targets: --on="{machine1,machine2}" (works with * glob too)
- override MORPH_ARGS +=--on=$(TARGET)
-endif
-SSH_ARGS ?=
-
-edit_env:
- $(EDITOR) secrets/environment.nix || true
- git -C secrets add environment.nix || true
- git -C secrets commit -m "Edit environment.nix" environment.nix || true
-
-edit_vars:
- sops secrets/vars.yml || true
- git -C secrets add vars.yml || true
- git -C secrets commit -m "Edit password for vars.yml using sops." vars.yml || true
-
-ssh-eldiron:
- ./scripts/with_env bash -c 'ssh -i $$SSH_IDENTITY_FILE root@eldiron $(SSH_ARGS)'
-
-ssh-dilion:
- ./scripts/with_env bash -c 'ssh -i $$SSH_IDENTITY_FILE root@dilion $(SSH_ARGS)'
-
-ssh-backup-2:
- ./scripts/with_env bash -c 'ssh -i $$SSH_IDENTITY_FILE root@backup-2 $(SSH_ARGS)'
-
-ssh-monitoring-1:
- ./scripts/with_env bash -c 'ssh -i $$SSH_IDENTITY_FILE root@monitoring-1 $(SSH_ARGS)'
-
-ssh-4c:
- ./scripts/with_env bash -c 'ssh -i $$SSH_IDENTITY_FILE root@quatresaisons $(SSH_ARGS)'
-
-debug:
- ./scripts/with_env morph build --show-trace default.nix $(MORPH_ARGS)
-
-build:
- ./scripts/with_env morph build default.nix $(MORPH_ARGS)
-
-dry-run:
- ./scripts/with_env morph build --dry-run default.nix $(MORPH_ARGS)
-
-upload:
- ./scripts/with_env morph push default.nix $(MORPH_ARGS)
-
-deploy:
- ./scripts/with_env morph deploy default.nix switch --keep-result --upload-secrets $(MORPH_ARGS)
- nix-env -p $(PROFILE) --set .gcroots/default.nix
-
-next-boot:
- ./scripts/with_env morph deploy default.nix boot --keep-result --upload-secrets $(MORPH_ARGS)
- nix-env -p $(PROFILE) --set .gcroots/default.nix
-
-deploy-reboot:
- ./scripts/with_env morph deploy default.nix boot --reboot --upload-secrets $(MORPH_ARGS)
-
-.PHONY: ssh-eldiron ssh-dilion ssh-monitoring-1 ssh-backup-2 debug build upload deploy deploy-reboot
-
-###### Cleanup generations and garbage collection
-GEN ?= "+3"
-
-list-generations:
- nix-env -p $(PROFILE) --list-generations
- $(MAKE) ssh-eldiron SSH_ARGS="nix-env -p /nix/var/nix/profiles/system --list-generations"
-.PHONY: list-generations
-
-delete-generations:
- @echo "making sure that a complete build is done before cleaning up"
- $(MAKE) build MORPH_ARGS=--keep-result
- nix-env -p $(PROFILE) --delete-generations $(GEN)
- $(MAKE) ssh-eldiron SSH_ARGS="nix-env -p /nix/var/nix/profiles/system --delete-generations $(GEN)"
- $(MAKE) ssh-dilion SSH_ARGS="nix-env -p /nix/var/nix/profiles/system --delete-generations $(GEN)"
- $(MAKE) ssh-backup-2 SSH_ARGS="nix-env -p /nix/var/nix/profiles/system --delete-generations $(GEN)"
- $(MAKE) ssh-monitoring-1 SSH_ARGS="nix-env -p /nix/var/nix/profiles/system --delete-generations $(GEN)"
-.PHONY: delete-generations
-
-cleanup: delete-generations
- nix-store --gc
- $(MAKE) ssh-eldiron SSH_ARGS="nix-store --gc"
- $(MAKE) ssh-dilion SSH_ARGS="nix-store --gc"
- $(MAKE) ssh-backup-2 SSH_ARGS="nix-store --gc"
- $(MAKE) ssh-monitoring-1 SSH_ARGS="nix-store --gc"
-.PHONY: cleanup
diff --git a/nixops/default.nix b/nixops/default.nix
deleted file mode 100644
index 1241443..0000000
--- a/nixops/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- dilion = import ../modules/private/system/dilion.nix;
- eldiron = import ../modules/private/system/eldiron.nix;
- backup-2 = import ../modules/private/system/backup-2.nix;
- monitoring-1 = import ../modules/private/system/monitoring-1.nix;
-
- quatresaisons = import ../modules/private/system/quatresaisons.nix;
-}
diff --git a/nixops/public_keys/Immae.pub b/nixops/public_keys/Immae.pub
deleted file mode 100644
index dd42b04..0000000
--- a/nixops/public_keys/Immae.pub
+++ /dev/null
@@ -1,322 +0,0 @@
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-mQINBFvwA+gBEADlchQGPyI2M9RNRUsk8wsL9XLc8qAFWTYlVp5p7177ucxTQf6S
-rny9yRCF69UqtE0ugwt+432sAAsDPi7BRA/JE95bIRBiewOiY1jYiivccP5dR6Jr
-58HJ3QOHYPekqZIQhxzCWjdD2nRhhCbbxeWFJsJyaG8idGBiLkgNKxEEmqE5LIat
-tzMpQFwOpL2FoYZ7+e4ZTMc+x+yqpOnGcQD1qwouqx68okSCjrVBWo5S2tK5AzzU
-X8esBLNpgkhpUEZVltiNc4bmj7GZPdy4+mvS33/HQTed8YpatCFVWzcK+/uK0SYE
-P8Hj1mguT9idBhAf+kv7qbTycrFkTBliP3oDNUoARWDmfQdV4nlxqW03QxUY18mL
-KPByduK3hEXAZnD+/8QfVzbNVVP+70/jdSB+ckF88Li2g4bv/9uqjaObKVJB9ocG
-EWslm1h7tvdCLBRgIl8b2+Zl0fComRAMuwUr+LYlWLnfygAi8Uy9hl7UcRWAAj99
-PG4ba0+y8eD8k1J2IE8HpeIzMzRwYTLtvLyJBvrKiQHJb1PGM5cS8iry81wjUPZm
-dO5p5rbC8z99w7UNMaiz6iqAFAaDyLLsBZ5gWD+1ps9XxCA0zf28Z/Tc/Gj4QKAf
-kpMd7lQ+gprsFyRtzcRD4WhsOL2ogKYFHYi4LE0GYduspGdQPlK/YfrKQwARAQAB
-tB9Jc21hZWwgQm91eWEgPGlzbWFlbEBib3V5YS5vcmc+iQJRBBMBCAA7AhsDBQsJ
-CAcCBhUKCQgLAgQWAgMBAh4BAheAFiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvw
-BU4CGQEACgkQyfztbKa3lFR/kA//cHVrb/RRTLQZy514vMkOBKgAk+dj+j0lrgvJ
-yR0JK1KjodduSoccPq7qRFAU+KVa3FsXMn8yY/lWaCXYJoF0DT5iEHsEuzJRc7Cn
-N4aq2h42DD7z8dJCXZvtvJs+vZ7G/rlLl322TjLb2OyIybBEoPOmJl0dVG0wKBFC
-r7EJmOKl3ytUWUpEbuxs1U/pP4GKrPT2CK3QcLF8JHKIPkEO347RorseeHcHhMxs
-Bz5JXojts1NyLJh7lErT42atgEdTGzSmkkGm8OifZVIH2rgmnRsPHnCqrXYsa7dE
-yPsC01Ns3DPYk4C5FtbpfiNvATbnkOicEwb2U55OpYUZLsFCKo7Bl+duJVY0nPRN
-WiLCALPcdJL+a6hbh1hSuqHt5eNGxyrDtRPowXRTS1D4nTCgAh6+wpH47xXWEwXZ
-mEnkXqHLIjsW4CSIz2gc+Bza40+wkWz6NQDEb3ncytDZu9vKK1CYwl7RGW4RFkAO
-j3FWZvZp8ETPLNRVy64BhZzHY3uOxbYreE+T6JfiIZux8X+Bh4cPJHizfhSMLLS5
-kwABzalaTD33XnjKn5wQ/DfGJ+fGbF54fMlGFjne5VTNwY1ju2ieXTgVrUyzfKPF
-96zcvnxo/MWwqcQ8+dXFCZjldP76puo1eVATEBeOCQs8Vj7eL9eN/eo+BfzhS3S8
-CfFFYWeIXQQQEQIAHRYhBNw4R0hwnSYZ/yhnIW0Mr/3bHP6QBQJb8AgDAAoJEG0M
-r/3bHP6Q/TsAnA6vTjmrX4nY3QnevNrKefWaQvf3AJ0TALTqXhTcVYVLxfzRt/Qd
-u5W2/rQvSXNtYWVsIEJvdXlhIChXb3JrKSA8aXNtYWVsLmJvdXlhQGZyZXRsaW5r
-LmNvbT6JAk4EEwEIADgWIQT4KAb9ob9bmhswFOfJ/O1spreUVAUCW/AFCwIbAwUL
-CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ/O1spreUVKlBD/sE/eDbJtL8UKc6
-CN7zmA038RSjxlcJrMRoBoThCFKOFtBsYLPebnIkzCDiUwQJaIMYe2RNBHKKz0p+
-2Kvzf7q+xq8W1e72aK1DRhsBTL8/LA1kQkvh3GwMS8z3SOcbXLWqKQuQ7ztYReQG
-wsT2/S8reVM96eV67K9vMHKMDF3NyYZewahX0I44YIbQJfLVG5elCkBrfHjGSeIt
-tSAv56BhN8J8ky+9nGx5jwWmxc/4Oquyfe9Lf0NMTCjw1xess7UoHlzSMp57yF3T
-AaqDcqD2Jdgr2meN9Yo4/Yb9dEvHFy34ppXYanX1nrHGev7YaaQWLoKLVZc3f6gR
-+D7sEJUJm3IxO041CR7DBwQ1CQkx3sa66mcHxe+wchOoXBZdsqyl5Ds+zqh6eMyO
-UiixDcXDxZuimEY0/+7XjlFjtzhGVNKsjV/Azh+Hx3GZnGHMVpTw73qQFHkWeDrX
-FPUbinjtEVTxw0fS9PkDZB5ysgAWlXs2cqoNDMcbdyJn2xszbV5+vjlmcofsQZTr
-PiX+hB6P5RQP5ogtnotvbkPDSfPfqdUk5HjGFrGX08FoP4rCromHvSL6Un2lP4I2
-mJbbQzBU/bQUGzfz6U6VEbUHtOL+7woGuXuzTYsRZ/O7/fKohyi/+qsmOozQpLFN
-k5xocbF1PgpFphrKYpHaSkf6DS2/F4hdBBARAgAdFiEE3DhHSHCdJhn/KGchbQyv
-/dsc/pAFAlvwCAQACgkQbQyv/dsc/pDXWACeKMbL/Dtifpd466TqQP8isfWedtIA
-n2xbEmlpxG8yk0w4HQ4djwgY4RbutCpJc21hZWwgQm91eWEgPGlzbWFlbC5ib3V5
-YUBub3JtYWxlc3VwLm9yZz6JAk4EEwEIADgWIQT4KAb9ob9bmhswFOfJ/O1spreU
-VAUCW/AEawIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ/O1spreUVMGJ
-EAC5hKt5NCanRxEl13nQUu4+n05tdRl9C3sTczR8EUZ30zhpBV4chKgeJSD0r1VA
-zBSQHMNzroGawaQn38qxFtbcSmkGRDd+0y798x1HFHp+UFiYOdQDQJVsyDuwjq4k
-RF7zV+FBj0ffjn5JBy6R3wLmWCFxz1mPmkImdyyS8GEeifwTftC+SSotqfg1lh0K
-C+DSQGYtPk0jLvxVPRllnjltDOSPUt9xRE785I6E9oyYrCa5Om51e0eEMzwpkl4e
-QschAYILb6SNrVyEMRD5E3lJHD2r6dPvIPFNcLxIQuK/Kdco2jNq7dCL6ukdGI40
-j/oZi7XRrlFCQW321BuipJZ/7t9JWOXOrrEndQv+hOb6PeWkwF1rigjbQq+IipdJ
-DUXGBfiIzlpJM5tLhs7BGfLxYNn09rOpkotXrdBzRO62lYyRdQepKpD33v96bQV2
-0w64U44+CxuicjGDw/6no54LY4J7bM1lLGwqvHSeqgYoc+Zs9WH95TNNSmaAHGSf
-An4LpzW5nOXbq2rsWVbZpvsVHz3VmC9qmpsYl5tT/ninkLta3tN6TrYUFHXcDWz9
-K+HW+/oARzEmN8eg3iMmWtOnV59YEr/x2vvOHndguUL0tUpRjwuTunH9KOGZE0Kb
-uI3ovgLLO2kCSGk4SdXlntu/eLq9FPYqlOpjM9CtLf9JdIhdBBARAgAdFiEE3DhH
-SHCdJhn/KGchbQyv/dsc/pAFAlvwCAQACgkQbQyv/dsc/pCHCQCfdPdGx0FmknAs
-rPvjuUmuCj9Q8xUAn32dsgQYTlgfTdwLSxWGj4mTD2h6tClJc21hZWwgQm91eWEg
-PGJvdXlhQHBoYXJlLm5vcm1hbGVzdXAub3JnPokCTgQTAQgAOBYhBPgoBv2hv1ua
-GzAU58n87Wymt5RUBQJb8ASdAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ
-EMn87Wymt5RU58QQALMGlOJzcQj/arHezum5H/PiYIpZ1yY+QMCzpSgPdwupwawW
-VN88aQRfU6k9xwmsU+Ghjreja09AuqYi/D2+61TM/Tmqi/9HdU6NRYw0hvaZnwFc
-vudFBII2XrxmU5k9PnSR6Sq4uLUGkXmvhJddV0q+cjtif+vDi5pl9mqbWBQY8d9S
-5Q6ZFZPeEeASUK7Xt/tSq9iXpb1tQsmEJ94Czl5G+gNFJcqj7nlHQ1/c9XeNsvJT
-GZVLGM/cAZNzB6AC8Kz+iWUypFuXifC2PYGpJDJ8klqTmDQikGQtM1HMHda6rnwU
-L7JIfbuwGbMk65CtG2YE8QqB+/GIfkzWySenmIrldn9Vp5EKB0DD529TyOwQWgzz
-+HuVP/4QfkNRxNquWxlAPXmcNfV1SV+/Xn1KwSspb7QlAjiXXOL13J2dwYFpV+21
-vsSW5XqJXfWUU8d4YVOdq1kUTwLjWnWyxwtt8j68KSuTOT4JTA8oNXg87r0B4Fzr
-6AoxCM8ePywm5IW55gNAwViTKWBAcNrcwRTP647oNOM5+8D7NZIBpnKffNc/S2S5
-iI1tmaM0yXavmCm0Hb7lkFIsxM2Y2lxwHexPck2ftPXIrjhPYLcFVBdLVx2V2yXe
-cFW2vMGZiasVobFqqp1g8htmAlTkN0cTDY7l96wDuirC6OeCbVomEgxQEd0MiF0E
-EBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/92xz+kHsv
-AJ4+zdfjTdO1FUWb42bWdPQfiFe9nACeMIRp1Iu3tNVJkfS9CGGqhrChpfu0LUlz
-bWFlbCBCb3V5YSA8aXNtYWVsLmJvdXlhLjA2QG5vcm1hbGVzdXAub3JnPokCTgQT
-AQgAOBYhBPgoBv2hv1uaGzAU58n87Wymt5RUBQJb8ASsAhsDBQsJCAcCBhUKCQgL
-AgQWAgMBAh4BAheAAAoJEMn87Wymt5RUxa8P/i7zdQ9i5BfWITbdyCgXNoQYIcE3
-J6lIa15eLUcfDcL707zOrUSbhSkthLjeqZoNRCalqjeDOdgCQC1PNoISdkMGd9PO
-VOwS3G7Pjt4FSjPVHyw9+Su57pwTcLXBhEyBAkv+tx/QrB/UBCFzPUnsl71QH51y
-T8+bNdOiBxssdgn/9IrObn7tu8xDf+d/yGsA493x+mxalai+fhd/t0yzQcdcTrvD
-EKRxAaU8wXe8oSwcW5cRmXIi+N4aEnLRO/so9YDGf4z2FQVSL0ktoZYMqZ1ZvIb0
-MNCNl2NgNXThhrAPk9Rhs+S5nRzazJ+tS+D2S728EPpRHpUE43+vewtCdu5c5NWd
-Lz88o/jxLwcNwQa2iJoFMyqr15lHt+vM7OyD9X650IJwQw24n4tF6TijzH5GhWcN
-SnB7RpLSkftQldpK/zK+tmFH4vVpv+bI3JKAfzRga+5Fu42kB5uHVzXF3qMwYgEO
-sRNL5d4xV4SATce1mb8vFpsQmGOWnZAcCaQYhLKfMl7zR5ukytTjf3hRMRH0GAjh
-06QAoBMJZhWosYehPi1odjTngIf6hFOqA5prz8Cu/AFe/8aftp9UorJOekAj2io0
-CENRv21qrN8R4bNo04aTMD6WrY+mBL8MteR0ooD3ENQEAZ6UUyZwTzUJk2UUl+5M
-ch/HgJ+rQozmRGYeiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AI
-BAAKCRBtDK/92xz+kPsmAJ4wGQ0Hly2eTVzsU8Ht4609Q5kf2wCdHGuu863a0GHv
-uUdEokzQEsumYPG0OElzbWFlbCBCb3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVy
-ZSkgPGlfYm91eWFAeWFob28uZnI+iQJOBBMBCAA4FiEE+CgG/aG/W5obMBTnyfzt
-bKa3lFQFAlvwBMkCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQyfztbKa3
-lFQTlxAAjbuDy3prdEBNMYfi/870MO5eeDOCMtiDJDae4fQjj2NANjeuDGNP659B
-/k9uS7o5nrWB7E6rdG4a1J+Qzj5I775xTP/zVbrNSchcLwSoHMMXBm2IdbIanCX0
-JX+dRg2YX6yX+6ZmL8UaWRVICQ84ZxGtYHZ8o8hMCFOuxFklNjYFEPciO9M9m+rv
-fUEihQgcBF7+x9KVntlxad61Aa9AzUJLULgY3snaZK687tHUq3yYwXpF9s1CuJ81
-SfZxH32dKqy+2cpJqwQ38BZrTUwjBxxIMR5TRC7h/O9aRIBKQZKlpLcmxWPv18i7
-DwWlrJVb2Sd2WUh+TwPNa7VQc3NjlGtu74SfZqmirE0FyuB86fnsQaF8zhJnRsqE
-lagnLoW24PCvc8A9TK95tj+0JO8DIeM49Gg+Br/NBtRB8q5q/ICJOREber6Ke+/I
-p90q5VkZafIgeuO+EkyQ6Dq+58NRqC2qEs209xnKOd6exxT+2tEzx6Hy0PKwaay3
-h8WzUamJOTqRv1WG4GmlCeRUQGx8BtdIAEMdww26cN8rmxh5Foh5CH+V75bcybkv
-yH+FBDoKFYSpEPg0axHM/e13/nujgLNnSTHuMf7ILvpwoNkkIcQwSpH17B5hZdgl
-y0xD7aIS5XU9OoP9mKs1unzUKerWQWY6CxgYOqpssyDTUG+fohuIXQQQEQIAHRYh
-BNw4R0hwnSYZ/yhnIW0Mr/3bHP6QBQJb8AgEAAoJEG0Mr/3bHP6QFPAAn3DbFqHo
-hjznqQvg15QjlGFaPJaaAJ4ps0+VWG9BN7UBQPG+fcCRwqLaVLQ0SXNtYWVsIEJv
-dXlhIChEb24ndCBjb250YWN0IG1lIHRoZXJlKSA8Ym91eWFAa3RoLnNlPokCTgQT
-AQgAOBYhBPgoBv2hv1uaGzAU58n87Wymt5RUBQJb8ATfAhsDBQsJCAcCBhUKCQgL
-AgQWAgMBAh4BAheAAAoJEMn87Wymt5RU2vAP/12b6S0yJdZ1rgNLj+ZohY36PhCm
-30/amkGPQp7HCBylYIRv+y5m4IdiqynzJoap547cFMWNsCyfyU2VKbcy1Uy44FCI
-PCUcBME95jD1JWviINDKqLhglciKlJnWUhupiolqFcr2ro+rJVc/fBMWJoBjM5fJ
-9eq1ge2LxuYKbu9cpSEtopk7ZBeo69khhrFACdZEqfJtW4qp0hEC0pAKLjN8LhpQ
-EEVcq4zejksB+1e1qkuJ6be3/Q2Sj+1ijaJBElJIVJ8qyYs9XSlTlUA1USfy3Yqu
-jOkFrIaycxYgKooFgwYfYXCniuqXWZ2geCm2IE90lanQC2w7ZDN/JGwwVuAFVi4H
-Mrx6x/yEreqy2AUMesB1eGxqQQG9cgssMLoMAN2IDDJ6FS+e0imWTTMZ6r3ou9W8
-+pFzSIT8LMnBNwp+RxrW3QzBs8sXDw5mS6WroiZMRlfJdA1sUPsrW0GV4/AFuEaK
-PhCUvIvoh6zxYR0lA/gYqtszCHGzHeNLoczOhytUZM+KQpOtO3TSING/+o59HHuM
-niD6k3mWcyk6MkSgIXquJRGUVGVFeLGlXXf7aWEkIOrXeqjBZpBchZUIxZfkg100
-xxmEgNVGG4vxB/UIGeVqV2S4JscJmCyDGs130nRp7Qp5YGfkaTLKyOdutssrqatP
-m5Zcjl2VGr4Xt4uXiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AI
-BAAKCRBtDK/92xz+kEViAJ9zBTPNNTYIxPxt8BEvb3pUDeZkiQCffsDGKi7kdlTj
-oZ26K7yxdjexaYS0OUlzbWFlbCBCb3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVy
-ZSkgPGJvdXlhQG1lY2gua3RoLnNlPokCTgQTAQgAOBYhBPgoBv2hv1uaGzAU58n8
-7Wymt5RUBQJb8ATwAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEMn87Wym
-t5RUIzgP/0/7+y7UOgj4Yja6Lwa+Lm7ESRZnbVmR1ERSAa9RKKr8BbPT4KhgwN2R
-x8c3CedFupS02sG1G57u+4qQbEeZylaMu6rusf/XyQ+esh06cRXfR7Vb2d14yFQg
-xun9PgPR7jL0RiU2fsgvF6O+u9KwnGRmABZXILDBxzGZBXKBIkmqBM8+rBkXFVWc
-gezZqD106KcuGewciuWM7bfyLj+2yV9GhvX8iRyptgkx9/CNEdOqQzKYEbXVTSkh
-tUW4QUmNnIiTnD/pZ4kr3UsQV6y0GC1kf9G5EeQHbD+kVROFM0/sX6qGn99IeC+j
-96MflMnKuXJeXjlxNFZIYPoolBAC7CvpRfdky5q0KB2xWh+x2jQbn3fPpa6lVZdQ
-De14guXdcEsj1QVUMRL3wFCDwHIsi3gqOpCHdy5GmunFRNqUWmoGU+uHt3Kk031w
-DJdQY4YP+8tFWLPG3vKoPSf5EcG2Mf0hZiWiiIAX8sVw13W+oDlAQ0HKah/uxV77
-gM2ScBiiiOr92JIf3ftq2AjMuzrGhpKME/wG2DdcOqmq7U+tcVbambSc7SVa5nTM
-JXm8ZPOSH0Fax1PULPd3pyLLhfF0rnPiDLcVa6UzG1MaSJiGBurIf3D3OCHRjQQ6
-kVpF9VtXhWeziV8wkyt66HNcuqUs6HDBNkpxPTNacKcZmW8J/FlaiF0EEBECAB0W
-IQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/92xz+kKOiAJ4shO9b
-nZ2Nx9XzBBg4C0nUl05LyQCbBpk7t2NIPMKaNtjsPb+RV5HbiQa0O0lzbWFlbCBC
-b3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVyZSkgPGlzbWFlbC5ib3V5YUBlbnMu
-ZnI+iQJOBBMBCAA4FiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvwBZYCGwMFCwkI
-BwIGFQoJCAsCBBYCAwECHgECF4AACgkQyfztbKa3lFRK1w//cqsweiuXGPepyn0t
-AL/S/scM6r9IwcjD3HrZqmUNSDAqU6PJ0FFialOPuSQIyEvrpY1GL+TiVtnYyAit
-sbotxNxNQFwiBvqchg6xd1ftpjJihuo7RysNdSNAnlOxFlEz9X+EGkRqq8rCTpoS
-GA9+4uFyFKzfv9CDg7YUVX5GVsE3bsPWymfCW1boW0TQyL7xNrDPfzKpVRHFu7hi
-5OghiTbHbifmIolj5Mo0hGuXxz26gFzrufCjgxK9ycW7LnHEnnK0zX8Qfueir8RV
-EisuAXtKILgS5mmOj0ywsrva4Qtf5JW5SKymhgsKCWskfz0lq6S6ceIKaYBr4Syk
-0MLI82M0zDfGlLuRP6yQ3DTiTC4lWfXHdjyd0w4SwcuAQPCWz34gtUEGfMTyrd6O
-le6pYreL1NPzd/NakYsR1H1fsXVJkgpESktoDIkzooLmBV6Pjr+PEt4DvPZYqgKl
-AyD+aZeZ5HlTZCLbN9O38nDttWdAvsGjq82qvNI8A/d2Vvz4L1ND6NT71+wtC2QT
-a95epSBD64l/JtK99SW/HjLjyvV9O+Nu2p8ESTOEaQhyIudnWYU+er+Vwy7YtLvY
-y8L9/Xu9KvlBMjHBXAAV047KwkIQNrNyoTla5yQFSpv57hFYbx5CKTprpsl9Ic4v
-uPjC/GMgkAJ3yTwIgxa47hgUAtKIXQQQEQIAHRYhBNw4R0hwnSYZ/yhnIW0Mr/3b
-HP6QBQJb8AgEAAoJEG0Mr/3bHP6QyCcAnRuTQIMOpwxbyzjj+t0C9GdNJYmGAJ9v
-5c5kvNCFiJAFCbUD4OxJBNA28rQ9SXNtYWVsIEJvdXlhIChEb24ndCBjb250YWN0
-IG1lIHRoZXJlKSA8Ym91eWFAbWF0aC5qdXNzaWV1LmZyPokCTgQTAQgAOBYhBPgo
-Bv2hv1uaGzAU58n87Wymt5RUBQJb8AW0AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4B
-AheAAAoJEMn87Wymt5RUaT8P/2OvKAfgqu0zQX0JhKu/wd9AATVmLa8C48JPQMUn
-5Z9dQyDcFyKKfKbGCz9B5jTOrzHNX0VJfpDujOTiPIk6ci0KqAJ3Fz0gdpxIcEoW
-B2zg0nwDtGHsGMX8togpcbVgKqblp0XSsMAFV2FN5PsAnxkqdXPDmZ5iZSgs9roi
-9nxHPavbcr1cSAjsiRoFxFudzo7Q0Z/KLRlTuTSAX6B+vRAeyRB4NcXThKYZlAi6
-cr+xXTvPFddiQZgVBT+ICZRQY0gwgHpQcj70fNx1w6tTHfThlxInojKGlreOZov9
-A4TVeex/QagVTsjRAQuZ9yLMkx7JxakAxBPZ/OHuv7/K1Qdx90AJ8zQZ6uOXpUNl
-c2MDEBoTI/nbsgMeHI/Mj4ndxCBUMperZ1oCITl+AhaqEZ+LxTKyne41YJedlqjc
-5xnUVigz4ajmZPYmbO6eRDxisx4fMG7hI2HnNWak2xBDVOp1z2aqZY0xsG7o697d
-I9BeR9JxbIusx0Szq6GabwI5beEI1xLlT333Fe3XDtT0NIQQvW9byuYuyfp7H6Xm
-hFj2ut7jVI9xG932sJ8ioRJGCK1UcGYEL0ei4YZRv+mVysEJFjki2nlxspnG4C/V
-Q20jXnLAXOpKLiStkNJ15WsnzeoL4eq0AUOYMMmYKAquXXgpVs+xUDv6XathWA2v
-oZkAiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/9
-2xz+kEBpAJ4x7hASmdnDcyFGTyuRHj6NwsDtNwCfRVfqoiRcGmvDRA8U25cPk5XT
-ZYTRzlXOUwEQAAEBAAAAAAAAAAAAAAAA/9j/4AAQSkZJRgABAQEASABIAAD/2wBD
-AAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcp
-LDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy
-MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACMAG4D
-AREAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAABgcEBQACAwEI/8QAQhAAAQIE
-BAIGBgYIBwEAAAAAAQIDAAQFEQYSITFBURMUImFxsQcjMoGRwUJDUmJjchUlNTaC
-odHwFiYzc4OS4bL/xAAZAQADAQEBAAAAAAAAAAAAAAAAAQIDBAX/xAAgEQEBAAID
-AQEBAQEBAAAAAAAAAQIRAyExQRJREyIy/9oADAMBAAIRAxEAPwB2JHaECEjiPGA4
-6GA3kMMgDy8AZAGQAp8XD/Nc5+VP/wAiJT9GeBv3e/5VQ4cEu8M3sAZAGQBFT7Qh
-JSOUBt4DZYww8O0AeQB5cc4AgzNXk5dfRh1Dj1r9Ghab/wAzpE3KQFdiSotTGIph
-4trQFpAFyDwtwjO8mqqYbHeByDQNCD61R0jTGyzcTrQmigyAMsYAyxgCtTNt5hqI
-SUnrKOYgN06yjnCVtnWUc4BtyenmWGVuurSlttJUpR2AGpMGyKbEHpZm3ulapLSW
-GTcIdWm6yOZ1sIj92q0Cf8UVp2Y6b9IOIVtZkkD366xOzkjujFc83mROKZcCjc9M
-kE/1hbV+Yq1VhC3TkUEKvcWNxE6UY3o4xKpueVIuKGRaSoWO5GsXhdXSM59Nhucb
-cbStJFlAEeEa7Q26yj7UPdJ71pv7Qhboedab+0Iexsu2p2ZuD0sJltZom5gkEuaQ
-jldxMPkZuk0gW2E05cetgIvfSJihZY/RcvODKpXr0NntKA4HkCeHdEWrkLBc67fK
-EoF+Khc/CEuMYZn5tYyMFwX0KQRbwtCtkXMbUk4eqBKgpC9eYN4n9xf+Vczh+fYv
-maUoDUHlD/cF47EmlTz0hPtFalsrQsdoGxtx1hs7DpolaTO5JZl7sdHmZPNKbAjx
-Fx7jFY34ys+rcl4/XGL0jbVQmODpgsG2JD/F1UVIVqmRKgcT8YbNcy8qOrqO/ZiL
-6uRLTKAU8WGloF/A3WpgUqjTc8gjOy0Si+2bYQr1C9pAzM469NOuKdUpxxRN766x
-LUXYWw6mYbEw+m9zpeMc8/kdPHh/THp9LaYQAlCR4CMvXRNLASSCbqSOUGha0ekW
-ym2QW8INBRVbCkjUJJ1BbCHCLpcA1SeBiscrEZ4ygLD1XmaFXUNzCypcutSSgnTX
-Q2jbf2OTLH5TvkHGpuVbfTey0hWpvvHRjdxzWdrJiXSraHRi1cZQlVjDhUFGqNgX
-zDaCxAtpjgepRcHFMQvHxaNIzUoG30YF/Cl9JM0sYVW2nNZb6EqI5an5ROXgw9LX
-DEiieniVpBCNLGMuTLUdPHNmzTpdEu2lKUgJHARzW9uqToQy1iBDhpRtaKJ4bFO0
-A+oTygLxKiXxS2WMSqWNFGyzaN8L/wAuXlnY9whWn2qX0SyS2k3bJ5co14/45uXX
-pjYYnOvpcUdcpt/KNazxaVWotys8W1HWwMBX0s0yM8sWyDbTtCK2z0ZNBys0INPO
-thwIsRmEQ0x8XLEzLimhBfazBNvaEJfwtMeU0PYXnCVIOSzicqrm4MK+Fj6XeBmg
-3LuuH2s9o5+V2cRgsz7DashKlHiEi8YadMqwYr9NS4lourSs8FIMVoerxDzTiLg7
-xW4WkWZqkhK9mYm2m1HYKO8IIipyXmFXYeQsDkYiztW+iwxmwheJAyDYrQlV78yY
-34/HNy+jOkUZCqQyEzLbRCbZSNY6OOfXHyW0Y4TXK0lp1ExNt3Uq4+EXU49K3Eja
-ahVS/LTSMmQJhwspuhRc20nUz7dvGIDZmYbWq6ZtKtDteAK1AeW0XElwoG6glRA9
-8JfTkp7MhSOnGoI3MTlLpWNm44YdkhKiYlr3UHLE8zaObO7jswx1dLadROyqkplz
-kSsi6xwiJZb231Z4i081l0zJnnAgIUOg49IL8deWusVlMNdFj/pvsZ0guO0txbg9
-Yi4FuNoz1dKvoPrM1WOtN9Tlm3hm7YNiUjgf75ReEx13U5/rf/MWtPdmzNOMvNhS
-Uq7DgTa45wrZL0NWzsP4ukutYokg3bpFNpzC17gE8PCNuPxy8vq1ammGWg31lQt9
-wxvjLI5rd1IYdMySJdb7pG/RsqV8orsumrs0GHC286+2sbpUyoHygLcQQhpSkHKk
-gnlFMqaOHZdkUI2Zb9k/RETV4+L2ntNijpSEJtk2AhxfwAzbTIdc9UjQn6IgjOg8
-ASlaW1fTQ352J1jhynseljd2X+ixltuYbGZIULcYjTqk6Y9KtMsKUEITpuBBelad
-6SvNT1FI02EOeM/XPqMu+c/RpUR3awo0+OqZZtkWQkCFpNnSfhuiSk3PzFYdZSp6
-XXkaWe5JGngSfjHXwzp53PQfOPFM1Mg7dKoD4x0uQZejxZWzM34OfKFVYIGMr/pw
-AH6seZhxOXoClnCpSQf71gSbmHf2D/CYmrx8XdO/Y6b75YIv4AZ0WcdP3j5xTOl7
-UOtMYkPS3U0U5m1HdQO49x090cvLjJt18Wdup/BfSpglsDhHNvT0ML0ytTWVlCm5
-hKXG1ZshTmze6FO7s8spEalVqeZQ+2uUzIOqFIQRvwsdovxHqdKz6lqz5wHL9pGX
-KbRF3LtpLPE1+ZyIzngLxU7RnlqC7CssZfDDeY3W6OkV4nWO3jx1HmZ5fqlhU05a
-g+k8XFecbRz0aejtIS3M2+2PKFkrBExgi9bB/DHmYIWfpdygs4k+ECThw5rQP4TC
-q8fF1TtaQm/2YS/gAqH+o9+Y+cUyoWxNklaVIzJSi/WVoJ2Psgxjyzrpvw3vtrSZ
-4XzZzkWNDyMcWUehhk7Lpk7Jzhf6wtTLlipIAKx/FBLNaaY49rlpMsWdVzpNtgtO
-/wAItprP+xBNPmUTInFzDnQJUAlpdlFPffv5RGV+M8vfXs9N5gWxYlZypHO8XxY7
-sjDlz1jaaVDFsPsDk2PKO5wTwqKwgmpPH8Q+cWxo09HySG5m/wBseULJeCNjAE1Z
-On0PmYIMi8ZFn0i0NmbeGz+oB+U+cTWmPi6p6gqlAjbLCXPC2xDPJpsnOTa05g1m
-OUfSN9BDt0zk3dF+1XprF9BmGX5Zlhlp3MwpBJUVW1uT7o5+XPVjq4uP1UyFWXIu
-dXfAQ6g+0rYjmIzuP67jWZfnqmXR6tIz8olsrvbTX+sYXCyujDOWLhFNkmLv5la8
-OkNoeulb0HazX2ULLSVZGxcbjwiphazyzkQKMtycfdnHgRlA6FJ5Hj746+HCTtwc
-/JbdHNQ1ZqAyfwx5RpU4+FnUtZ5/T6xXnF7ZaGGBT6t8Wt2h5Qsl4oWK1XrOX8MH
-+ZggsLmUN3UlXdDZG5hz9hC3IxFaY+Leln9Tp/LAv4RnpEqahUxIJPqkErcAO5US
-Nfd5wqWE+oWFZNtmTYlEG6bE35m+scXLv9Xbv4pNPK9hhbt1JbVobpUOELDPR54b
-DDTlTo7pBbK0g7jjGu8cmWssVpMY3qEzLpl0srFhYgA3I+EKYRV5MrHeh0KerlVQ
-/UG1NSvtKSrQqHL3w8spjOk443K9iOj1aVqU3PBgpSQuyUfdT2QR3aCOnj6mnLyz
-vZyUD93mf9sRVGPhbz6gZ18X+tV5xWmWxfgdeZDwtqFfKFkvFVYxWUV5JHFr5wQZ
-eoLHo+m21AmbR/1/9hbT+aNqVTHKdTjLqWFGxFwIVVjNRS1fGdOwpTTJqUJufCbB
-hs6A/ePDw3hKkIGqzj9QemZ15RW46orUfE/KBUTqDVxITjZevkvfSMuTj/U6bcef
-5vZryjrM3LocQpK0LFwRqDHJZ/XXL9jSYpjDuvRI8csJSKaWhBu20gHnYQi1GPI6
-tJulBAWoGyu+KhXwmqa9N0esKbKih9lw5rbf2fIx3Y3fccOWPyvqHB861UsKyr7S
-hZaMqkj6KhoR/fdFbZya6QH8DtPPrdM04CtRVaw4xX6R+FrQ6EmilwJeU4Fm/agt
-2cx0gV3DT1WqImEzCUAIy2y34wbFxBLWO6iUlSsgA3JhaR+rVZW/SJVJ1gyss6WE
-EWWtGi1DlfgPCE0k/oEecU4sklVz3wKQ7WcUyq2VYJT8x84DaS4DjRaX7aNP/YAJ
-sK4lVRpoSk8SZN09le/Rq5+HMRjycf67nrbj5Pz1fDWllNzDCXEKStChdKkm4UOY
-jm18rp3/AB4tnXQQtK2qag2S6G+65gKlJWQhzFs84kdkry+8C0dfF/5cvJ6JMO4w
-qeHWnGpZ31CiFKbUnMkm1r24HbaNWFgrlPSS/NKQkvNt3PaJJ0hzSLL8HWHKoupv
-qzPBxNgRlMOyQsbbe0bEdZnqbUQ1LrbyFN+2qx3hyDLLVJWamweyDoNkxC5jpXrW
-V7QG4lRO1r84DR5hpbqUqSrK4ghST3/0gPTmhwOuIeQLH2VjlASUUh1JSRfXUQGn
-UrGUzhR9ptbinZZau00o3FufcfD+cRlhMl48lxNuk12RrcqJiTdC08Qd0+Mc2WNl
-1XVjlMpuK/EU+mlyz02QCVdlNzbW0TMbbpWVkm6S70+/1t0hpokqvmNySd47ccZJ
-pw223bnKTU4mdbadc6Rp0ELSRsddRDSnq6RhwkXAuFAwGJsLYvn8NzqX2CHWFH1j
-K9ljuPA98BWbG9dqTGJ52Vnqcq7a2LqSrQoObVJ74ueMMuqVSlG+u8Q6HNSiIA8J
-SdYA8NucAQVlUrNlxKFKbXbOEi5B52hBKXMC3qknMRuRDCKqX6W/SDPffNxgDrTl
-zNImumkHXGuYQsix7v6QrJfTls8XFYxBO10s9YASptOWw0BPFXjE44TGqz5LlNVT
-mXGc+MWh6ZZKilRSCU8YA7FG45jSAMaJSgDkbQBd0SsPUxbuUZkKHsnnzh70jLHa
-qHHxiVtV6JvDDjt8YA3ygI4wBrlGf3QBsEjLtAbLDlAG6QIQcrdpR5GGTpYWvAGx
-FlECAPLa35QBooBPSW4C8ASZXVRvyhlX/9mJAk4EEwEIADgWIQT4KAb9ob9bmhsw
-FOfJ/O1spreUVAUCW/AHrgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ
-/O1spreUVJ4nD/9tGS8cg2eUSwd0ExCl0dWsJRdM0mUYh17mXyVNLcvbglIkSdma
-v/Ty3ke533izRN/SkkU8vNthjKAohZmmXlaXrruEyHq2vfXcDg4+C7FJQ+O3PT2B
-S5ft3Ht2GmRpD2lWpeUlJ9BXF2EF5pSnHPOrlTHRUfjBCDU4uuSeKgioSyoc2iWb
-BBaSXyeQAUR+ppM1AYKUlCDxpLbe3nVCOUc+JgJzv+47EqwMyVODwzk7oFO4GMRm
-KTKlctb1ym75oV1tiZi2fL/KA2uAab/RMO0rfxa9HVWnJGvUEDMPlTfs7222zuLB
-55Fzllfx5rQlou+MLBQIV978HRZrDxZesQOOJ4/BwTPgQ42GREf+uf5/SG4Fn3Qh
-NZsvoaePMLN/QQEjM7eqOUzRJRVcdJfRH+LinIFrAqcmbbcp1bvq8LV5lbmlFJLF
-gimvW/shf/6Zu1YsfBhvLWInUCyoOPFa1tASF6qqi1hEOd8tQgNE/H/FSIehmTHT
-74kYPNRm+DzlvrW2JPVl24Nf/SWbOG/IzGBY/pDActTwYqnpXKR7eUt/YcPpmrPi
-kyIKX32U2vTBCE3yvCm0KRzrcSbTJGfVgmlxxqIuOtbeaBtf96m+o5z/xw9ro7Ek
-VZbsx6fPuWuLY/MqeLXl1EuiU6X1sr+skDY8lJeeiRt+Uq5mCZuEgWdM1IhdBBAR
-AgAdFiEE3DhHSHCdJhn/KGchbQyv/dsc/pAFAlvwCAQACgkQbQyv/dsc/pABQACf
-YaUOqzlafrzeGdwHwDleootu0UcAn2adbaKJ79QBtDVPkR77zV801JlXuQINBFvw
-A+gBEACt8AiUTMcyNXwN6kiOLPd+85IPlLwEVyofz8p2QBAxJsqKozlXXpnK7ahC
-RSiHt02EK39WiyZpeY1/2dGmdvyI1vc7ld3814Dveh4nf1GRSpDZ427cxayaclh+
-wRQ8nDWFOQUsMB3He/Z+aO6l/ZNvdVdzRUHda1XvN41nwXUL9FQUn/TLYgHbxa7P
-Yy18ZnNzH/xGSwDgRrqPEAZ8KOpbHEbNyYuYuv6IM8Xmbp8Q6bl2RyBNnrlphksJ
-kLvO6RLHUvvw5uX5bt+u3umoZ+yHUkP13NtQHTyZ8VTCQimkB6OisisOTnV8OjLG
-xtLEF/TjeGFAAoEnc8bQAPvrtONQL19rPkMB0gXYXPBbGw7eWYr3QpuOujUXcz9U
-0JSSEov7cUepdTY8LEYFw8U5WimKY6f/uJUVx/ukNPtuAljJji0cjIGEOX2XGlBV
-Ix/U3vywLBfUFW5hT+75z7UB3yG3Zexo0WSaQxxZ5PHxyPYBK1PvVkH0LvkbxJcr
-rouJJQ66chjRglUbv4lf85/cG1ZLu3Ds0UbuD0gE9sAEwXtfdgDmp/HB7mxwJr1O
-BRbTRv0Okx/lovWXkxt+hX+DXZ1u1qdZUW3zjmge8W7xag3epD21jIjFDODgUfDT
-fgJi2FQq+szpagfPN5j5aIQKHCZf0DLbBD+ZWYQdld5JZs2V5QARAQABiQI2BBgB
-CAAgFiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvwA+gCGwwACgkQyfztbKa3lFTa
-yxAAxQo/9dvOO74J+9XznCYb5iO1B1ksnVegSGVuId45JKXkCkuWvDOkcU8+ma38
-wo3MBoPLpSMCXc/mKQ0p0ntO1tD/Wf4nBBCvseWcsR6RR5Su5jYorm0qZ89IOEPN
-K2W2Z41X6DHyteB1dAyIyexOYoLKD7iWcQzga4/EoUPEwcr8BWWgGLBfRhXsYySz
-F3fQPS7KaemDLGbJfTDZCSqmsZPnlksSvGxEBwUwfCjfY+QHxzWPRFPkuQJJR6YW
-tiZ3z7jBRdRk/R5v2CJZJuGHcPPYQy6j2TYGONojm+ifaq1hz+A0aoy4P9qRW5Nl
-mm6yiqEoJe07DrMLxn3H3ucuOo7DiNWmkkjW8DfhFSd+3pFMSvKGujOJWN27UDEp
-ERWFX50gE15Sq4aPbMPNRejFQ1n75B4jfFQXg6WuwF3kwgHK3Y5T5vTEkbPgce9c
-SyyFWU7EA4DJGnt7/FoaPDTKOWI9WSkmjOSABTBNSaUiMSFA3Wg/T0aS5pETpkv2
-S/GVVX022orAGK8zEY1vr2a24itOAKpQwFRuMjqDCBVgKAsMtlPu8jv3Zm/AMcYM
-sRRnDWJh2TO8bqXXUG/o783fcTE3d1Ff7s4BfmBqpGHigZeehNvu+FshRDYaDrDN
-IS0fTqbsX/JjaCXwU/o2E6G4aE79Ut/IMsCYzItTDh2UmcS5Ag0EW/G8wgEQALBi
-2/A7Ev/92mYi4Gm//IJEKjm2Vc3NcX5LdSyPwdSLlHSRwvzZz7M0VeflcTYqssto
-VPVf4maDtLGbQJn43CLqjvIW/C6jzjfvoZf0gbHpNfKY1ENs5xgE0wd3ZdsqpQC6
-W9Pu+kN31QS9+RUKwiG2bNBIREChL/omqiLhNu3hDbZnB+uSByOk901XVrNmKa8G
-NzXSfJSCt0gP7XU6VpMqjxppA8Y2Vo7jnylbrgVJriTt6jtjDylBBQqmHSOXMT+q
-9kIWDSocKhSFHBMO6LYnAwbMef2kqio5zaKzZAuwis0zjOqKHwW54xL2T7djFav9
-VlgcAYN105iMLUiIl39HLeZnS5pUESOXRUv/qLwiQRvBlWBPIep3+ycM2eK8r5a1
-5EwCgN2nSl3KYjzTOisCmK1nQs+gQ1RMraeBGYEG0uIUvDxfoONTuYkM3dhWq2Xx
-V/OO6yUkfyOlBGUREe1PXAOsP0LtAFJha7kbh7Eg6GGU7gRYh2dG2Ln6Vmx1ldbS
-F3woFYPGNMsQmgEKxwyjKaq0Qhd/sKHrTpPz8PXfGP4dHegExKegS7Yof1VrKBB+
-L8Q8o1Oi8JPCjRp47iga5OYS1Vn3h5a07ajzSAxPsmF0lmF4tYk2MFxSs403ShiE
-BTjN4t6rjmnoQV/b+CuhpmvzxaYr736/jkY7s0I5ABEBAAGJBGwEGAEIACAWIQT4
-KAb9ob9bmhswFOfJ/O1spreUVAUCW/G8wgIbAgJACRDJ/O1spreUVMF0IAQZAQgA
-HRYhBB2wOl45wX3kd77c+/0dTvV/qVkCBQJb8bzCAAoJEP0dTvV/qVkC3tUP/2rR
-VDaSPj9+UYJtHGDfQmYCEqxROm5wGCJbNrUQspLeL8+XrsaUDh1ldNAQtoDqGjRp
-kwjJAS0OZfvCv7pI052NK/KVGaK5Tj2+0lxTAcGbAKoH8E2HWPlERpU9CRLvzvDE
-4GGxw2nw7aobNGbf9d98c9RpZuAul92BOClnpGEU4VzjKUk9IsSjZQVJnggQujxL
-qWWiwfGwVsj2PdgPao/P48cYNl5CACBgY19AAh7WzgJVz/6je/5NLdAAV+E31qSE
-EaZsvTBqrMOtH6iTn1GpJ73FsJ0BYVt9X99bRT0Vi0iWulBuhYfZG4PdCY6fv6uC
-d+6pAC+Y/M9npaLbBHscSlJheTyvfuB7bzYBY+Q87VHSOMuNni7U08FuiILFoF+e
-/ESU/v0Hde44ghiXKSaFO8djxc874KM9UlGWvw9UbmI8Z2uM0kDcrPZ/8tcjXOhp
-PEBib54ab4tKCUCtOmsF9ZiT0hOqYdP9bXW+6OGfCignJ7ABhPpANfx2Sn/28L9l
-PbF1nA5CkHdyo/ku1Z/lNq44yvrB8r0Ljq6s3KS69dUZqqrADeogOdi0/TrghtKU
-DERWGmQagYSzMIvsXoAI56MxXFLriSObmpFLTWq7cr/+Ju3AcaSkrpDSYi3U6vLL
-8NuXPhul1S/+yPwvX6Mk1Zkip9/Wg4SQeiT2R7xj8zMP/RJ8uKbnKpOftY89Kv0Y
-FZ4hE3FeBR3UJvkuPdQYNLQRluzh63Bzc4ClSxB9Ma7fmAEiuFtgEi4HLTMBDOHO
-uVMuWYcgubu9VBlAGLJ++gnKxCAJXEntuB49il8MjMsy+uv/cFCjPG9z/1pmWYrE
-XBNA+vcaOrNTS2IykAbqybcPYbBcN47bm+A4i5yqiahk0q++j4LOW/nf88xXO7xI
-V/4vQgemh7RHgHJOkKfzOPw/Kx3UjV1jA9gEUrusHE4R3Upxh0ZeQW19hUnVlao1
-TxxKEUryrRzckuRfc5ziMWNyJaZsPMkeBEhyY/CizDFPrsSXIAijfu8KFnxCsnaM
-ylFBWOu5FwsKMDXxu0QdwqpL2CM8p+q12z1VruNjpIc8bAc0/YMndjYnxzsqQEMV
-GQIDKWqh/m6v7sqbn65ZQcVAzSAriGcQxCOIoT/TA/J+/4BSk5c8TKlqT8NBT77B
-Z70vMr41mZus1A/ciI8AxgbYwlhuvTehdm74k/c7NSzTxeG3OumTlBR1I18C4AIi
-y4iM3O4H4jvEssWBUzpm3VJG0NvcN/M4YVZHX5yxWQuIFcghzb7sLYddmRvR9B0M
-Xowot//r/sgn43xv54sIvwe9MkCCU6j7ePYUlOUnn+vQ5i7rFN/UPub3V3toI2gg
-DRuKdymWEii1jA9KlmheLTFr
-=r9L+
------END PGP PUBLIC KEY BLOCK-----
diff --git a/nixops/scripts/setup b/nixops/scripts/setup
deleted file mode 100755
index db0f353..0000000
--- a/nixops/scripts/setup
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env bash
-
-set -euo pipefail
-
-if ! which nix 2>/dev/null >/dev/null; then
- cat <<-EOF
- nix is needed, please install it:
- > curl https://nixos.org/nix/install | sh
- (or any other way handled by your distribution)
- EOF
- exit 1
-fi
-
-if [ "${NIX_STORE:-/nix/store}" != "/nix/store" ]; then
- cat <<-EOF
- Nix store outside of /nix/store is not supported
- EOF
- exit 1
-fi
-
-if ! which direnv 2>/dev/null >/dev/null; then
- cat <<-EOF
- direnv is needed, please install it
- EOF
- exit 1
-fi
-
-if [ -z "$NIXOPS_ENV_LOADED" ]; then
- cat <<-EOF
- direnv environment needs to be loaded
- EOF
- exit 1
-fi
-
-if [ "$(git config --get include.path)" != "../.gitconfig" ]; then
- cat <<-EOF
- it is recommended to include the .gitconfig file into (local) git configuration:
- git config --local include.path '../.gitconfig'
- Run this command? [y/N]
- EOF
- read y
- if [ "$y" = "y" -o "$y" = "Y" ]; then
- git config --local include.path '../.gitconfig'
- fi
-fi
-
-for key in public_keys/*; do
- fpr=$(cat "$key" | gpg --import-options show-only --import --with-colons | grep -e "^pub" | cut -d':' -f5)
- gpg --list-key "$fpr" >/dev/null 2>/dev/null && imported=yes || imported=no
- # /usr/share/doc/gnupg/DETAILS field 2
- (cat "$key" | gpg --import-options show-only --import --with-colons |
- grep -E '^pub:' |
- cut -d':' -f2 |
- grep -q '[fu]') && signed=yes || signed=no
- if [ "$signed" = no -o "$imported" = no ] ; then
- echo "The key for $key needs to be imported and signed (a local signature is enough)"
- cat "$key" | gpg --import-options show-only --import
- echo "Continue? [y/N]"
- read y
- if [ "$y" = "y" -o "$y" = "Y" ]; then
- cat "$key" | gpg --import
- gpg --expert --edit-key "$fpr" lsign quit
- else
- echo "Aborting"
- exit 1
- fi
- fi
-done
-
-if nix show-config --json | jq -e '.sandbox.value == "true"' >/dev/null; then
- cat <<-EOF
- There used to be some impure derivations (grep __noChroot), you may need
- sandbox = "relaxed"
- in /etc/nix/nix.conf
- you may also want to add
- keep-outputs = true
- keep-derivations = true
- to prevent garbage collector from deleting build dependencies (they take a lot of time to build)
- and
- allow-import-from-derivation = false
- as an attempt to avoid having build-time derivations (doesn’t work for all packages)
- press key to continue
- EOF
- read y
-fi
-
-cat <<-EOF
- All set up.
- Please make sure you’re using make commands when deploying
- EOF
diff --git a/nixops/scripts/with_env b/nixops/scripts/with_env
deleted file mode 100755
index c570ccf..0000000
--- a/nixops/scripts/with_env
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env bash
-
-if [ -z "$NIXOPS_ENV_LOADED" ]; then
- echo "Please load the environment with direnv"
- exit 1;
-fi
-
-umask 0077
-TEMP=$(mktemp -d /tmp/XXXXXX-nixops-files)
-chmod go-rwx $TEMP
-
-finish() {
- rm -rf "$TEMP"
-}
-
-trap finish EXIT
-
-sops -d secrets/vars.yml | yq -r .ssl_keys.nix_repository > $TEMP/id_ed25519
-
-export SSH_IDENTITY_FILE="$TEMP/id_ed25519"
-
-"$@"
diff --git a/nixops/secrets b/nixops/secrets
deleted file mode 160000
index 8c6277e..0000000
--- a/nixops/secrets
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 8c6277e3c2762e13d5f1f2ac06d2e815e02fab82
diff --git a/overlays/bitlbee-discord/default.nix b/overlays/bitlbee-discord/default.nix
deleted file mode 100644
index bf8e5db..0000000
--- a/overlays/bitlbee-discord/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-self: super: {
- bitlbee-discord = super.bitlbee-discord.overrideAttrs(old: rec {
- version = "master-3061edd";
- name = "bitlbee-discord-${version}";
- src = self.fetchFromGitHub {
- rev = "master";
- owner = "sm00th";
- repo = "bitlbee-discord";
- sha256 = "07gjd4b0g09888gpaqwcjafr8m292y2qz0gzharxjh1k2jbs88g3";
- };
- });
-}
diff --git a/overlays/bitlbee/bitlbee_long_nicks.patch b/overlays/bitlbee/bitlbee_long_nicks.patch
deleted file mode 100644
index 70be092..0000000
--- a/overlays/bitlbee/bitlbee_long_nicks.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-diff --git a/bitlbee.h b/bitlbee.h
-index 17ab2979..5858277e 100644
---- a/bitlbee.h
-+++ b/bitlbee.h
-@@ -121,7 +121,7 @@ extern "C" {
- #define CONTROL_TOPIC "Welcome to the control channel. Type \2help\2 for help information."
- #define IRCD_INFO PACKAGE " "
-
--#define MAX_NICK_LENGTH 24
-+#define MAX_NICK_LENGTH 99
-
- #define HELP_FILE VARDIR "help.txt"
- #define CONF_FILE_DEF ETCDIR "bitlbee.conf"
-diff --git a/tests/check_nick.c b/tests/check_nick.c
-index ca5e5111..909fdcc9 100644
---- a/tests/check_nick.c
-+++ b/tests/check_nick.c
-@@ -11,16 +11,16 @@
- START_TEST(test_nick_strip){
- int i;
- const char *get[] = { "test:", "test", "test\n",
-- "thisisaveryveryveryverylongnick",
-- "thisisave:ryveryveryverylongnick",
-+ "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnick",
-+ "thisis:averyveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnick",
- "t::::est",
- "test123",
- "123test",
- "123",
- NULL };
- const char *expected[] = { "test", "test", "test",
-- "thisisaveryveryveryveryl",
-- "thisisaveryveryveryveryl",
-+ "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryve",
-+ "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryve",
- "test",
- "test123",
- "_123test",
-@@ -28,7 +28,7 @@ START_TEST(test_nick_strip){
- NULL };
-
- for (i = 0; get[i]; i++) {
-- char copy[60];
-+ char copy[260];
- strcpy(copy, get[i]);
- nick_strip(NULL, copy);
- fail_unless(strcmp(copy, expected[i]) == 0,
-@@ -53,7 +53,7 @@ END_TEST
-
- START_TEST(test_nick_ok_notok)
- {
-- const char *nicks[] = { "thisisaveryveryveryveryveryveryverylongnick",
-+ const char *nicks[] = { "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnick",
- "\nillegalchar", "", "nick%", "123test", NULL };
- int i;
-
diff --git a/overlays/bitlbee/default.nix b/overlays/bitlbee/default.nix
deleted file mode 100644
index 5183d01..0000000
--- a/overlays/bitlbee/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-self: super: {
- bitlbee = super.bitlbee.overrideAttrs(old: {
- patches = (old.patches or []) ++ [ ./bitlbee_long_nicks.patch ];
- });
-}
diff --git a/overlays/bonfire/default.nix b/overlays/bonfire/default.nix
deleted file mode 100644
index 6dc1034..0000000
--- a/overlays/bonfire/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-self: super: {
- bonfire = let
- click = self.python3Packages.click.overridePythonAttrs(old: rec {
- version = "6.7";
- src = self.python3Packages.fetchPypi {
- pname = "click";
- inherit version;
- sha256 = "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi";
- };
- postPatch = ''
- substituteInPlace click/_unicodefun.py --replace "'locale'" "'${self.locale}/bin/locale'"
- '';
- doCheck = false;
- });
- keyring = self.python3Packages.keyring.overridePythonAttrs(old: rec {
- version = "20.0.1";
- src = self.python3Packages.fetchPypi {
- pname = "keyring";
- inherit version;
- sha256 = "963bfa7f090269d30bdc5e25589e5fd9dad2cf2a7c6f176a7f2386910e5d0d8d";
- };
- });
- in
- super.bonfire.overridePythonAttrs(old: {
- version = "0.0.8";
- src = self.fetchFromGitHub {
- owner = "blue-yonder";
- repo = "bonfire";
- rev = "0a0f18469d484aba6871fa7421bbb2c00ccefcb0";
- sha256 = "1y2r537ibghhmk6jngw0zwvh1vn2bihqcvji50ffh1j0qc6q3x6x";
- };
- postPatch = "";
- propagatedBuildInputs = self.lib.subtractLists [ self.python3Packages.click self.python3Packages.keyring ] old.propagatedBuildInputs ++ [ click keyring ];
- meta.broken = false;
- });
-}
diff --git a/overlays/bugwarrior/default.nix b/overlays/bugwarrior/default.nix
deleted file mode 100644
index 2b25985..0000000
--- a/overlays/bugwarrior/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-self: super: {
- bugwarrior = super.python3Packages.bugwarrior.overridePythonAttrs(old: rec {
- patches = old.patches or [] ++ [ ./mantisbt.patch ];
- });
-}
diff --git a/overlays/bugwarrior/mantisbt.patch b/overlays/bugwarrior/mantisbt.patch
deleted file mode 100644
index 85e5af1..0000000
--- a/overlays/bugwarrior/mantisbt.patch
+++ /dev/null
@@ -1,379 +0,0 @@
-diff --git a/bugwarrior/services/mantisbt.py b/bugwarrior/services/mantisbt.py
-new file mode 100644
-index 0000000..e54af0d
---- /dev/null
-+++ b/bugwarrior/services/mantisbt.py
-@@ -0,0 +1,361 @@
-+from builtins import filter
-+import re
-+import six
-+
-+import requests
-+from jinja2 import Template
-+
-+from bugwarrior.config import asbool, aslist, die
-+from bugwarrior.services import IssueService, Issue, ServiceClient
-+
-+import logging
-+log = logging.getLogger(__name__)
-+
-+
-+class MantisbtClient(ServiceClient):
-+ def __init__(self, host, token):
-+ self.host = host
-+ self.session = requests.Session()
-+ self.session.headers['Authorization'] = token
-+
-+ def _api_url(self, path, **context):
-+ """ Build the full url to the API endpoint """
-+ baseurl = "https://{}/api/rest".format(self.host)
-+ return baseurl + path.format(**context)
-+
-+ def get_user(self):
-+ return self.json_response(self.session.get(self._api_url("/users/me")))
-+
-+ def get_projects(self):
-+ return self._getter(self._api_url("/projects"), subkey="projects")
-+
-+ def get_issues(self):
-+ url = self._api_url("/issues?page_size=50")
-+ return self._getter(url, page_size=50, subkey="issues")
-+
-+ def get_assigned_issues(self):
-+ """ Returns all issues assigned to authenticated user.
-+ """
-+ url = self._api_url("/issues?page_size=50&filter_id=assigned")
-+ return self._getter(url, page_size=50, subkey="issues")
-+
-+ def get_monitored_issues(self):
-+ """ Returns all issues monitored by authenticated user.
-+ """
-+ url = self._api_url("/issues?page_size=50&filter_id=monitored")
-+ return self._getter(url, page_size=50, subkey="issues")
-+
-+ def get_reported_issues(self):
-+ """ Returns all issues reported by authenticated user.
-+ """
-+ url = self._api_url("/issues?page_size=50&filter_id=reported")
-+ return self._getter(url, page_size=50, subkey="issues")
-+
-+ def _getter(self, url, page_size=None, subkey=None):
-+ """ Pagination utility. Obnoxious. """
-+
-+ results = []
-+ link = dict(next=url)
-+ page_number = 1
-+
-+ while 'next' in link:
-+ if page_size is not None:
-+ response = self.session.get(link['next'] + "&page=" + str(page_number))
-+ else:
-+ response = self.session.get(link['next'])
-+
-+ json_res = self.json_response(response)
-+
-+ if subkey is not None:
-+ json_res = json_res[subkey]
-+
-+ results += json_res
-+
-+ if page_size is not None and len(json_res) == page_size:
-+ page_number += 1
-+ else:
-+ break
-+
-+ return results
-+
-+class MantisbtIssue(Issue):
-+ TITLE = 'mantisbttitle'
-+ BODY = 'mantisbtbody'
-+ CREATED_AT = 'mantisbtcreatedon'
-+ UPDATED_AT = 'mantisbtupdatedat'
-+ CLOSED_AT = 'mantisbtclosedon'
-+ URL = 'mantisbturl'
-+ PROJECT = 'mantisbtproject'
-+ NUMBER = 'mantisbtnumber'
-+ USER = 'mantisbtuser'
-+ CATEGORY = 'mantisbtcategory'
-+ STATE = 'mantisbtstate'
-+
-+ UDAS = {
-+ TITLE: {
-+ 'type': 'string',
-+ 'label': 'Mantisbt Title',
-+ },
-+ BODY: {
-+ 'type': 'string',
-+ 'label': 'Mantisbt Body',
-+ },
-+ CREATED_AT: {
-+ 'type': 'date',
-+ 'label': 'Mantisbt Created',
-+ },
-+ UPDATED_AT: {
-+ 'type': 'date',
-+ 'label': 'Mantisbt Updated',
-+ },
-+ CLOSED_AT: {
-+ 'type': 'date',
-+ 'label': 'Mantisbt Closed',
-+ },
-+ PROJECT: {
-+ 'type': 'string',
-+ 'label': 'Mantisbt Project',
-+ },
-+ URL: {
-+ 'type': 'string',
-+ 'label': 'Mantisbt URL',
-+ },
-+ NUMBER: {
-+ 'type': 'numeric',
-+ 'label': 'Mantisbt Issue #',
-+ },
-+ USER: {
-+ 'type': 'string',
-+ 'label': 'Mantisbt User',
-+ },
-+ CATEGORY: {
-+ 'type': 'string',
-+ 'label': 'Mantisbt Category',
-+ },
-+ STATE: {
-+ 'type': 'string',
-+ 'label': 'Mantisbt State',
-+ }
-+ }
-+ UNIQUE_KEY = (URL, NUMBER, )
-+
-+ def _normalize_tag(self, label):
-+ return re.sub(r'[^a-zA-Z0-9]', '_', label)
-+
-+ def to_taskwarrior(self):
-+ body = self.record.get('description')
-+ if body:
-+ body = body.replace('\r\n', '\n')
-+
-+ created = self.parse_date(self.record.get('created_at'))
-+ updated = self.parse_date(self.record.get('updated_at'))
-+ closed_date = None
-+ if self.record["status"]["name"] in ["closed", "resolved"]:
-+ for history in self.record.get("history", []):
-+ if history.get("field", {}).get("name", "") == "status"\
-+ and history.get("new_value", {}).get("name", "") in ["closed", "resolved"]:
-+ closed_date = history["created_at"]
-+ closed = self.parse_date(closed_date)
-+
-+ return {
-+ 'project': self.record['project']['name'],
-+ 'priority': self.origin['default_priority'],
-+ 'annotations': self.get_annotations(),
-+ 'tags': self.get_tags(),
-+ 'entry': created,
-+ 'end': closed,
-+
-+ self.TITLE: self.record.get('summary'),
-+ self.BODY: body,
-+ self.CREATED_AT: created,
-+ self.UPDATED_AT: updated,
-+ self.CLOSED_AT: closed,
-+ self.URL: self.get_url(),
-+ self.PROJECT: self.record['project'].get('name'),
-+ self.NUMBER: self.record['id'],
-+ self.USER: self.record['reporter'].get('name'),
-+ self.CATEGORY: self.record['category'].get('name'),
-+ self.STATE: self.record['status'].get('label'),
-+ }
-+
-+ def get_url(self):
-+ return "https://{}view.php?id={}".format(self.extra['host'], self.record["id"])
-+
-+ def get_annotations(self):
-+ annotations = []
-+
-+ context = self.record.copy()
-+ annotation_template = Template(self.origin['annotation_template'])
-+
-+ for annotation_dict in self.record.get('notes', []):
-+ context.update({
-+ 'text': annotation_dict['text'],
-+ 'date': annotation_dict['created_at'],
-+ 'author': annotation_dict['reporter'].get('name', 'unknown'),
-+ 'view': annotation_dict['view_state']['label'],
-+ })
-+ annotations.append(
-+ annotation_template.render(context)
-+ )
-+ return annotations
-+
-+ def get_tags(self):
-+ tags = []
-+
-+ context = self.record.copy()
-+ tag_template = Template(self.origin['tag_template'])
-+
-+ for tag_dict in self.record.get('tags', []):
-+ context.update({
-+ 'tag': self._normalize_tag(tag_dict['name'])
-+ })
-+ tags.append(
-+ tag_template.render(context)
-+ )
-+
-+ return tags
-+
-+ def get_default_description(self):
-+ return self.build_default_description(
-+ title=self.record['summary'],
-+ url=self.get_processed_url(self.get_url()),
-+ number=self.record['id'],
-+ )
-+
-+
-+class MantisbtService(IssueService):
-+ ISSUE_CLASS = MantisbtIssue
-+ CONFIG_PREFIX = 'mantisbt'
-+
-+ def __init__(self, *args, **kw):
-+ super(MantisbtService, self).__init__(*args, **kw)
-+
-+ self.host = self.config.get('host', 'www.mantisbt.org/bugs/')
-+
-+ token = self.get_password('token')
-+
-+ self.client = MantisbtClient(self.host, token)
-+ self.user = None
-+
-+ self.exclude_projects = self.config.get('exclude_projects', [], aslist)
-+ self.include_projects = self.config.get('include_projects', [], aslist)
-+
-+ self.involved_issues = self.config.get(
-+ 'involved_issues', default=True, to_type=asbool
-+ )
-+ self.assigned_issues = self.config.get(
-+ 'assigned_issues', default=False, to_type=asbool
-+ )
-+ self.monitored_issues = self.config.get(
-+ 'monitored_issues', default=False, to_type=asbool
-+ )
-+ self.reported_issues = self.config.get(
-+ 'reported_issues', default=False, to_type=asbool
-+ )
-+ self.tag_template = self.config.get(
-+ 'tag_template', default='{{tag}}', to_type=six.text_type
-+ )
-+ self.annotation_template = self.config.get(
-+ 'annotation_template', default='{{date}} {{author}} ({{view}}): {{text}}', to_type=six.text_type
-+ )
-+
-+ def get_service_metadata(self):
-+ return {
-+ 'tag_template': self.tag_template,
-+ 'annotation_template': self.annotation_template,
-+ }
-+
-+ def filter_involved_issues(self, issue):
-+ _, issue = issue
-+ user = self.client.get_user()
-+ uid = user["id"]
-+ if issue["reporter"]["id"] != uid and \
-+ issue.get("handler", {}).get("id") != uid and \
-+ all([ x.get("user", {}).get("id") != uid for x in issue.get("history", [])]) and \
-+ all([ x.get("user", {}).get("id") != uid for x in issue.get("monitors", [])]):
-+ return False
-+ return self.filter_project_name(issue["project"]["name"])
-+
-+ def filter_issues(self, issue):
-+ _, issue = issue
-+ return self.filter_project_name(issue["project"]["name"])
-+
-+ def filter_project_name(self, name):
-+ if self.exclude_projects:
-+ if name in self.exclude_projects:
-+ return False
-+
-+ if self.include_projects:
-+ if name in self.include_projects:
-+ return True
-+ else:
-+ return False
-+
-+ return True
-+
-+ @staticmethod
-+ def get_keyring_service(service_config):
-+ host = service_config.get('host', 'www.mantisbt.org/bugs/')
-+ username = service_config.get('username', default='nousername')
-+ return "mantisbt://{username}@{host}".format(username=username,
-+ host=host)
-+
-+ @staticmethod
-+ def to_issue_dict(issues):
-+ return { i['id']: i for i in issues }
-+
-+ def get_owner(self, issue):
-+ return issue.get("handler", {}).get("name")
-+
-+ def get_author(self, issue):
-+ return issue.get("reporter", {}).get("name")
-+
-+ def issues(self):
-+ issues = {}
-+ is_limited = self.assigned_issues or self.monitored_issues or self.reported_issues
-+
-+ if self.assigned_issues:
-+ issues.update(
-+ filter(self.filter_issues, self.to_issue_dict(self.client.get_assigned_issues()).items())
-+ )
-+ if self.monitored_issues:
-+ issues.update(
-+ filter(self.filter_issues, self.to_issue_dict(self.client.get_monitored_issues()).items())
-+ )
-+ if self.reported_issues:
-+ issues.update(
-+ filter(self.filter_issues, self.to_issue_dict(self.client.get_reported_issues()).items())
-+ )
-+
-+ if not is_limited:
-+ all_issues = self.to_issue_dict(self.client.get_issues())
-+ if self.involved_issues:
-+ issues.update(
-+ filter(self.filter_involved_issues, all_issues.items())
-+ )
-+ else:
-+ issues.update(
-+ filter(self.filter_issues, all_issues.items())
-+ )
-+
-+ log.debug(" Found %i issues.", len(issues))
-+ if not is_limited:
-+ issues = list(filter(self.include, issues.values()))
-+ else:
-+ issues = list(issues.values())
-+ log.debug(" Pruned down to %i issues.", len(issues))
-+
-+ for issue in issues:
-+ issue_obj = self.get_issue_for_record(issue)
-+ extra = {
-+ 'host': self.host
-+ }
-+ issue_obj.update_extra(extra)
-+ yield issue_obj
-+
-+ @classmethod
-+ def validate_config(cls, service_config, target):
-+ if 'token' not in service_config:
-+ die("[%s] has no 'mantisbt.token'" % target)
-+
-+ super(MantisbtService, cls).validate_config(service_config, target)
-diff --git a/setup.py b/setup.py
-index d6d957a..665e36e 100644
---- a/setup.py
-+++ b/setup.py
-@@ -80,6 +80,7 @@ setup(name='bugwarrior',
- activecollab2=bugwarrior.services.activecollab2:ActiveCollab2Service
- activecollab=bugwarrior.services.activecollab:ActiveCollabService
- jira=bugwarrior.services.jira:JiraService
-+ mantisbt=bugwarrior.services.mantisbt:MantisbtService
- megaplan=bugwarrior.services.megaplan:MegaplanService
- phabricator=bugwarrior.services.phab:PhabricatorService
- versionone=bugwarrior.services.versionone:VersionOneService
diff --git a/overlays/bundix/default.nix b/overlays/bundix/default.nix
deleted file mode 100644
index 6c4046c..0000000
--- a/overlays/bundix/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-self: super: {
- bundix = super.bundix.overrideAttrs (old: {
- preBuild = (old.preBuild or "") + ''
- sed -i -e "/case obj/a\ when nil\n nil" lib/bundix/nixer.rb
- '';
- });
-}
diff --git a/overlays/databases/mysql/default.nix b/overlays/databases/mysql/default.nix
deleted file mode 100644
index f9e5791..0000000
--- a/overlays/databases/mysql/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-self: super: rec {
- mariadb_pam = super.mariadb.overrideAttrs(old: {
- cmakeFlags = old.cmakeFlags ++ [ "-DWITH_AUTHENTICATION_PAM=ON" ];
- buildInputs = old.buildInputs ++ [ self.pam ];
- outputs = old.outputs ++ [ "dev" ];
- postInstall = ''
- mkdir -p $dev $dev/lib $dev/share
- cp -a $out/include $dev
- cp -a $out/lib/{libmariadbclient.a,libmysqlclient.a,libmysqlclient_r.a,libmysqlservices.a} $dev/lib
- cp -a $out/lib/pkgconfig $dev/lib
- cp -a $out/share/aclocal $dev/share
- '' + old.postInstall;
- });
- # This patched version includes C headers from the server part (see
- # above). It seems to be required to build pam support in clients.
- libmysqlclient_pam = super.libmysqlclient.overrideAttrs(old: {
- prePatch = old.prePatch or "" + ''
- sed -i -e '/define INCLUDE/s|"$| -I@CMAKE_SYSROOT@@CMAKE_INSTALL_PREFIX@/@INSTALL_INCLUDEDIR@/mysql/server -I@CMAKE_SYSROOT@@CMAKE_INSTALL_PREFIX@/@INSTALL_INCLUDEDIR@/mysql/server/private"|' mariadb_config/mariadb_config.c.in
- '';
- postInstall = old.postInstall or "" + ''
- cp -a ${mariadb_pam.dev}/include/* $out/include/mariadb
- '';
- });
-}
diff --git a/overlays/databases/postgresql/default.nix b/overlays/databases/postgresql/default.nix
deleted file mode 100644
index 9ada29c..0000000
--- a/overlays/databases/postgresql/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-self: super: rec {
- postgresql_pam = super.postgresql_11.overrideAttrs(old: {
- # datadir in /var/lib/postgresql is named after psqlSchema
- passthru = old.passthru // { psqlSchema = "11.0"; };
- configureFlags = old.configureFlags ++ [ "--with-pam" ];
- buildInputs = (old.buildInputs or []) ++ [ self.pam ];
- });
-}
diff --git a/overlays/default.nix b/overlays/default.nix
deleted file mode 100644
index bdc99d2..0000000
--- a/overlays/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-let
- flakeCompat = import ../lib/flake-compat.nix;
- flakes = builtins.foldl' (a: b: a // b) {} (map (n: (flakeCompat n).overlays) [
- ../flakes/backports
- ../flakes/openarc
- ../flakes/opendmarc
- ../flakes/peertube
- ../flakes/private/peertube
- ]);
-in flakes // {
- mylibs = self: super: { mylibs = import ../lib { pkgs = self; }; };
- mypkgs = self: super: import ../pkgs { pkgs = self; };
-
- bitlbee = import ./bitlbee;
- bitlbee-discord = import ./bitlbee-discord;
- bonfire = import ./bonfire;
- bundix = import ./bundix;
- bugwarrior = import ./bugwarrior;
- dwm = import ./dwm;
- elinks = import ./elinks;
- gitweb = import ./gitweb;
- gitolite = import ./gitolite;
- goaccess = import ./goaccess;
- kanboard = import ./kanboard;
- ledger = import ./ledger;
- lesspipe = import ./lesspipe;
- mysql = import ./databases/mysql;
- neomutt = import ./neomutt;
- nixops = import ./nixops;
- pass = import ./pass;
- pelican = import ./pelican;
- php-packages = import ./php-packages;
- postfix = import ./postfix;
- postgresql = import ./databases/postgresql;
- procps-ng = import ./procps-ng;
- sc-im = import ./sc-im;
- shaarli = import ./shaarli;
- slrn = import ./slrn;
- taskwarrior = import ./taskwarrior;
- vcsh = import ./vcsh;
- weechat = import ./weechat;
- ympd = import ./ympd;
- doing = import ./doing;
- khal = import ./khal;
- nix-direnv = import ./nix-direnv;
- morph = import ./morph;
-}
-// import ./python-packages
diff --git a/overlays/doing/default.nix b/overlays/doing/default.nix
deleted file mode 100644
index 7f95fb6..0000000
--- a/overlays/doing/default.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-self: super: {
- defaultGemConfig = super.defaultGemConfig // {
- doing = attrs: {
- postInstall = ''
- installPath=$(cat $out/nix-support/gem-meta/install-path)
- sed -i $installPath/lib/doing/wwid.rb -e "/Create a backup copy for the undo command/ {n;d}"
- '';
- };
- };
-}
diff --git a/overlays/dwm/default.nix b/overlays/dwm/default.nix
deleted file mode 100644
index 96ed3ff..0000000
--- a/overlays/dwm/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-self: super: {
- dwm = super.dwm.overrideAttrs(old: rec {
- postPatch = ''
- cp ${./dwm_config.h} ./config.h
- '';
- });
-}
diff --git a/overlays/dwm/dwm_config.h b/overlays/dwm/dwm_config.h
deleted file mode 100644
index b1587e8..0000000
--- a/overlays/dwm/dwm_config.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/* See LICENSE file for copyright and license details. */
-
-/* appearance */
-static const unsigned int borderpx = 1; /* border pixel of windows */
-static const unsigned int snap = 32; /* snap pixel */
-static const int showbar = 1; /* 0 means no bar */
-static const int topbar = 1; /* 0 means bottom bar */
-static const char *fonts[] = { "monospace:size=10" };
-static const char dmenufont[] = "monospace:size=10";
-static const char col_gray1[] = "#222222";
-static const char col_gray2[] = "#444444";
-static const char col_gray3[] = "#bbbbbb";
-static const char col_gray4[] = "#eeeeee";
-static const char col_cyan[] = "#005577";
-static const char *colors[][3] = {
- /* fg bg border */
- [SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
- [SchemeSel] = { col_gray4, col_cyan, col_cyan },
-};
-
-/* tagging */
-static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
-
-static const Rule rules[] = {
- /* xprop(1):
- * WM_CLASS(STRING) = instance, class
- * WM_NAME(STRING) = title
- */
- /* class instance title tags mask isfloating monitor */
- { "Nextcloud", NULL, NULL, 9 << 8, 0, -1 },
-};
-
-/* layout(s) */
-static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
-static const int nmaster = 1; /* number of clients in master area */
-static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
-
-static const Layout layouts[] = {
- /* symbol arrange function */
- { "[M]", monocle }, /* first entry is default */
- { "[]=", tile },
- { "><>", NULL }, /* no layout function means floating behavior */
-};
-
-/* key definitions */
-#define MODKEY Mod1Mask
-#define TAGKEYS(KEY,TAG) \
- { MODKEY, KEY, view, {.ui = 1 << TAG} }, \
- { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
- { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
- { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
-
-/* helper for spawning shell commands in the pre dwm-5.0 fashion */
-#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
-
-/* commands */
-static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
-static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
-static const char *termcmd[] = { "st", NULL };
-
-static Key keys[] = {
- /* modifier key function argument */
- { MODKEY, XK_p, spawn, {.v = dmenucmd } },
- { MODKEY, XK_t, spawn, {.v = termcmd } },
- { MODKEY, XK_Tab, view, {0} },
- { MODKEY|ShiftMask, XK_c, killclient, {0} },
- { MODKEY, XK_j, focusstack, {.i = +1 } },
- { MODKEY, XK_k, focusstack, {.i = -1 } },
- { MODKEY, XK_Return, zoom, {0} },
- TAGKEYS( XK_1, 0)
- TAGKEYS( XK_2, 1)
- TAGKEYS( XK_3, 2)
- TAGKEYS( XK_4, 3)
- TAGKEYS( XK_5, 4)
- TAGKEYS( XK_6, 5)
- TAGKEYS( XK_7, 6)
- TAGKEYS( XK_8, 7)
- TAGKEYS( XK_9, 8)
- { MODKEY|ShiftMask, XK_q, quit, {0} },
-};
-
-/* button definitions */
-/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
-static Button buttons[] = {
- /* click event mask button function argument */
- { ClkLtSymbol, 0, Button1, setlayout, {0} },
- { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
- { ClkWinTitle, 0, Button2, zoom, {0} },
- { ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
- { ClkClientWin, MODKEY, Button1, movemouse, {0} },
- { ClkClientWin, MODKEY, Button2, togglefloating, {0} },
- { ClkClientWin, MODKEY, Button3, resizemouse, {0} },
- { ClkTagBar, 0, Button1, view, {0} },
- { ClkTagBar, 0, Button3, toggleview, {0} },
- { ClkTagBar, MODKEY, Button1, tag, {0} },
- { ClkTagBar, MODKEY, Button3, toggletag, {0} },
-};
-
diff --git a/overlays/elinks/default.nix b/overlays/elinks/default.nix
deleted file mode 100644
index 1744dc0..0000000
--- a/overlays/elinks/default.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-self: super: {
- elinks = super.elinks.overrideAttrs (old:
- self.mylibs.fetchedGithub ./elinks.json // rec {
- preConfigure = ''sh autogen.sh'';
- buildInputs = old.buildInputs ++ (with self; [ gettext automake autoconf ]);
- configureFlags = [
- "--disable-smb" "--without-x" "--enable-cgi"
- "--enable-leds" "--enable-256-colors"
- "--enable-html-highlight" "--with-zlib"
- ];
- patches = [];
- }
- );
-}
diff --git a/overlays/elinks/elinks.json b/overlays/elinks/elinks.json
deleted file mode 100644
index ea13b1f..0000000
--- a/overlays/elinks/elinks.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "f86be65-master",
- "meta": {
- "name": "elinks",
- "url": "https://github.com/nabetaro/elinks",
- "branch": "master"
- },
- "github": {
- "owner": "nabetaro",
- "repo": "elinks",
- "rev": "f86be659718c0cd0a67f88b42f07044c23d0d028",
- "sha256": "1jxb7xgawcjkb3gw4gqyw26g02709wwdbhyczfckh3l4njxhy14m",
- "fetchSubmodules": true
- }
-}
diff --git a/overlays/gitolite/default.nix b/overlays/gitolite/default.nix
deleted file mode 100644
index 7f8f007..0000000
--- a/overlays/gitolite/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-self: super: {
- gitolite = super.gitolite.overrideAttrs(old: {
- postPatch = old.postPatch + ''
- sed -i -e "s@/bin/rm@rm@" src/commands/sskm
- cp ${./invite} src/commands/invite
- '';
- });
-}
diff --git a/overlays/gitolite/invite b/overlays/gitolite/invite
deleted file mode 100755
index 3cc2dbd..0000000
--- a/overlays/gitolite/invite
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-
-use lib $ENV{GL_LIBDIR};
-use Gitolite::Rc;
-use Gitolite::Common;
-
-=for usage
-Please see usage at https://www.immae.eu/docs/forge-logicielle/gitolite.html#inviter-des-collaborateurs
-=cut
-
-usage() if @ARGV and ($ARGV[0] eq '-h' or $ARGV[0] eq '--help');
-
-my $rb = $rc{GL_REPO_BASE};
-my $ab = $rc{GL_ADMIN_BASE};
-# get to the keydir
-_chdir("$ab/keydir");
-
-# save arguments for later
-my $operation = shift || 'list';
-my $invitekeyid = shift || '';
-$invitekeyid and $invitekeyid !~ /^[-0-9a-z_]+@[-0-9a-z_]+$/i and die "invalid keyid $invitekeyid\n";
-my ($invited, $keyid) = split /@/, $invitekeyid;
-
-# get the actual userid and keytype
-my $gl_user = $ENV{GL_USER};
-die "This function is reserved for actual users" if $gl_user =~ s/-invite-(.*)$//;
-
-# ----
-# first collect the keys
-
-my ( @invited_keys );
-
-for my $pubkey (`find . -type f -name "*.pub" | sort`) {
- chomp($pubkey);
- $pubkey =~ s(^./)(); # artifact of the find command
-
- my $user = $pubkey;
- $user =~ s(.*/)(); # foo/bar/baz.pub -> baz.pub
- $user =~ s/(\@[^.]+)?\.pub$//; # baz.pub, baz@home.pub -> baz
-
- if ( $user =~ m(^(zzz-marked-for-...-)?$gl_user-invite-) ) {
- push @invited_keys, $pubkey;
- }
-}
-
-# ----
-# list mode; just do it and exit
-sub print_keylist {
- my ( $message, @list ) = @_;
- return unless @list;
- print "== $message ==\n";
- my $count = 1;
- for (@list) {
- my $fp = fingerprint($_);
- s/(zzz-marked-for-...-)?$gl_user-invite-//g;
- s/\.pub$//;
- s(.*/)();
- print $count++ . ": $fp : $_\n";
- }
-}
-if ( $operation eq 'list' ) {
- print "you have the following invited keys:\n";
- print_keylist( "keys for invited persons", @invited_keys );
- print "\n\n";
- exit;
-}
-
-# ----
-# please see docs for details on how a user interacts with this
-
-die "valid operations: add, del\n" unless $operation =~ /^(add|del)$/;
-
-if ( $operation eq 'add' ) {
- print STDERR "please supply the new key on STDIN. (I recommend you
- don't try to do this interactively, but use a pipe)\n";
- kf_add( $gl_user, $invited, $keyid, safe_stdin() );
-} elsif ( $operation eq 'del' ) {
- kf_del( $gl_user, $invited, $keyid );
-}
-
-exit;
-
-# ----
-
-# make a temp clone and switch to it
-our $TEMPDIR;
-BEGIN { $TEMPDIR = `mktemp -d -t tmp.XXXXXXXXXX`; }
-END { `rm -rf $TEMPDIR`; }
-
-sub cd_temp_clone {
- chomp($TEMPDIR);
- hushed_git( "clone", "$rb/gitolite-admin.git", "$TEMPDIR" );
- chdir($TEMPDIR);
- my $hostname = `hostname`; chomp($hostname);
- hushed_git( "config", "--get", "user.email" ) and hushed_git( "config", "user.email", $ENV{USER} . "@" . $hostname );
- hushed_git( "config", "--get", "user.name" ) and hushed_git( "config", "user.name", "$ENV{USER} on $hostname" );
-}
-
-sub fingerprint {
- my ($fp, $output) = ssh_fingerprint_file(shift);
- # Do not print the output of $output to an untrusted destination.
- die "does not seem to be a valid pubkey\n" unless $fp;
- return $fp;
-}
-
-sub safe_stdin {
- # read one line from STDIN
- my $data;
- my $ret = read STDIN, $data, 4096;
- # current pubkeys are approx 400 bytes so we go a little overboard
- die "could not read pubkey data" . ( defined($ret) ? "" : ": $!" ) . "\n" unless $ret;
- die "pubkey data seems to have more than one line\n" if $data =~ /\n./;
- return $data;
-}
-
-sub hushed_git {
- local (*STDOUT) = \*STDOUT;
- local (*STDERR) = \*STDERR;
- open( STDOUT, ">", "/dev/null" );
- open( STDERR, ">", "/dev/null" );
- system( "git", @_ );
-}
-
-sub highlander {
- # there can be only one
- my ( $keyid, $die_if_empty, @a ) = @_;
- # too many?
- if ( @a > 1 ) {
- print STDERR "
-more than one key satisfies this condition, and I can't deal with that!
-The keys are:
-
-";
- print STDERR "\t" . join( "\n\t", @a ), "\n\n";
- exit 1;
- }
- # too few?
- die "no keys with " . ( $keyid || "empty" ) . " keyid found\n" if $die_if_empty and not @a;
-
- return @a;
-}
-
-sub kf_add {
- my ( $gl_user, $invited, $keyid, $keymaterial ) = @_;
-
- # add a new "invited" key for $gl_user.
- cd_temp_clone();
- chdir("keydir");
-
- mkdir("invited");
- _print( "invited/$gl_user-invite-$invited\@$keyid.pub", $keymaterial );
- hushed_git( "add", "." ) and die "git add failed\n";
- my $fp = fingerprint("invited/$gl_user-invite-$invited\@$keyid.pub");
- hushed_git( "commit", "-m", "invite add $gl_user-invite-$invited\@$keyid ($fp)" ) and die "git commit failed\n";
- system("gitolite push >/dev/null 2>/dev/null") and die "git push failed\n";
-}
-
-sub kf_del {
- my ( $gl_user, $invited, $keyid ) = @_;
-
- cd_temp_clone();
- chdir("keydir");
-
- my @pk = highlander( $keyid, 1, grep { m(^(.*/)?(zzz-marked-for-...-)?$gl_user-invite-$invited\@$keyid.pub$) } @invited_keys );
-
- my $fp = fingerprint( $pk[0] );
- hushed_git( "rm", $pk[0]) and die "git mv failed\n";
- hushed_git( "commit", "-m", "invite del $pk[0] ($fp)" ) and die "git commit failed\n";
- system("gitolite push >/dev/null 2>/dev/null") and die "git push failed\n";
-}
diff --git a/overlays/gitweb/default.nix b/overlays/gitweb/default.nix
deleted file mode 100644
index 27a1152..0000000
--- a/overlays/gitweb/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-self: super: {
- gitweb = super.gitweb.overrideAttrs(old: {
- postBuild = old.postBuild or "" + ''
- cp -r ${./theme} $out/gitweb-theme;
- '';
- });
-}
diff --git a/overlays/gitweb/theme/git-favicon.png b/overlays/gitweb/theme/git-favicon.png
deleted file mode 100644
index 4fa44bb..0000000
Binary files a/overlays/gitweb/theme/git-favicon.png and /dev/null differ
diff --git a/overlays/gitweb/theme/git-logo.png b/overlays/gitweb/theme/git-logo.png
deleted file mode 100644
index fdaf7b7..0000000
Binary files a/overlays/gitweb/theme/git-logo.png and /dev/null differ
diff --git a/overlays/gitweb/theme/gitweb.css b/overlays/gitweb/theme/gitweb.css
deleted file mode 100644
index 83e0742..0000000
--- a/overlays/gitweb/theme/gitweb.css
+++ /dev/null
@@ -1,783 +0,0 @@
-/* Reset
-------------------------------------------------------------------------- */
-
-/* Based on http://meyerweb.com/eric/tools/css/reset/ */
-/* v1.0 | 20080212 */
-
-html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
-blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
-font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b,
-u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table,
-caption, tbody, tfoot, thead, tr, th, td {
- margin: 0;
- padding: 0;
- border: 0;
- outline: 0;
- font-size: 100%;
- vertical-align: baseline;
- background: transparent;
-}
-
-ol, ul { list-style: none; }
-
-blockquote, q { quotes: none; }
-
-blockquote:before, blockquote:after,
-q:before, q:after {
- content: '';
- content: none;
-}
-
-:focus { outline: 0; }
-
-ins { text-decoration: none; }
-
-del { text-decoration: line-through; }
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-a { outline: none; }
-
-/* General
----------------------------------------------------------------------------- */
-
-html {
- position: relative;
- min-height: 100%;
-}
-
-body {
- font: 13px Helvetica,arial,freesans,clean,sans-serif;
- line-height: 1.4;
- margin: 0 0 105px;
- background-color: #fff;
- color: #000000;
-}
-
-/* Monospaced Fonts */
-.sha1, .mode, .diff_tree .list, .pre, .diff, .patchset {
- font-family: 'Consolas','Bitstream Vera Sans Mono',monospace;
-}
-
-a:link, a:visited {
- color: #4183C4;
- text-decoration: none;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-td.list a[href*='tree'], td.list a[href*='blob'] {
- padding-left: 20px;
- display: block;
- float: left;
- height: 16px;
- line-height: 16px;
-}
-
-td.list a[href*='tree'] {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABq0lEQVQ4y8WTu4oUQRSGv+rtGVuxhwVFdFEEE2c3d0HYTEMTn8DEVxADQTDUF9DMwMxQMBMx8AEWzRQ3cBHd9TI91+2urjq/QbczY2IygSep4nD+79yqnCRWsYQVbWVACvDh5ZXdrLe15dwyT1TjT/sxFFeB6i+VA2B6+cb7kAI4Jf0LO087zjlQI8Y5Qvnj0sHug321XoC1bk+K9eHk6+s7wPMUgKAS88eqb4+Jfg2SHs7lZBvX2Nh+2EUCDGSAcMnJsx9f7NxfAGqXyDzRd5EJO/pMPT1gcviGTnYOVIN5pAAE8v7dLrKL8xnglFk4ws9Afko9HpH3b5Gd2mwb/lOBmgrSdYhJugDUCenxM6xv3p4HCsP8F0LxCsUhCkMURihOyM7fg0osASTFEpu9a4LjGIUCqwcoDiEUrX+E4hRUQb20RiokC1j9vckUhygU7X3QZh7NAVKYL7YBeMkRUfjVCotF2XGIwnghtrJpMywB5G0QZj9P1JNujuWJ1AHLQadRrACPkuZ0SSSWpeStWgDK6tHek5vbiOs48n++XQHurcf0rFng//6NvwG+iB9/4duaTgAAAABJRU5ErkJgggo=) center left no-repeat;
-}
-
-td.list a[href*='blob'] {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQoFQXBMW5TQRgGwNnHnoE0QbiCjoIooUmTU3AuS1BwIoTSUdJBigg3GCWOg9/++zHTop078wIAsPMrE4SL5/1aIyMjIyMjz/m0tbFECFdrPeaQQw75mz/5nZH7fN7aWILmauSYfznmmIfss8vIUx7zZWsTTXM5vpWvTk5Wq9VHQP/gtgOLa0Qpw940vAQdaG6thpOhlOkG0AEuAVGmEkAH+G4YSikxXQM6wDsAMRFAB/ihDNNUmN4DOsAbBAEAdICfpmmaAt4COoj2GgCASbIkZh1NAACznhQt2itnFgAAlF3u/gMDtJXPzQxoswAAAABJRU5ErkJgggo=) center left no-repeat;
-}
-
-i {
- font-style: normal;
-}
-
-td, th {
- padding: 5px;
-}
-
-.page_nav br {
- display: none;
-}
-
-/* Page Header
----------------------------------------------------------------------------- */
-
-.page_header {
- height: 50px;
- line-height: 50px;
- position: relative;
- padding: 0 27px;
- margin-bottom: 20px;
- font-size: 20px;
- font-family: Helvetica, Arial, Freesans, Clean, sans-serif;
- background: #FFFFFF; /* old browsers */
- background: -moz-linear-gradient(top, #FFFFFF 0%, #F5F5F5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FFFFFF), color-stop(100%,#F5F5F5)); /* webkit */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFFFFF', endColorstr='#F5F5F5',GradientType=0 ); /* ie */
- background: -o-linear-gradient(top, #FFFFFF 0%, #F5F5F5 100%);
- border-bottom: 1px solid #dfdfdf;
-}
-
-.page_header a:link, .page_header a:visited {
- color: #4183C4;
- text-decoration: none;
- padding: 3px;
- font-weight: bold;
-}
-
-.page_header a:hover {
- font-weight: bold;
- padding: 3px;
- text-decoration: underline;
-}
-
-.page_header a:first-child {
- background: transparent;
-}
-
-.page_header img.logo {
- position: relative;
- top: 7px;
- margin-right: 5px;
-}
-
-/* Page Footer
----------------------------------------------------------------------------- */
-
-.page_footer {
- position: absolute;
- left: 0;
- bottom: 0;
- width: 100%;
- height: 80px;
- line-height: 80px;
- margin-top: 15px;
- background: #f1f1f1;
- border-top: 2px solid #ddd;
- border-bottom: 1px solid #ddd;
-}
-
-.page_footer_text {
- color: #666;
- display: inline;
- float: left;
- margin-left: 25px;
- width: 80%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
-
-a.rss_logo {
- float: right;
- padding: 3px 1px;
- width: 35px;
- line-height: 10px;
- border: 1px solid;
- border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e;
- color: #ffffff;
- background-color: #ff6600;
- font-weight: bold;
- font-family: sans-serif;
- font-size: 80%;
- text-align: center;
- text-decoration: none;
- margin-top: 30px;
- margin-left: 5px;
-}
-
-a.rss_logo:hover {
- background-color: #ee5500;
-}
-
-.rss_logo {
- margin-right: 25px;
- background: yellow;
-}
-
-.rss_logo:last-child {
- margin-right: 5px;
-}
-
-/* Index include
----------------------------------------------------------------------------- */
-
-.index_include {
- width: 95%;
- margin: 0 auto 15px;
- background: -moz-linear-gradient(center top , #FFFFFF 0%, #F5F5F5 100%) repeat scroll 0 0 transparent;
- border: 1px solid #DFDFDF;
- padding: 8px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-/* Elements
----------------------------------------------------------------------------- */
-
-.project_list,
-.shortlog,
-.tree,
-.commit_search,
-.history {
- width: 95%;
- margin: 0 auto 15px auto;
- border: 1px solid #d8d8d8;
- -moz-box-shadow: 0 0 3px rgba(0,0,0,0.2);
- -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.2);
- box-shadow: 0 0 3px rgba(0,0,0,0.2);
-}
-
-.project_list th,
-.shortlog th,
-.tree th,
-.commit_search th {
- color: #afafaf;
- font-weight: normal;
-}
-
-.project_list th {
- font-weight: bold;
-}
-
-.project_list tr,
-.shortlog tr,
-.tree tr,
-.commit_search tr {
- background: #eaeaea;
- height: 2.5em;
- text-align: left;
- color: #545454;
-}
-
-.project_list tr.dark, .project_list tr.light,
-.shortlog tr.dark, .shortlog tr.light,
-.tree tr.dark, .tree tr.light,
-.commit_search tr.dark, .commit_search tr.light,
-.history tr.dark, .history tr.light,
-.heads tr.dark, .heads tr.light {
- background: #F9F9F9; /* old browsers */
- background: -moz-linear-gradient(top, #F9F9F9 0%, #EFEFEF 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F9F9F9), color-stop(100%,#EFEFEF)); /* webkit */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F9F9F9', endColorstr='#EFEFEF',GradientType=0 ); /* ie */
- background: -o-linear-gradient(top, #F9F9F9 0%, #EFEFEF 100%);
- height: 2.5em;
- border-bottom: 1px solid #e1e1e1;
-}
-
-th .header {
- background: transparent;
- border: 0;
- padding: 0;
- font-weight: bold;
-}
-
-.tree {
- width: 100%;
- margin: 0;
-}
-
-.projsearch {
- position: absolute;
- right: 4%;
- top: 15px;
-}
-
-.projsearch a {
- display: none;
-}
-
-.commit_search {
- background: #eaeaea;
-}
-
-.page_nav,
-.list_head,
-.page_path,
-.search {
- width: 94%;
- background: #eaeaea;
- color: #545454;
- border: 1px solid #d8d8d8;
- padding: 5px;
- margin: 0 auto 15px auto;
-}
-
-.history {
- background: #eaeaea;
-}
-
-.title {
- margin: 0 auto 15px auto;
- padding: 5px;
- width: 95%;
-}
-
-.readme {
- background: #eaf2f5;
- border: 1px solid #bedce7;
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- margin: 0 auto 15px auto;
- padding: 15px;
- width: 95%;
-}
-
-.readme h1 {
- display: block;
- font-size: 2em;
- font-weight: bold;
- margin-bottom: 0.67em;
- margin-top: 0;
-}
-
-.readme h2 {
- font-size: 1.5em;
- font-weight: bold;
- margin-bottom: 0.83em;
-}
-
-
-.readme h3 {
- font-size: 1.17em;
- font-weight: bold;
- margin-bottom: 1em;
-}
-
-.readme p {
- margin-bottom: 1em;
-}
-
-.readme ul {
- list-style: disc;
- margin-bottom: 1em;
- margin-left: 1.5em;
-}
-
-.readme ul ul {
- margin-bottom: 0;
-}
-
-.readme ol {
- list-style: decimal;
- margin-bottom: 1em;
- margin-left: 1.5em;
-}
-
-.readme ol ol {
- margin-bottom: 0;
-}
-
-.readme pre {
- font-family: monospace;
- margin: 1em 0;
- white-space: pre;
-}
-
-.readme tt, .readme code, .readme kbd, .readme samp {
- font-family: monospace;
-}
-
-.readme blockquote {
- margin: 1em;
-}
-
-.projects_list,
-.tags {
- width: 95%;
- background: #f0f0f0;
- color: #545454;
- border: 1px solid #d8d8d8;
- padding: 5px;
- margin: 0 auto 15px auto;
-}
-
-.heads {
- width: 95%;
- color: #545454;
- border: 1px solid #d8d8d8;
- padding: 5px;
- margin: 0 auto 15px auto;
-}
-
-.header {
- width: 94%;
- margin: 0 auto 15px auto;
- background: #eaf2f5;
- border: 1px solid #bedce7;
- padding: 5px;
-}
-
-.header .age {
- float: left;
- color: #000;
- font-weight: bold;
- width: 10em;
-}
-
-.title_text {
- width: 94%;
- background: #eaf2f5;
- border: 1px solid #bedce7;
- padding: 5px;
- margin: 0 auto 0 auto;
-}
-
-.log_body {
- width: 94%;
- background: #eaf2f5;
- border: 1px solid #bedce7;
- border-top: 0;
- padding: 5px;
- margin: 0 auto 15px auto;
-}
-
-.page_body {
- line-height: 1.4em;
- width: 94%;
- background: #f8f8f8;
- border: 1px solid #d8d8d8;
- padding: 5px;
- margin: 15px auto 15px auto;
-}
-
-.diff_tree {
- width: 95%;
- background: #f0f0f0;
- border: 1px solid #d8d8d8;
- padding: 5px;
- margin: 0 auto 15px auto;
-}
-
-.page_body > .list_head {
- width: 98.5%;
-}
-
-.page_body > .diff_tree {
- width: 99.5%;
-}
-
-.patch > .header {
- width: 99%;
-}
-
-.author .avatar,
-.author_date .avatar {
- position: relative;
- top: 3px;
-}
-
-.object_header .avatar {
- border: 1px solid #D8D8D8;
- float: right;
-}
-
-.object_header td,
-.object_header th {
- vertical-align: top;
-}
-
-/* Refs
----------------------------------------------------------------------------- */
-
-span.refs span {
- color: #707070;
- display: inline-block;
- margin: 0;
- background-color: #eee;
- border: 1px solid #ccc;
- border-radius: 3px;
- height: 18px;
- padding: 0 6px;
- text-overflow: ellipsis;
-}
-
-span.refs span.ref {
- color: #707070;
- display: inline-block;
- margin: 0;
- background-color: #c4c4ff;
- border: 1px solid #7878ff;
- border-radius: 3px;
- height: 18px;
- padding: 0 6px;
- text-overflow: ellipsis;
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIKFSUnpolg7AAAAHJQTFRFAAAAVVWqZmbMVVXVYGDgbW3td3fuc3PzdHT0cHD1d3f6dHT6dnb7dHT7dnb8dnb8dnb9d3f9dnb+eHj+d3f+eHj+d3f+d3f+d3f+eHj+d3f+eHj+d3f+eHj+d3f+d3f+eHj+d3f+d3f+d3f+eHj/////V9oQhQAAACR0Uk5TAAIEBQcNDhMVGCotNTZAT217i5CgobvExtjZ4eLr7vP09ff7uqQ6cgAAAAFiS0dEJcMByQ8AAABUSURBVBjTpc43AoAwDENRh95bgNBM1f3PyOpslD++RSJ61YgH5M2IbIkn4GocSR1MZVBL4t2n4FgkbaxI8Sqph041WknZCWAIrcmEUbpf3lNe0N9u59YFYHnZ78gAAAAASUVORK5CYII=);
- background-repeat: no-repeat;
- padding-left: 18px;
-}
-
-span.refs span.tag {
- color: #707070;
- display: inline-block;
- margin: 0;
- background-color: #ffffab;
- border: 1px solid #d9d93b;
- border-radius: 3px;
- height: 18px;
- padding: 0 6px;
- text-overflow: ellipsis;
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIKFSUZZ+h9RwAAAGZQTFRFAAAAtrYkwMBAwMBAx8c4yso11NQ71NQ51dU52Ng71tY519c719c719c62Ng719c719c62Ng72dk62Ng62Ng72Ng72dk62Ng72Ng62dk62dk72dk62Ng62dk72Ng72Ng72dk7////ou/AnQAAACB0Uk5TAAYHCxESLjRCWWlqa4uNkpissbrO19jc3ufs8vf6/f7atAU2AAAAAWJLR0QhxGwNFgAAAF1JREFUGFeNy0cOgCAABVGw94rY5d//lC7omhhn+ZIh5Gf1xPk0Zi5dAABROIQjSU/fsAXhDkCUljAv8jW2wlQpaixpo4Nj+dtatVpjkSJjLNaizRVpvhBCu/4h391jzw1lU12Z7wAAAABJRU5ErkJggg==);
- background-repeat: no-repeat;
- padding-left: 18px;
-}
-
-span.refs span.head {
- color: #707070;
- display: inline-block;
- margin: 0;
- background-color: #c4ffc4;
- border: 1px solid #78ff78;
- border-radius: 3px;
- height: 18px;
- padding: 0 6px;
- text-overflow: ellipsis;
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIKFSYDsafX/gAAAUpJREFUOMvVkjFLA0EQhd/s7l06MSCihbV/wC5/QBDEIFYWprRIIQQJFqKFQi4kUbBQsFSwtrUQLQULUTBFLCzVIgimCXe7z0q5yIWcqfRVwzDzMTNvgL8mSUqWw3JOtFQJdsIwLDYyjdYgkEmkazl2oVtQWk36nn8AYBYASmFpxmizGtnoqO7Vb+M9KglEkASdpWU872nvVCiPRpuTnz2JIHGyqX3d0kZfR1G0Ht+g/do+FIhOBbLW3n/FNb/28D0puZ+dyL44ur1UoH5yzt2JyIj6UGdDgwrPhYzSagNEszJaeU/lWlylbmnaeGZZICsAppxzi6nt73HK85oQCMknOuarpno+FIjglVjZDXaCS2yDv3rIHlCb88FY0BlUl3hs7ektkhckb5DFWhoz+n12zr7ZPLpYUqLm0oBMn8NUzLhpAgjpWMS/1CcSJ3ykD7Rk1QAAAABJRU5ErkJggg==);
- background-repeat: no-repeat;
- padding-left: 18px;
-}
-
-span.refs a {
- color: #4e4e4e;
- font: 11px "Bitstream Vera Sans Mono", "DejaVu Sans Mono", Monaco, monospace;
- line-height: 18px;
-}
-
-/* Diffs
----------------------------------------------------------------------------- */
-
-div.diff.to_file a.path,
-div.diff.to_file {
- color: #007000;
-}
-
-div.diff.from_file a.path,
-div.diff.from_file {
- color: #aa0000;
-}
-
-.patch .header {
- margin: 0;
-}
-
-.patchset {
- overflow-x: auto;
- overflow-y: hidden;
-}
-
-.chunk_header {
- background: #eaf2f5;
- color: #999;
-}
-
-.rem {
- background: #ffdddd;
-}
-.rem .marked {
- background: #ffaaaa;
-}
-.add {
- background: #ddffdd;
-}
-.add .marked {
- background: #7dff7d;
-}
-
-.extended_header {
- width: 99.5%;
-}
-
-div.chunk_block {
- overflow: hidden;
-}
-
-div.chunk_block div.old {
- float: left;
- width: 50%;
- overflow: hidden;
- border-right: 5px solid #EAF2F5;
-}
-
-div.chunk_block.rem,
-div.chunk_block.add {
- background: transparent;
-}
-
-div.chunk_block div.old .add,
-div.chunk_block div.old .rem {
- padding-right: 3px;
-}
-
-div.chunk_block div.new .add,
-div.chunk_block div.new .rem {
- padding-left: 3px;
-}
-
-div.chunk_block div.new {
- margin-left: 50%;
- width: 50%;
- border-left: 5px solid #EAF2F5;
-}
-
-/* Category
----------------------------------------------------------------------------- */
-
-td.category {
- background: #E6F1F6; /* old browsers */
- background: -moz-linear-gradient(top, #C8D8E7 0%, #E6F1F3 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C8D8E7), color-stop(100%,#E6F1F3)); /* webkit */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#C8D8E7', endColorstr='#E6F1F3',GradientType=0 ); /* ie */
- background: -o-linear-gradient(top, #C8D8E7 0%, #E6F1F3 100%);
- font-weight: bold;
- border-bottom: 1px solid #D1D1D1;
- border-top: 1px solid #D1D1D1;
-}
-
-/* Age
----------------------------------------------------------------------------- */
-
-/* noage: "No commits" */
-.project_list td.noage {
- color: #cdcdcd;
-}
-
-/* age2: 60*60*24*2 <= age */
-.project_list td.age2, .blame td.age2 {
- color: #545454;
-}
-
-/* age1: 60*60*2 <= age < 60*60*24*2 */
-.project_list td.age1 {
- color: #009900;
-}
-
-/* age0: age < 60*60*2 */
-.project_list td.age0 {
- color: #009900;
- font-weight: bold;
-}
-
-/* File status
----------------------------------------------------------------------------- */
-
-.diff_tree span.file_status.new {
- color: #008000;
-}
-
-table.diff_tree span.file_status.deleted {
- color: #c00000;
-}
-
-table.diff_tree span.file_status.moved,
-table.diff_tree span.file_status.mode_chnge {
- color: #545454;
-}
-
-table.diff_tree span.file_status.copied {
- color: #70a070;
-}
-
-span.cntrl {
- border: dashed #aaaaaa;
- border-width: 1px;
- padding: 0px 2px 0px 2px;
- margin: 0px 2px 0px 2px;
-}
-
-span.match {
- background: #aaffaa;
- color: #000;
-}
-
-td.error {
- color: red;
- background: yellow;
-}
-
-/* blob view */
-
-td.pre, div.pre, div.diff {
- white-space: pre-wrap;
-}
-
-/* JavaScript-based timezone manipulation */
-
-.popup { /* timezone selection UI */
- position: absolute;
- /* "top: 0; right: 0;" would be better, if not for bugs in browsers */
- top: 0; left: 0;
- border: 1px solid #d8d8d8;
- padding: 2px;
- background-color: #f0f0f0;
- font-style: normal;
- color: #545454;
- cursor: auto;
-}
-
-.close-button { /* close timezone selection UI without selecting */
- /* float doesn't work within absolutely positioned container,
- * if width of container is not set explicitly */
- /* float: right; */
- position: absolute;
- top: 0px; right: 0px;
- border: 1px solid #ffaaaa;
- margin: 1px 1px 1px 1px;
- padding-bottom: 2px;
- width: 12px;
- height: 10px;
- font-size: 9px;
- font-weight: bold;
- text-align: center;
- background-color: #ffdddd;
- cursor: pointer;
-}
-
-/* Style definition generated by highlight 2.4.5, http://www.andre-simon.de/ */
-
-/* Highlighting theme definition: */
-
-.num { color:#6ecf36; }
-.esc { color:#ff00ff; }
-.str { color:#ff00d3; background-color: #edc9ec }
-.dstr { color:#818100; }
-.slc { color:#838183; font-style:italic; }
-.com { color:#838183; font-style:italic; }
-.dir { color:#008200; }
-.sym { color:#000000; }
-.line { color:#555555; }
-.kwa { color:#666666; font-weight:bold; }
-.kwb { color:#6b3099; }
-.kwc { color:#d4663d; }
-.kwd { color:#2928ff; }
-
-/**** Styles supplémentaires *****/
-
-.readme div.toc {
- float: right;
- border: 1px solid black;
- background-color: white;
-}
-.readme div.toc span.toctitle {
- display: inline-block;
- width: 100%;
- text-align: center;
- font-weight: bold;
-}
-
-.readme table {
- background-color: white;
-}
-
-.readme table thead tr {
- background-color: #ccc;
-}
-
-.readme table tbody tr:nth-child(2n) {
- background-color: #f8f8f8;
-}
-
-.readme table td, .readme table th {
- border: 1px solid black;
-}
diff --git a/overlays/gitweb/theme/gitweb.js b/overlays/gitweb/theme/gitweb.js
deleted file mode 100644
index 72f3cfa..0000000
--- a/overlays/gitweb/theme/gitweb.js
+++ /dev/null
@@ -1,27 +0,0 @@
-function include(filename, onload) {
- var head = document.getElementsByTagName('head')[0];
- var script = document.createElement('script');
- script.src = filename;
- script.type = 'text/javascript';
- script.onload = script.onreadystatechange = function() {
- if (script.readyState) {
- if (script.readyState === 'complete' || script.readyState === 'loaded') {
- script.onreadystatechange = null;
- onload();
- }
- }
- else {
- onload();
- }
- }
- head.appendChild(script);
-}
-
-include('static/gitweb.js', function() {});
-include('//code.jquery.com/jquery-3.1.0.min.js', function() {
- $("div.title").each(function(index, element) {
- if ($(element).text() === "readme" || $(element).text() === " ") {
- $(element).hide();
- }
- });
-});
diff --git a/overlays/goaccess/default.nix b/overlays/goaccess/default.nix
deleted file mode 100644
index 6b9758b..0000000
--- a/overlays/goaccess/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-self: super: {
- goaccess = super.goaccess.overrideAttrs(old: rec {
- name = "goaccess-${version}";
- version = "1.4";
- src = self.fetchurl {
- url = "https://tar.goaccess.io/${name}.tar.gz";
- sha256 = "1gkpjg39f3afdwm9128jqjsfap07p8s027czzlnxfmi5hpzvkyz8";
- };
- configureFlags = old.configureFlags ++ [ "--enable-tcb=btree" ];
- buildInputs = old.buildInputs ++ [ self.tokyocabinet self.bzip2 ];
- });
-
-}
diff --git a/overlays/kanboard/default.nix b/overlays/kanboard/default.nix
deleted file mode 100644
index 05f2882..0000000
--- a/overlays/kanboard/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-self: super: {
- kanboard = { kanboard_config ? "/etc/kanboard/config.php" }:
- super.kanboard.overrideAttrs(old: rec {
- name = "kanboard-${version}";
- version = "1.2.9";
- src = self.fetchFromGitHub {
- owner = "kanboard";
- repo = "kanboard";
- rev = "c4152316b14936556edf3bcc4d11f16ba31b8ae7";
- sha256 = "1hdr95cpxgdzrzhffs63gdl0g7122ma2zg8bkqwp42p5xphx0xan";
- };
- installPhase = ''
- cp -a . $out
- ln -s ${kanboard_config} $out/config.php
- mv $out/data $out/dataold
- '';
- });
-}
diff --git a/overlays/khal/default.nix b/overlays/khal/default.nix
deleted file mode 100644
index 597cc0e..0000000
--- a/overlays/khal/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-self: super: {
- khal = super.khal.overridePythonAttrs(old: {
- postPatch = ''
- sed -i "s/Invalid value for \"ics\"/Invalid value for \\\'ics\\\'/" tests/cli_test.py
- sed -i "s/Invalid value for \"\[ICS\]\"/Invalid value for \\\'[ICS]\\\'/" tests/cli_test.py
- '';
- });
-}
diff --git a/overlays/ledger/default.nix b/overlays/ledger/default.nix
deleted file mode 100644
index 9f2df57..0000000
--- a/overlays/ledger/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-self: super: {
- ledger = super.ledger.overrideAttrs(old: rec {
- #name = "${old.pname}-${version}";
- #version = "3.2.1";
- #src = self.fetchFromGitHub {
- # owner = "ledger";
- # repo = "ledger";
- # rev = "v${version}";
- # sha256 = "0x6jxwss3wwzbzlwmnwb8yzjk8f9wfawif4f1b74z2qg6hc4r7f6";
- #};
- patches = old.patches or [] ++ [
- (self.fetchpatch {
- name = "xdgconfig.patch";
- url = "https://github.com/ledger/ledger/commit/c79674649dee7577d6061e3d0776922257520fd0.patch";
- sha256 = "0n82mjz9i17800r7vs45sxpss14rivsf1j8hrv7jal24iyfm01dz";
- excludes = [ "doc/NEWS.md" ];
- })
- ];
- });
-}
diff --git a/overlays/lesspipe/default.nix b/overlays/lesspipe/default.nix
deleted file mode 100644
index e53feae..0000000
--- a/overlays/lesspipe/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-self: super: {
- lesspipe = super.lesspipe.overrideAttrs(old: {
- configureFlags = (old.configureFlags or []) ++ [ "--yes" ];
- });
-}
diff --git a/overlays/morph/default.nix b/overlays/morph/default.nix
deleted file mode 100644
index 448f051..0000000
--- a/overlays/morph/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-self: super: {
- morph = super.morph.overrideAttrs(old: {
- patches = (old.patches or []) ++ [ ./verbose_nix.patch ./dry-run.patch ];
- });
-}
diff --git a/overlays/morph/dry-run.patch b/overlays/morph/dry-run.patch
deleted file mode 100644
index 2ff099e..0000000
--- a/overlays/morph/dry-run.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-diff --git a/morph.go b/morph.go
-index a88414b..e5894df 100644
---- a/morph.go
-+++ b/morph.go
-@@ -542,6 +542,7 @@ func getNixContext() *nix.NixContext {
- return &nix.NixContext{
- EvalMachines: filepath.Join(assetRoot, assets.Friendly, "eval-machines.nix"),
- ShowTrace: showTrace,
-+ DryRun: *dryRun,
- KeepGCRoot: *keepGCRoot,
- AllowBuildShell: *allowBuildShell,
- }
-@@ -574,8 +575,10 @@ func buildHosts(hosts []nix.Host) (resultPath string, err error) {
- return
- }
-
-- fmt.Fprintln(os.Stderr, "nix result path: ")
-- fmt.Println(resultPath)
-+ if resultPath != "" {
-+ fmt.Fprintln(os.Stderr, "nix result path: ")
-+ fmt.Println(resultPath)
-+ }
- return
- }
-
-diff --git a/nix/nix.go b/nix/nix.go
-index 6a9cfd5..0f7884b 100644
---- a/nix/nix.go
-+++ b/nix/nix.go
-@@ -49,6 +49,7 @@ type Deployment struct {
- type NixContext struct {
- EvalMachines string
- ShowTrace bool
-+ DryRun bool
- KeepGCRoot bool
- AllowBuildShell bool
- }
-@@ -269,6 +270,10 @@ func (ctx *NixContext) BuildMachines(deploymentPath string, hosts []Host, nixArg
- args = append(args, "--show-trace")
- }
-
-+ if ctx.DryRun {
-+ args = append(args, "--dry-run")
-+ }
-+
- if nixBuildTargets != "" {
- args = append(args,
- "--arg", "buildTargets", nixBuildTargets)
-@@ -308,6 +313,10 @@ func (ctx *NixContext) BuildMachines(deploymentPath string, hosts []Host, nixArg
- return resultPath, errors.New(errorMessage)
- }
-
-+ if ctx.DryRun {
-+ return "", err
-+ }
-+
- resultPath, err = os.Readlink(resultLinkPath)
- if err != nil {
- return "", err
diff --git a/overlays/morph/verbose_nix.patch b/overlays/morph/verbose_nix.patch
deleted file mode 100644
index 389a79c..0000000
--- a/overlays/morph/verbose_nix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/nix/nix.go b/nix/nix.go
-index bb63870..7fe04aa 100644
---- a/nix/nix.go
-+++ b/nix/nix.go
-@@ -347,6 +347,7 @@ func Push(ctx *ssh.SSHContext, host Host, paths ...string) (err error) {
- options := mkOptions(host)
- for _, path := range paths {
- args := []string{
-+ "-v",
- "copy",
- path,
- "--to", "ssh://" + userArg + host.TargetHost + keyArg,
diff --git a/overlays/neomutt/default.nix b/overlays/neomutt/default.nix
deleted file mode 100644
index f03290a..0000000
--- a/overlays/neomutt/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-self: super: {
- neomutt = super.neomutt.overrideAttrs(old: {
- patches = old.patches or [] ++ [
- ./tx.patch
- ];
- });
-}
diff --git a/overlays/neomutt/tx.patch b/overlays/neomutt/tx.patch
deleted file mode 100644
index c8736df..0000000
--- a/overlays/neomutt/tx.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-commit 61ae454e1579d02736c48e3468a3237429214cdf
-Author: Ismaël Bouya
-Date: Tue Jun 2 13:03:04 2020 +0200
-
- Add %tx to index_format
-
-diff --git a/hdrline.c b/hdrline.c
-index 9224c6641..1594ed729 100644
---- a/hdrline.c
-+++ b/hdrline.c
-@@ -575,6 +575,7 @@ static const char *index_format_str(char *buf, size_t buflen, size_t col, int co
- const struct Address *from = TAILQ_FIRST(&e->env->from);
- const struct Address *to = TAILQ_FIRST(&e->env->to);
- const struct Address *cc = TAILQ_FIRST(&e->env->cc);
-+ const struct Address *x_orig_to = TAILQ_FIRST(&e->env->x_original_to);
-
- buf[0] = '\0';
- switch (op)
-@@ -1192,13 +1193,18 @@ static const char *index_format_str(char *buf, size_t buflen, size_t col, int co
-
- case 't':
- tmp[0] = '\0';
-- if (!check_for_mailing_list(&e->env->to, "To ", tmp, sizeof(tmp)) &&
-- !check_for_mailing_list(&e->env->cc, "Cc ", tmp, sizeof(tmp)))
-- {
-- if (to)
-- snprintf(tmp, sizeof(tmp), "To %s", mutt_get_name(to));
-- else if (cc)
-- snprintf(tmp, sizeof(tmp), "Cc %s", mutt_get_name(cc));
-+ if (src[0] == 'x') {
-+ snprintf(tmp, sizeof(tmp), "%s", mutt_get_name(x_orig_to));
-+ src++;
-+ } else {
-+ if (!check_for_mailing_list(&e->env->to, "To ", tmp, sizeof(tmp)) &&
-+ !check_for_mailing_list(&e->env->cc, "Cc ", tmp, sizeof(tmp)))
-+ {
-+ if (to)
-+ snprintf(tmp, sizeof(tmp), "To %s", mutt_get_name(to));
-+ else if (cc)
-+ snprintf(tmp, sizeof(tmp), "Cc %s", mutt_get_name(cc));
-+ }
- }
- mutt_format_s(buf, buflen, prec, tmp);
- break;
diff --git a/overlays/nix-direnv/default.nix b/overlays/nix-direnv/default.nix
deleted file mode 100644
index c4c96e2..0000000
--- a/overlays/nix-direnv/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-self: super: {
- nix-direnv = super.nix-direnv.overrideAttrs (old: {
- postPatch = old.postPatch + ''
- sed -i -e 's/TEMPDIR "$old_tmp"/TEMPDIR "$old_tmpdir"/' direnvrc
- '';
- });
-}
diff --git a/overlays/nixops/default.nix b/overlays/nixops/default.nix
deleted file mode 100644
index 14aec3b..0000000
--- a/overlays/nixops/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-self: super: {
- nixops = super.nixops.overrideAttrs (old: {
- patches = [
- ./fix_glibc.patch
- (self.fetchpatch {
- name = "hetzner_cloud.patch";
- url = "https://github.com/goodraven/nixops/commit/272e50d0b0262e49cdcaad42cdab57aad183d1c2.patch";
- sha256 = "12wcrb0155ald52m7fbr2m5rrxdnwdwripq91ckscgsk42mdc517";
- })
- ];
- preConfigure = (old.preConfigure or "") + ''
- # https://github.com/NixOS/nixops/issues/1216
- sed -i -e "/Register the paths in the Nix database./s/#.*$/export USER=root/" nix/libvirtd-image.nix
-
- sed -i -e '/^import sys$/s/$/; sys.tracebacklimit = 0/' scripts/nixops
- sed -i -e "/'keyFile'/s/'path'/'string'/" nixops/backends/__init__.py
- sed -i -e "/security.initialRootPassword/d" nix/hetzner.nix
- '';
- });
-}
diff --git a/overlays/nixops/fix_glibc.patch b/overlays/nixops/fix_glibc.patch
deleted file mode 100644
index 1aeb093..0000000
--- a/overlays/nixops/fix_glibc.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/nix/hetzner-bootstrap.nix b/nix/hetzner-bootstrap.nix
-index 035e6f9..def42a1 100644
---- a/nix/hetzner-bootstrap.nix
-+++ b/nix/hetzner-bootstrap.nix
-@@ -3,9 +3,7 @@ with import { system = "x86_64-linux"; };
- let
- pkgsNative = import {};
-
-- nixpart = python2Packages.nixpart0.override {
-- useNixUdev = false;
-- };
-+ nixpart = python2Packages.nixpart0;
-
- generateConfig = (import {
- configuration = {};
diff --git a/overlays/nixops/hetzner_cloud.patch b/overlays/nixops/hetzner_cloud.patch
deleted file mode 100644
index b75c116..0000000
--- a/overlays/nixops/hetzner_cloud.patch
+++ /dev/null
@@ -1,480 +0,0 @@
-From 272e50d0b0262e49cdcaad42cdab57aad183d1c2 Mon Sep 17 00:00:00 2001
-From: goodraven
-
-Date: Thu, 3 May 2018 22:24:58 -0700
-Subject: [PATCH] Initial commit adding support for hetzner cloud
-
-This is based on the digital ocean backend. It also uses nixos-infect. I extended nixos-infect to be generic
-for both backends.
-
-Fixes #855
----
- examples/trivial-hetzner-cloud.nix | 12 ++
- nix/eval-machine-info.nix | 1 +
- nix/hetzner-cloud.nix | 56 +++++++
- nix/options.nix | 1 +
- nixops/backends/hetzner_cloud.py | 230 +++++++++++++++++++++++++++++
- nixops/data/nixos-infect | 77 +++++++---
- 6 files changed, 354 insertions(+), 23 deletions(-)
- create mode 100644 examples/trivial-hetzner-cloud.nix
- create mode 100644 nix/hetzner-cloud.nix
- create mode 100644 nixops/backends/hetzner_cloud.py
-
-diff --git a/examples/trivial-hetzner-cloud.nix b/examples/trivial-hetzner-cloud.nix
-new file mode 100644
-index 000000000..c61add6bb
---- /dev/null
-+++ b/examples/trivial-hetzner-cloud.nix
-@@ -0,0 +1,12 @@
-+{
-+ resources.sshKeyPairs.ssh-key = {};
-+
-+ machine = { config, pkgs, ... }: {
-+ services.openssh.enable = true;
-+
-+ deployment.targetEnv = "hetznerCloud";
-+ deployment.hetznerCloud.serverType = "cx11";
-+
-+ networking.firewall.allowedTCPPorts = [ 22 ];
-+ };
-+}
-diff --git a/nix/eval-machine-info.nix b/nix/eval-machine-info.nix
-index 2884b4b47..6a7205786 100644
---- a/nix/eval-machine-info.nix
-+++ b/nix/eval-machine-info.nix
-@@ -309,6 +309,7 @@ rec {
- digitalOcean = optionalAttrs (v.config.deployment.targetEnv == "digitalOcean") v.config.deployment.digitalOcean;
- gce = optionalAttrs (v.config.deployment.targetEnv == "gce") v.config.deployment.gce;
- hetzner = optionalAttrs (v.config.deployment.targetEnv == "hetzner") v.config.deployment.hetzner;
-+ hetznerCloud = optionalAttrs (v.config.deployment.targetEnv == "hetznerCloud") v.config.deployment.hetznerCloud;
- container = optionalAttrs (v.config.deployment.targetEnv == "container") v.config.deployment.container;
- route53 = v.config.deployment.route53;
- virtualbox =
-diff --git a/nix/hetzner-cloud.nix b/nix/hetzner-cloud.nix
-new file mode 100644
-index 000000000..21d148c1a
---- /dev/null
-+++ b/nix/hetzner-cloud.nix
-@@ -0,0 +1,56 @@
-+{ config, pkgs, lib, utils, ... }:
-+
-+with utils;
-+with lib;
-+with import ./lib.nix lib;
-+
-+let
-+ cfg = config.deployment.hetznerCloud;
-+in
-+{
-+ ###### interface
-+ options = {
-+
-+ deployment.hetznerCloud.authToken = mkOption {
-+ default = "";
-+ example = "8b2f4e96af3997853bfd4cd8998958eab871d9614e35d63fab45a5ddf981c4da";
-+ type = types.str;
-+ description = ''
-+ The API auth token. We're checking the environment for
-+ HETZNER_CLOUD_AUTH_TOKEN first and if that is
-+ not set we try this auth token.
-+ '';
-+ };
-+
-+ deployment.hetznerCloud.datacenter = mkOption {
-+ example = "fsn1-dc8";
-+ default = null;
-+ type = types.nullOr types.str;
-+ description = ''
-+ The datacenter.
-+ '';
-+ };
-+
-+ deployment.hetznerCloud.location = mkOption {
-+ example = "fsn1";
-+ default = null;
-+ type = types.nullOr types.str;
-+ description = ''
-+ The location.
-+ '';
-+ };
-+
-+ deployment.hetznerCloud.serverType = mkOption {
-+ example = "cx11";
-+ type = types.str;
-+ description = ''
-+ Name or id of server types.
-+ '';
-+ };
-+ };
-+
-+ config = mkIf (config.deployment.targetEnv == "hetznerCloud") {
-+ nixpkgs.system = mkOverride 900 "x86_64-linux";
-+ services.openssh.enable = true;
-+ };
-+}
-diff --git a/nix/options.nix b/nix/options.nix
-index 0866c3ab8..db021f74d 100644
---- a/nix/options.nix
-+++ b/nix/options.nix
-@@ -22,6 +22,7 @@ in
- ./keys.nix
- ./gce.nix
- ./hetzner.nix
-+ ./hetzner-cloud.nix
- ./container.nix
- ./libvirtd.nix
- ];
-diff --git a/nixops/backends/hetzner_cloud.py b/nixops/backends/hetzner_cloud.py
-new file mode 100644
-index 000000000..a2cb176b9
---- /dev/null
-+++ b/nixops/backends/hetzner_cloud.py
-@@ -0,0 +1,230 @@
-+# -*- coding: utf-8 -*-
-+"""
-+A backend for hetzner cloud.
-+
-+This backend uses nixos-infect (which uses nixos LUSTRATE) to infect a
-+hetzner cloud instance. The setup requires two reboots, one for
-+the infect itself, another after we pushed the nixos image.
-+"""
-+import os
-+import os.path
-+import time
-+import socket
-+
-+import requests
-+
-+import nixops.resources
-+from nixops.backends import MachineDefinition, MachineState
-+from nixops.nix_expr import Function, RawValue
-+import nixops.util
-+import nixops.known_hosts
-+
-+infect_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'data', 'nixos-infect'))
-+
-+API_HOST = 'api.hetzner.cloud'
-+
-+class ApiError(Exception):
-+ pass
-+
-+class ApiNotFoundError(ApiError):
-+ pass
-+
-+class HetznerCloudDefinition(MachineDefinition):
-+ @classmethod
-+ def get_type(cls):
-+ return "hetznerCloud"
-+
-+ def __init__(self, xml, config):
-+ MachineDefinition.__init__(self, xml, config)
-+ self.auth_token = config["hetznerCloud"]["authToken"]
-+ self.location = config["hetznerCloud"]["location"]
-+ self.datacenter = config["hetznerCloud"]["datacenter"]
-+ self.server_type = config["hetznerCloud"]["serverType"]
-+
-+ def show_type(self):
-+ return "{0} [{1}]".format(self.get_type(), self.location or self.datacenter or 'any location')
-+
-+
-+class HetznerCloudState(MachineState):
-+ @classmethod
-+ def get_type(cls):
-+ return "hetznerCloud"
-+
-+ state = nixops.util.attr_property("state", MachineState.MISSING, int) # override
-+ public_ipv4 = nixops.util.attr_property("publicIpv4", None)
-+ public_ipv6 = nixops.util.attr_property("publicIpv6", None)
-+ location = nixops.util.attr_property("hetznerCloud.location", None)
-+ datacenter = nixops.util.attr_property("hetznerCloud.datacenter", None)
-+ server_type = nixops.util.attr_property("hetznerCloud.serverType", None)
-+ auth_token = nixops.util.attr_property("hetznerCloud.authToken", None)
-+ server_id = nixops.util.attr_property("hetznerCloud.serverId", None, int)
-+
-+ def __init__(self, depl, name, id):
-+ MachineState.__init__(self, depl, name, id)
-+ self.name = name
-+
-+ def get_ssh_name(self):
-+ return self.public_ipv4
-+
-+ def get_ssh_flags(self, *args, **kwargs):
-+ super_flags = super(HetznerCloudState, self).get_ssh_flags(*args, **kwargs)
-+ return super_flags + [
-+ '-o', 'UserKnownHostsFile=/dev/null',
-+ '-o', 'StrictHostKeyChecking=no',
-+ '-i', self.get_ssh_private_key_file(),
-+ ]
-+
-+ def get_physical_spec(self):
-+ return Function("{ ... }", {
-+ 'imports': [ RawValue('') ],
-+ ('boot', 'loader', 'grub', 'device'): 'nodev',
-+ ('fileSystems', '/'): { 'device': '/dev/sda1', 'fsType': 'ext4'},
-+ ('users', 'extraUsers', 'root', 'openssh', 'authorizedKeys', 'keys'): [self.depl.active_resources.get('ssh-key').public_key],
-+ })
-+
-+ def get_ssh_private_key_file(self):
-+ return self.write_ssh_private_key(self.depl.active_resources.get('ssh-key').private_key)
-+
-+ def create_after(self, resources, defn):
-+ # make sure the ssh key exists before we do anything else
-+ return {
-+ r for r in resources if
-+ isinstance(r, nixops.resources.ssh_keypair.SSHKeyPairState)
-+ }
-+
-+ def get_auth_token(self):
-+ return os.environ.get('HETZNER_CLOUD_AUTH_TOKEN', self.auth_token)
-+
-+ def _api(self, path, method=None, data=None, json=True):
-+ """Basic wrapper around requests that handles auth and serialization."""
-+ assert path[0] == '/'
-+ url = 'https://%s%s' % (API_HOST, path)
-+ token = self.get_auth_token()
-+ if not token:
-+ raise Exception('No hetzner cloud auth token set')
-+ headers = {
-+ 'Authorization': 'Bearer '+self.get_auth_token(),
-+ }
-+ res = requests.request(
-+ method=method,
-+ url=url,
-+ json=data,
-+ headers=headers)
-+
-+ if res.status_code == 404:
-+ raise ApiNotFoundError('Not Found: %r' % path)
-+ elif not res.ok:
-+ raise ApiError('Response for %s %s has status code %d: %s' % (method, path, res.status_code, res.content))
-+ if not json:
-+ return
-+ try:
-+ res_data = res.json()
-+ except ValueError as e:
-+ raise ApiError('Response for %s %s has invalid JSON (%s): %r' % (method, path, e, res.content))
-+ return res_data
-+
-+
-+ def destroy(self, wipe=False):
-+ if not self.server_id:
-+ self.log('server {} was never made'.format(self.name))
-+ return
-+ self.log('destroying server {} with id {}'.format(self.name, self.server_id))
-+ try:
-+ res = self._api('/v1/servers/%s' % (self.server_id), method='DELETE')
-+ except ApiNotFoundError:
-+ self.log("server not found - assuming it's been destroyed already")
-+
-+ self.public_ipv4 = None
-+ self.server_id = None
-+
-+ return True
-+
-+ def _create_ssh_key(self, public_key):
-+ """Create or get an ssh key and return an id."""
-+ public_key = public_key.strip()
-+ res = self._api('/v1/ssh_keys', method='GET')
-+ name = 'nixops-%s-%s' % (self.depl.uuid, self.name)
-+ deletes = []
-+ for key in res['ssh_keys']:
-+ if key['public_key'].strip() == public_key:
-+ return key['id']
-+ if key['name'] == name:
-+ deletes.append(key['id'])
-+ for d in deletes:
-+ # This reply is empty, so don't decode json.
-+ self._api('/v1/ssh_keys/%d' % d, method='DELETE', json=False)
-+ res = self._api('/v1/ssh_keys', method='POST', data={
-+ 'name': name,
-+ 'public_key': public_key,
-+ })
-+ return res['ssh_key']['id']
-+
-+ def create(self, defn, check, allow_reboot, allow_recreate):
-+ ssh_key = self.depl.active_resources.get('ssh-key')
-+ if ssh_key is None:
-+ raise Exception('Please specify a ssh-key resource (resources.sshKeyPairs.ssh-key = {}).')
-+
-+ self.set_common_state(defn)
-+
-+ if self.server_id is not None:
-+ return
-+
-+ ssh_key_id = self._create_ssh_key(ssh_key.public_key)
-+
-+ req = {
-+ 'name': self.name,
-+ 'server_type': defn.server_type,
-+ 'start_after_create': True,
-+ 'image': 'debian-9',
-+ 'ssh_keys': [
-+ ssh_key_id,
-+ ],
-+ }
-+
-+ if defn.datacenter:
-+ req['datacenter'] = defn.datacenter
-+ elif defn.location:
-+ req['location'] = defn.location
-+
-+ self.log_start("creating server ...")
-+ create_res = self._api('/v1/servers', method='POST', data=req)
-+ self.server_id = create_res['server']['id']
-+ self.public_ipv4 = create_res['server']['public_net']['ipv4']['ip']
-+ self.public_ipv6 = create_res['server']['public_net']['ipv6']['ip']
-+ self.datacenter = create_res['server']['datacenter']['name']
-+ self.location = create_res['server']['datacenter']['location']['name']
-+
-+ action = create_res['action']
-+ action_path = '/v1/servers/%d/actions/%d' % (self.server_id, action['id'])
-+
-+ while action['status'] == 'running':
-+ time.sleep(1)
-+ res = self._api(action_path, method='GET')
-+ action = res['action']
-+
-+ if action['status'] != 'success':
-+ raise Exception('unexpected status: %s' % action['status'])
-+
-+ self.log_end("{}".format(self.public_ipv4))
-+
-+ self.wait_for_ssh()
-+ self.log_start("running nixos-infect")
-+ self.run_command('bash &1', stdin=open(infect_path))
-+ self.reboot_sync()
-+
-+ def reboot(self, hard=False):
-+ if hard:
-+ self.log("sending hard reset to server...")
-+ res = self._api('/v1/servers/%d/actions/reset' % self.server_id, method='POST')
-+ action = res['action']
-+ action_path = '/v1/servers/%d/actions/%d' % (self.server_id, action['id'])
-+ while action['status'] == 'running':
-+ time.sleep(1)
-+ res = self._api(action_path, method='GET')
-+ action = res['action']
-+ if action['status'] != 'success':
-+ raise Exception('unexpected status: %s' % action['status'])
-+ self.wait_for_ssh()
-+ self.state = self.STARTING
-+ else:
-+ MachineState.reboot(self, hard=hard)
-diff --git a/nixops/data/nixos-infect b/nixops/data/nixos-infect
-index 66634357b..437a2ec61 100644
---- a/nixops/data/nixos-infect
-+++ b/nixops/data/nixos-infect
-@@ -68,26 +68,49 @@ makeConf() {
- }
- EOF
- # (nixos-generate-config will add qemu-user and bind-mounts, so avoid)
-+ local disk
-+ if [ -e /dev/sda ]; then
-+ disk=/dev/sda
-+ else
-+ disk=/dev/vda
-+ fi
- cat > /etc/nixos/hardware-configuration.nix << EOF
- { ... }:
- {
- imports = [ ];
-- boot.loader.grub.device = "/dev/vda";
-- fileSystems."/" = { device = "/dev/vda1"; fsType = "ext4"; };
-+ boot.loader.grub.device = "${disk}";
-+ fileSystems."/" = { device = "${disk}1"; fsType = "ext4"; };
- }
- EOF
-
- local IFS=$'\n'
-- ens3_ip4s=($(ip address show dev eth0 | grep 'inet ' | sed -r 's|.*inet ([0-9.]+)/([0-9]+).*|{ address="\1"; prefixLength=\2; }|'))
-- ens3_ip6s=($(ip address show dev eth0 | grep 'inet6 .*global' | sed -r 's|.*inet6 ([0-9a-f:]+)/([0-9]+).*|{ address="\1"; prefixLength=\2; }|'))
-- ens4_ip4s=($(ip address show dev eth1 | grep 'inet ' | sed -r 's|.*inet ([0-9.]+)/([0-9]+).*|{ address="\1"; prefixLength=\2; }|'))
-- ens4_ip6s=($(ip address show dev eth1 | grep 'inet6 .*global' | sed -r 's|.*inet6 ([0-9a-f:]+)/([0-9]+).*|{ address="\1"; prefixLength=\2; }|'))
-- gateway=($(ip route show dev eth0 | grep default | sed -r 's|default via ([0-9.]+).*|\1|'))
-- gateway6=($(ip -6 route show dev eth0 | grep default | sed -r 's|default via ([0-9a-f:]+).*|\1|'))
-- ether0=($(ip address show dev eth0 | grep link/ether | sed -r 's|.*link/ether ([0-9a-f:]+) .*|\1|'))
-- ether1=($(ip address show dev eth1 | grep link/ether | sed -r 's|.*link/ether ([0-9a-f:]+) .*|\1|'))
-+ gateway=($(ip route show | grep default | sed -r 's|default via ([0-9.]+).*|\1|'))
-+ gateway6=($(ip -6 route show | grep default | sed -r 's|default via ([0-9a-f:]+).*|\1|'))
-+ interfaces=($(ip link | awk -F ': ' '/^[0-9]*: / {if ($2 != "lo") {print $2}}'))
- nameservers=($(grep ^nameserver /etc/resolv.conf | cut -f2 -d' '))
-
-+ # Predict the predictable name for each interface since that is enabled in
-+ # the nixos system.
-+ declare -A predictable_names
-+ for interface in ${interfaces[@]}; do
-+ # udevadm prints out the candidate names which will be selected if
-+ # available in this order.
-+ local name=$(udevadm info /sys/class/net/$interface | awk -F = '
-+ /^E: ID_NET_NAME_FROM_DATABASE=/ {arr[1]=$2}
-+ /^E: ID_NET_NAME_ONBOARD=/ {arr[2]=$2}
-+ /^E: ID_NET_NAME_SLOT=/ {arr[3]=$2}
-+ /^E: ID_NET_NAME_PATH=/ {arr[4]=$2}
-+ /^E: ID_NET_NAME_MAC=/ {arr[5]=$2}
-+ END {for (i=1;i<6;i++) {if (length(arr[i]) > 0) { print arr[i]; break}}}')
-+ if [ -z "$name" ]; then
-+ echo Could not determine predictable name for interface $interface
-+ fi
-+ predictable_names[$interface]=$name
-+ done
-+
-+ # Take a gamble on the first interface being able to reach the gateway.
-+ local default_interface=${predictable_names[${interfaces[0]}]}
-+
- cat > /etc/nixos/networking.nix << EOF
- { ... }: {
- # This file was populated at runtime with the networking
-@@ -96,25 +119,27 @@ EOF
- nameservers = [$(for a in ${nameservers[@]}; do echo -n "
- \"$a\""; done)
- ];
-- defaultGateway = "${gateway}";
-- defaultGateway6 = "${gateway6}";
-+ defaultGateway = {address = "${gateway}"; interface = "${default_interface}";};
-+ defaultGateway6 = {address = "${gateway6}"; interface = "${default_interface}";};
- interfaces = {
-- ens3 = {
-- ip4 = [$(for a in ${ens3_ip4s[@]}; do echo -n "
-- $a"; done)
-- ];
-- ip6 = [$(for a in ${ens3_ip6s[@]}; do echo -n "
-- $a"; done)
-- ];
-- };
-- ens4 = {
-- ip4 = [$(for a in ${ens4_ip4s[@]}; do echo -n "
-+EOF
-+
-+ for interface in ${interfaces[@]}; do
-+ ip4s=($(ip address show dev $interface | grep 'inet ' | sed -r 's|.*inet ([0-9.]+)/([0-9]+).*|{ address="\1"; prefixLength=\2; }|'))
-+ ip6s=($(ip address show dev $interface | grep 'inet6 .*global' | sed -r 's|.*inet6 ([0-9a-f:]+)/([0-9]+).*|{ address="\1"; prefixLength=\2; }|'))
-+ cat >> /etc/nixos/networking.nix << EOF
-+ ${predictable_names[$interface]} = {
-+ ip4 = [$(for a in ${ip4s[@]}; do echo -n "
- $a"; done)
- ];
-- ip6 = [$(for a in ${ens4_ip6s[@]}; do echo -n "
-+ ip6 = [$(for a in ${ip6s[@]}; do echo -n "
- $a"; done)
- ];
- };
-+EOF
-+ done
-+
-+ cat >> /etc/nixos/networking.nix << EOF
- };
- };
- }
-@@ -154,6 +179,12 @@ export HOME="/root"
- groupadd -r nixbld -g 30000
- seq 1 10 | xargs -I{} useradd -c "Nix build user {}" -d /var/empty -g nixbld -G nixbld -M -N -r -s `which nologin` nixbld{}
-
-+if ! which curl >/dev/null 2>/dev/null; then
-+ if which apt-get >/dev/null 2>/dev/null; then
-+ apt-get update && apt-get install -y curl
-+ fi
-+fi
-+
- curl https://nixos.org/nix/install | sh
-
- source ~/.nix-profile/etc/profile.d/nix.sh
diff --git a/overlays/pass/default.nix b/overlays/pass/default.nix
deleted file mode 100644
index ad8facd..0000000
--- a/overlays/pass/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-self: super: {
- pass = super.pass.overrideAttrs (old: rec {
- patches = old.patches ++ [ ./pass-fix-pass-init.patch ];
- });
-}
diff --git a/overlays/pass/pass-fix-pass-init.patch b/overlays/pass/pass-fix-pass-init.patch
deleted file mode 100644
index 10a76c1..0000000
--- a/overlays/pass/pass-fix-pass-init.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 33e8f1cd0065639a948d7b5ba3f93d43bdf7f3be Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Isma=C3=ABl=20Bouya?=
-Date: Sun, 11 Nov 2018 19:47:33 +0100
-Subject: [PATCH] Fix pass init for some gpg keys
-
-This fixes the pass init for gpg keys which have their main key as
-encryption key. This may happen for instance with RSA keys and specific
-configuration.
----
- src/password-store.sh | 2 +-
- tests/t0300-reencryption.sh | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/password-store.sh b/src/password-store.sh
-index d89d455..44d122e 100755
---- a/src/password-store.sh
-+++ b/src/password-store.sh
-@@ -124,7 +124,7 @@ reencrypt_path() {
- IFS=";" eval 'GPG_RECIPIENTS+=( $group )' # http://unix.stackexchange.com/a/92190
- unset "GPG_RECIPIENTS[$index]"
- done
-- gpg_keys="$($GPG $PASSWORD_STORE_GPG_OPTS --list-keys --with-colons "${GPG_RECIPIENTS[@]}" | sed -n 's/^sub:[^:]*:[^:]*:[^:]*:\([^:]*\):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[a-zA-Z]*e[a-zA-Z]*:.*/\1/p' | LC_ALL=C sort -u)"
-+ gpg_keys="$($GPG $PASSWORD_STORE_GPG_OPTS --list-keys --with-colons "${GPG_RECIPIENTS[@]}" | sed -n 's/^[ps]ub:[^:]*:[^:]*:[^:]*:\([^:]*\):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[a-zA-Z]*e[a-zA-Z]*:.*/\1/p' | LC_ALL=C sort -u)"
- fi
- current_keys="$(LC_ALL=C $GPG $PASSWORD_STORE_GPG_OPTS -v --no-secmem-warning --no-permission-warning --decrypt --list-only --keyid-format long "$passfile" 2>&1 | sed -n 's/^gpg: public key is \([A-F0-9]\+\)$/\1/p' | LC_ALL=C sort -u)"
-
-diff --git a/tests/t0300-reencryption.sh b/tests/t0300-reencryption.sh
-index 3c88987..57d873f 100755
---- a/tests/t0300-reencryption.sh
-+++ b/tests/t0300-reencryption.sh
-@@ -7,7 +7,7 @@ cd "$(dirname "$0")"
- INITIAL_PASSWORD="will this password live? a big question indeed..."
-
- canonicalize_gpg_keys() {
-- $GPG --list-keys --with-colons "$@" | sed -n 's/sub:[^:]*:[^:]*:[^:]*:\([^:]*\):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[a-zA-Z]*e[a-zA-Z]*:.*/\1/p' | LC_ALL=C sort -u
-+ $GPG --list-keys --with-colons "$@" | sed -n 's/[ps]ub:[^:]*:[^:]*:[^:]*:\([^:]*\):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[a-zA-Z]*e[a-zA-Z]*:.*/\1/p' | LC_ALL=C sort -u
- }
- gpg_keys_from_encrypted_file() {
- $GPG -v --no-secmem-warning --no-permission-warning --decrypt --list-only --keyid-format long "$1" 2>&1 | grep "public key is" | cut -d ' ' -f 5 | LC_ALL=C sort -u
---
-2.19.1
-
diff --git a/overlays/pelican/default.nix b/overlays/pelican/default.nix
deleted file mode 100644
index 4f8aece..0000000
--- a/overlays/pelican/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-self: super: {
- pelican = with self.python3Packages;
- pelican.overrideAttrs(old: {
- propagatedBuildInputs = old.propagatedBuildInputs ++ [ pyyaml markdown ];
- doInstallCheck = false;
- });
-}
diff --git a/overlays/php-packages/default.nix b/overlays/php-packages/default.nix
deleted file mode 100644
index 90fb613..0000000
--- a/overlays/php-packages/default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-self: super: rec {
- myPhpPackages.mysqli_pam = self.php74.extensions.mysqli.overrideAttrs(old: {
- configureFlags = [ "--with-mysqli=${self.libmysqlclient_pam}/bin/mysql_config" "--with-mysql-sock=/run/mysqld/mysqld.sock" ];
- patches = old.patches or [] ++ [ ./mysqli_patch.patch ];
-});
-}
diff --git a/overlays/php-packages/mysqli_patch.patch b/overlays/php-packages/mysqli_patch.patch
deleted file mode 100644
index a8f03e3..0000000
--- a/overlays/php-packages/mysqli_patch.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/ext/mysqli/mysqli_nonapi.c
-+++ b/ext/mysqli/mysqli_nonapi.c
-@@ -263,7 +263,7 @@ void mysqli_common_connect(INTERNAL_FUNC
- php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql));
-
- #if !defined(MYSQLI_USE_MYSQLND)
-- mysql->mysql->reconnect = MyG(reconnect);
-+ mysql_options(mysql->mysql, MYSQL_OPT_RECONNECT, (my_bool *)&MyG(reconnect));
- #endif
-
- mysql_options(mysql->mysql, MYSQL_OPT_LOCAL_INFILE, (char *)&MyG(allow_local_infile));
diff --git a/overlays/postfix/default.nix b/overlays/postfix/default.nix
deleted file mode 100644
index c77e4cf..0000000
--- a/overlays/postfix/default.nix
+++ /dev/null
@@ -1,3 +0,0 @@
-self: super: {
- postfix = super.postfix.override { withMySQL = true; withPgSQL = true; };
-}
diff --git a/overlays/procps-ng/default.nix b/overlays/procps-ng/default.nix
deleted file mode 100644
index 2d43a11..0000000
--- a/overlays/procps-ng/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-self: super: {
- procps-ng = super.procps-ng.overrideAttrs(old: {
- configureFlags = old.configureFlags ++ [ "--enable-watch8bit" ];
- });
-}
diff --git a/overlays/python-packages/buildbot.nix b/overlays/python-packages/buildbot.nix
deleted file mode 100644
index ccf2f6a..0000000
--- a/overlays/python-packages/buildbot.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-self: super: {
- pythonOverrides = self.buildPythonOverrides (pyself: pysuper: {
- buildbot-plugins = pysuper.buildbot-plugins // {
- buildslist = self.python3PackagesPlus.buildbot-plugins.buildslist;
- };
- buildbot-full = pysuper.buildbot-full.withPlugins [ pyself.buildbot-plugins.buildslist ];
- }) super.pythonOverrides;
-}
diff --git a/overlays/python-packages/default.nix b/overlays/python-packages/default.nix
deleted file mode 100644
index 601eed1..0000000
--- a/overlays/python-packages/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-let
- fromMyPythonPackages = name: self: super: {
- pythonOverrides = self.buildPythonOverrides (pyself: pysuper: {
- "${name}" = self."${pyself.python.pname}PackagesPlus"."${name}";
- }) super.pythonOverrides;
- };
-in
-{
- # https://github.com/NixOS/nixpkgs/issues/44426
- # needs to come before all other in alphabetical order (or make use of
- # lib.mkBefore)
- __pythonOverlayFix = self: super: let
- pyNames = [ "python3" "python36" "python37" "python38" ];
- overriddenPython = name: [
- { inherit name; value = super.${name}.override { packageOverrides = self.pythonOverrides; }; }
- { name = "${name}Packages"; value = self.recurseIntoAttrs self.${name}.pkgs; }
- ];
- overriddenPythons = builtins.concatLists (map overriddenPython pyNames);
- in {
- pythonOverrides = pyself: pysuper: {};
- buildPythonOverrides = newOverrides: currentOverrides: super.lib.composeExtensions newOverrides currentOverrides;
- } // super.lib.attrsets.listToAttrs overriddenPythons;
-
-
- blivet3 = fromMyPythonPackages "blivet3";
- buildbot = import ./buildbot.nix;
- wokkel = fromMyPythonPackages "wokkel";
- pymilter = fromMyPythonPackages "pymilter";
-}
diff --git a/overlays/sc-im/default.nix b/overlays/sc-im/default.nix
deleted file mode 100644
index f728655..0000000
--- a/overlays/sc-im/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-self: super: {
- sc-im = super.sc-im.overrideAttrs (old: {
- buildPhase = ''
- cd src
- sed -i Makefile -e 's@\...name.info@.local/state/$(name)info@'
- cd ..
- '' + old.buildPhase;
- });
-}
diff --git a/overlays/shaarli/default.nix b/overlays/shaarli/default.nix
deleted file mode 100644
index 3b37ee8..0000000
--- a/overlays/shaarli/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-self: super: {
- shaarli = varDir: super.shaarli.overrideAttrs (old: rec {
- version = "0.10.2";
- src = self.fetchurl {
- url = "https://github.com/shaarli/Shaarli/releases/download/v${version}/shaarli-v${version}-full.tar.gz";
- sha256 = "0h8sspj7siy3vgpi2i3gdrjcr5935fr4dfwq2zwd70sjx2sh9s78";
- };
- patchPhase = "";
- patches = (old.patches or []) ++ [ ./shaarli_ldap.patch ];
- installPhase = (old.installPhase or "") + ''
- cp .htaccess $out/
- ln -sf ${varDir}/{cache,pagecache,tmp,data} $out/
- '';
- });
-}
diff --git a/overlays/shaarli/shaarli_ldap.patch b/overlays/shaarli/shaarli_ldap.patch
deleted file mode 100644
index e66a54f..0000000
--- a/overlays/shaarli/shaarli_ldap.patch
+++ /dev/null
@@ -1,425 +0,0 @@
-commit a19c24edc1057bd411821f9e3e7d1d309d38b1bb
-Author: Ismaël Bouya
-Date: Sun Feb 3 20:58:18 2019 +0100
-
- Add ldap connection
-
-diff --git a/.htaccess b/.htaccess
-index 4c00427..5acd708 100644
---- a/.htaccess
-+++ b/.htaccess
-@@ -6,10 +6,23 @@ RewriteEngine On
- # Prevent accessing subdirectories not managed by SCM
- RewriteRule ^(.git|doxygen|vendor) - [F]
-
-+RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
-+RewriteRule ^(.*) - [E=BASE:%1]
-+
-+RewriteCond %{ENV:REDIRECT_BASE} (.+)
-+RewriteRule .* - [E=BASE:%1]
-+
- # Forward the "Authorization" HTTP header
- RewriteCond %{HTTP:Authorization} ^(.*)
- RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
-
-+RewriteCond %{REQUEST_FILENAME} !-f
-+RewriteCond %{REQUEST_FILENAME} !-d
-+RewriteRule ^((?!api/)[^/]*)/?(.*)$ $2?%{QUERY_STRING} [E=USERSPACE:$1]
-+
-+RewriteCond %{ENV:REDIRECT_USERSPACE} (.+)
-+RewriteRule .* - [E=USERSPACE:%1]
-+
- # REST API
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
-diff --git a/application/ApplicationUtils.php b/application/ApplicationUtils.php
-index 911873a..f21a1ef 100644
---- a/application/ApplicationUtils.php
-+++ b/application/ApplicationUtils.php
-@@ -191,6 +191,9 @@ public static function checkResourcePermissions($conf)
- $conf->get('resource.page_cache'),
- $conf->get('resource.raintpl_tmp'),
- ) as $path) {
-+ if (! is_dir($path)) {
-+ mkdir($path, 0755, true);
-+ }
- if (! is_readable(realpath($path))) {
- $errors[] = '"'.$path.'" '. t('directory is not readable');
- }
-diff --git a/application/config/ConfigManager.php b/application/config/ConfigManager.php
-index 32aaea4..99efc15 100644
---- a/application/config/ConfigManager.php
-+++ b/application/config/ConfigManager.php
-@@ -21,6 +21,11 @@ class ConfigManager
-
- public static $DEFAULT_PLUGINS = array('qrcode');
-
-+ /**
-+ * @var string User space.
-+ */
-+ protected $userSpace;
-+
- /**
- * @var string Config folder.
- */
-@@ -41,12 +46,36 @@ class ConfigManager
- *
- * @param string $configFile Configuration file path without extension.
- */
-- public function __construct($configFile = 'data/config')
-+ public function __construct($configFile = null, $userSpace = null)
- {
-- $this->configFile = $configFile;
-+ $this->userSpace = $this->findLDAPUser($userSpace);
-+ if ($configFile !== null) {
-+ $this->configFile = $configFile;
-+ } else {
-+ $this->configFile = ($this->userSpace === null) ? 'data/config' : 'data/' . $this->userSpace . '/config';
-+ }
- $this->initialize();
- }
-
-+ public function findLDAPUser($login, $password = null) {
-+ $connect = ldap_connect(getenv('SHAARLI_LDAP_HOST'));
-+ ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
-+ if (!$connect || !ldap_bind($connect, getenv('SHAARLI_LDAP_DN'), getenv('SHAARLI_LDAP_PASSWORD'))) {
-+ return false;
-+ }
-+
-+ $search_query = str_replace('%login%', ldap_escape($login), getenv('SHAARLI_LDAP_FILTER'));
-+
-+ $search = ldap_search($connect, getenv('SHAARLI_LDAP_BASE'), $search_query);
-+ $info = ldap_get_entries($connect, $search);
-+
-+ if (ldap_count_entries($connect, $search) == 1 && (is_null($password) || ldap_bind($connect, $info[0]["dn"], $password))) {
-+ return $login;
-+ } else {
-+ return null;
-+ }
-+ }
-+
- /**
- * Reset the ConfigManager instance.
- */
-@@ -269,6 +298,16 @@ public function getConfigFileExt()
- return $this->configFile . $this->configIO->getExtension();
- }
-
-+ /**
-+ * Get the current userspace.
-+ *
-+ * @return mixed User space.
-+ */
-+ public function getUserSpace()
-+ {
-+ return $this->userSpace;
-+ }
-+
- /**
- * Recursive function which find asked setting in the loaded config.
- *
-@@ -342,19 +381,31 @@ protected static function removeConfig($settings, &$conf)
- */
- protected function setDefaultValues()
- {
-- $this->setEmpty('resource.data_dir', 'data');
-- $this->setEmpty('resource.config', 'data/config.php');
-- $this->setEmpty('resource.datastore', 'data/datastore.php');
-- $this->setEmpty('resource.ban_file', 'data/ipbans.php');
-- $this->setEmpty('resource.updates', 'data/updates.txt');
-- $this->setEmpty('resource.log', 'data/log.txt');
-- $this->setEmpty('resource.update_check', 'data/lastupdatecheck.txt');
-- $this->setEmpty('resource.history', 'data/history.php');
-+ if ($this->userSpace === null) {
-+ $data = 'data';
-+ $tmp = 'tmp';
-+ $cache = 'cache';
-+ $pagecache = 'pagecache';
-+ } else {
-+ $data = 'data/' . ($this->userSpace);
-+ $tmp = 'tmp/' . ($this->userSpace);
-+ $cache = 'cache/' . ($this->userSpace);
-+ $pagecache = 'pagecache/' . ($this->userSpace);
-+ }
-+
-+ $this->setEmpty('resource.data_dir', $data);
-+ $this->setEmpty('resource.config', $data . '/config.php');
-+ $this->setEmpty('resource.datastore', $data . '/datastore.php');
-+ $this->setEmpty('resource.ban_file', $data . '/ipbans.php');
-+ $this->setEmpty('resource.updates', $data . '/updates.txt');
-+ $this->setEmpty('resource.log', $data . '/log.txt');
-+ $this->setEmpty('resource.update_check', $data . '/lastupdatecheck.txt');
-+ $this->setEmpty('resource.history', $data . '/history.php');
- $this->setEmpty('resource.raintpl_tpl', 'tpl/');
- $this->setEmpty('resource.theme', 'default');
-- $this->setEmpty('resource.raintpl_tmp', 'tmp/');
-- $this->setEmpty('resource.thumbnails_cache', 'cache');
-- $this->setEmpty('resource.page_cache', 'pagecache');
-+ $this->setEmpty('resource.raintpl_tmp', $tmp);
-+ $this->setEmpty('resource.thumbnails_cache', $cache);
-+ $this->setEmpty('resource.page_cache', $pagecache);
-
- $this->setEmpty('security.ban_after', 4);
- $this->setEmpty('security.ban_duration', 1800);
-diff --git a/application/security/LoginManager.php b/application/security/LoginManager.php
-index d6784d6..bdfaca7 100644
---- a/application/security/LoginManager.php
-+++ b/application/security/LoginManager.php
-@@ -32,6 +32,9 @@ class LoginManager
- /** @var string User sign-in token depending on remote IP and credentials */
- protected $staySignedInToken = '';
-
-+ protected $lastErrorReason = '';
-+ protected $lastErrorIsBanishable = false;
-+
- /**
- * Constructor
- *
-@@ -83,7 +86,7 @@ public function getStaySignedInToken()
- */
- public function checkLoginState($cookie, $clientIpId)
- {
-- if (! $this->configManager->exists('credentials.login')) {
-+ if (! $this->configManager->exists('credentials.login') || (isset($_SESSION['username']) && $_SESSION['username'] && $this->configManager->get('credentials.login') !== $_SESSION['username'])) {
- // Shaarli is not configured yet
- $this->isLoggedIn = false;
- return;
-@@ -133,20 +136,40 @@ public function isLoggedIn()
- */
- public function checkCredentials($remoteIp, $clientIpId, $login, $password)
- {
-- $hash = sha1($password . $login . $this->configManager->get('credentials.salt'));
-+ $this->lastErrorIsBanishable = false;
-+
-+ if ($this->configManager->getUserSpace() !== null && $this->configManager->getUserSpace() !== $login) {
-+ logm($this->configManager->get('resource.log'),
-+ $remoteIp,
-+ 'Trying to login to wrong user space');
-+ $this->lastErrorReason = 'You’re trying to access the wrong account.';
-+ return false;
-+ }
-
-- if ($login != $this->configManager->get('credentials.login')
-- || $hash != $this->configManager->get('credentials.hash')
-- ) {
-+ logm($this->configManager->get('resource.log'),
-+ $remoteIp,
-+ 'Trying LDAP connection');
-+ $result = $this->configManager->findLDAPUser($login, $password);
-+ if ($result === false) {
- logm(
- $this->configManager->get('resource.log'),
- $remoteIp,
-- 'Login failed for user ' . $login
-+ 'Impossible to connect to LDAP'
- );
-+ $this->lastErrorReason = 'Server error.';
-+ return false;
-+ } else if (is_null($result)) {
-+ logm(
-+ $this->configManager->get('resource.log'),
-+ $remoteIp,
-+ 'Login failed for user ' . $login
-+ );
-+ $this->lastErrorIsBanishable = true;
-+ $this->lastErrorReason = 'Wrong login/password.';
- return false;
- }
-
-- $this->sessionManager->storeLoginInfo($clientIpId);
-+ $this->sessionManager->storeLoginInfo($clientIpId, $login);
- logm(
- $this->configManager->get('resource.log'),
- $remoteIp,
-@@ -187,6 +210,10 @@ protected function writeBanFile()
- */
- public function handleFailedLogin($server)
- {
-+ if (!$this->lastErrorIsBanishable) {
-+ return $this->lastErrorReason ?: 'Error during login.';
-+ };
-+
- $ip = $server['REMOTE_ADDR'];
- $trusted = $this->configManager->get('security.trusted_proxies', []);
-
-@@ -215,6 +242,7 @@ public function handleFailedLogin($server)
- );
- }
- $this->writeBanFile();
-+ return $this->lastErrorReason ?: 'Error during login.';
- }
-
- /**
-diff --git a/application/security/SessionManager.php b/application/security/SessionManager.php
-index b8b8ab8..5eb4aac 100644
---- a/application/security/SessionManager.php
-+++ b/application/security/SessionManager.php
-@@ -111,10 +111,10 @@ public static function checkId($sessionId)
- *
- * @param string $clientIpId Client IP address identifier
- */
-- public function storeLoginInfo($clientIpId)
-+ public function storeLoginInfo($clientIpId, $login = null)
- {
- $this->session['ip'] = $clientIpId;
-- $this->session['username'] = $this->conf->get('credentials.login');
-+ $this->session['username'] = $login ?: $this->conf->get('credentials.login');
- $this->extendTimeValidityBy(self::$SHORT_TIMEOUT);
- }
-
-diff --git a/index.php b/index.php
-index 4b86a3e..58ae2dd 100644
---- a/index.php
-+++ b/index.php
-@@ -121,7 +121,32 @@
- $_COOKIE['shaarli'] = session_id();
- }
-
--$conf = new ConfigManager();
-+$folderBase = getenv("BASE");
-+
-+if (getenv("USERSPACE")) {
-+ if (isset($_GET["do"]) && $_GET["do"] == "login") {
-+ header("Location: $folderBase/?do=login");
-+ exit;
-+ }
-+ $userspace = preg_replace("/[^-_A-Za-z0-9]/", '', getenv("USERSPACE"));
-+} else if (isset($_SESSION["username"]) && $_SESSION["username"]) {
-+ header("Location: " . $folderBase . "/" . $_SESSION["username"] . "?");
-+ exit;
-+} else if (!isset($_GET["do"]) || $_GET["do"] != "login") {
-+ header("Location: $folderBase/?do=login");
-+ exit;
-+}
-+
-+if (!isset($userspace) && isset($_POST["login"])) {
-+ $userspace = preg_replace("/[^-_A-Za-z0-9]/", '', $_POST["login"]);
-+ error_log("debugImmae: setting userspace from POST: " . $userspace);
-+}
-+
-+if (isset($userspace)) {
-+ $conf = new ConfigManager(null, $userspace);
-+} else {
-+ $conf = new ConfigManager();
-+}
- $sessionManager = new SessionManager($_SESSION, $conf);
- $loginManager = new LoginManager($GLOBALS, $conf, $sessionManager);
- $loginManager->generateStaySignedInToken($_SERVER['REMOTE_ADDR']);
-@@ -175,7 +200,7 @@
- }
-
- // Display the installation form if no existing config is found
-- install($conf, $sessionManager, $loginManager);
-+ install($conf, $sessionManager, $loginManager, $userspace);
- }
-
- $loginManager->checkLoginState($_COOKIE, $clientIpId);
-@@ -205,6 +230,7 @@ function isLoggedIn()
- && $loginManager->checkCredentials($_SERVER['REMOTE_ADDR'], $clientIpId, $_POST['login'], $_POST['password'])
- ) {
- $loginManager->handleSuccessfulLogin($_SERVER);
-+ $userspace = $_POST['login'];
-
- $cookiedir = '';
- if (dirname($_SERVER['SCRIPT_NAME']) != '/') {
-@@ -241,25 +267,25 @@ function isLoggedIn()
- $uri .= '&'.$param.'='.urlencode($_GET[$param]);
- }
- }
-- header('Location: '. $uri);
-+ header('Location: '. $userspace . $uri);
- exit;
- }
-
- if (isset($_GET['edit_link'])) {
-- header('Location: ?edit_link='. escape($_GET['edit_link']));
-+ header('Location: ' . $userspace . '?edit_link='. escape($_GET['edit_link']));
- exit;
- }
-
- if (isset($_POST['returnurl'])) {
- // Prevent loops over login screen.
- if (strpos($_POST['returnurl'], 'do=login') === false) {
-- header('Location: '. generateLocation($_POST['returnurl'], $_SERVER['HTTP_HOST']));
-+ header('Location: ' . generateLocation($_POST['returnurl'], $_SERVER['HTTP_HOST']));
- exit;
- }
- }
-- header('Location: ?'); exit;
-+ header('Location: '. $userspace . '?'); exit;
- } else {
-- $loginManager->handleFailedLogin($_SERVER);
-+ $errorReason = $loginManager->handleFailedLogin($_SERVER);
- $redir = '&username='. urlencode($_POST['login']);
- if (isset($_GET['post'])) {
- $redir .= '&post=' . urlencode($_GET['post']);
-@@ -270,7 +296,7 @@ function isLoggedIn()
- }
- }
- // Redirect to login screen.
-- echo '';
-+ echo '';
- exit;
- }
- }
-@@ -1719,7 +1745,7 @@ function buildLinkList($PAGE, $LINKSDB, $conf, $pluginManager, $loginManager)
- * @param SessionManager $sessionManager SessionManager instance
- * @param LoginManager $loginManager LoginManager instance
- */
--function install($conf, $sessionManager, $loginManager) {
-+function install($conf, $sessionManager, $loginManager, $userspace) {
- // On free.fr host, make sure the /sessions directory exists, otherwise login will not work.
- if (endsWith($_SERVER['HTTP_HOST'],'.free.fr') && !is_dir($_SERVER['DOCUMENT_ROOT'].'/sessions')) mkdir($_SERVER['DOCUMENT_ROOT'].'/sessions',0705);
-
-@@ -1755,7 +1781,7 @@ function install($conf, $sessionManager, $loginManager) {
- }
-
-
-- if (!empty($_POST['setlogin']) && !empty($_POST['setpassword']))
-+ if (true)
- {
- $tz = 'UTC';
- if (!empty($_POST['continent']) && !empty($_POST['city'])
-@@ -1764,15 +1790,15 @@ function install($conf, $sessionManager, $loginManager) {
- $tz = $_POST['continent'].'/'.$_POST['city'];
- }
- $conf->set('general.timezone', $tz);
-- $login = $_POST['setlogin'];
-- $conf->set('credentials.login', $login);
-+ $conf->set('credentials.login', $userspace);
- $salt = sha1(uniqid('', true) .'_'. mt_rand());
- $conf->set('credentials.salt', $salt);
-- $conf->set('credentials.hash', sha1($_POST['setpassword'] . $login . $salt));
-+ $hash = sha1(uniqid('', true) .'_'. mt_rand());
-+ $conf->set('credentials.hash', $hash);
- if (!empty($_POST['title'])) {
- $conf->set('general.title', escape($_POST['title']));
- } else {
-- $conf->set('general.title', 'Shared links on '.escape(index_url($_SERVER)));
-+ $conf->set('general.title', ucwords(str_replace("_", " ", $userspace)));
- }
- $conf->set('translation.language', escape($_POST['language']));
- $conf->set('updates.check_updates', !empty($_POST['updateCheck']));
-@@ -1841,7 +1867,12 @@ function install($conf, $sessionManager, $loginManager) {
- $app = new \Slim\App($container);
-
- // REST API routes
--$app->group('/api/v1', function() {
-+if (isset($userspace)) {
-+ $mountpoint = '/' . $userspace . '/api/v1';
-+} else {
-+ $mountpoint = '/api/v1';
-+}
-+$app->group($mountpoint, function() {
- $this->get('/info', '\Shaarli\Api\Controllers\Info:getInfo')->setName('getInfo');
- $this->get('/links', '\Shaarli\Api\Controllers\Links:getLinks')->setName('getLinks');
- $this->get('/links/{id:[\d]+}', '\Shaarli\Api\Controllers\Links:getLink')->setName('getLink');
-@@ -1860,7 +1891,7 @@ function install($conf, $sessionManager, $loginManager) {
- $response = $app->run(true);
- // Hack to make Slim and Shaarli router work together:
- // If a Slim route isn't found and NOT API call, we call renderPage().
--if ($response->getStatusCode() == 404 && strpos($_SERVER['REQUEST_URI'], '/api/v1') === false) {
-+if ($response->getStatusCode() == 404 && strpos($_SERVER['REQUEST_URI'], $mountpoint) === false) {
- // We use UTF-8 for proper international characters handling.
- header('Content-Type: text/html; charset=utf-8');
- renderPage($conf, $pluginManager, $linkDb, $history, $sessionManager, $loginManager);
diff --git a/overlays/slrn/default.nix b/overlays/slrn/default.nix
deleted file mode 100644
index 1bf5fe2..0000000
--- a/overlays/slrn/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-self: super: {
- slrn = super.slrn.overrideAttrs (old: rec {
- configureFlags = old.configureFlags ++ [ "--with-slrnpull" ];
- });
-}
diff --git a/overlays/taskwarrior/TW-1778_patch.diff b/overlays/taskwarrior/TW-1778_patch.diff
deleted file mode 100644
index 6d7e376..0000000
--- a/overlays/taskwarrior/TW-1778_patch.diff
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/src/text.cpp 2016-02-24 23:18:11.000000000 +0100
-+++ b/src/text.cpp 2020-02-26 18:53:15.869331031 +0100
-@@ -248,7 +248,7 @@
- // Premature EOL.
- if (character == '\n')
- {
-- line = text.substr (offset, line_length);
-+ line = text.substr (offset, prior_cursor-offset);
- offset = cursor;
- return true;
- }
-
diff --git a/overlays/taskwarrior/default.nix b/overlays/taskwarrior/default.nix
deleted file mode 100644
index 9ca52b8..0000000
--- a/overlays/taskwarrior/default.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-self: super:
-{
- taskwarrior = super.taskwarrior.overrideAttrs (old: {
- patches = old.patches or [] ++ [
- ./TW-1778_patch.diff
- ];
- postInstall = ''${old.postInstall}
- mkdir -p "$out/share/vim/vimfiles/ftdetect"
- mkdir -p "$out/share/vim/vimfiles/syntax"
- ln -s "../../../../share/doc/task/scripts/vim/ftdetect/task.vim" "$out/share/vim/vimfiles/ftdetect/"
- ln -s "../../../../share/doc/task/scripts/vim/syntax/taskrc.vim" "$out/share/vim/vimfiles/syntax/"
- ln -s "../../../../share/doc/task/scripts/vim/syntax/taskdata.vim" "$out/share/vim/vimfiles/syntax/"
- ln -s "../../../../share/doc/task/scripts/vim/syntax/taskedit.vim" "$out/share/vim/vimfiles/syntax/"
- '';
- });
-}
diff --git a/overlays/vcsh/default.nix b/overlays/vcsh/default.nix
deleted file mode 100644
index eb4d48e..0000000
--- a/overlays/vcsh/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-self: super: {
- vcsh = super.vcsh.overrideAttrs(old: {
- patchPhase = old.patchPhase or "" + ''
- sed -i -e 's@-r "$XDG_CONFIG_HOME/vcsh/config.d/$VCSH_REPO_NAME"@-f "$XDG_CONFIG_HOME/vcsh/config.d/$VCSH_REPO_NAME"@' vcsh
- '';
- });
-}
diff --git a/overlays/weechat/default.nix b/overlays/weechat/default.nix
deleted file mode 100644
index e8cc792..0000000
--- a/overlays/weechat/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-self: super: {
- weechat = super.weechat.override {
- configure = { availablePlugins, ... }: {
- plugins = with self; with availablePlugins; [
- (python.withPackages (ps: with ps; [websocket_client emoji]))
- perl
- ruby
- ];
- };
- };
-
-}
diff --git a/overlays/ympd/default.nix b/overlays/ympd/default.nix
deleted file mode 100644
index dda17aa..0000000
--- a/overlays/ympd/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-self: super: {
- ympd = super.ympd.overrideAttrs(old: self.mylibs.fetchedGithub ./ympd.json // {
- patches = (old.patches or []) ++ [ ./ympd-password-env.patch ];
- });
-}
diff --git a/overlays/ympd/ympd-password-env.patch b/overlays/ympd/ympd-password-env.patch
deleted file mode 100644
index 2bbe188..0000000
--- a/overlays/ympd/ympd-password-env.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/src/ympd.c b/src/ympd.c
-index 3aed7e6..b3b6fda 100644
---- a/src/ympd.c
-+++ b/src/ympd.c
-@@ -71,6 +71,7 @@ int main(int argc, char **argv)
- char *run_as_user = NULL;
- char const *error_msg = NULL;
- char *webport = "8080";
-+ const char *s;
-
- atexit(bye);
- #ifdef WITH_DYNAMIC_ASSETS
-@@ -92,6 +93,10 @@ int main(int argc, char **argv)
- {0, 0, 0, 0 }
- };
-
-+ if ((s = getenv("MPD_PASSWORD")) != NULL) {
-+ mpd.password = strdup(s);
-+ }
-+
- while((n = getopt_long(argc, argv, "h:p:w:u:vm:",
- long_options, &option_index)) != -1) {
- switch (n) {
diff --git a/overlays/ympd/ympd.json b/overlays/ympd/ympd.json
deleted file mode 100644
index 51f06d5..0000000
--- a/overlays/ympd/ympd.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "612f8fc-master",
- "meta": {
- "name": "ympd",
- "url": "https://github.com/notandy/ympd",
- "branch": "master"
- },
- "github": {
- "owner": "notandy",
- "repo": "ympd",
- "rev": "612f8fc0b2c47fc89d403e4a044541c6b2b238c8",
- "sha256": "01hnj10zl103mrn82vyd42fvq7w5az3jf1qz18889zv67kn73ll9",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/boinctui/default.nix b/pkgs/boinctui/default.nix
deleted file mode 100644
index d8b106a..0000000
--- a/pkgs/boinctui/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ stdenv, fetchurl, expat, openssl, autoconf, ncurses }:
-stdenv.mkDerivation rec {
- name = "boinctui-${version}";
- version = "2.5.0";
- src = fetchurl {
- url = "http://sourceforge.net/projects/boinctui/files/boinctui_${version}.tar.gz";
- sha256 = "16zxp8r4z6pllacdacg681y56cg2phnn3pm5gwszbsi93cix2g8p";
- };
-
- configureFlags = [ "--without-gnutls" ];
- preConfigure = ''
- autoconf
- '';
-
- preBuild = ''
- sed -i -e 's/"HOME"/"XDG_CONFIG_HOME"/' src/cfg.cpp
- sed -i -e 's@\.boinctui\.cfg@boinctui/boinctui.cfg@' src/mainprog.cpp
- '';
- buildInputs = [ expat openssl autoconf ncurses ];
-}
diff --git a/pkgs/cnagios/cnagios.json b/pkgs/cnagios/cnagios.json
deleted file mode 100644
index 4c1c385..0000000
--- a/pkgs/cnagios/cnagios.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "3bd27fb-master",
- "meta": {
- "name": "cnagios",
- "url": "https://github.com/dannywarren/cnagios",
- "branch": "master"
- },
- "github": {
- "owner": "dannywarren",
- "repo": "cnagios",
- "rev": "3bd27fb40e68f61ffd01bea6234b919a667b6fe4",
- "sha256": "0iy5pmlcz6y3if72nav22xqxniiv1v8ywi0927m6s459hkw5n2rb",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/cnagios/default.nix b/pkgs/cnagios/default.nix
deleted file mode 100644
index d5b52f3..0000000
--- a/pkgs/cnagios/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ stdenv, mylibs, perl, ncurses }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./cnagios.json // {
- configureFlags = [
- "--with-etc-dir=/etc/cnagios"
- "--with-var-dir=/var/lib/naemon"
- "--with-status-file=/var/lib/naemon/status.dat"
- "--with-nagios-data=4"
- ];
-
- prePatch = ''
- sed -i -e "s/-lcurses/-lncurses/" Makefile.in
- '';
- installPhase = ''
- install -dm755 $out/share/doc/cnagios
- install -Dm644 cnagiosrc $out/share/doc/cnagios/
- install -Dm644 cnagios.help $out/share/doc/cnagios/
- install -Dm644 cnagios.pl $out/share/doc/cnagios/
- install -dm755 $out/bin
- install -Dm755 cnagios $out/bin/
- '';
- buildInputs = [ perl ncurses ];
-})
diff --git a/pkgs/commento/default.nix b/pkgs/commento/default.nix
deleted file mode 100644
index 6361583..0000000
--- a/pkgs/commento/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ stdenv, fetchurl, patchelfUnstable, autoPatchelfHook }:
-stdenv.mkDerivation rec {
- pname = "commento";
- version = "v1.8.0";
- name = "${pname}-${version}";
- src = fetchurl {
- url = "https://dl.commento.io/release/${name}-linux-glibc-amd64.tar.gz";
- sha256 = "1j88b16hdx3i8nsq56581cscij65slgbsa6yfj73ybbg1585axxs";
- };
- phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
- unpackPhase = ''
- tar --one-top-level=${name} -xf "$src"
- '';
- installPhase = ''
- cp -a ${name} $out
- '';
- postFixup = ''
- ${patchelfUnstable}/bin/patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/commento
- '';
-}
diff --git a/pkgs/composer-env/default.nix b/pkgs/composer-env/default.nix
deleted file mode 100644
index 416a61c..0000000
--- a/pkgs/composer-env/default.nix
+++ /dev/null
@@ -1,280 +0,0 @@
-# This file originates from composer2nix
-
-{ stdenv, writeTextFile, fetchurl, php, unzip }:
-
-let
- composer = stdenv.mkDerivation {
- name = "composer-1.8.0";
- src = fetchurl {
- url = https://github.com/composer/composer/releases/download/1.8.0/composer.phar;
- sha256 = "19pg9ip2mpyf5cyq34fld7qwl77mshqw3c4nif7sxmpnar6sh089";
- };
- buildInputs = [ php ];
-
- # We must wrap the composer.phar because of the impure shebang.
- # We cannot use patchShebangs because the executable verifies its own integrity and will detect that somebody has tampered with it.
-
- buildCommand = ''
- # Copy phar file
- mkdir -p $out/share/php
- cp $src $out/share/php/composer.phar
- chmod 755 $out/share/php/composer.phar
-
- # Create wrapper executable
- mkdir -p $out/bin
- cat > $out/bin/composer <
- '';
- };
-
- constructBin = writeTextFile {
- name = "constructbin.php";
- executable = true;
- text = ''
- #! ${php}/bin/php
-
- '';
- };
-
- bundleDependencies = dependencies:
- stdenv.lib.concatMapStrings (dependencyName:
- let
- dependency = dependencies.${dependencyName};
- in
- ''
- ${if dependency.targetDir == "" then ''
- vendorDir="$(dirname ${dependencyName})"
- mkdir -p "$vendorDir"
- ${if symlinkDependencies then
- ''ln -s "${dependency.src}" "$vendorDir/$(basename "${dependencyName}")"''
- else
- ''cp -a "${dependency.src}" "$vendorDir/$(basename "${dependencyName}")"''
- }${if dependency.needsModifyRights or false then "\n" + ''
- chmod -R u+rwx "$vendorDir/$(basename "${dependencyName}")"
- '' else ""}
- '' else ''
- namespaceDir="${dependencyName}/$(dirname "${dependency.targetDir}")"
- mkdir -p "$namespaceDir"
- ${if symlinkDependencies then
- ''ln -s "${dependency.src}" "$namespaceDir/$(basename "${dependency.targetDir}")"''
- else
- ''cp -a "${dependency.src}" "$namespaceDir/$(basename "${dependency.targetDir}")"''
- }${if dependency.needsModifyRights or false then "\n" + ''
- chmod -R u+rwx "$namespaceDir/$(basename "${dependency.targetDir}")"
- '' else ""}
- ''}
- '') (builtins.attrNames dependencies);
-
- extraArgs = removeAttrs args [ "name" "packages" "devPackages" "buildInputs" ];
- in
- stdenv.mkDerivation ({
- name = "composer-${name}";
- buildInputs = [ php composer ] ++ buildInputs;
-
- inherit unpackPhase buildPhase;
-
- installPhase = ''
- ${if executable then ''
- mkdir -p $out/share/php
- cp -a $src $out/share/php/$name
- chmod -R u+w $out/share/php/$name
- cd $out/share/php/$name
- '' else ''
- cp -a $src $out
- chmod -R u+w $out
- cd $out
- ''}
-
- # Execute pre install hook
- runHook preInstall
-
- # Remove unwanted files
- rm -f *.nix
-
- export HOME=$TMPDIR
-
- ${if doRemoveVendor then ''
- # Remove the provided vendor folder if it exists
- rm -Rf vendor
- '' else ""}
- # If there is no composer.lock file, compose a dummy file.
- # Otherwise, composer attempts to download the package.json file from
- # the registry which we do not want.
- if [ ! -f composer.lock ]
- then
- cat > composer.lock < vendor/composer/installed.json
-
- # Copy or symlink the provided dependencies
- cd vendor
- ${bundleDependencies packages}
- ${stdenv.lib.optionalString (!noDev) (bundleDependencies devPackages)}
- cd ..
-
- # Reconstruct autoload scripts
- # We use the optimize feature because Nix packages cannot change after they have been built
- # Using the dynamic loader for a Nix package is useless since there is nothing to dynamically reload.
- composer dump-autoload --optimize ${stdenv.lib.optionalString noDev "--no-dev"}
-
- # Run the install step as a validation to confirm that everything works out as expected
- composer install --optimize-autoloader ${stdenv.lib.optionalString noDev "--no-dev"}
-
- ${stdenv.lib.optionalString executable ''
- # Reconstruct the bin/ folder if we deploy an executable project
- ${constructBin} composer.json
- ln -s $(pwd)/vendor/bin $out/bin
- ''}
-
- ${stdenv.lib.optionalString (!symlinkDependencies) ''
- # Patch the shebangs if possible
- if [ -d $(pwd)/vendor/bin ]
- then
- # Look for all executables in bin/
- for i in $(pwd)/vendor/bin/*
- do
- # Look for their location
- realFile=$(readlink -f "$i")
-
- # Restore write permissions
- chmod u+wx "$(dirname "$realFile")"
- chmod u+w "$realFile"
-
- # Patch shebang
- sed -e "s|#!/usr/bin/php|#!${php}/bin/php|" \
- -e "s|#!/usr/bin/env php|#!${php}/bin/php|" \
- "$realFile" > tmp
- mv tmp "$realFile"
- chmod u+x "$realFile"
- done
- fi
- ''}
-
- if [ "$removeComposerArtifacts" = "1" ]
- then
- # Remove composer stuff
- rm -f composer.json composer.lock
- fi
-
- # Execute post install hook
- runHook postInstall
- '';
- } // extraArgs);
-in
-{
- composer = stdenv.lib.makeOverridable composer;
- buildZipPackage = stdenv.lib.makeOverridable buildZipPackage;
- buildPackage = stdenv.lib.makeOverridable buildPackage;
-}
diff --git a/pkgs/crypto/cardano-cli/default.nix b/pkgs/crypto/cardano-cli/default.nix
deleted file mode 100644
index 3cd5a4c..0000000
--- a/pkgs/crypto/cardano-cli/default.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ rustPlatform, fetchFromGitHub }:
-rustPlatform.buildRustPackage rec {
- name = "cardano-cli-${version}";
- version = "master";
-
- src = fetchFromGitHub {
- owner = "input-output-hk";
- repo = "cardano-cli";
- rev = "ed064d5a3b96c23b52bb20ca49da9cb8764a2e0f";
- sha256 = "07y5ssar6aq93snrvmapk05zmym4w23ydvjn2njp8saxk23ivqsg";
- fetchSubmodules = true;
- };
-
- cargoSha256 = "0j68dsqahvgpa9ms62149530lbfa55lmpd56rgdxkrh2z32lshs8";
- verifyCargoDeps = true;
-}
diff --git a/pkgs/crypto/cardano/daedalus.json b/pkgs/crypto/cardano/daedalus.json
deleted file mode 100644
index dcd14c5..0000000
--- a/pkgs/crypto/cardano/daedalus.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "0.15.1",
- "meta": {
- "name": "daedalus",
- "url": "https://github.com/input-output-hk/daedalus",
- "branch": "refs/tags/0.15.1"
- },
- "github": {
- "owner": "input-output-hk",
- "repo": "daedalus",
- "rev": "998fd3189c9a54fac496dfef7a6224714c67bc80",
- "sha256": "1r3gwfv6hn7lzp4h2s6849m7x12nxadsql358ss615krvdlnb6rr",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/crypto/cardano/default.nix b/pkgs/crypto/cardano/default.nix
deleted file mode 100644
index 879fddb..0000000
--- a/pkgs/crypto/cardano/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ stdenv, mylibs }:
-let
- daedalusSrc = (mylibs.fetchedGithub ./daedalus.json).src;
- daedalusOrig = (import daedalusSrc {}).daedalus;
- cfg = stdenv.mkDerivation rec {
- name = "launcher-config-custom";
- buildInputs = [ daedalusSrc daedalusOrig.cfg ];
- src = daedalusOrig.cfg;
- installPhase = ''
- cp -a $src $out
- chmod -R u+w $out
- cd $out/etc
- sed -e "/^walletPath/d" -e "/^walletArgs/d" launcher-config.yaml > launcher-config-server-only.yaml
- '';
- };
-in
-stdenv.mkDerivation rec {
- name = "daedalus-custom";
- src = daedalusOrig;
- buildInputs = [ cfg daedalusOrig ];
- installPhase = ''
- cp -a $src $out
- chmod -R u+w $out
- cd $out/bin
- sed -i -e "s@${builtins.storeDir}/[0-9a-z]*-daedalus-config@${cfg}/etc@" daedalus
- sed -e "s@${cfg}/etc/launcher-config.yaml@${cfg}/etc/launcher-config-server-only.yaml@" daedalus > daedalus-server-only
- chmod a+x daedalus-server-only
- '';
-}
diff --git a/pkgs/crypto/iota-cli-app/default.nix b/pkgs/crypto/iota-cli-app/default.nix
deleted file mode 100644
index e9e9f92..0000000
--- a/pkgs/crypto/iota-cli-app/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ stdenv, mylibs, fetchurl, fetchgit, callPackage, nodePackages, nodejs-10_x }:
-let
- nodeEnv = callPackage mylibs.nodeEnv { nodejs = nodejs-10_x; };
- # built using node2nix -8 -l package-lock.json
- # and changing "./." to "src"
- packageEnv = import ./node-packages.nix {
- src = stdenv.mkDerivation (mylibs.fetchedGithub ./iota-cli-app.json // {
- phases = "installPhase";
- installPhase = ''
- cp -a $src $out
- chmod u+w -R $out
- cd $out
- sed -i -e "s@host: 'http://localhost',@host: 'https://nodes.thetangle.org',@" index.js
- sed -i -e "s@port: 14265@port: 443@" index.js
- '';
- });
- inherit fetchurl fetchgit nodeEnv;
- };
-in
-packageEnv.package
diff --git a/pkgs/crypto/iota-cli-app/iota-cli-app.json b/pkgs/crypto/iota-cli-app/iota-cli-app.json
deleted file mode 100644
index 6b47dec..0000000
--- a/pkgs/crypto/iota-cli-app/iota-cli-app.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "d7e2e08-master",
- "meta": {
- "name": "iota-cli-app",
- "url": "https://github.com/iotaledger/cli-app",
- "branch": "master"
- },
- "github": {
- "owner": "iotaledger",
- "repo": "cli-app",
- "rev": "d7e2e0856ae6bd34890fefb4245c07cd467a5032",
- "sha256": "1n9kczsxdgjv8282nj2grlijvxipiskx0ndn169vz6v1l1hrwc8b",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/crypto/iota-cli-app/node-packages.nix b/pkgs/crypto/iota-cli-app/node-packages.nix
deleted file mode 100644
index d5c61d6..0000000
--- a/pkgs/crypto/iota-cli-app/node-packages.nix
+++ /dev/null
@@ -1,1814 +0,0 @@
-# This file has been generated by node2nix 1.6.0. Do not edit!
-
-{src, nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
-
-let
- sources = {
- "acorn-3.3.0" = {
- name = "acorn";
- packageName = "acorn";
- version = "3.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz";
- sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
- };
- };
- "acorn-5.2.1" = {
- name = "acorn";
- packageName = "acorn";
- version = "5.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz";
- sha512 = "jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==";
- };
- };
- "acorn-jsx-3.0.1" = {
- name = "acorn-jsx";
- packageName = "acorn-jsx";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
- sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
- };
- };
- "ajv-4.11.8" = {
- name = "ajv";
- packageName = "ajv";
- version = "4.11.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz";
- sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
- };
- };
- "ajv-keywords-1.5.1" = {
- name = "ajv-keywords";
- packageName = "ajv-keywords";
- version = "1.5.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz";
- sha1 = "314dd0a4b3368fad3dfcdc54ede6171b886daf3c";
- };
- };
- "ansi-escapes-1.4.0" = {
- name = "ansi-escapes";
- packageName = "ansi-escapes";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz";
- sha1 = "d3a8a83b319aa67793662b13e761c7911422306e";
- };
- };
- "ansi-regex-2.1.1" = {
- name = "ansi-regex";
- packageName = "ansi-regex";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
- sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
- };
- };
- "ansi-regex-3.0.0" = {
- name = "ansi-regex";
- packageName = "ansi-regex";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
- sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
- };
- };
- "ansi-styles-2.2.1" = {
- name = "ansi-styles";
- packageName = "ansi-styles";
- version = "2.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
- sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
- };
- };
- "ansi-styles-3.2.0" = {
- name = "ansi-styles";
- packageName = "ansi-styles";
- version = "3.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz";
- sha512 = "NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==";
- };
- };
- "argparse-1.0.9" = {
- name = "argparse";
- packageName = "argparse";
- version = "1.0.9";
- src = fetchurl {
- url = "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz";
- sha1 = "73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86";
- };
- };
- "array-union-1.0.2" = {
- name = "array-union";
- packageName = "array-union";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz";
- sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
- };
- };
- "array-uniq-1.0.3" = {
- name = "array-uniq";
- packageName = "array-uniq";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz";
- sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
- };
- };
- "arrify-1.0.1" = {
- name = "arrify";
- packageName = "arrify";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz";
- sha1 = "898508da2226f380df904728456849c1501a4b0d";
- };
- };
- "async-2.6.0" = {
- name = "async";
- packageName = "async";
- version = "2.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/async/-/async-2.6.0.tgz";
- sha512 = "xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==";
- };
- };
- "babel-code-frame-6.26.0" = {
- name = "babel-code-frame";
- packageName = "babel-code-frame";
- version = "6.26.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz";
- sha1 = "63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b";
- };
- };
- "babel-polyfill-6.26.0" = {
- name = "babel-polyfill";
- packageName = "babel-polyfill";
- version = "6.26.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz";
- sha1 = "379937abc67d7895970adc621f284cd966cf2153";
- };
- };
- "babel-runtime-6.26.0" = {
- name = "babel-runtime";
- packageName = "babel-runtime";
- version = "6.26.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
- sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
- };
- };
- "balanced-match-1.0.0" = {
- name = "balanced-match";
- packageName = "balanced-match";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
- sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
- };
- };
- "bignumber.js-4.1.0" = {
- name = "bignumber.js";
- packageName = "bignumber.js";
- version = "4.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz";
- sha512 = "eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==";
- };
- };
- "bluebird-3.5.1" = {
- name = "bluebird";
- packageName = "bluebird";
- version = "3.5.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz";
- sha512 = "MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==";
- };
- };
- "brace-expansion-1.1.8" = {
- name = "brace-expansion";
- packageName = "brace-expansion";
- version = "1.1.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz";
- sha1 = "c07b211c7c952ec1f8efd51a77ef0d1d3990a292";
- };
- };
- "caller-path-0.1.0" = {
- name = "caller-path";
- packageName = "caller-path";
- version = "0.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz";
- sha1 = "94085ef63581ecd3daa92444a8fe94e82577751f";
- };
- };
- "callsites-0.2.0" = {
- name = "callsites";
- packageName = "callsites";
- version = "0.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz";
- sha1 = "afab96262910a7f33c19a5775825c69f34e350ca";
- };
- };
- "chalk-1.1.3" = {
- name = "chalk";
- packageName = "chalk";
- version = "1.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
- sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
- };
- };
- "chalk-2.3.0" = {
- name = "chalk";
- packageName = "chalk";
- version = "2.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz";
- sha512 = "Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==";
- };
- };
- "circular-json-0.3.3" = {
- name = "circular-json";
- packageName = "circular-json";
- version = "0.3.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz";
- sha512 = "UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==";
- };
- };
- "cli-cursor-1.0.2" = {
- name = "cli-cursor";
- packageName = "cli-cursor";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz";
- sha1 = "64da3f7d56a54412e59794bd62dc35295e8f2987";
- };
- };
- "cli-width-1.1.1" = {
- name = "cli-width";
- packageName = "cli-width";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz";
- sha1 = "a4d293ef67ebb7b88d4a4d42c0ccf00c4d1e366d";
- };
- };
- "cli-width-2.2.0" = {
- name = "cli-width";
- packageName = "cli-width";
- version = "2.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz";
- sha1 = "ff19ede8a9a5e579324147b0c11f0fbcbabed639";
- };
- };
- "co-4.6.0" = {
- name = "co";
- packageName = "co";
- version = "4.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
- sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
- };
- };
- "code-point-at-1.1.0" = {
- name = "code-point-at";
- packageName = "code-point-at";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
- sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
- };
- };
- "color-convert-1.9.1" = {
- name = "color-convert";
- packageName = "color-convert";
- version = "1.9.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz";
- sha512 = "mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==";
- };
- };
- "color-name-1.1.3" = {
- name = "color-name";
- packageName = "color-name";
- version = "1.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
- sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
- };
- };
- "colors-1.1.2" = {
- name = "colors";
- packageName = "colors";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz";
- sha1 = "168a4701756b6a7f51a12ce0c97bfa28c084ed63";
- };
- };
- "concat-map-0.0.1" = {
- name = "concat-map";
- packageName = "concat-map";
- version = "0.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
- sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
- };
- };
- "concat-stream-1.6.0" = {
- name = "concat-stream";
- packageName = "concat-stream";
- version = "1.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz";
- sha1 = "0aac662fd52be78964d5532f694784e70110acf7";
- };
- };
- "core-js-2.5.3" = {
- name = "core-js";
- packageName = "core-js";
- version = "2.5.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz";
- sha1 = "8acc38345824f16d8365b7c9b4259168e8ed603e";
- };
- };
- "core-util-is-1.0.2" = {
- name = "core-util-is";
- packageName = "core-util-is";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
- sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
- };
- };
- "crypto-js-3.1.9-1" = {
- name = "crypto-js";
- packageName = "crypto-js";
- version = "3.1.9-1";
- src = fetchurl {
- url = "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz";
- sha1 = "fda19e761fc077e01ffbfdc6e9fdfc59e8806cd8";
- };
- };
- "d-1.0.0" = {
- name = "d";
- packageName = "d";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/d/-/d-1.0.0.tgz";
- sha1 = "754bb5bfe55451da69a58b94d45f4c5b0462d58f";
- };
- };
- "debug-2.6.9" = {
- name = "debug";
- packageName = "debug";
- version = "2.6.9";
- src = fetchurl {
- url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
- sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
- };
- };
- "deep-is-0.1.3" = {
- name = "deep-is";
- packageName = "deep-is";
- version = "0.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
- sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
- };
- };
- "del-2.2.2" = {
- name = "del";
- packageName = "del";
- version = "2.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/del/-/del-2.2.2.tgz";
- sha1 = "c12c981d067846c84bcaf862cff930d907ffd1a8";
- };
- };
- "doctrine-2.0.2" = {
- name = "doctrine";
- packageName = "doctrine";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz";
- sha512 = "y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==";
- };
- };
- "encoding-0.1.12" = {
- name = "encoding";
- packageName = "encoding";
- version = "0.1.12";
- src = fetchurl {
- url = "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz";
- sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
- };
- };
- "es5-ext-0.10.37" = {
- name = "es5-ext";
- packageName = "es5-ext";
- version = "0.10.37";
- src = fetchurl {
- url = "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz";
- sha1 = "0ee741d148b80069ba27d020393756af257defc3";
- };
- };
- "es6-iterator-2.0.3" = {
- name = "es6-iterator";
- packageName = "es6-iterator";
- version = "2.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz";
- sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
- };
- };
- "es6-map-0.1.5" = {
- name = "es6-map";
- packageName = "es6-map";
- version = "0.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz";
- sha1 = "9136e0503dcc06a301690f0bb14ff4e364e949f0";
- };
- };
- "es6-set-0.1.5" = {
- name = "es6-set";
- packageName = "es6-set";
- version = "0.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz";
- sha1 = "d2b3ec5d4d800ced818db538d28974db0a73ccb1";
- };
- };
- "es6-symbol-3.1.1" = {
- name = "es6-symbol";
- packageName = "es6-symbol";
- version = "3.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz";
- sha1 = "bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77";
- };
- };
- "es6-weak-map-2.0.2" = {
- name = "es6-weak-map";
- packageName = "es6-weak-map";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz";
- sha1 = "5e3ab32251ffd1538a1f8e5ffa1357772f92d96f";
- };
- };
- "escape-string-regexp-1.0.5" = {
- name = "escape-string-regexp";
- packageName = "escape-string-regexp";
- version = "1.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
- sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
- };
- };
- "escope-3.6.0" = {
- name = "escope";
- packageName = "escope";
- version = "3.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz";
- sha1 = "e01975e812781a163a6dadfdd80398dc64c889c3";
- };
- };
- "eslint-3.19.0" = {
- name = "eslint";
- packageName = "eslint";
- version = "3.19.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz";
- sha1 = "c8fc6201c7f40dd08941b87c085767386a679acc";
- };
- };
- "espree-3.5.2" = {
- name = "espree";
- packageName = "espree";
- version = "3.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz";
- sha512 = "sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==";
- };
- };
- "esprima-4.0.0" = {
- name = "esprima";
- packageName = "esprima";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz";
- sha512 = "oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==";
- };
- };
- "esquery-1.0.0" = {
- name = "esquery";
- packageName = "esquery";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz";
- sha1 = "cfba8b57d7fba93f17298a8a006a04cda13d80fa";
- };
- };
- "esrecurse-4.2.0" = {
- name = "esrecurse";
- packageName = "esrecurse";
- version = "4.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz";
- sha1 = "fa9568d98d3823f9a41d91e902dcab9ea6e5b163";
- };
- };
- "estraverse-4.2.0" = {
- name = "estraverse";
- packageName = "estraverse";
- version = "4.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz";
- sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
- };
- };
- "esutils-2.0.2" = {
- name = "esutils";
- packageName = "esutils";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz";
- sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
- };
- };
- "event-emitter-0.3.5" = {
- name = "event-emitter";
- packageName = "event-emitter";
- version = "0.3.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz";
- sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39";
- };
- };
- "exit-hook-1.1.1" = {
- name = "exit-hook";
- packageName = "exit-hook";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz";
- sha1 = "f05ca233b48c05d54fff07765df8507e95c02ff8";
- };
- };
- "fast-levenshtein-2.0.6" = {
- name = "fast-levenshtein";
- packageName = "fast-levenshtein";
- version = "2.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
- sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
- };
- };
- "figures-1.7.0" = {
- name = "figures";
- packageName = "figures";
- version = "1.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz";
- sha1 = "cbe1e3affcf1cd44b80cadfed28dc793a9701d2e";
- };
- };
- "file-entry-cache-2.0.0" = {
- name = "file-entry-cache";
- packageName = "file-entry-cache";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz";
- sha1 = "c392990c3e684783d838b8c84a45d8a048458361";
- };
- };
- "flat-cache-1.3.0" = {
- name = "flat-cache";
- packageName = "flat-cache";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz";
- sha1 = "d3030b32b38154f4e3b7e9c709f490f7ef97c481";
- };
- };
- "fs.realpath-1.0.0" = {
- name = "fs.realpath";
- packageName = "fs.realpath";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
- sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
- };
- };
- "generate-function-2.0.0" = {
- name = "generate-function";
- packageName = "generate-function";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz";
- sha1 = "6858fe7c0969b7d4e9093337647ac79f60dfbe74";
- };
- };
- "generate-object-property-1.2.0" = {
- name = "generate-object-property";
- packageName = "generate-object-property";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz";
- sha1 = "9c0e1c40308ce804f4783618b937fa88f99d50d0";
- };
- };
- "glob-7.1.2" = {
- name = "glob";
- packageName = "glob";
- version = "7.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
- sha512 = "MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==";
- };
- };
- "globals-9.18.0" = {
- name = "globals";
- packageName = "globals";
- version = "9.18.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz";
- sha512 = "S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==";
- };
- };
- "globby-5.0.0" = {
- name = "globby";
- packageName = "globby";
- version = "5.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz";
- sha1 = "ebd84667ca0dbb330b99bcfc68eac2bc54370e0d";
- };
- };
- "graceful-fs-4.1.11" = {
- name = "graceful-fs";
- packageName = "graceful-fs";
- version = "4.1.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz";
- sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658";
- };
- };
- "has-ansi-2.0.0" = {
- name = "has-ansi";
- packageName = "has-ansi";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
- sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
- };
- };
- "has-flag-2.0.0" = {
- name = "has-flag";
- packageName = "has-flag";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz";
- sha1 = "e8207af1cc7b30d446cc70b734b5e8be18f88d51";
- };
- };
- "iconv-lite-0.4.19" = {
- name = "iconv-lite";
- packageName = "iconv-lite";
- version = "0.4.19";
- src = fetchurl {
- url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz";
- sha512 = "oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==";
- };
- };
- "ignore-3.3.7" = {
- name = "ignore";
- packageName = "ignore";
- version = "3.3.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz";
- sha512 = "YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==";
- };
- };
- "imurmurhash-0.1.4" = {
- name = "imurmurhash";
- packageName = "imurmurhash";
- version = "0.1.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz";
- sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
- };
- };
- "in-publish-2.0.0" = {
- name = "in-publish";
- packageName = "in-publish";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz";
- sha1 = "e20ff5e3a2afc2690320b6dc552682a9c7fadf51";
- };
- };
- "inflight-1.0.6" = {
- name = "inflight";
- packageName = "inflight";
- version = "1.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
- sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
- };
- };
- "inherits-2.0.3" = {
- name = "inherits";
- packageName = "inherits";
- version = "2.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
- sha1 = "633c2c83e3da42a502f52466022480f4208261de";
- };
- };
- "inquirer-0.11.0" = {
- name = "inquirer";
- packageName = "inquirer";
- version = "0.11.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/inquirer/-/inquirer-0.11.0.tgz";
- sha1 = "7448bfa924092af311d47173bbab990cae2bb027";
- };
- };
- "inquirer-0.12.0" = {
- name = "inquirer";
- packageName = "inquirer";
- version = "0.12.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz";
- sha1 = "1ef2bfd63504df0bc75785fff8c2c41df12f077e";
- };
- };
- "install-0.10.4" = {
- name = "install";
- packageName = "install";
- version = "0.10.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/install/-/install-0.10.4.tgz";
- sha512 = "+IRyOastuPmLVx9zlVXJoKErSqz1Ma5at9A7S8yfsj3W+Kg95faPoh3bPDtMrZ/grz4PRmXzrswmlzfLlYyLOw==";
- };
- };
- "interpret-1.1.0" = {
- name = "interpret";
- packageName = "interpret";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz";
- sha1 = "7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614";
- };
- };
- "iota.lib.js-0.4.6" = {
- name = "iota.lib.js";
- packageName = "iota.lib.js";
- version = "0.4.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/iota.lib.js/-/iota.lib.js-0.4.6.tgz";
- sha1 = "47afdc03d57c7f55d2f58f068db492df6bc6e9bb";
- };
- };
- "is-fullwidth-code-point-1.0.0" = {
- name = "is-fullwidth-code-point";
- packageName = "is-fullwidth-code-point";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
- sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
- };
- };
- "is-fullwidth-code-point-2.0.0" = {
- name = "is-fullwidth-code-point";
- packageName = "is-fullwidth-code-point";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
- sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
- };
- };
- "is-my-json-valid-2.16.1" = {
- name = "is-my-json-valid";
- packageName = "is-my-json-valid";
- version = "2.16.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz";
- sha512 = "ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==";
- };
- };
- "is-path-cwd-1.0.0" = {
- name = "is-path-cwd";
- packageName = "is-path-cwd";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz";
- sha1 = "d225ec23132e89edd38fda767472e62e65f1106d";
- };
- };
- "is-path-in-cwd-1.0.0" = {
- name = "is-path-in-cwd";
- packageName = "is-path-in-cwd";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz";
- sha1 = "6477582b8214d602346094567003be8a9eac04dc";
- };
- };
- "is-path-inside-1.0.1" = {
- name = "is-path-inside";
- packageName = "is-path-inside";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz";
- sha1 = "8ef5b7de50437a3fdca6b4e865ef7aa55cb48036";
- };
- };
- "is-property-1.0.2" = {
- name = "is-property";
- packageName = "is-property";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz";
- sha1 = "57fe1c4e48474edd65b09911f26b1cd4095dda84";
- };
- };
- "is-resolvable-1.0.1" = {
- name = "is-resolvable";
- packageName = "is-resolvable";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz";
- sha512 = "y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==";
- };
- };
- "is-stream-1.1.0" = {
- name = "is-stream";
- packageName = "is-stream";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz";
- sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
- };
- };
- "isarray-1.0.0" = {
- name = "isarray";
- packageName = "isarray";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
- sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
- };
- };
- "js-tokens-3.0.2" = {
- name = "js-tokens";
- packageName = "js-tokens";
- version = "3.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz";
- sha1 = "9866df395102130e38f7f996bceb65443209c25b";
- };
- };
- "js-yaml-3.10.0" = {
- name = "js-yaml";
- packageName = "js-yaml";
- version = "3.10.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz";
- sha512 = "O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==";
- };
- };
- "json-stable-stringify-1.0.1" = {
- name = "json-stable-stringify";
- packageName = "json-stable-stringify";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
- sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
- };
- };
- "json5-0.5.1" = {
- name = "json5";
- packageName = "json5";
- version = "0.5.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz";
- sha1 = "1eade7acc012034ad84e2396767ead9fa5495821";
- };
- };
- "jsonify-0.0.0" = {
- name = "jsonify";
- packageName = "jsonify";
- version = "0.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz";
- sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
- };
- };
- "jsonpointer-4.0.1" = {
- name = "jsonpointer";
- packageName = "jsonpointer";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz";
- sha1 = "4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9";
- };
- };
- "left-pad-1.2.0" = {
- name = "left-pad";
- packageName = "left-pad";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz";
- sha1 = "d30a73c6b8201d8f7d8e7956ba9616087a68e0ee";
- };
- };
- "levn-0.3.0" = {
- name = "levn";
- packageName = "levn";
- version = "0.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
- sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
- };
- };
- "lodash-3.10.1" = {
- name = "lodash";
- packageName = "lodash";
- version = "3.10.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz";
- sha1 = "5bf45e8e49ba4189e17d482789dfd15bd140b7b6";
- };
- };
- "lodash-4.17.4" = {
- name = "lodash";
- packageName = "lodash";
- version = "4.17.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz";
- sha1 = "78203a4d1c328ae1d86dca6460e369b57f4055ae";
- };
- };
- "log-update-1.0.2" = {
- name = "log-update";
- packageName = "log-update";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz";
- sha1 = "19929f64c4093d2d2e7075a1dad8af59c296b8d1";
- };
- };
- "minimatch-3.0.4" = {
- name = "minimatch";
- packageName = "minimatch";
- version = "3.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
- sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
- };
- };
- "minimist-0.0.8" = {
- name = "minimist";
- packageName = "minimist";
- version = "0.0.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
- sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
- };
- };
- "minimist-1.2.0" = {
- name = "minimist";
- packageName = "minimist";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz";
- sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
- };
- };
- "mkdirp-0.5.1" = {
- name = "mkdirp";
- packageName = "mkdirp";
- version = "0.5.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
- sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
- };
- };
- "moment-2.20.1" = {
- name = "moment";
- packageName = "moment";
- version = "2.20.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz";
- sha512 = "Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==";
- };
- };
- "ms-2.0.0" = {
- name = "ms";
- packageName = "ms";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
- sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
- };
- };
- "mute-stream-0.0.5" = {
- name = "mute-stream";
- packageName = "mute-stream";
- version = "0.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz";
- sha1 = "8fbfabb0a98a253d3184331f9e8deb7372fac6c0";
- };
- };
- "natural-compare-1.4.0" = {
- name = "natural-compare";
- packageName = "natural-compare";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz";
- sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
- };
- };
- "node-fetch-1.7.3" = {
- name = "node-fetch";
- packageName = "node-fetch";
- version = "1.7.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz";
- sha512 = "NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==";
- };
- };
- "node-localstorage-0.6.0" = {
- name = "node-localstorage";
- packageName = "node-localstorage";
- version = "0.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/node-localstorage/-/node-localstorage-0.6.0.tgz";
- sha1 = "45a0601c6932dfde6644a23361f1be173c75d3af";
- };
- };
- "number-is-nan-1.0.1" = {
- name = "number-is-nan";
- packageName = "number-is-nan";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
- sha1 = "097b602b53422a522c1afb8790318336941a011d";
- };
- };
- "object-assign-4.1.1" = {
- name = "object-assign";
- packageName = "object-assign";
- version = "4.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
- sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
- };
- };
- "once-1.4.0" = {
- name = "once";
- packageName = "once";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
- sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
- };
- };
- "onetime-1.1.0" = {
- name = "onetime";
- packageName = "onetime";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz";
- sha1 = "a1f7838f8314c516f05ecefcbc4ccfe04b4ed789";
- };
- };
- "optionator-0.8.2" = {
- name = "optionator";
- packageName = "optionator";
- version = "0.8.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz";
- sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
- };
- };
- "os-homedir-1.0.2" = {
- name = "os-homedir";
- packageName = "os-homedir";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
- sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
- };
- };
- "path-is-absolute-1.0.1" = {
- name = "path-is-absolute";
- packageName = "path-is-absolute";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
- sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
- };
- };
- "path-is-inside-1.0.2" = {
- name = "path-is-inside";
- packageName = "path-is-inside";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz";
- sha1 = "365417dede44430d1c11af61027facf074bdfc53";
- };
- };
- "path-parse-1.0.5" = {
- name = "path-parse";
- packageName = "path-parse";
- version = "1.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz";
- sha1 = "3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1";
- };
- };
- "pify-2.3.0" = {
- name = "pify";
- packageName = "pify";
- version = "2.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz";
- sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
- };
- };
- "pinkie-2.0.4" = {
- name = "pinkie";
- packageName = "pinkie";
- version = "2.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
- sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
- };
- };
- "pinkie-promise-2.0.1" = {
- name = "pinkie-promise";
- packageName = "pinkie-promise";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
- sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
- };
- };
- "pluralize-1.2.1" = {
- name = "pluralize";
- packageName = "pluralize";
- version = "1.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz";
- sha1 = "d1a21483fd22bb41e58a12fa3421823140897c45";
- };
- };
- "prelude-ls-1.1.2" = {
- name = "prelude-ls";
- packageName = "prelude-ls";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
- sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
- };
- };
- "prettyjson-1.2.1" = {
- name = "prettyjson";
- packageName = "prettyjson";
- version = "1.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.1.tgz";
- sha1 = "fcffab41d19cab4dfae5e575e64246619b12d289";
- };
- };
- "process-nextick-args-1.0.7" = {
- name = "process-nextick-args";
- packageName = "process-nextick-args";
- version = "1.0.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz";
- sha1 = "150e20b756590ad3f91093f25a4f2ad8bff30ba3";
- };
- };
- "progress-1.1.8" = {
- name = "progress";
- packageName = "progress";
- version = "1.1.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz";
- sha1 = "e260c78f6161cdd9b0e56cc3e0a85de17c7a57be";
- };
- };
- "readable-stream-2.3.3" = {
- name = "readable-stream";
- packageName = "readable-stream";
- version = "2.3.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz";
- sha512 = "m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==";
- };
- };
- "readline2-1.0.1" = {
- name = "readline2";
- packageName = "readline2";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz";
- sha1 = "41059608ffc154757b715d9989d199ffbf372e35";
- };
- };
- "rechoir-0.6.2" = {
- name = "rechoir";
- packageName = "rechoir";
- version = "0.6.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz";
- sha1 = "85204b54dba82d5742e28c96756ef43af50e3384";
- };
- };
- "regenerator-runtime-0.10.5" = {
- name = "regenerator-runtime";
- packageName = "regenerator-runtime";
- version = "0.10.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz";
- sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658";
- };
- };
- "regenerator-runtime-0.11.1" = {
- name = "regenerator-runtime";
- packageName = "regenerator-runtime";
- version = "0.11.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
- sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==";
- };
- };
- "require-uncached-1.0.3" = {
- name = "require-uncached";
- packageName = "require-uncached";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz";
- sha1 = "4e0d56d6c9662fd31e43011c4b95aa49955421d3";
- };
- };
- "resolve-1.5.0" = {
- name = "resolve";
- packageName = "resolve";
- version = "1.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz";
- sha512 = "hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==";
- };
- };
- "resolve-from-1.0.1" = {
- name = "resolve-from";
- packageName = "resolve-from";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz";
- sha1 = "26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226";
- };
- };
- "restore-cursor-1.0.1" = {
- name = "restore-cursor";
- packageName = "restore-cursor";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz";
- sha1 = "34661f46886327fed2991479152252df92daa541";
- };
- };
- "rimraf-2.6.2" = {
- name = "rimraf";
- packageName = "rimraf";
- version = "2.6.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz";
- sha512 = "lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==";
- };
- };
- "run-async-0.1.0" = {
- name = "run-async";
- packageName = "run-async";
- version = "0.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz";
- sha1 = "c8ad4a5e110661e402a7d21b530e009f25f8e389";
- };
- };
- "rx-lite-3.1.2" = {
- name = "rx-lite";
- packageName = "rx-lite";
- version = "3.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz";
- sha1 = "19ce502ca572665f3b647b10939f97fd1615f102";
- };
- };
- "safe-buffer-5.1.1" = {
- name = "safe-buffer";
- packageName = "safe-buffer";
- version = "5.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz";
- sha512 = "kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==";
- };
- };
- "shelljs-0.7.8" = {
- name = "shelljs";
- packageName = "shelljs";
- version = "0.7.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz";
- sha1 = "decbcf874b0d1e5fb72e14b164a9683048e9acb3";
- };
- };
- "slice-ansi-0.0.4" = {
- name = "slice-ansi";
- packageName = "slice-ansi";
- version = "0.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz";
- sha1 = "edbf8903f66f7ce2f8eafd6ceed65e264c831b35";
- };
- };
- "sprintf-js-1.0.3" = {
- name = "sprintf-js";
- packageName = "sprintf-js";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
- sha1 = "04e6926f662895354f3dd015203633b857297e2c";
- };
- };
- "string-width-1.0.2" = {
- name = "string-width";
- packageName = "string-width";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
- sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
- };
- };
- "string-width-2.1.1" = {
- name = "string-width";
- packageName = "string-width";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz";
- sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==";
- };
- };
- "string_decoder-1.0.3" = {
- name = "string_decoder";
- packageName = "string_decoder";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz";
- sha512 = "4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==";
- };
- };
- "strip-ansi-3.0.1" = {
- name = "strip-ansi";
- packageName = "strip-ansi";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
- sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
- };
- };
- "strip-ansi-4.0.0" = {
- name = "strip-ansi";
- packageName = "strip-ansi";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
- sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
- };
- };
- "strip-bom-3.0.0" = {
- name = "strip-bom";
- packageName = "strip-bom";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz";
- sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
- };
- };
- "strip-json-comments-2.0.1" = {
- name = "strip-json-comments";
- packageName = "strip-json-comments";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
- sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
- };
- };
- "supports-color-2.0.0" = {
- name = "supports-color";
- packageName = "supports-color";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
- sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
- };
- };
- "supports-color-4.5.0" = {
- name = "supports-color";
- packageName = "supports-color";
- version = "4.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz";
- sha1 = "be7a0de484dec5c5cddf8b3d59125044912f635b";
- };
- };
- "table-3.8.3" = {
- name = "table";
- packageName = "table";
- version = "3.8.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/table/-/table-3.8.3.tgz";
- sha1 = "2bbc542f0fda9861a755d3947fefd8b3f513855f";
- };
- };
- "text-table-0.2.0" = {
- name = "text-table";
- packageName = "text-table";
- version = "0.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz";
- sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
- };
- };
- "through-2.3.8" = {
- name = "through";
- packageName = "through";
- version = "2.3.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
- sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
- };
- };
- "type-check-0.3.2" = {
- name = "type-check";
- packageName = "type-check";
- version = "0.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
- sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
- };
- };
- "typedarray-0.0.6" = {
- name = "typedarray";
- packageName = "typedarray";
- version = "0.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
- sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
- };
- };
- "user-home-2.0.0" = {
- name = "user-home";
- packageName = "user-home";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz";
- sha1 = "9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f";
- };
- };
- "util-deprecate-1.0.2" = {
- name = "util-deprecate";
- packageName = "util-deprecate";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
- sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
- };
- };
- "vorpal-1.12.0" = {
- name = "vorpal";
- packageName = "vorpal";
- version = "1.12.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/vorpal/-/vorpal-1.12.0.tgz";
- sha1 = "4be7b2a4e48f8fcfc9cf3648c419d311c522159d";
- };
- };
- "wordwrap-1.0.0" = {
- name = "wordwrap";
- packageName = "wordwrap";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz";
- sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
- };
- };
- "wrap-ansi-2.1.0" = {
- name = "wrap-ansi";
- packageName = "wrap-ansi";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
- sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
- };
- };
- "wrappy-1.0.2" = {
- name = "wrappy";
- packageName = "wrappy";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
- sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
- };
- };
- "write-0.2.1" = {
- name = "write";
- packageName = "write";
- version = "0.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/write/-/write-0.2.1.tgz";
- sha1 = "5fc03828e264cea3fe91455476f7a3c566cb0757";
- };
- };
- "xmlhttprequest-1.8.0" = {
- name = "xmlhttprequest";
- packageName = "xmlhttprequest";
- version = "1.8.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz";
- sha1 = "67fe075c5c24fef39f9d65f5f7b7fe75171968fc";
- };
- };
- "xtend-4.0.1" = {
- name = "xtend";
- packageName = "xtend";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz";
- sha1 = "a5c6d532be656e23db820efb943a1f04998d63af";
- };
- };
- };
- args = {
- name = "iota-cli-app";
- packageName = "iota-cli-app";
- version = "1.0.8";
- inherit src;
- dependencies = [
- sources."acorn-5.2.1"
- (sources."acorn-jsx-3.0.1" // {
- dependencies = [
- sources."acorn-3.3.0"
- ];
- })
- sources."ajv-4.11.8"
- sources."ajv-keywords-1.5.1"
- sources."ansi-escapes-1.4.0"
- sources."ansi-regex-2.1.1"
- sources."ansi-styles-3.2.0"
- sources."argparse-1.0.9"
- sources."array-union-1.0.2"
- sources."array-uniq-1.0.3"
- sources."arrify-1.0.1"
- sources."async-2.6.0"
- (sources."babel-code-frame-6.26.0" // {
- dependencies = [
- sources."ansi-styles-2.2.1"
- sources."chalk-1.1.3"
- sources."supports-color-2.0.0"
- ];
- })
- sources."babel-polyfill-6.26.0"
- (sources."babel-runtime-6.26.0" // {
- dependencies = [
- sources."regenerator-runtime-0.11.1"
- ];
- })
- sources."balanced-match-1.0.0"
- sources."bignumber.js-4.1.0"
- sources."bluebird-3.5.1"
- sources."brace-expansion-1.1.8"
- sources."caller-path-0.1.0"
- sources."callsites-0.2.0"
- sources."chalk-2.3.0"
- sources."circular-json-0.3.3"
- sources."cli-cursor-1.0.2"
- sources."cli-width-2.2.0"
- sources."co-4.6.0"
- sources."code-point-at-1.1.0"
- sources."color-convert-1.9.1"
- sources."color-name-1.1.3"
- sources."colors-1.1.2"
- sources."concat-map-0.0.1"
- sources."concat-stream-1.6.0"
- sources."core-js-2.5.3"
- sources."core-util-is-1.0.2"
- sources."crypto-js-3.1.9-1"
- sources."d-1.0.0"
- sources."debug-2.6.9"
- sources."deep-is-0.1.3"
- sources."del-2.2.2"
- sources."doctrine-2.0.2"
- sources."encoding-0.1.12"
- sources."es5-ext-0.10.37"
- sources."es6-iterator-2.0.3"
- sources."es6-map-0.1.5"
- sources."es6-set-0.1.5"
- sources."es6-symbol-3.1.1"
- sources."es6-weak-map-2.0.2"
- sources."escape-string-regexp-1.0.5"
- sources."escope-3.6.0"
- (sources."eslint-3.19.0" // {
- dependencies = [
- sources."ansi-styles-2.2.1"
- sources."chalk-1.1.3"
- sources."supports-color-2.0.0"
- ];
- })
- sources."espree-3.5.2"
- sources."esprima-4.0.0"
- sources."esquery-1.0.0"
- sources."esrecurse-4.2.0"
- sources."estraverse-4.2.0"
- sources."esutils-2.0.2"
- sources."event-emitter-0.3.5"
- sources."exit-hook-1.1.1"
- sources."fast-levenshtein-2.0.6"
- sources."figures-1.7.0"
- sources."file-entry-cache-2.0.0"
- sources."flat-cache-1.3.0"
- sources."fs.realpath-1.0.0"
- sources."generate-function-2.0.0"
- sources."generate-object-property-1.2.0"
- sources."glob-7.1.2"
- sources."globals-9.18.0"
- sources."globby-5.0.0"
- sources."graceful-fs-4.1.11"
- sources."has-ansi-2.0.0"
- sources."has-flag-2.0.0"
- sources."iconv-lite-0.4.19"
- sources."ignore-3.3.7"
- sources."imurmurhash-0.1.4"
- sources."in-publish-2.0.0"
- sources."inflight-1.0.6"
- sources."inherits-2.0.3"
- (sources."inquirer-0.12.0" // {
- dependencies = [
- sources."ansi-styles-2.2.1"
- sources."chalk-1.1.3"
- sources."supports-color-2.0.0"
- ];
- })
- sources."install-0.10.4"
- sources."interpret-1.1.0"
- sources."iota.lib.js-0.4.6"
- sources."is-fullwidth-code-point-1.0.0"
- sources."is-my-json-valid-2.16.1"
- sources."is-path-cwd-1.0.0"
- sources."is-path-in-cwd-1.0.0"
- sources."is-path-inside-1.0.1"
- sources."is-property-1.0.2"
- sources."is-resolvable-1.0.1"
- sources."is-stream-1.1.0"
- sources."isarray-1.0.0"
- sources."js-tokens-3.0.2"
- sources."js-yaml-3.10.0"
- sources."json-stable-stringify-1.0.1"
- sources."json5-0.5.1"
- sources."jsonify-0.0.0"
- sources."jsonpointer-4.0.1"
- sources."left-pad-1.2.0"
- sources."levn-0.3.0"
- sources."lodash-4.17.4"
- sources."log-update-1.0.2"
- sources."minimatch-3.0.4"
- sources."minimist-0.0.8"
- sources."mkdirp-0.5.1"
- sources."moment-2.20.1"
- sources."ms-2.0.0"
- sources."mute-stream-0.0.5"
- sources."natural-compare-1.4.0"
- sources."node-fetch-1.7.3"
- sources."node-localstorage-0.6.0"
- sources."number-is-nan-1.0.1"
- sources."object-assign-4.1.1"
- sources."once-1.4.0"
- sources."onetime-1.1.0"
- sources."optionator-0.8.2"
- sources."os-homedir-1.0.2"
- sources."path-is-absolute-1.0.1"
- sources."path-is-inside-1.0.2"
- sources."path-parse-1.0.5"
- sources."pify-2.3.0"
- sources."pinkie-2.0.4"
- sources."pinkie-promise-2.0.1"
- sources."pluralize-1.2.1"
- sources."prelude-ls-1.1.2"
- (sources."prettyjson-1.2.1" // {
- dependencies = [
- sources."minimist-1.2.0"
- ];
- })
- sources."process-nextick-args-1.0.7"
- sources."progress-1.1.8"
- sources."readable-stream-2.3.3"
- sources."readline2-1.0.1"
- sources."rechoir-0.6.2"
- sources."regenerator-runtime-0.10.5"
- sources."require-uncached-1.0.3"
- sources."resolve-1.5.0"
- sources."resolve-from-1.0.1"
- sources."restore-cursor-1.0.1"
- sources."rimraf-2.6.2"
- sources."run-async-0.1.0"
- sources."rx-lite-3.1.2"
- sources."safe-buffer-5.1.1"
- sources."shelljs-0.7.8"
- sources."slice-ansi-0.0.4"
- sources."sprintf-js-1.0.3"
- sources."string-width-1.0.2"
- sources."string_decoder-1.0.3"
- sources."strip-ansi-3.0.1"
- sources."strip-bom-3.0.0"
- sources."strip-json-comments-2.0.1"
- sources."supports-color-4.5.0"
- (sources."table-3.8.3" // {
- dependencies = [
- sources."ansi-regex-3.0.0"
- sources."ansi-styles-2.2.1"
- (sources."chalk-1.1.3" // {
- dependencies = [
- sources."ansi-regex-2.1.1"
- sources."strip-ansi-3.0.1"
- ];
- })
- sources."is-fullwidth-code-point-2.0.0"
- sources."string-width-2.1.1"
- sources."strip-ansi-4.0.0"
- sources."supports-color-2.0.0"
- ];
- })
- sources."text-table-0.2.0"
- sources."through-2.3.8"
- sources."type-check-0.3.2"
- sources."typedarray-0.0.6"
- sources."user-home-2.0.0"
- sources."util-deprecate-1.0.2"
- (sources."vorpal-1.12.0" // {
- dependencies = [
- sources."ansi-styles-2.2.1"
- sources."chalk-1.1.3"
- sources."cli-width-1.1.1"
- (sources."inquirer-0.11.0" // {
- dependencies = [
- sources."lodash-3.10.1"
- ];
- })
- sources."minimist-1.2.0"
- sources."supports-color-2.0.0"
- ];
- })
- sources."wordwrap-1.0.0"
- sources."wrap-ansi-2.1.0"
- sources."wrappy-1.0.2"
- sources."write-0.2.1"
- sources."xmlhttprequest-1.8.0"
- sources."xtend-4.0.1"
- ];
- buildInputs = globalBuildInputs;
- meta = {
- description = "IOTA CLI";
- homepage = "https://github.com/iotaledger/cli-app#readme";
- license = "MIT";
- };
- production = true;
- bypassCache = true;
- };
-in
-{
- tarball = nodeEnv.buildNodeSourceDist args;
- package = nodeEnv.buildNodePackage args;
- shell = nodeEnv.buildNodeShell args;
-}
diff --git a/pkgs/crypto/sia/default.nix b/pkgs/crypto/sia/default.nix
deleted file mode 100644
index 27e4014..0000000
--- a/pkgs/crypto/sia/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ stdenv, fetchzip, autoPatchelfHook }:
-stdenv.mkDerivation rec {
- version = "v1.4.3";
- name = "Sia-${version}";
- src = fetchzip {
- url = "https://sia.tech/static/releases/${name}-linux-amd64.zip";
- sha256 = "1i67zjzk4cwfzb1dxaxc1m41fa44sz1d0mf6dmlyg6pm4cyqizki";
- };
- phases = "installPhase fixupPhase";
- nativeBuildInputs = [
- autoPatchelfHook
- ];
- installPhase = ''
- mkdir -p $out/share/doc
- mkdir -p $out/bin
- mkdir -p $out/share/sia
- cp -a $src/doc $out/share/doc/sia
- cp -a $src/LICENSE $src/README.md $out/share/sia
- cp -a $src/{siac,siad} $out/bin
- '';
-}
diff --git a/pkgs/default.nix b/pkgs/default.nix
deleted file mode 100644
index 5f5df82..0000000
--- a/pkgs/default.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{ pkgs }:
-with pkgs;
-let
- mylibs = import ../lib { inherit pkgs; };
-in
-rec {
- sources = import ../nix/sources.nix;
- myEnvironments = callPackage ../environments {};
- boinctui = callPackage ./boinctui {};
- cnagios = callPackage ./cnagios { inherit mylibs; };
- commento = callPackage ./commento {};
- flrn = callPackage ./flrn { inherit mylibs; slang = callPackage ./slang_1 {}; };
- genius = callPackage ./genius {};
- mtop = callPackage ./mtop {};
- muttprint = callPackage ./muttprint {};
- mutt-ics = callPackage ./mutt-ics { inherit mylibs; };
- nagios-cli = callPackage ./nagios-cli { inherit mylibs; };
- nagnu = callPackage ./nagnu { inherit mylibs; };
- nb = callPackage ./nb {};
- note = callPackage ./note {};
- notmuch-python2 = callPackage ./notmuch/notmuch-python { pythonPackages = python2Packages; };
- notmuch-python3 = callPackage ./notmuch/notmuch-python { pythonPackages = python3Packages; };
- notmuch-vim = callPackage ./notmuch/notmuch-vim {};
- pgloader = callPackage ./pgloader {};
- predixy = callPackage ./predixy { inherit mylibs; };
- rrsync_sudo = callPackage ./rrsync_sudo {};
- signaldctl = callPackage ./signaldctl {};
- telegram-history-dump = callPackage ./telegram-history-dump { inherit mylibs; };
- telegramircd = callPackage ./telegramircd { inherit mylibs; telethon = callPackage ./telethon_sync {}; };
- terminal-velocity = callPackage ./terminal-velocity {};
- tiv = callPackage ./tiv {};
- twins = callPackage ./twins {};
- umami = callPackage ./umami {};
- unicodeDoc = callPackage ./unicode {};
-
- cardano = callPackage ./crypto/cardano { inherit mylibs; };
- cardano-cli = callPackage ./crypto/cardano-cli {};
- iota-cli-app = callPackage ./crypto/iota-cli-app { inherit mylibs; };
- sia = callPackage ./crypto/sia {};
-
- proftpd = callPackage ./proftpd {};
- pure-ftpd = callPackage ./pure-ftpd {};
-
- composerEnv = callPackage ./composer-env {};
- webapps = callPackage ./webapps { inherit mylibs composerEnv; };
-
- monitoring-plugins = callPackage ./monitoring-plugins {};
- naemon = callPackage ./naemon { inherit mylibs monitoring-plugins; };
- naemon-livestatus = callPackage ./naemon-livestatus { inherit mylibs naemon; };
- gearmand = callPackage ./gearmand {};
- status_engine = {
- module = callPackage ./status_engine/module.nix { inherit mylibs; };
- worker = callPackage ./status_engine/worker.nix { inherit mylibs composerEnv; };
- interface = callPackage ./status_engine/interface.nix { inherit composerEnv; };
- };
-
- python3PackagesPlus = callPackage ./python-packages {
- python = python3;
- inherit mylibs;
- };
- dovecot_deleted-to-trash = callPackage ./dovecot/plugins/deleted_to_trash {
- inherit mylibs;
- };
-}
diff --git a/pkgs/dovecot/plugins/deleted_to_trash/default.nix b/pkgs/dovecot/plugins/deleted_to_trash/default.nix
deleted file mode 100644
index db1afb5..0000000
--- a/pkgs/dovecot/plugins/deleted_to_trash/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ stdenv, fetchurl, dovecot, mylibs, fetchpatch }:
-
-stdenv.mkDerivation (mylibs.fetchedGithub ./dovecot-deleted_to_trash.json // rec {
- buildInputs = [ dovecot ];
- patches = [
- (fetchpatch {
- name = "fix-dovecot-2.3.diff";
- url = "https://github.com/lexbrugman/dovecot_deleted_to_trash/commit/c52a3799a96104a603ade33404ef6aa1db647b2f.diff";
- sha256 = "0pld3rdcjp9df2qxbp807k6v4f48lyk0xy5q508ypa57d559y6dq";
- })
- ./fix_mbox.patch
- ];
- preConfigure = ''
- substituteInPlace Makefile --replace \
- "/usr/include/dovecot" \
- "${dovecot}/include/dovecot"
- substituteInPlace Makefile --replace \
- "/usr/lib/dovecot/modules" \
- "$out/lib/dovecot"
- '';
-})
diff --git a/pkgs/dovecot/plugins/deleted_to_trash/dovecot-deleted_to_trash.json b/pkgs/dovecot/plugins/deleted_to_trash/dovecot-deleted_to_trash.json
deleted file mode 100644
index 2987a02..0000000
--- a/pkgs/dovecot/plugins/deleted_to_trash/dovecot-deleted_to_trash.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "81b0754-master",
- "meta": {
- "name": "dovecot-deleted_to_trash",
- "url": "https://github.com/lexbrugman/dovecot_deleted_to_trash",
- "branch": "master"
- },
- "github": {
- "owner": "lexbrugman",
- "repo": "dovecot_deleted_to_trash",
- "rev": "81b07549accfc36467bf8527a53c295c7a02dbb9",
- "sha256": "1b3k31g898s4fa0a9l4kvjsdyds772waaay84sjdxv09jw6mqs0f",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch b/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch
deleted file mode 100644
index 0060fb4..0000000
--- a/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/deleted-to-trash-plugin.c b/src/deleted-to-trash-plugin.c
-index bb4cc78..66bad53 100644
---- a/src/deleted-to-trash-plugin.c
-+++ b/src/deleted-to-trash-plugin.c
-@@ -82,6 +82,7 @@ static struct mailbox *mailbox_open_or_create(struct mailbox_list *list, const c
- *error_r = mail_storage_get_last_error(mailbox_get_storage(box), &error);
- if (error != MAIL_ERROR_NOTFOUND)
- {
-+ i_error("%s", *error_r);
- mailbox_free(&box);
- return NULL;
- }
diff --git a/pkgs/flrn/default.nix b/pkgs/flrn/default.nix
deleted file mode 100644
index f288615..0000000
--- a/pkgs/flrn/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ stdenv, mylibs, libetpan, openssl, autoconf, groff, slang, yacc }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./flrn.json // {
- buildInputs = [ libetpan openssl autoconf groff slang yacc ];
- preConfigure = ''
- sed -i -e "s/test -e configure/false/" configure.in
- autoconf
- sed -i -e '/define CHECK_MAIL/d' src/flrn_config.h
- sed -i -e '/DEFAULT_DIR_FILE/s@".flrn"@".config/flrn"@' src/flrn_config.h
- sed -i -e '/DEFAULT_CONFIG_FILE/s@".flrnrc"@"flrnrc"@' src/flrn_config.h
- sed -i -e '/DEFAULT_FLNEWS_FILE/s@".flnewsrc"@"flnewsrc"@' src/flrn_config.h
- sed -i -e '/flrn_char chaine/s@18@20@' src/flrn_command.c
- '';
-})
diff --git a/pkgs/flrn/flrn.json b/pkgs/flrn/flrn.json
deleted file mode 100644
index 3d7a944..0000000
--- a/pkgs/flrn/flrn.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "860d642-master",
- "meta": {
- "name": "flrn",
- "url": "https://github.com/Cigaes/flrn",
- "branch": "master"
- },
- "github": {
- "owner": "Cigaes",
- "repo": "flrn",
- "rev": "860d642bd6389a209c8b697bd044f78d23406509",
- "sha256": "0sqlxxpy1xg7cb2hbxcr0al46nyr6jjnns4b5i8w04z5sypa9r5c",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/gearmand/default.nix b/pkgs/gearmand/default.nix
deleted file mode 100644
index bb3be89..0000000
--- a/pkgs/gearmand/default.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ stdenv, fetchurl, boost, gperf, libevent, libmysqlclient, libuuid, python3, sqlite, hiredis, postgresql, openssl }:
-stdenv.mkDerivation rec {
- pname = "gearmand";
- version = "1.1.19.1";
- src = fetchurl {
- url = "https://github.com/gearman/${pname}/releases/download/${version}/${pname}-${version}.tar.gz";
- sha256 = "1yvb2r3n89p43nchsi3d4nwl0f4xsiy8msnacmm4x4hcdb8y19lf";
- };
- buildInputs = [ boost gperf libevent openssl libmysqlclient libuuid sqlite hiredis postgresql ];
- configureFlags = [
- "--with-boost=${boost.dev}"
- "--with-boost-libdir=${boost}/lib"
- "--with-openssl=${openssl.dev}"
- "--enable-ssl"
- ];
-}
diff --git a/pkgs/genius/default.nix b/pkgs/genius/default.nix
deleted file mode 100644
index b40d1d0..0000000
--- a/pkgs/genius/default.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ stdenv, fetchurl, mpfr, glib, hicolor-icon-theme, gtk2, intltool, gnome-doc-utils, python3, gnome2, autoconf, automake, libtool, ncurses, readline, pkg-config, }:
-stdenv.mkDerivation rec {
- name = "genius-${version}";
- version = "1.0.24";
- src = fetchurl {
- url = "https://download.gnome.org/sources/genius/1.0/${name}.tar.xz";
- sha256 = "772f95f6ae4716d39bb180cd50e8b6b9b074107bee0cd083b825e1e6e55916b6";
- };
- buildInputs = [
- mpfr glib hicolor-icon-theme gtk2 intltool gnome-doc-utils python3 gnome2.gtksourceview
- autoconf automake libtool ncurses readline pkg-config
- ];
- preConfigure = ''
- autoreconf -fi
- '';
- preBuild = ''
- sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
- '';
-}
diff --git a/pkgs/monitoring-plugins/default.nix b/pkgs/monitoring-plugins/default.nix
deleted file mode 100644
index 852d29b..0000000
--- a/pkgs/monitoring-plugins/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ stdenv, iputils, fetchpatch, fetchurl, file, hostname, perl, openssl,
- bind, openldap, procps-ng, postfix,
- wrapperDir ? "/run/wrappers/bin"
-}:
-stdenv.mkDerivation rec {
- pname = "monitoring-plugins";
- version = "2.2";
- name = "${pname}-${version}";
-
- src = fetchurl {
- url = "https://www.monitoring-plugins.org/download/${name}.tar.gz";
- sha256 = "0r9nvnk64nv7k8w352n99lw4p92pycxd9wlga9zyzjx9027m6si9";
- };
-
- patches = [
- (fetchpatch {
- name = "mariadb.patch";
- url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/0001-mariadb.patch?h=packages/monitoring-plugins";
- sha256 = "0jf6fqkyzag66rid92m7asnr2dp8rr8kn4zjvhqg0mqvf8imppky";
- })
- ];
-
- # ping needs CAP_NET_RAW capability which is set only in the wrappers namespace
- configurePhase = ''
- ./configure --disable-static --disable-dependency-tracking \
- --prefix=$out \
- --with-ping-command="${wrapperDir}/ping -4 -n -U -w %d -c %d %s" \
- --with-ping6-command="${wrapperDir}/ping -6 -n -U -w %d -c %d %s" \
- --with-sudo-command="${wrapperDir}/sudo"
- '';
-
- buildInputs = [ perl file hostname iputils openssl openldap procps-ng bind.dnsutils postfix ];
-}
diff --git a/pkgs/mtop/default.nix b/pkgs/mtop/default.nix
deleted file mode 100644
index 3f6b6bc..0000000
--- a/pkgs/mtop/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ buildPerlPackage, fetchurl, perlPackages, lib }:
-buildPerlPackage rec {
- pname = "mtop";
- version = "0.6.6";
- src = fetchurl {
- url = "http://downloads.sourceforge.net/project/mtop/mtop/v${version}/mtop-${version}.tar.gz";
- sha256 = "0x0x5300b1j9i0xxk8rsrki0pspyzj2vylhzv8qg3l6j26aw0zrf";
- };
- outputs = ["out"];
- buildInputs = with perlPackages; [ DBI DBDmysql Curses ];
-
- postInstall = ''
- cd "$out"
- preConfigure || true
- '';
-
- meta = with lib; {
- description = "MySQL top (monitor and examine slow queries)";
- homepage = http://mtop.sourceforge.net/;
- license = licenses.gpl3;
- maintainers = with maintainers; [ { name = "Marc Prewitt"; email = "mprewitt@chelsea.net"; } ];
- platforms = platforms.unix;
- };
-}
diff --git a/pkgs/mutt-ics/default.nix b/pkgs/mutt-ics/default.nix
deleted file mode 100644
index a8a529b..0000000
--- a/pkgs/mutt-ics/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-{ python3Packages, mylibs }:
-with python3Packages;
-buildPythonApplication (mylibs.fetchedGithub ./mutt-ics.json // {
- propagatedBuildInputs = [ icalendar ];
-})
diff --git a/pkgs/mutt-ics/mutt-ics.json b/pkgs/mutt-ics/mutt-ics.json
deleted file mode 100644
index ae8ed37..0000000
--- a/pkgs/mutt-ics/mutt-ics.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "d291187-master",
- "meta": {
- "name": "mutt-ics",
- "url": "https://github.com/dmedvinsky/mutt-ics",
- "branch": "master"
- },
- "github": {
- "owner": "dmedvinsky",
- "repo": "mutt-ics",
- "rev": "d29118788f291f67d34fefa6eda9f95846a2fe34",
- "sha256": "0kqzngsvzjq5gpf60jhfmb2xzjznvk172khf4dlcb72n3ak4rb92",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/muttprint/0.73-4.diff.gz b/pkgs/muttprint/0.73-4.diff.gz
deleted file mode 100644
index c4f3cef..0000000
Binary files a/pkgs/muttprint/0.73-4.diff.gz and /dev/null differ
diff --git a/pkgs/muttprint/default.nix b/pkgs/muttprint/default.nix
deleted file mode 100644
index 0863a7b..0000000
--- a/pkgs/muttprint/default.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ stdenv, fetchurl, lib, psutils, dialog, texlive, makeWrapper, automake, autoconf, imagemagick, ghostscript, perl, perlPackages }:
-stdenv.mkDerivation rec {
- name = "muttprint-${version}";
- version = "0.73";
- src = fetchurl {
- url = "http://downloads.sf.net/muttprint/${name}.tar.gz";
- sha256 = "1dny4niyibfgazwlzfcnb37jy6k140rs6baaj629z12rmahfdavw";
- };
- patches = [
- ./0.73-4.diff.gz
- ./regex.patch
- ./two_edge.patch
- ];
- preConfigure = ''
- aclocal
- automake --add-missing --copy
- autoconf
- '';
- preBuild = ''
- cd pics
- convert -flop BabyTuX.eps BabyTuX.eps
- for i in BabyTuX_color.eps BabyTuX.eps Debian_color.eps \
- Debian.eps Gentoo.eps Gentoo_color.eps ; do
- convert $i $(basename $i .eps).png
- done
- convert penguin.eps penguin.jpg
- cd ..
- '';
- postInstall = ''
- perlFlags=
- for i in $(IFS=:; echo $PERL5LIB); do
- perlFlags="$perlFlags -I$i"
- done
-
- sed -i "$out/bin/muttprint" -e "s|^#\!\(.*[ /]perl.*\)$|#\!\1$perlFlags|"
- sed -i "$out/bin/muttprint" -e "s|ENV{HOME}/.muttprintrc|ENV{XDG_CONFIG_HOME}/muttprint/muttprintrc|"
-
- wrapProgram $out/bin/muttprint \
- --prefix PATH : ${lib.makeBinPath [ psutils dialog
- (texlive.combine { inherit (texlive) scheme-basic utopia fancyvrb lastpage marvosym ucs cm-super; }) ]}
- '';
- buildInputs = [ makeWrapper automake autoconf imagemagick ghostscript perl ] ++
- (with perlPackages; [ TimeDate FileWhich TextIconv ]);
-}
diff --git a/pkgs/muttprint/regex.patch b/pkgs/muttprint/regex.patch
deleted file mode 100644
index e99c4a2..0000000
--- a/pkgs/muttprint/regex.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/muttprint 2015-07-21 11:18:04.219578426 +1200
-+++ b/muttprint 2015-07-21 11:18:53.906243779 +1200
-@@ -1635,7 +1635,7 @@
- open (AUX, "$auxfile") or fatalError "Could not open $auxfile:\n$!";
-
- while () {
-- ($numberOfPages) = /\\newlabel{LastPage}{{}{(\d+)}}/;
-+ ($numberOfPages) = /\\newlabel\{LastPage}\{\{}\{(\d+)}}/;
- }
-
- close AUX or fatalError "Could not close $auxfile:\n$!";
diff --git a/pkgs/muttprint/two_edge.patch b/pkgs/muttprint/two_edge.patch
deleted file mode 100644
index 4a7290d..0000000
--- a/pkgs/muttprint/two_edge.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- a/muttprint 2016-05-05 13:48:50.515950744 +1200
-+++ b/muttprint 2016-05-05 13:52:10.722623902 +1200
-@@ -643,14 +643,14 @@
- if ($Config{PAPERSAVE} eq "on") {
- if ($useCups) {
- $Config{PRINT_COMMAND} =~
-- s/\$CUPS_OPTIONS/ -o sides=two-sided-long-edge \$CUPS_OPTIONS/;
-+ s/\$CUPS_OPTIONS/ -o sides=two-sided-short-edge \$CUPS_OPTIONS/;
- } else { # no cups
- modifyPS("landscape");
- }
- } else { # no papersave
- if ($useCups) {
- $Config{PRINT_COMMAND} =~
-- s/\$CUPS_OPTIONS/ -o sides=two-sided-short-edge \$CUPS_OPTIONS/;
-+ s/\$CUPS_OPTIONS/ -o sides=two-sided-long-edge \$CUPS_OPTIONS/;
- } else { # no cups
- modifyPS("portrait");
- }
diff --git a/pkgs/naemon-livestatus/default.nix b/pkgs/naemon-livestatus/default.nix
deleted file mode 100644
index 46ef51a..0000000
--- a/pkgs/naemon-livestatus/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ stdenv, mylibs, autoconf, automake,
- libtool, pkg-config, naemon,
- varDir ? "/var/lib/naemon",
- etcDir ? "/etc/naemon"
-}:
-stdenv.mkDerivation (mylibs.fetchedGithub ./naemon-livestatus.json // {
- preConfigure = ''
- ./autogen.sh || true
- '';
-
- configureFlags = [
- "--localstatedir=${varDir}"
- "--sysconfdir=${etcDir}"
- ];
-
- preInstall = ''
- substituteInPlace Makefile --replace \
- '@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am' \
- '@$(MAKE) $(AM_MAKEFLAGS) install-exec-am'
- '';
-
- buildInputs = [ autoconf automake libtool pkg-config naemon ];
-})
diff --git a/pkgs/naemon-livestatus/naemon-livestatus.json b/pkgs/naemon-livestatus/naemon-livestatus.json
deleted file mode 100644
index c648d2b..0000000
--- a/pkgs/naemon-livestatus/naemon-livestatus.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "33dbcfe-master",
- "meta": {
- "name": "naemon-livestatus",
- "url": "https://github.com/naemon/naemon-livestatus",
- "branch": "master"
- },
- "github": {
- "owner": "naemon",
- "repo": "naemon-livestatus",
- "rev": "33dbcfe18e42158f25c27cff95a1e07b73be53b0",
- "sha256": "16jk0c6pwr7ck0g6s12hj6czbhgdr7c7f74zzsp5279af86y8fd6",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/naemon/default.nix b/pkgs/naemon/default.nix
deleted file mode 100644
index 0341296..0000000
--- a/pkgs/naemon/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ stdenv, mylibs, help2man, monitoring-plugins, autoconf, automake,
- libtool, glib, pkg-config, gperf,
- varDir ? "/var/lib/naemon",
- etcDir ? "/etc/naemon",
- cacheDir ? "/var/cache/naemon",
- logDir ? "/var/log/naemon",
- runDir ? "/run/naemon",
- user ? "naemon",
- group ? "naemon"
-}:
-stdenv.mkDerivation (mylibs.fetchedGithub ./naemon.json // {
- passthru.status_engine_version = "1-1-0";
- preConfigure = ''
- ./autogen.sh || true
- '';
-
- configureFlags = [
- "--localstatedir=${varDir}"
- "--sysconfdir=${etcDir}"
- "--with-pkgconfdir=${etcDir}"
- "--with-pluginsdir=${monitoring-plugins}/libexec"
- "--with-tempdir=${cacheDir}"
- "--with-checkresultdir=${cacheDir}/checkresults"
- "--with-logdir=${logDir}"
- "--with-naemon-user=${user}"
- "--with-naemon-group=${group}"
- "--with-lockfile=${runDir}/naemon.pid"
- ];
-
- preInstall = ''
- substituteInPlace Makefile --replace '$(MAKE) $(AM_MAKEFLAGS) install-exec-hook' ""
- '';
-
- buildInputs = [ autoconf automake help2man libtool glib pkg-config gperf ];
-})
diff --git a/pkgs/naemon/naemon.json b/pkgs/naemon/naemon.json
deleted file mode 100644
index 2dc9809..0000000
--- a/pkgs/naemon/naemon.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "d7ac1c8-master",
- "meta": {
- "name": "naemon",
- "url": "https://github.com/naemon/naemon-core",
- "branch": "master"
- },
- "github": {
- "owner": "naemon",
- "repo": "naemon-core",
- "rev": "d7ac1c824e01dbb1c4a6bd0550b324e7cf165d54",
- "sha256": "003grwciplnqfn9jh2km2pm6xxp8fxvmwihg3vmch8f0vfwcmv1m",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/nagios-cli/default.nix b/pkgs/nagios-cli/default.nix
deleted file mode 100644
index 7d7e7cc..0000000
--- a/pkgs/nagios-cli/default.nix
+++ /dev/null
@@ -1,2 +0,0 @@
-{ python2Packages, mylibs }:
-python2Packages.buildPythonApplication (mylibs.fetchedGithub ./nagios-cli.json)
diff --git a/pkgs/nagios-cli/nagios-cli.json b/pkgs/nagios-cli/nagios-cli.json
deleted file mode 100644
index fc91227..0000000
--- a/pkgs/nagios-cli/nagios-cli.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "edc51ea-master",
- "meta": {
- "name": "nagios-cli",
- "url": "https://github.com/tehmaze/nagios-cli",
- "branch": "master"
- },
- "github": {
- "owner": "tehmaze",
- "repo": "nagios-cli",
- "rev": "edc51eaccf1086bb4469ce45c5e5155f2d71a2f9",
- "sha256": "1qw5fv4niz079zqwmfr3kzjv8cc31rbhi9whdbv9c32qdi3h7vsp",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/nagnu/default.nix b/pkgs/nagnu/default.nix
deleted file mode 100644
index 2b9c0ec..0000000
--- a/pkgs/nagnu/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ stdenv, mylibs, ncurses, curl }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./nagnu.json // rec {
- buildInputs = [ ncurses curl ];
- installPhase = ''
- mkdir -p $out/bin
- cp nagnu $out/bin
- mkdir -p $out/share/doc/nagnu
- cp nagnu.conf.sample $out/share/doc/nagnu
- mkdir -p $out/share/man/man8
- cp docs/nagnu.8 $out/share/man/man8
- '';
-})
diff --git a/pkgs/nagnu/nagnu.json b/pkgs/nagnu/nagnu.json
deleted file mode 100644
index 60a8b07..0000000
--- a/pkgs/nagnu/nagnu.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "c7e65fc-master",
- "meta": {
- "name": "nagnu",
- "url": "https://github.com/frlen/nagnu",
- "branch": "master"
- },
- "github": {
- "owner": "frlen",
- "repo": "nagnu",
- "rev": "c7e65fc02f46a3756a4cc47953ea2f3e57a84728",
- "sha256": "1i2jm8ibvqcc734daamnzc3hx8q0nsry1x12q0kr5yvcsdjjgyy3",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/nb/default.nix b/pkgs/nb/default.nix
deleted file mode 100644
index 37cc89f..0000000
--- a/pkgs/nb/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ pkgs ? import {} }: with pkgs;
-stdenv.mkDerivation {
- pname = "nb";
- version = "e0d4e24-master";
- src = fetchFromGitHub {
- owner = "xwmx";
- repo = "nb";
- rev = "e0d4e24201299916d736be6a9800793cec32927e";
- sha256 = "0gpnlzxjlfn3bagw74lsrmfhxj2xzvk6sjj24wp9rjpk42d9mfml";
- };
- phases = "installPhase";
- installPhase = ''
- mkdir -p $out/bin $out/share/zsh/vendor-completions $out/share/bash-completion/completions
- cp $src/nb $out/bin/nb
- chmod +x $out/bin/nb
- patchShebangs $out/bin/nb
- cp $src/etc/nb-completion.zsh $out/share/zsh/vendor-completions/_nb
- cp $src/etc/nb-completion.bash $out/share/bash-completion/completions/nb
- '';
-}
diff --git a/pkgs/note/default.nix b/pkgs/note/default.nix
deleted file mode 100644
index d5fcccd..0000000
--- a/pkgs/note/default.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ lib, buildPerlPackage, fetchurl, perlPackages }:
-buildPerlPackage rec {
- pname = "note";
- version = "1.3.26";
- src = fetchurl {
- url = "mirror://cpan/authors/id/T/TL/TLINDEN/${pname}-${version}.tar.gz";
- sha256 = "1h645rnb5vpms48fcyzvp7cwwcbf9k5xq49w2bpniyzzgk2brjrq";
- };
- outputs = ["out" "man"];
- propagatedBuildInputs = with perlPackages; [ YAML ];
-
- meta = with lib; {
- description = "A perl script for maintaining notes";
- homepage = http://www.daemon.de/NOTE;
- license = licenses.gpl3;
- maintainers = with maintainers; [ { name = "T.v.Dein"; email = "tlinden@cpan.org"; } ];
- platforms = platforms.unix;
- };
-}
diff --git a/pkgs/notmuch/notmuch-python/default.nix b/pkgs/notmuch/notmuch-python/default.nix
deleted file mode 100644
index d639d9a..0000000
--- a/pkgs/notmuch/notmuch-python/default.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ stdenv, notmuch, pythonPackages }:
-stdenv.mkDerivation rec {
- name = "notmuch-${pythonPackages.python.name}-${version}";
- version = notmuch.version;
- outputs = [ "out" ];
- buildInputs = with pythonPackages; [ sphinx python ];
- src = notmuch.src;
- phases = [ "unpackPhase" "buildPhase" "installPhase" "fixupPhase" ];
- buildPhase = ''
- cd bindings/python
- python setup.py build
- '';
- installPhase = ''
- python setup.py install --prefix=$out --optimize=1
- '';
-}
diff --git a/pkgs/notmuch/notmuch-vim/default.nix b/pkgs/notmuch/notmuch-vim/default.nix
deleted file mode 100644
index e79a253..0000000
--- a/pkgs/notmuch/notmuch-vim/default.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ stdenv, notmuch }:
-stdenv.mkDerivation rec {
- name = "notmuch-vim-${version}";
- version = notmuch.version;
- outputs = [ "out" ];
- src = notmuch.src;
- phases = [ "unpackPhase" "installPhase" ];
- installPhase = ''
- make -C vim DESTDIR=$out prefix="/share/vim/vimfiles" install
- '';
-}
diff --git a/pkgs/pgloader/default.nix b/pkgs/pgloader/default.nix
deleted file mode 100644
index 6093ada..0000000
--- a/pkgs/pgloader/default.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-# https://github.com/NixOS/nixpkgs/pull/61702
-{ stdenv, fetchurl, makeWrapper, sbcl, sqlite, freetds, libzip, curl, git, cacert, openssl }:
-stdenv.mkDerivation rec {
- pname = "pgloader";
- version = "3.6.1";
- name = "${pname}-${version}";
-
- src = fetchurl {
- url = "https://github.com/dimitri/pgloader/releases/download/v3.6.1/pgloader-bundle-3.6.1.tgz";
- sha256 = "1sm8xmq30d1biin5br0y3vrv4fydbrzfqglz1hnvrkdyxrg7d6f9";
- };
-
- nativeBuildInputs = [ git makeWrapper ];
- buildInputs = [ sbcl cacert sqlite freetds libzip curl openssl ];
-
- LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ sqlite libzip curl git openssl freetds ];
-
- buildPhase = ''
- export PATH=$PATH:$out/bin
- export HOME=$TMPDIR
-
- make pgloader
- '';
-
- dontStrip = true;
- enableParallelBuilding = false;
-
- installPhase = ''
- install -Dm755 bin/pgloader "$out/bin/pgloader"
- wrapProgram $out/bin/pgloader --prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}"
- '';
-
- meta = with stdenv.lib; {
- homepage = https://pgloader.io/;
- description = "pgloader loads data into PostgreSQL and allows you to implement Continuous Migration from your current database to PostgreSQL";
- maintainers = with maintainers; [ mguentner ];
- license = licenses.postgresql;
- platforms = platforms.all;
- };
-}
diff --git a/pkgs/predixy/default.nix b/pkgs/predixy/default.nix
deleted file mode 100644
index 7e7a9ba..0000000
--- a/pkgs/predixy/default.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ stdenv, mylibs }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./predixy.json // {
- installPhase = ''
- mkdir -p $out/bin
- cp src/predixy $out/bin
- mkdir -p $out/share
- cp -r doc $out/share
- cp -r conf $out/share/doc
- '';
-})
diff --git a/pkgs/predixy/predixy.json b/pkgs/predixy/predixy.json
deleted file mode 100644
index 9f9759c..0000000
--- a/pkgs/predixy/predixy.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "dacf3fb-master",
- "meta": {
- "name": "predixy",
- "url": "https://github.com/joyieldInc/predixy",
- "branch": "master"
- },
- "github": {
- "owner": "joyieldInc",
- "repo": "predixy",
- "rev": "dacf3fb30c2602dc044040df04e194d44b49c1be",
- "sha256": "0sbvy0jg551lwkfq8qh0a49cl9mhfnkhi3cnk25l8pz4jcdrr9k9",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/proftpd/default.nix b/pkgs/proftpd/default.nix
deleted file mode 100644
index af9d6c6..0000000
--- a/pkgs/proftpd/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ pkgs ? import {} }:
-with pkgs;
-
-stdenv.mkDerivation rec {
- pname = "proftpd";
- version = "1.3.7c";
- src = fetchurl {
- url = "https://github.com/proftpd/proftpd/archive/refs/tags/v${version}.tar.gz";
- sha256 = "1nh02j00ly814fk885wn9zx1lb63cqd8qv3mgz719xkckf5rcw3h";
- };
- postPatch = ''
- sed -i -e "s@/usr/bin/file@${file}/bin/file@" configure
- '';
- dontDisableStatic = 1;
- configureFlags = "--enable-openssl --with-modules=mod_ldap:mod_sftp:mod_tls --with-includes=${libsodium.dev}/include --with-libraries=${libsodium}/lib";
- preInstall = ''
- installFlagsArray=(INSTALL_USER=$(id -u) INSTALL_GROUP=$(id -g))
- '';
- buildInputs = [ openssl libsodium ncurses cyrus_sasl openldap pkg-config ];
- postInstall = ''
- rmdir $out/var $out/libexec $out/lib/proftpd $out/share/locale
- '';
-}
diff --git a/pkgs/pure-ftpd/default.nix b/pkgs/pure-ftpd/default.nix
deleted file mode 100644
index 32a7a91..0000000
--- a/pkgs/pure-ftpd/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ ldapFtpId ? null
-, stdenv, fetchurl, openssl, postgresql, openldap }:
-
-stdenv.mkDerivation rec {
- name = "pure-ftpd-1.0.47";
-
- src = fetchurl {
- url = "https://download.pureftpd.org/pub/pure-ftpd/releases/${name}.tar.gz";
- sha256 = "1b97ixva8m10vln8xrfwwwzi344bkgxqji26d0nrm1yzylbc6h27";
- };
-
- preConfigure = stdenv.lib.optionalString (!isNull ldapFtpId) ''
- sed -i -e "s#FTPuid#${ldapFtpId}Uid#" src/log_ldap.h
- sed -i -e "s#FTPgid#${ldapFtpId}Gid#" src/log_ldap.h
- '';
- postConfigure = ''
- sed -i 's/define MAX_DATA_SIZE (40/define MAX_DATA_SIZE (70/' src/ftpd.h
- '';
- buildInputs = [ openssl postgresql openldap ];
-
- configureFlags = [ "--with-everything" "--with-tls" "--with-pgsql" "--with-ldap" ];
-
- meta = with stdenv.lib; {
- description = "A free, secure, production-quality and standard-conformant FTP server";
- homepage = https://www.pureftpd.org;
- license = licenses.isc; # with some parts covered by BSD3(?)
- maintainers = [ maintainers.lethalman ];
- platforms = platforms.linux;
- };
-}
diff --git a/pkgs/python-packages/blivet/default.nix b/pkgs/python-packages/blivet/default.nix
deleted file mode 100644
index 108d548..0000000
--- a/pkgs/python-packages/blivet/default.nix
+++ /dev/null
@@ -1,118 +0,0 @@
-{ lib, writeText, poetry2nix, python, pythonPackages,
- gobject-introspection, libblockdev, libbytesize, fetchFromGitHub,
- pkg-config, parted, systemd,
- with_dmraid ? false,
- with_fs_btrfs ? false,
- with_fs_fat ? false,
- with_fs_f2fs ? false,
- with_fs_hfs_plus ? false,
- with_fs_jfs ? false,
- with_fs_nfs ? false,
- with_fs_nfsv4 ? false,
- with_fs_ntfs ? false,
- with_fs_reiserfs ? false,
- with_fs_xfs ? false,
- with_luks ? false,
- with_lvm ? false,
- with_mdadm ? false,
- with_multipath ? false,
- with_optical ? false,
- with_iscsi ? false,
- dmraid, multipath_tools, lvm2, eject, kmod, utillinux, lsof,
- openiscsi, coreutils, dosfstools, e2fsprogs, jfsutils, btrfs-progs,
- xfsprogs, f2fs-tools, hfsprogs, nfs-utils, ntfs3g, ntfsprogs,
- reiserfsprogs, devicemapper, cryptsetup, mdadm
-}@args:
-let
- # FIXME: blivet/tasks/fsmount.py links to /sbin
- additionalPackages =
- lib.optionals with_dmraid [ dmraid ]
- ++ lib.optionals with_fs_btrfs [ btrfs-progs ]
- ++ lib.optionals with_fs_fat [ dosfstools ]
- ++ lib.optionals with_fs_f2fs [ f2fs-tools ]
- ++ lib.optionals with_fs_hfs_plus [ hfsprogs ]
- ++ lib.optionals with_fs_jfs [ jfsutils ]
- ++ lib.optionals with_fs_nfs [ nfs-utils ]
- ++ lib.optionals with_fs_ntfs [ ntfs3g ntfsprogs ]
- ++ lib.optionals with_fs_reiserfs [ reiserfsprogs ]
- ++ lib.optionals with_fs_xfs [ xfsprogs.bin ]
- ++ lib.optionals with_luks [ devicemapper cryptsetup ]
- ++ lib.optionals with_lvm [ lvm2 ]
- ++ lib.optionals with_mdadm [ mdadm ]
- ++ lib.optionals with_multipath [ multipath_tools ]
- ++ lib.optionals with_optical [ eject ]
- ++ lib.optionals with_iscsi [ openiscsi ];
-in
-# nix-shell -E "with import {}; pkgs.mkShell { buildInputs = [ python3 python3Packages.blivet3 ]; }"
-# nix-shell -E "with import {}; pkgs.mkShell { buildInputs = [ (python3.withPackages(p: [ p.blivet3 ])) ]; }"
-poetry2nix.mkPoetryApplication {
- inherit python;
- propagatedBuildInputs = [
- gobject-introspection
- (pythonPackages.toPythonModule libblockdev)
- (pythonPackages.toPythonModule libbytesize)
- ];
- src = fetchFromGitHub {
- owner = "storaged-project";
- repo = "blivet";
- rev = "blivet-3.3.0";
- sha256 = "0ynxm37cxxr2sf2hj18hrdxs1qfw6dgdagkvv5f6g4fmp51m7c3c";
- };
- overrides = poetry2nix.overrides.withDefaults (self: super: {
- pyparted = super.pyparted.overridePythonAttrs (old: {
- buildInputs = old.buildInputs ++ [ parted ];
- nativeBuildInputs = old.nativeBuildInputs ++ [ pkg-config ];
- });
- selinux = super.selinux.overridePythonAttrs (old: {
- buildInputs = old.buildInputs ++ [ self.setuptools-scm-git-archive ];
- nativeBuildInputs = old.nativeBuildInputs ++ [ pkg-config ];
- });
- });
- patches = [ ./fix_path.patch ];
- postPatch = let
- runtimePaths = lib.makeBinPath ([
- systemd utillinux kmod e2fsprogs mdadm lsof coreutils
- ] ++ additionalPackages);
- libraryPath = builtins.concatStringsSep " " (map (v: "-rpath ${v}/lib -L ${v}/lib") [ systemd.lib ]);
- giLibraryPath = lib.makeSearchPath "lib/girepository-1.0" [libblockdev gobject-introspection];
- addGiPath = writeText "add-gi-path" ''
- import os
- newGiPath = "${giLibraryPath}"
- if newGiPath not in os.environ.get("GI_TYPELIB_PATH", ""):
- os.environ["GI_TYPELIB_PATH"] = os.environ.get("GI_TYPELIB_PATH", "") + ":" + newGiPath
- '';
- addPath = writeText "add-path" ''
- import os
- newPath = "${runtimePaths}"
- newLibraryPath = "${libraryPath}"
- if newPath not in os.environ.get("PATH", ""):
- os.environ["PATH"] = os.environ.get("PATH", "") + ":" + newPath
- os.environ["NIX_LDFLAGS"] = os.environ.get("NIX_LDFLAGS", "") + " " + newLibraryPath
- '';
- in
- ''
- prepend() {
- mv "$1" "$1.bak"
- cat ${addPath} "$1.bak" > $1
- rm -f "$1.bak"
- }
- prepend "blivet/__init__.py"
- prepend "blivet/iscsi.py"
- prepend "blivet/tasks/availability.py"
- prepend "blivet/util.py"
- prepend "blivet/udev.py"
- prependGi() {
- mv "$1" "$1.bak"
- cat ${addGiPath} "$1.bak" > $1
- rm -f "$1.bak"
- }
- grep -rl require_version blivet/ | while read i; do prependGi "$i"; done
- sed -i -e "s@/lib/modules@/run/booted-system/kernel-modules/lib/modules/@" blivet/tasks/fsmount.py
- '';
- postInstall = let
- in ''
- rm -rf $out/lib/python*/site-packages/{etc,usr}
- '';
- pyproject = ./pyproject.toml;
- poetrylock = ./poetry.lock;
-}
diff --git a/pkgs/python-packages/blivet/fix_path.patch b/pkgs/python-packages/blivet/fix_path.patch
deleted file mode 100644
index 29c4052..0000000
--- a/pkgs/python-packages/blivet/fix_path.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/blivet/tasks/fsmount.py b/blivet/tasks/fsmount.py
-index 15f79a3e..bb3fe873 100644
---- a/blivet/tasks/fsmount.py
-+++ b/blivet/tasks/fsmount.py
-@@ -19,6 +19,7 @@
- #
- # Red Hat Author(s): Anne Mulhern
-
-+from distutils.spawn import find_executable
- import os
-
- from ..errors import FSError
-@@ -58,7 +59,7 @@ class FSMount(task.BasicApplication, fstask.FSTask):
- @property
- def _can_mount(self):
- return (self.mount_type in fslib.kernel_filesystems) or \
-- (os.access("/sbin/mount.%s" % (self.mount_type,), os.X_OK)) or \
-+ (find_executable("mount.%s" % (self.mount_type,)) is not None) or \
- self._has_driver
-
- @property
diff --git a/pkgs/python-packages/blivet/poetry.lock b/pkgs/python-packages/blivet/poetry.lock
deleted file mode 100644
index c45011a..0000000
--- a/pkgs/python-packages/blivet/poetry.lock
+++ /dev/null
@@ -1,96 +0,0 @@
-[[package]]
-name = "distro"
-version = "1.5.0"
-description = "Distro - an OS platform information API"
-category = "main"
-optional = false
-python-versions = "*"
-
-[[package]]
-name = "pycairo"
-version = "1.19.1"
-description = "Python interface for cairo"
-category = "main"
-optional = false
-python-versions = ">=3.5, <4"
-
-[[package]]
-name = "pygobject"
-version = "3.36.1"
-description = "Python bindings for GObject Introspection"
-category = "main"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
-
-[package.dependencies]
-pycairo = ">=1.11.1"
-
-[[package]]
-name = "pyparted"
-version = "3.11.6"
-description = "Python bindings for GNU parted"
-category = "main"
-optional = false
-python-versions = "*"
-
-[[package]]
-name = "pyudev"
-version = "0.22.0"
-description = "A libudev binding"
-category = "main"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-six = "*"
-
-[[package]]
-name = "selinux"
-version = "0.2.1"
-description = "shim selinux module"
-category = "main"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
-
-[package.dependencies]
-distro = ">=1.3.0"
-setuptools = ">=39.0"
-
-[[package]]
-name = "six"
-version = "1.15.0"
-description = "Python 2 and 3 compatibility utilities"
-category = "main"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
-
-[metadata]
-lock-version = "1.0"
-python-versions = "^3.8"
-content-hash = "636edb46b1deb0f6d5db636b0bc6639205335c9915480b156a417067137548f8"
-
-[metadata.files]
-distro = [
- {file = "distro-1.5.0-py2.py3-none-any.whl", hash = "sha256:df74eed763e18d10d0da624258524ae80486432cd17392d9c3d96f5e83cd2799"},
- {file = "distro-1.5.0.tar.gz", hash = "sha256:0e58756ae38fbd8fc3020d54badb8eae17c5b9dcbed388b17bb55b8a5928df92"},
-]
-pycairo = [
- {file = "pycairo-1.19.1.tar.gz", hash = "sha256:2c143183280feb67f5beb4e543fd49990c28e7df427301ede04fc550d3562e84"},
-]
-pygobject = [
- {file = "PyGObject-3.36.1.tar.gz", hash = "sha256:012a589aec687bfa809a1ff9f5cd775dc7f6fcec1a6bc7fe88e1002a68f8ba34"},
-]
-pyparted = [
- {file = "pyparted-3.11.6.tar.gz", hash = "sha256:727ccdf308c194069aa9797f7a6a973bc95b2e407cdf5d58d6c8bc4c9dec92dc"},
-]
-pyudev = [
- {file = "pyudev-0.22.0.tar.gz", hash = "sha256:69bb1beb7ac52855b6d1b9fe909eefb0017f38d917cba9939602c6880035b276"},
-]
-selinux = [
- {file = "selinux-0.2.1-py2.py3-none-any.whl", hash = "sha256:820adcf1b4451c9cc7759848797703263ba0eb6a4cad76d73548a9e0d57b7926"},
- {file = "selinux-0.2.1.tar.gz", hash = "sha256:d435f514e834e3fdc0941f6a29d086b80b2ea51b28112aee6254bd104ee42a74"},
-]
-six = [
- {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
- {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
-]
diff --git a/pkgs/python-packages/blivet/pyproject.toml b/pkgs/python-packages/blivet/pyproject.toml
deleted file mode 100644
index cf86aa1..0000000
--- a/pkgs/python-packages/blivet/pyproject.toml
+++ /dev/null
@@ -1,20 +0,0 @@
-[tool.poetry]
-name = "blivet"
-version = "3.3.0"
-description = "A python module for system storage configuration"
-authors = ["David Lehman "]
-license = "GPL-2.0-or-later"
-
-[tool.poetry.dependencies]
-python = "^3.8"
-six = "^1.15.0"
-pyudev = "^0.22.0"
-pyparted = "^3.11.6"
-selinux = "^0.2.1"
-pygobject = "^3.36.1"
-
-[tool.poetry.dev-dependencies]
-
-[build-system]
-requires = ["poetry>=0.12"]
-build-backend = "poetry.masonry.api"
diff --git a/pkgs/python-packages/buildbot/plugins/buildslist/bower.nix b/pkgs/python-packages/buildbot/plugins/buildslist/bower.nix
deleted file mode 100644
index 8b26e0a..0000000
--- a/pkgs/python-packages/buildbot/plugins/buildslist/bower.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-# Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix)
-{ fetchbower, buildEnv }:
-buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
- (fetchbower "jquery" "2.1.1" "2.1.1" "1qir36vi0bppjr9ckm6303vk1f1dkvq5wandpihb7dxl76s832bd")
- (fetchbower "angular" "1.5.11" "~1.5.3" "1sw31v3dhmxwgrmncw2f9yl07i9px62ssbj0739zsgi59cq2khl7")
- (fetchbower "lodash" "2.4.2" "~2.4.1" "0bhqarlvhlrxfvcgnxgsrsjgi6az4c117ffxyfi7gjwr9cvrzz4q")
- (fetchbower "angular-mocks" "1.5.11" "~1.5.3" "0yv0396fw51i6d9lwiwf241rmc28rnxgg2aa9vsc7dnm4qjkn6gx")
- (fetchbower "buildbot-data" "2.1.0" "~2.1.0" "0hkmm1byy7d712898lhkxf7i0wshmd1f8cr98iz67679nm6abimk")
-]; }
diff --git a/pkgs/python-packages/buildbot/plugins/buildslist/default.nix b/pkgs/python-packages/buildbot/plugins/buildslist/default.nix
deleted file mode 100644
index 4ab4c54..0000000
--- a/pkgs/python-packages/buildbot/plugins/buildslist/default.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{ stdenv, runCommand, writeScriptBin, buildBowerComponents, pythonPackages, libsass, python, fetchurl, jq, yarn, nodejs-10_x, yarn2nix-moretea, sources }:
-let
- yarn2nix-moretea' = yarn2nix-moretea.override({
- yarn = yarn.override({ nodejs = nodejs-10_x; });
- nodejs = nodejs-10_x;
- });
- buildslist_src = sources.buildbot-plugin-buildslist;
- packagejson = runCommand "package.json" { buildInputs = [ jq ]; } ''
- cat ${buildslist_src}/package.json | jq -r '.version = "${pythonPackages.buildbot-pkg.version}"|.license= "MIT"' > $out
- '';
- nodeHeaders = fetchurl {
- url = "https://nodejs.org/download/release/v${nodejs-10_x.version}/node-v${nodejs-10_x.version}-headers.tar.gz";
- sha256 = "15hkcbs328d3rc1s14rmky8lh8d3rr86l8k0bia0ggxzwl23lj9c";
- };
- buildslist_yarn = yarn2nix-moretea'.mkYarnModules rec {
- name = "buildslist-yarn-modules";
- pname = name;
- inherit (pythonPackages.buildbot-pkg) version;
- packageJSON = packagejson;
- yarnLock = "${buildslist_src}/yarn.lock";
- yarnNix = ./yarn-packages.nix;
- pkgConfig = {
- node-sass = {
- buildInputs = [ libsass python ];
- postInstall =
- ''
- node scripts/build.js --tarball=${nodeHeaders}
- '';
- };
- };
- };
- buildslist_bower = buildBowerComponents {
- name = "buildslist";
- generated = ./bower.nix;
- src = "${buildslist_src}/guanlecoja/";
- };
- # the buildbot-pkg calls yarn and screws up everything...
- fakeYarn = writeScriptBin "yarn" ''
- #!${stdenv.shell}
- if [ "$1" = "--version" ]; then
- echo "1.17"
- fi
- '';
-in
-pythonPackages.buildPythonPackage rec {
- pname = "buildbot-buildslist";
- inherit (pythonPackages.buildbot-pkg) version;
-
- preConfigure = ''
- export HOME=$PWD
- ln -s ${buildslist_yarn}/node_modules .
- cp -a ${buildslist_bower}/bower_components ./libs
- PATH=${buildslist_yarn}/node_modules/.bin:$PATH
- chmod -R u+w libs
- '';
- propagatedBuildInputs = with pythonPackages; [
- (klein.overridePythonAttrs(old: { checkPhase = ""; }))
- buildbot-pkg
- ];
- nativeBuildInputs = [ fakeYarn nodejs-10_x ];
- buildInputs = [ buildslist_yarn buildslist_bower ];
-
- doCheck = false;
- src = buildslist_src;
-}
diff --git a/pkgs/python-packages/buildbot/plugins/buildslist/yarn-packages.nix b/pkgs/python-packages/buildbot/plugins/buildslist/yarn-packages.nix
deleted file mode 100644
index 2ade970..0000000
--- a/pkgs/python-packages/buildbot/plugins/buildslist/yarn-packages.nix
+++ /dev/null
@@ -1,9293 +0,0 @@
-{fetchurl, linkFarm}: rec {
- offline_cache = linkFarm "offline" packages;
- packages = [
-
- {
- name = "_types_babel_types___babel_types_7.0.7.tgz";
- path = fetchurl {
- name = "_types_babel_types___babel_types_7.0.7.tgz";
- url = "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz";
- sha1 = "667eb1640e8039436028055737d2b9986ee336e3";
- };
- }
-
- {
- name = "_types_babylon___babylon_6.16.5.tgz";
- path = fetchurl {
- name = "_types_babylon___babylon_6.16.5.tgz";
- url = "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz";
- sha1 = "1c5641db69eb8cdf378edd25b4be7754beeb48b4";
- };
- }
-
- {
- name = "_types_color_name___color_name_1.1.1.tgz";
- path = fetchurl {
- name = "_types_color_name___color_name_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz";
- sha1 = "1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0";
- };
- }
-
- {
- name = "Base64___Base64_0.2.1.tgz";
- path = fetchurl {
- name = "Base64___Base64_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz";
- sha1 = "ba3a4230708e186705065e66babdd4c35cf60028";
- };
- }
-
- {
- name = "JSONStream___JSONStream_0.6.4.tgz";
- path = fetchurl {
- name = "JSONStream___JSONStream_0.6.4.tgz";
- url = "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.6.4.tgz";
- sha1 = "4b2c8063f8f512787b2375f7ee9db69208fa2dcb";
- };
- }
-
- {
- name = "JSONStream___JSONStream_0.7.4.tgz";
- path = fetchurl {
- name = "JSONStream___JSONStream_0.7.4.tgz";
- url = "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.7.4.tgz";
- sha1 = "734290e41511eea7c2cfe151fbf9a563a97b9786";
- };
- }
-
- {
- name = "abbrev___abbrev_1.1.1.tgz";
- path = fetchurl {
- name = "abbrev___abbrev_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz";
- sha1 = "f8f2c887ad10bf67f634f005b6987fed3179aac8";
- };
- }
-
- {
- name = "abbrev___abbrev_1.0.9.tgz";
- path = fetchurl {
- name = "abbrev___abbrev_1.0.9.tgz";
- url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz";
- sha1 = "91b4792588a7738c25f35dd6f63752a2f8776135";
- };
- }
-
- {
- name = "accepts___accepts_1.3.3.tgz";
- path = fetchurl {
- name = "accepts___accepts_1.3.3.tgz";
- url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz";
- sha1 = "c3ca7434938648c3e0d9c1e328dd68b622c284ca";
- };
- }
-
- {
- name = "acorn_globals___acorn_globals_3.1.0.tgz";
- path = fetchurl {
- name = "acorn_globals___acorn_globals_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz";
- sha1 = "fd8270f71fbb4996b004fa880ee5d46573a731bf";
- };
- }
-
- {
- name = "acorn___acorn_2.7.0.tgz";
- path = fetchurl {
- name = "acorn___acorn_2.7.0.tgz";
- url = "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz";
- sha1 = "ab6e7d9d886aaca8b085bc3312b79a198433f0e7";
- };
- }
-
- {
- name = "acorn___acorn_3.3.0.tgz";
- path = fetchurl {
- name = "acorn___acorn_3.3.0.tgz";
- url = "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz";
- sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
- };
- }
-
- {
- name = "acorn___acorn_4.0.13.tgz";
- path = fetchurl {
- name = "acorn___acorn_4.0.13.tgz";
- url = "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz";
- sha1 = "105495ae5361d697bd195c825192e1ad7f253787";
- };
- }
-
- {
- name = "acorn___acorn_2.6.4.tgz";
- path = fetchurl {
- name = "acorn___acorn_2.6.4.tgz";
- url = "https://registry.yarnpkg.com/acorn/-/acorn-2.6.4.tgz";
- sha1 = "eb1f45b4a43fa31d03701a5ec46f3b52673e90ee";
- };
- }
-
- {
- name = "after___after_0.8.2.tgz";
- path = fetchurl {
- name = "after___after_0.8.2.tgz";
- url = "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz";
- sha1 = "fedb394f9f0e02aa9768e702bda23b505fae7e1f";
- };
- }
-
- {
- name = "ajv___ajv_6.12.0.tgz";
- path = fetchurl {
- name = "ajv___ajv_6.12.0.tgz";
- url = "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz";
- sha1 = "06d60b96d87b8454a5adaba86e7854da629db4b7";
- };
- }
-
- {
- name = "align_text___align_text_0.1.4.tgz";
- path = fetchurl {
- name = "align_text___align_text_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz";
- sha1 = "0cd90a561093f35d0a99256c22b7069433fad117";
- };
- }
-
- {
- name = "alter___alter_0.2.0.tgz";
- path = fetchurl {
- name = "alter___alter_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/alter/-/alter-0.2.0.tgz";
- sha1 = "c7588808617572034aae62480af26b1d4d1cb3cd";
- };
- }
-
- {
- name = "amdefine___amdefine_1.0.1.tgz";
- path = fetchurl {
- name = "amdefine___amdefine_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz";
- sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
- };
- }
-
- {
- name = "ansi_gray___ansi_gray_0.1.1.tgz";
- path = fetchurl {
- name = "ansi_gray___ansi_gray_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz";
- sha1 = "2962cf54ec9792c48510a3deb524436861ef7251";
- };
- }
-
- {
- name = "ansi_regex___ansi_regex_0.2.1.tgz";
- path = fetchurl {
- name = "ansi_regex___ansi_regex_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz";
- sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9";
- };
- }
-
- {
- name = "ansi_regex___ansi_regex_1.1.1.tgz";
- path = fetchurl {
- name = "ansi_regex___ansi_regex_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-1.1.1.tgz";
- sha1 = "41c847194646375e6a1a5d10c3ca054ef9fc980d";
- };
- }
-
- {
- name = "ansi_regex___ansi_regex_2.1.1.tgz";
- path = fetchurl {
- name = "ansi_regex___ansi_regex_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
- sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
- };
- }
-
- {
- name = "ansi_regex___ansi_regex_3.0.0.tgz";
- path = fetchurl {
- name = "ansi_regex___ansi_regex_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
- sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
- };
- }
-
- {
- name = "ansi_styles___ansi_styles_1.1.0.tgz";
- path = fetchurl {
- name = "ansi_styles___ansi_styles_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz";
- sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de";
- };
- }
-
- {
- name = "ansi_styles___ansi_styles_2.2.1.tgz";
- path = fetchurl {
- name = "ansi_styles___ansi_styles_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz";
- sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
- };
- }
-
- {
- name = "ansi_styles___ansi_styles_4.2.1.tgz";
- path = fetchurl {
- name = "ansi_styles___ansi_styles_4.2.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz";
- sha1 = "90ae75c424d008d2624c5bf29ead3177ebfcf359";
- };
- }
-
- {
- name = "ansi_styles___ansi_styles_1.0.0.tgz";
- path = fetchurl {
- name = "ansi_styles___ansi_styles_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz";
- sha1 = "cb102df1c56f5123eab8b67cd7b98027a0279178";
- };
- }
-
- {
- name = "ansi_wrap___ansi_wrap_0.1.0.tgz";
- path = fetchurl {
- name = "ansi_wrap___ansi_wrap_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz";
- sha1 = "a82250ddb0015e9a27ca82e82ea603bbfa45efaf";
- };
- }
-
- {
- name = "ansicolors___ansicolors_0.2.1.tgz";
- path = fetchurl {
- name = "ansicolors___ansicolors_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz";
- sha1 = "be089599097b74a5c9c4a84a0cdbcdb62bd87aef";
- };
- }
-
- {
- name = "anymatch___anymatch_1.3.2.tgz";
- path = fetchurl {
- name = "anymatch___anymatch_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz";
- sha1 = "553dcb8f91e3c889845dfdba34c77721b90b9d7a";
- };
- }
-
- {
- name = "aproba___aproba_1.2.0.tgz";
- path = fetchurl {
- name = "aproba___aproba_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
- sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
- };
- }
-
- {
- name = "archy___archy_1.0.0.tgz";
- path = fetchurl {
- name = "archy___archy_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz";
- sha1 = "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40";
- };
- }
-
- {
- name = "archy___archy_0.0.2.tgz";
- path = fetchurl {
- name = "archy___archy_0.0.2.tgz";
- url = "https://registry.yarnpkg.com/archy/-/archy-0.0.2.tgz";
- sha1 = "910f43bf66141fc335564597abc189df44b3d35e";
- };
- }
-
- {
- name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
- path = fetchurl {
- name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
- url = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
- sha1 = "4b35c2944f062a8bfcda66410760350fe9ddfc21";
- };
- }
-
- {
- name = "argparse___argparse_1.0.10.tgz";
- path = fetchurl {
- name = "argparse___argparse_1.0.10.tgz";
- url = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz";
- sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911";
- };
- }
-
- {
- name = "argparse___argparse_0.1.16.tgz";
- path = fetchurl {
- name = "argparse___argparse_0.1.16.tgz";
- url = "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz";
- sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c";
- };
- }
-
- {
- name = "arr_diff___arr_diff_2.0.0.tgz";
- path = fetchurl {
- name = "arr_diff___arr_diff_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz";
- sha1 = "8f3b827f955a8bd669697e4a4256ac3ceae356cf";
- };
- }
-
- {
- name = "arr_diff___arr_diff_4.0.0.tgz";
- path = fetchurl {
- name = "arr_diff___arr_diff_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz";
- sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
- };
- }
-
- {
- name = "arr_flatten___arr_flatten_1.1.0.tgz";
- path = fetchurl {
- name = "arr_flatten___arr_flatten_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz";
- sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1";
- };
- }
-
- {
- name = "arr_union___arr_union_3.1.0.tgz";
- path = fetchurl {
- name = "arr_union___arr_union_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz";
- sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
- };
- }
-
- {
- name = "array_differ___array_differ_1.0.0.tgz";
- path = fetchurl {
- name = "array_differ___array_differ_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz";
- sha1 = "eff52e3758249d33be402b8bb8e564bb2b5d4031";
- };
- }
-
- {
- name = "array_each___array_each_1.0.1.tgz";
- path = fetchurl {
- name = "array_each___array_each_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz";
- sha1 = "a794af0c05ab1752846ee753a1f211a05ba0c44f";
- };
- }
-
- {
- name = "array_filter___array_filter_0.0.1.tgz";
- path = fetchurl {
- name = "array_filter___array_filter_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz";
- sha1 = "7da8cf2e26628ed732803581fd21f67cacd2eeec";
- };
- }
-
- {
- name = "array_find_index___array_find_index_1.0.2.tgz";
- path = fetchurl {
- name = "array_find_index___array_find_index_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz";
- sha1 = "df010aa1287e164bbda6f9723b0a96a1ec4187a1";
- };
- }
-
- {
- name = "array_map___array_map_0.0.0.tgz";
- path = fetchurl {
- name = "array_map___array_map_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz";
- sha1 = "88a2bab73d1cf7bcd5c1b118a003f66f665fa662";
- };
- }
-
- {
- name = "array_reduce___array_reduce_0.0.0.tgz";
- path = fetchurl {
- name = "array_reduce___array_reduce_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz";
- sha1 = "173899d3ffd1c7d9383e4479525dbe278cab5f2b";
- };
- }
-
- {
- name = "array_slice___array_slice_0.2.3.tgz";
- path = fetchurl {
- name = "array_slice___array_slice_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz";
- sha1 = "dd3cfb80ed7973a75117cdac69b0b99ec86186f5";
- };
- }
-
- {
- name = "array_slice___array_slice_1.1.0.tgz";
- path = fetchurl {
- name = "array_slice___array_slice_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz";
- sha1 = "e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4";
- };
- }
-
- {
- name = "array_uniq___array_uniq_1.0.3.tgz";
- path = fetchurl {
- name = "array_uniq___array_uniq_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz";
- sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
- };
- }
-
- {
- name = "array_unique___array_unique_0.2.1.tgz";
- path = fetchurl {
- name = "array_unique___array_unique_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz";
- sha1 = "a1d97ccafcbc2625cc70fadceb36a50c58b01a53";
- };
- }
-
- {
- name = "array_unique___array_unique_0.3.2.tgz";
- path = fetchurl {
- name = "array_unique___array_unique_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz";
- sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
- };
- }
-
- {
- name = "arraybuffer.slice___arraybuffer.slice_0.0.6.tgz";
- path = fetchurl {
- name = "arraybuffer.slice___arraybuffer.slice_0.0.6.tgz";
- url = "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz";
- sha1 = "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca";
- };
- }
-
- {
- name = "asap___asap_2.0.6.tgz";
- path = fetchurl {
- name = "asap___asap_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz";
- sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
- };
- }
-
- {
- name = "asn1___asn1_0.1.11.tgz";
- path = fetchurl {
- name = "asn1___asn1_0.1.11.tgz";
- url = "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz";
- sha1 = "559be18376d08a4ec4dbe80877d27818639b2df7";
- };
- }
-
- {
- name = "asn1___asn1_0.2.4.tgz";
- path = fetchurl {
- name = "asn1___asn1_0.2.4.tgz";
- url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
- sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
- };
- }
-
- {
- name = "assert_plus___assert_plus_1.0.0.tgz";
- path = fetchurl {
- name = "assert_plus___assert_plus_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
- sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
- };
- }
-
- {
- name = "assert_plus___assert_plus_0.1.5.tgz";
- path = fetchurl {
- name = "assert_plus___assert_plus_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz";
- sha1 = "ee74009413002d84cec7219c6ac811812e723160";
- };
- }
-
- {
- name = "assert___assert_1.1.2.tgz";
- path = fetchurl {
- name = "assert___assert_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/assert/-/assert-1.1.2.tgz";
- sha1 = "adaa04c46bb58c6dd1f294da3eb26e6228eb6e44";
- };
- }
-
- {
- name = "assign_symbols___assign_symbols_1.0.0.tgz";
- path = fetchurl {
- name = "assign_symbols___assign_symbols_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz";
- sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
- };
- }
-
- {
- name = "astw___astw_2.2.0.tgz";
- path = fetchurl {
- name = "astw___astw_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz";
- sha1 = "7bd41784d32493987aeb239b6b4e1c57a873b917";
- };
- }
-
- {
- name = "async_each___async_each_1.0.3.tgz";
- path = fetchurl {
- name = "async_each___async_each_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz";
- sha1 = "b727dbf87d7651602f06f4d4ac387f47d91b0cbf";
- };
- }
-
- {
- name = "async_foreach___async_foreach_0.1.3.tgz";
- path = fetchurl {
- name = "async_foreach___async_foreach_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz";
- sha1 = "36121f845c0578172de419a97dbeb1d16ec34542";
- };
- }
-
- {
- name = "async___async_1.5.2.tgz";
- path = fetchurl {
- name = "async___async_1.5.2.tgz";
- url = "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz";
- sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
- };
- }
-
- {
- name = "async___async_0.2.10.tgz";
- path = fetchurl {
- name = "async___async_0.2.10.tgz";
- url = "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz";
- sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
- };
- }
-
- {
- name = "async___async_0.8.0.tgz";
- path = fetchurl {
- name = "async___async_0.8.0.tgz";
- url = "https://registry.yarnpkg.com/async/-/async-0.8.0.tgz";
- sha1 = "ee65ec77298c2ff1456bc4418a052d0f06435112";
- };
- }
-
- {
- name = "async___async_0.9.2.tgz";
- path = fetchurl {
- name = "async___async_0.9.2.tgz";
- url = "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz";
- sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d";
- };
- }
-
- {
- name = "asynckit___asynckit_0.4.0.tgz";
- path = fetchurl {
- name = "asynckit___asynckit_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
- sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
- };
- }
-
- {
- name = "atob___atob_2.1.2.tgz";
- path = fetchurl {
- name = "atob___atob_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz";
- sha1 = "6d9517eb9e030d2436666651e86bd9f6f13533c9";
- };
- }
-
- {
- name = "aws_sign2___aws_sign2_0.5.0.tgz";
- path = fetchurl {
- name = "aws_sign2___aws_sign2_0.5.0.tgz";
- url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz";
- sha1 = "c57103f7a17fc037f02d7c2e64b602ea223f7d63";
- };
- }
-
- {
- name = "aws_sign2___aws_sign2_0.7.0.tgz";
- path = fetchurl {
- name = "aws_sign2___aws_sign2_0.7.0.tgz";
- url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
- sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
- };
- }
-
- {
- name = "aws_sign___aws_sign_0.3.0.tgz";
- path = fetchurl {
- name = "aws_sign___aws_sign_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/aws-sign/-/aws-sign-0.3.0.tgz";
- sha1 = "3d81ca69b474b1e16518728b51c24ff0bbedc6e9";
- };
- }
-
- {
- name = "aws4___aws4_1.9.1.tgz";
- path = fetchurl {
- name = "aws4___aws4_1.9.1.tgz";
- url = "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz";
- sha1 = "7e33d8f7d449b3f673cd72deb9abdc552dbe528e";
- };
- }
-
- {
- name = "babel_runtime___babel_runtime_6.26.0.tgz";
- path = fetchurl {
- name = "babel_runtime___babel_runtime_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz";
- sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
- };
- }
-
- {
- name = "babel_types___babel_types_6.26.0.tgz";
- path = fetchurl {
- name = "babel_types___babel_types_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz";
- sha1 = "a3b073f94ab49eb6fa55cd65227a334380632497";
- };
- }
-
- {
- name = "babylon___babylon_6.18.0.tgz";
- path = fetchurl {
- name = "babylon___babylon_6.18.0.tgz";
- url = "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz";
- sha1 = "af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3";
- };
- }
-
- {
- name = "backo2___backo2_1.0.2.tgz";
- path = fetchurl {
- name = "backo2___backo2_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz";
- sha1 = "31ab1ac8b129363463e35b3ebb69f4dfcfba7947";
- };
- }
-
- {
- name = "balanced_match___balanced_match_1.0.0.tgz";
- path = fetchurl {
- name = "balanced_match___balanced_match_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
- sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
- };
- }
-
- {
- name = "base64_arraybuffer___base64_arraybuffer_0.1.5.tgz";
- path = fetchurl {
- name = "base64_arraybuffer___base64_arraybuffer_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz";
- sha1 = "73926771923b5a19747ad666aa5cd4bf9c6e9ce8";
- };
- }
-
- {
- name = "base64_js___base64_js_0.0.8.tgz";
- path = fetchurl {
- name = "base64_js___base64_js_0.0.8.tgz";
- url = "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz";
- sha1 = "1101e9544f4a76b1bc3b26d452ca96d7a35e7978";
- };
- }
-
- {
- name = "base64id___base64id_1.0.0.tgz";
- path = fetchurl {
- name = "base64id___base64id_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz";
- sha1 = "47688cb99bb6804f0e06d3e763b1c32e57d8e6b6";
- };
- }
-
- {
- name = "base___base_0.11.2.tgz";
- path = fetchurl {
- name = "base___base_0.11.2.tgz";
- url = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz";
- sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f";
- };
- }
-
- {
- name = "batch___batch_0.5.3.tgz";
- path = fetchurl {
- name = "batch___batch_0.5.3.tgz";
- url = "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz";
- sha1 = "3f3414f380321743bfc1042f9a83ff1d5824d464";
- };
- }
-
- {
- name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
- path = fetchurl {
- name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
- sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
- };
- }
-
- {
- name = "beeper___beeper_1.1.1.tgz";
- path = fetchurl {
- name = "beeper___beeper_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz";
- sha1 = "e6d5ea8c5dad001304a70b22638447f69cb2f809";
- };
- }
-
- {
- name = "better_assert___better_assert_1.0.2.tgz";
- path = fetchurl {
- name = "better_assert___better_assert_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz";
- sha1 = "40866b9e1b9e0b55b481894311e68faffaebc522";
- };
- }
-
- {
- name = "binary_extensions___binary_extensions_1.13.1.tgz";
- path = fetchurl {
- name = "binary_extensions___binary_extensions_1.13.1.tgz";
- url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz";
- sha1 = "598afe54755b2868a5330d2aff9d4ebb53209b65";
- };
- }
-
- {
- name = "binary___binary_0.3.0.tgz";
- path = fetchurl {
- name = "binary___binary_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz";
- sha1 = "9f60553bc5ce8c3386f3b553cff47462adecaa79";
- };
- }
-
- {
- name = "binaryextensions___binaryextensions_1.0.1.tgz";
- path = fetchurl {
- name = "binaryextensions___binaryextensions_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-1.0.1.tgz";
- sha1 = "1e637488b35b58bda5f4774bf96a5212a8c90755";
- };
- }
-
- {
- name = "bindings___bindings_1.5.0.tgz";
- path = fetchurl {
- name = "bindings___bindings_1.5.0.tgz";
- url = "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz";
- sha1 = "10353c9e945334bc0511a6d90b38fbc7c9c504df";
- };
- }
-
- {
- name = "bl___bl_0.9.5.tgz";
- path = fetchurl {
- name = "bl___bl_0.9.5.tgz";
- url = "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz";
- sha1 = "c06b797af085ea00bc527afc8efcf11de2232054";
- };
- }
-
- {
- name = "blob___blob_0.0.4.tgz";
- path = fetchurl {
- name = "blob___blob_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz";
- sha1 = "bcf13052ca54463f30f9fc7e95b9a47630a94921";
- };
- }
-
- {
- name = "block_stream___block_stream_0.0.9.tgz";
- path = fetchurl {
- name = "block_stream___block_stream_0.0.9.tgz";
- url = "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz";
- sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
- };
- }
-
- {
- name = "bluebird___bluebird_2.11.0.tgz";
- path = fetchurl {
- name = "bluebird___bluebird_2.11.0.tgz";
- url = "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz";
- sha1 = "534b9033c022c9579c56ba3b3e5a5caafbb650e1";
- };
- }
-
- {
- name = "body_parser___body_parser_1.19.0.tgz";
- path = fetchurl {
- name = "body_parser___body_parser_1.19.0.tgz";
- url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz";
- sha1 = "96b2709e57c9c4e09a6fd66a8fd979844f69f08a";
- };
- }
-
- {
- name = "body_parser___body_parser_1.14.2.tgz";
- path = fetchurl {
- name = "body_parser___body_parser_1.14.2.tgz";
- url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.14.2.tgz";
- sha1 = "1015cb1fe2c443858259581db53332f8d0cf50f9";
- };
- }
-
- {
- name = "boom___boom_0.4.2.tgz";
- path = fetchurl {
- name = "boom___boom_0.4.2.tgz";
- url = "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz";
- sha1 = "7a636e9ded4efcefb19cef4947a3c67dfaee911b";
- };
- }
-
- {
- name = "bower_config___bower_config_0.5.3.tgz";
- path = fetchurl {
- name = "bower_config___bower_config_0.5.3.tgz";
- url = "https://registry.yarnpkg.com/bower-config/-/bower-config-0.5.3.tgz";
- sha1 = "98fc5b41a87870ef9cbb9297635cf81f5505fdb1";
- };
- }
-
- {
- name = "bower_endpoint_parser___bower_endpoint_parser_0.2.2.tgz";
- path = fetchurl {
- name = "bower_endpoint_parser___bower_endpoint_parser_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz";
- sha1 = "00b565adbfab6f2d35addde977e97962acbcb3f6";
- };
- }
-
- {
- name = "bower_json___bower_json_0.4.0.tgz";
- path = fetchurl {
- name = "bower_json___bower_json_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/bower-json/-/bower-json-0.4.0.tgz";
- sha1 = "a99c3ccf416ef0590ed0ded252c760f1c6d93766";
- };
- }
-
- {
- name = "bower_logger___bower_logger_0.2.2.tgz";
- path = fetchurl {
- name = "bower_logger___bower_logger_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/bower-logger/-/bower-logger-0.2.2.tgz";
- sha1 = "39be07e979b2fc8e03a94634205ed9422373d381";
- };
- }
-
- {
- name = "bower_registry_client___bower_registry_client_0.2.4.tgz";
- path = fetchurl {
- name = "bower_registry_client___bower_registry_client_0.2.4.tgz";
- url = "https://registry.yarnpkg.com/bower-registry-client/-/bower-registry-client-0.2.4.tgz";
- sha1 = "269fc7e898b627fb939d1144a593254d7fbbeebc";
- };
- }
-
- {
- name = "bower___bower_1.3.8.tgz";
- path = fetchurl {
- name = "bower___bower_1.3.8.tgz";
- url = "https://registry.yarnpkg.com/bower/-/bower-1.3.8.tgz";
- sha1 = "afa3338a8a88a6e084c38112ea4a15998cbee3e6";
- };
- }
-
- {
- name = "brace_expansion___brace_expansion_1.1.11.tgz";
- path = fetchurl {
- name = "brace_expansion___brace_expansion_1.1.11.tgz";
- url = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz";
- sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd";
- };
- }
-
- {
- name = "braces___braces_0.1.5.tgz";
- path = fetchurl {
- name = "braces___braces_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz";
- sha1 = "c085711085291d8b75fdd74eab0f8597280711e6";
- };
- }
-
- {
- name = "braces___braces_1.8.5.tgz";
- path = fetchurl {
- name = "braces___braces_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz";
- sha1 = "ba77962e12dff969d6b76711e914b737857bf6a7";
- };
- }
-
- {
- name = "braces___braces_2.3.2.tgz";
- path = fetchurl {
- name = "braces___braces_2.3.2.tgz";
- url = "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz";
- sha1 = "5979fd3f14cd531565e5fa2df1abfff1dfaee729";
- };
- }
-
- {
- name = "browser_pack___browser_pack_2.0.1.tgz";
- path = fetchurl {
- name = "browser_pack___browser_pack_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/browser-pack/-/browser-pack-2.0.1.tgz";
- sha1 = "5d1c527f56c582677411c4db2a128648ff6bf150";
- };
- }
-
- {
- name = "browser_resolve___browser_resolve_1.2.4.tgz";
- path = fetchurl {
- name = "browser_resolve___browser_resolve_1.2.4.tgz";
- url = "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.2.4.tgz";
- sha1 = "59ae7820a82955ecd32f5fb7c468ac21c4723806";
- };
- }
-
- {
- name = "browserify_shim___browserify_shim_2.0.10.tgz";
- path = fetchurl {
- name = "browserify_shim___browserify_shim_2.0.10.tgz";
- url = "https://registry.yarnpkg.com/browserify-shim/-/browserify-shim-2.0.10.tgz";
- sha1 = "74a0ed5b9b784a5a287906513a896d31f54a84b8";
- };
- }
-
- {
- name = "browserify_zlib___browserify_zlib_0.1.4.tgz";
- path = fetchurl {
- name = "browserify_zlib___browserify_zlib_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz";
- sha1 = "bb35f8a519f600e0fa6b8485241c979d0141fb2d";
- };
- }
-
- {
- name = "browserify___browserify_3.46.1.tgz";
- path = fetchurl {
- name = "browserify___browserify_3.46.1.tgz";
- url = "https://registry.yarnpkg.com/browserify/-/browserify-3.46.1.tgz";
- sha1 = "2c2e4a7f2f408178e78c223b5b57b37c2185ad8e";
- };
- }
-
- {
- name = "buffer_alloc_unsafe___buffer_alloc_unsafe_1.1.0.tgz";
- path = fetchurl {
- name = "buffer_alloc_unsafe___buffer_alloc_unsafe_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz";
- sha1 = "bd7dc26ae2972d0eda253be061dba992349c19f0";
- };
- }
-
- {
- name = "buffer_alloc___buffer_alloc_1.2.0.tgz";
- path = fetchurl {
- name = "buffer_alloc___buffer_alloc_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz";
- sha1 = "890dd90d923a873e08e10e5fd51a57e5b7cce0ec";
- };
- }
-
- {
- name = "buffer_fill___buffer_fill_1.0.0.tgz";
- path = fetchurl {
- name = "buffer_fill___buffer_fill_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz";
- sha1 = "f8f78b76789888ef39f205cd637f68e702122b2c";
- };
- }
-
- {
- name = "buffer___buffer_2.1.13.tgz";
- path = fetchurl {
- name = "buffer___buffer_2.1.13.tgz";
- url = "https://registry.yarnpkg.com/buffer/-/buffer-2.1.13.tgz";
- sha1 = "c88838ebf79f30b8b4a707788470bea8a62c2355";
- };
- }
-
- {
- name = "buffers___buffers_0.1.1.tgz";
- path = fetchurl {
- name = "buffers___buffers_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz";
- sha1 = "b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb";
- };
- }
-
- {
- name = "bufferstreams___bufferstreams_0.0.2.tgz";
- path = fetchurl {
- name = "bufferstreams___bufferstreams_0.0.2.tgz";
- url = "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-0.0.2.tgz";
- sha1 = "7ce8dff968bbac00b9e90158a2c41456f740abdd";
- };
- }
-
- {
- name = "builtins___builtins_0.0.7.tgz";
- path = fetchurl {
- name = "builtins___builtins_0.0.7.tgz";
- url = "https://registry.yarnpkg.com/builtins/-/builtins-0.0.7.tgz";
- sha1 = "355219cd6cf18dbe7c01cc7fd2dce765cfdc549a";
- };
- }
-
- {
- name = "bytes___bytes_2.2.0.tgz";
- path = fetchurl {
- name = "bytes___bytes_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/bytes/-/bytes-2.2.0.tgz";
- sha1 = "fd35464a403f6f9117c2de3609ecff9cae000588";
- };
- }
-
- {
- name = "bytes___bytes_2.4.0.tgz";
- path = fetchurl {
- name = "bytes___bytes_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz";
- sha1 = "7d97196f9d5baf7f6935e25985549edd2a6c2339";
- };
- }
-
- {
- name = "bytes___bytes_3.1.0.tgz";
- path = fetchurl {
- name = "bytes___bytes_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz";
- sha1 = "f6cf7933a360e0588fa9fde85651cdc7f805d1f6";
- };
- }
-
- {
- name = "cache_base___cache_base_1.0.1.tgz";
- path = fetchurl {
- name = "cache_base___cache_base_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz";
- sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2";
- };
- }
-
- {
- name = "callsite___callsite_1.0.0.tgz";
- path = fetchurl {
- name = "callsite___callsite_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz";
- sha1 = "280398e5d664bd74038b6f0905153e6e8af1bc20";
- };
- }
-
- {
- name = "camelcase_keys___camelcase_keys_2.1.0.tgz";
- path = fetchurl {
- name = "camelcase_keys___camelcase_keys_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz";
- sha1 = "308beeaffdf28119051efa1d932213c91b8f92e7";
- };
- }
-
- {
- name = "camelcase___camelcase_1.2.1.tgz";
- path = fetchurl {
- name = "camelcase___camelcase_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz";
- sha1 = "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39";
- };
- }
-
- {
- name = "camelcase___camelcase_2.1.1.tgz";
- path = fetchurl {
- name = "camelcase___camelcase_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz";
- sha1 = "7c1d16d679a1bbe59ca02cacecfb011e201f5a1f";
- };
- }
-
- {
- name = "camelcase___camelcase_3.0.0.tgz";
- path = fetchurl {
- name = "camelcase___camelcase_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz";
- sha1 = "32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a";
- };
- }
-
- {
- name = "cardinal___cardinal_0.4.4.tgz";
- path = fetchurl {
- name = "cardinal___cardinal_0.4.4.tgz";
- url = "https://registry.yarnpkg.com/cardinal/-/cardinal-0.4.4.tgz";
- sha1 = "ca5bb68a5b511b90fe93b9acea49bdee5c32bfe2";
- };
- }
-
- {
- name = "caseless___caseless_0.12.0.tgz";
- path = fetchurl {
- name = "caseless___caseless_0.12.0.tgz";
- url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
- sha1 = "1b681c21ff84033c826543090689420d187151dc";
- };
- }
-
- {
- name = "caseless___caseless_0.8.0.tgz";
- path = fetchurl {
- name = "caseless___caseless_0.8.0.tgz";
- url = "https://registry.yarnpkg.com/caseless/-/caseless-0.8.0.tgz";
- sha1 = "5bca2881d41437f54b2407ebe34888c7b9ad4f7d";
- };
- }
-
- {
- name = "center_align___center_align_0.1.3.tgz";
- path = fetchurl {
- name = "center_align___center_align_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz";
- sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad";
- };
- }
-
- {
- name = "chainsaw___chainsaw_0.1.0.tgz";
- path = fetchurl {
- name = "chainsaw___chainsaw_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz";
- sha1 = "5eab50b28afe58074d0d58291388828b5e5fbc98";
- };
- }
-
- {
- name = "chalk___chalk_3.0.0.tgz";
- path = fetchurl {
- name = "chalk___chalk_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz";
- sha1 = "3f73c2bf526591f574cc492c51e2456349f844e4";
- };
- }
-
- {
- name = "chalk___chalk_0.5.1.tgz";
- path = fetchurl {
- name = "chalk___chalk_0.5.1.tgz";
- url = "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz";
- sha1 = "663b3a648b68b55d04690d49167aa837858f2174";
- };
- }
-
- {
- name = "chalk___chalk_1.1.3.tgz";
- path = fetchurl {
- name = "chalk___chalk_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz";
- sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
- };
- }
-
- {
- name = "chalk___chalk_0.4.0.tgz";
- path = fetchurl {
- name = "chalk___chalk_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz";
- sha1 = "5199a3ddcd0c1efe23bc08c1b027b06176e0c64f";
- };
- }
-
- {
- name = "character_parser___character_parser_2.2.0.tgz";
- path = fetchurl {
- name = "character_parser___character_parser_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz";
- sha1 = "c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0";
- };
- }
-
- {
- name = "chmodr___chmodr_0.1.2.tgz";
- path = fetchurl {
- name = "chmodr___chmodr_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/chmodr/-/chmodr-0.1.2.tgz";
- sha1 = "0dd8041c915087575bec383b47827bb7576a4fd6";
- };
- }
-
- {
- name = "chokidar___chokidar_1.7.0.tgz";
- path = fetchurl {
- name = "chokidar___chokidar_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz";
- sha1 = "798e689778151c8076b4b360e5edd28cda2bb468";
- };
- }
-
- {
- name = "chownr___chownr_1.1.4.tgz";
- path = fetchurl {
- name = "chownr___chownr_1.1.4.tgz";
- url = "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz";
- sha1 = "6fc9d7b42d32a583596337666e7d08084da2cc6b";
- };
- }
-
- {
- name = "class_utils___class_utils_0.3.6.tgz";
- path = fetchurl {
- name = "class_utils___class_utils_0.3.6.tgz";
- url = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz";
- sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463";
- };
- }
-
- {
- name = "clean_css___clean_css_2.2.23.tgz";
- path = fetchurl {
- name = "clean_css___clean_css_2.2.23.tgz";
- url = "https://registry.yarnpkg.com/clean-css/-/clean-css-2.2.23.tgz";
- sha1 = "0590b5478b516c4903edc2d89bd3fdbdd286328c";
- };
- }
-
- {
- name = "clean_css___clean_css_4.2.3.tgz";
- path = fetchurl {
- name = "clean_css___clean_css_4.2.3.tgz";
- url = "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz";
- sha1 = "507b5de7d97b48ee53d84adb0160ff6216380f78";
- };
- }
-
- {
- name = "cli_color___cli_color_0.2.3.tgz";
- path = fetchurl {
- name = "cli_color___cli_color_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/cli-color/-/cli-color-0.2.3.tgz";
- sha1 = "0a25ceae5a6a1602be7f77d28563c36700274e88";
- };
- }
-
- {
- name = "cli_color___cli_color_0.3.3.tgz";
- path = fetchurl {
- name = "cli_color___cli_color_0.3.3.tgz";
- url = "https://registry.yarnpkg.com/cli-color/-/cli-color-0.3.3.tgz";
- sha1 = "12d5bdd158ff8a0b0db401198913c03df069f6f5";
- };
- }
-
- {
- name = "cliui___cliui_2.1.0.tgz";
- path = fetchurl {
- name = "cliui___cliui_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz";
- sha1 = "4b475760ff80264c762c3a1719032e91c7fea0d1";
- };
- }
-
- {
- name = "cliui___cliui_3.2.0.tgz";
- path = fetchurl {
- name = "cliui___cliui_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz";
- sha1 = "120601537a916d29940f934da3b48d585a39213d";
- };
- }
-
- {
- name = "clone_buffer___clone_buffer_1.0.0.tgz";
- path = fetchurl {
- name = "clone_buffer___clone_buffer_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz";
- sha1 = "e3e25b207ac4e701af721e2cb5a16792cac3dc58";
- };
- }
-
- {
- name = "clone_stats___clone_stats_0.0.1.tgz";
- path = fetchurl {
- name = "clone_stats___clone_stats_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz";
- sha1 = "b88f94a82cf38b8791d58046ea4029ad88ca99d1";
- };
- }
-
- {
- name = "clone_stats___clone_stats_1.0.0.tgz";
- path = fetchurl {
- name = "clone_stats___clone_stats_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz";
- sha1 = "b3782dff8bb5474e18b9b6bf0fdfe782f8777680";
- };
- }
-
- {
- name = "clone___clone_0.2.0.tgz";
- path = fetchurl {
- name = "clone___clone_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz";
- sha1 = "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f";
- };
- }
-
- {
- name = "clone___clone_1.0.4.tgz";
- path = fetchurl {
- name = "clone___clone_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz";
- sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
- };
- }
-
- {
- name = "clone___clone_2.1.2.tgz";
- path = fetchurl {
- name = "clone___clone_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz";
- sha1 = "1b7f4b9f591f1e8f83670401600345a02887435f";
- };
- }
-
- {
- name = "cloneable_readable___cloneable_readable_1.1.3.tgz";
- path = fetchurl {
- name = "cloneable_readable___cloneable_readable_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz";
- sha1 = "120a00cb053bfb63a222e709f9683ea2e11d8cec";
- };
- }
-
- {
- name = "code_point_at___code_point_at_1.1.0.tgz";
- path = fetchurl {
- name = "code_point_at___code_point_at_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz";
- sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
- };
- }
-
- {
- name = "coffee_script___coffee_script_1.12.7.tgz";
- path = fetchurl {
- name = "coffee_script___coffee_script_1.12.7.tgz";
- url = "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz";
- sha1 = "c05dae0cb79591d05b3070a8433a98c9a89ccc53";
- };
- }
-
- {
- name = "coffee_script___coffee_script_1.10.0.tgz";
- path = fetchurl {
- name = "coffee_script___coffee_script_1.10.0.tgz";
- url = "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.10.0.tgz";
- sha1 = "12938bcf9be1948fa006f92e0c4c9e81705108c0";
- };
- }
-
- {
- name = "coffeescript___coffeescript_1.12.7.tgz";
- path = fetchurl {
- name = "coffeescript___coffeescript_1.12.7.tgz";
- url = "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.12.7.tgz";
- sha1 = "e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27";
- };
- }
-
- {
- name = "collection_visit___collection_visit_1.0.0.tgz";
- path = fetchurl {
- name = "collection_visit___collection_visit_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz";
- sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
- };
- }
-
- {
- name = "color_convert___color_convert_2.0.1.tgz";
- path = fetchurl {
- name = "color_convert___color_convert_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz";
- sha1 = "72d3a68d598c9bdb3af2ad1e84f21d896abd4de3";
- };
- }
-
- {
- name = "color_name___color_name_1.1.4.tgz";
- path = fetchurl {
- name = "color_name___color_name_1.1.4.tgz";
- url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz";
- sha1 = "c2a09a87acbde69543de6f63fa3995c826c536a2";
- };
- }
-
- {
- name = "color_support___color_support_1.1.3.tgz";
- path = fetchurl {
- name = "color_support___color_support_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz";
- sha1 = "93834379a1cc9a0c61f82f52f0d04322251bd5a2";
- };
- }
-
- {
- name = "colors___colors_1.4.0.tgz";
- path = fetchurl {
- name = "colors___colors_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz";
- sha1 = "c50491479d4c1bdaed2c9ced32cf7c7dc2360f78";
- };
- }
-
- {
- name = "combine_source_map___combine_source_map_0.3.0.tgz";
- path = fetchurl {
- name = "combine_source_map___combine_source_map_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.3.0.tgz";
- sha1 = "d9e74f593d9cd43807312cb5d846d451efaa9eb7";
- };
- }
-
- {
- name = "combined_stream___combined_stream_1.0.8.tgz";
- path = fetchurl {
- name = "combined_stream___combined_stream_1.0.8.tgz";
- url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz";
- sha1 = "c3d45a8b34fd730631a110a8a2520682b31d5a7f";
- };
- }
-
- {
- name = "combined_stream___combined_stream_0.0.7.tgz";
- path = fetchurl {
- name = "combined_stream___combined_stream_0.0.7.tgz";
- url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz";
- sha1 = "0137e657baa5a7541c57ac37ac5fc07d73b4dc1f";
- };
- }
-
- {
- name = "commander___commander_2.2.0.tgz";
- path = fetchurl {
- name = "commander___commander_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/commander/-/commander-2.2.0.tgz";
- sha1 = "175ad4b9317f3ff615f201c1e57224f55a3e91df";
- };
- }
-
- {
- name = "commander___commander_2.20.3.tgz";
- path = fetchurl {
- name = "commander___commander_2.20.3.tgz";
- url = "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz";
- sha1 = "fd485e84c03eb4881c20722ba48035e8531aeb33";
- };
- }
-
- {
- name = "commondir___commondir_0.0.1.tgz";
- path = fetchurl {
- name = "commondir___commondir_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/commondir/-/commondir-0.0.1.tgz";
- sha1 = "89f00fdcd51b519c578733fec563e6a6da7f5be2";
- };
- }
-
- {
- name = "component_bind___component_bind_1.0.0.tgz";
- path = fetchurl {
- name = "component_bind___component_bind_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz";
- sha1 = "00c608ab7dcd93897c0009651b1d3a8e1e73bbd1";
- };
- }
-
- {
- name = "component_emitter___component_emitter_1.1.2.tgz";
- path = fetchurl {
- name = "component_emitter___component_emitter_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz";
- sha1 = "296594f2753daa63996d2af08d15a95116c9aec3";
- };
- }
-
- {
- name = "component_emitter___component_emitter_1.2.1.tgz";
- path = fetchurl {
- name = "component_emitter___component_emitter_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz";
- sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
- };
- }
-
- {
- name = "component_emitter___component_emitter_1.3.0.tgz";
- path = fetchurl {
- name = "component_emitter___component_emitter_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz";
- sha1 = "16e4070fba8ae29b679f2215853ee181ab2eabc0";
- };
- }
-
- {
- name = "component_inherit___component_inherit_0.0.3.tgz";
- path = fetchurl {
- name = "component_inherit___component_inherit_0.0.3.tgz";
- url = "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz";
- sha1 = "645fc4adf58b72b649d5cae65135619db26ff143";
- };
- }
-
- {
- name = "concat_map___concat_map_0.0.1.tgz";
- path = fetchurl {
- name = "concat_map___concat_map_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
- sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
- };
- }
-
- {
- name = "concat_stream___concat_stream_1.4.11.tgz";
- path = fetchurl {
- name = "concat_stream___concat_stream_1.4.11.tgz";
- url = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.11.tgz";
- sha1 = "1dc9f666f2621da9c618b1e7f8f3b2ff70b5f76f";
- };
- }
-
- {
- name = "concat_with_sourcemaps___concat_with_sourcemaps_1.1.0.tgz";
- path = fetchurl {
- name = "concat_with_sourcemaps___concat_with_sourcemaps_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz";
- sha1 = "d4ea93f05ae25790951b99e7b3b09e3908a4082e";
- };
- }
-
- {
- name = "configstore___configstore_0.3.2.tgz";
- path = fetchurl {
- name = "configstore___configstore_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/configstore/-/configstore-0.3.2.tgz";
- sha1 = "25e4c16c3768abf75c5a65bc61761f495055b459";
- };
- }
-
- {
- name = "configstore___configstore_0.2.3.tgz";
- path = fetchurl {
- name = "configstore___configstore_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/configstore/-/configstore-0.2.3.tgz";
- sha1 = "b1bdc4ad823a25423dc15d220fcc1ae1d7efab02";
- };
- }
-
- {
- name = "connect___connect_3.7.0.tgz";
- path = fetchurl {
- name = "connect___connect_3.7.0.tgz";
- url = "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz";
- sha1 = "5d49348910caa5e07a01800b030d0c35f20484f8";
- };
- }
-
- {
- name = "console_browserify___console_browserify_1.0.3.tgz";
- path = fetchurl {
- name = "console_browserify___console_browserify_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.0.3.tgz";
- sha1 = "d3898d2c3a93102f364197f8874b4f92b5286a8e";
- };
- }
-
- {
- name = "console_control_strings___console_control_strings_1.1.0.tgz";
- path = fetchurl {
- name = "console_control_strings___console_control_strings_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz";
- sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
- };
- }
-
- {
- name = "constantinople___constantinople_3.1.2.tgz";
- path = fetchurl {
- name = "constantinople___constantinople_3.1.2.tgz";
- url = "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz";
- sha1 = "d45ed724f57d3d10500017a7d3a889c1381ae647";
- };
- }
-
- {
- name = "constants_browserify___constants_browserify_0.0.1.tgz";
- path = fetchurl {
- name = "constants_browserify___constants_browserify_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-0.0.1.tgz";
- sha1 = "92577db527ba6c4cf0a4568d84bc031f441e21f2";
- };
- }
-
- {
- name = "content_type___content_type_1.0.4.tgz";
- path = fetchurl {
- name = "content_type___content_type_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
- sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
- };
- }
-
- {
- name = "convert_source_map___convert_source_map_0.4.1.tgz";
- path = fetchurl {
- name = "convert_source_map___convert_source_map_0.4.1.tgz";
- url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.4.1.tgz";
- sha1 = "f919a0099fe31f80fc5a1d0eb303161b394070c7";
- };
- }
-
- {
- name = "convert_source_map___convert_source_map_1.7.0.tgz";
- path = fetchurl {
- name = "convert_source_map___convert_source_map_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz";
- sha1 = "17a2cb882d7f77d3490585e2ce6c524424a3a442";
- };
- }
-
- {
- name = "convert_source_map___convert_source_map_0.3.5.tgz";
- path = fetchurl {
- name = "convert_source_map___convert_source_map_0.3.5.tgz";
- url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz";
- sha1 = "f1d802950af7dd2631a1febe0596550c86ab3190";
- };
- }
-
- {
- name = "convert_source_map___convert_source_map_1.1.3.tgz";
- path = fetchurl {
- name = "convert_source_map___convert_source_map_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz";
- sha1 = "4829c877e9fe49b3161f3bf3673888e204699860";
- };
- }
-
- {
- name = "cookie_jar___cookie_jar_0.3.0.tgz";
- path = fetchurl {
- name = "cookie_jar___cookie_jar_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/cookie-jar/-/cookie-jar-0.3.0.tgz";
- sha1 = "bc9a27d4e2b97e186cd57c9e2063cb99fa68cccc";
- };
- }
-
- {
- name = "cookie___cookie_0.3.1.tgz";
- path = fetchurl {
- name = "cookie___cookie_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz";
- sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
- };
- }
-
- {
- name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
- path = fetchurl {
- name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
- sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
- };
- }
-
- {
- name = "core_js___core_js_2.6.11.tgz";
- path = fetchurl {
- name = "core_js___core_js_2.6.11.tgz";
- url = "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz";
- sha1 = "38831469f9922bded8ee21c9dc46985e0399308c";
- };
- }
-
- {
- name = "core_util_is___core_util_is_1.0.2.tgz";
- path = fetchurl {
- name = "core_util_is___core_util_is_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
- sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
- };
- }
-
- {
- name = "cross_spawn___cross_spawn_3.0.1.tgz";
- path = fetchurl {
- name = "cross_spawn___cross_spawn_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz";
- sha1 = "1256037ecb9f0c5f79e3d6ef135e30770184b982";
- };
- }
-
- {
- name = "cryptiles___cryptiles_0.2.2.tgz";
- path = fetchurl {
- name = "cryptiles___cryptiles_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz";
- sha1 = "ed91ff1f17ad13d3748288594f8a48a0d26f325c";
- };
- }
-
- {
- name = "crypto_browserify___crypto_browserify_1.0.9.tgz";
- path = fetchurl {
- name = "crypto_browserify___crypto_browserify_1.0.9.tgz";
- url = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-1.0.9.tgz";
- sha1 = "cc5449685dfb85eb11c9828acc7cb87ab5bbfcc0";
- };
- }
-
- {
- name = "ctype___ctype_0.5.3.tgz";
- path = fetchurl {
- name = "ctype___ctype_0.5.3.tgz";
- url = "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz";
- sha1 = "82c18c2461f74114ef16c135224ad0b9144ca12f";
- };
- }
-
- {
- name = "currently_unhandled___currently_unhandled_0.4.1.tgz";
- path = fetchurl {
- name = "currently_unhandled___currently_unhandled_0.4.1.tgz";
- url = "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz";
- sha1 = "988df33feab191ef799a61369dd76c17adf957ea";
- };
- }
-
- {
- name = "custom_event___custom_event_1.0.1.tgz";
- path = fetchurl {
- name = "custom_event___custom_event_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz";
- sha1 = "5d02a46850adf1b4a317946a3928fccb5bfd0425";
- };
- }
-
- {
- name = "d___d_1.0.1.tgz";
- path = fetchurl {
- name = "d___d_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz";
- sha1 = "8698095372d58dbee346ffd0c7093f99f8f9eb5a";
- };
- }
-
- {
- name = "d___d_0.1.1.tgz";
- path = fetchurl {
- name = "d___d_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz";
- sha1 = "da184c535d18d8ee7ba2aa229b914009fae11309";
- };
- }
-
- {
- name = "dashdash___dashdash_1.14.1.tgz";
- path = fetchurl {
- name = "dashdash___dashdash_1.14.1.tgz";
- url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
- sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
- };
- }
-
- {
- name = "dateformat___dateformat_1.0.12.tgz";
- path = fetchurl {
- name = "dateformat___dateformat_1.0.12.tgz";
- url = "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz";
- sha1 = "9f124b67594c937ff706932e4a642cca8dbbfee9";
- };
- }
-
- {
- name = "dateformat___dateformat_2.2.0.tgz";
- path = fetchurl {
- name = "dateformat___dateformat_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz";
- sha1 = "4065e2013cf9fb916ddfd82efb506ad4c6769062";
- };
- }
-
- {
- name = "deap___deap_1.0.1.tgz";
- path = fetchurl {
- name = "deap___deap_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/deap/-/deap-1.0.1.tgz";
- sha1 = "0646e9e1a095ffe8a9e404d68d1f76dcf57e66fb";
- };
- }
-
- {
- name = "debug___debug_2.2.0.tgz";
- path = fetchurl {
- name = "debug___debug_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz";
- sha1 = "f87057e995b1a1f6ae6a4960664137bc56f039da";
- };
- }
-
- {
- name = "debug___debug_2.3.3.tgz";
- path = fetchurl {
- name = "debug___debug_2.3.3.tgz";
- url = "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz";
- sha1 = "40c453e67e6e13c901ddec317af8986cda9eff8c";
- };
- }
-
- {
- name = "debug___debug_2.6.9.tgz";
- path = fetchurl {
- name = "debug___debug_2.6.9.tgz";
- url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
- sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
- };
- }
-
- {
- name = "debug___debug_3.2.6.tgz";
- path = fetchurl {
- name = "debug___debug_3.2.6.tgz";
- url = "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz";
- sha1 = "e83d17de16d8a7efb7717edbe5fb10135eee629b";
- };
- }
-
- {
- name = "decamelize___decamelize_1.2.0.tgz";
- path = fetchurl {
- name = "decamelize___decamelize_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
- sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
- };
- }
-
- {
- name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
- path = fetchurl {
- name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
- sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
- };
- }
-
- {
- name = "decompress_zip___decompress_zip_0.0.8.tgz";
- path = fetchurl {
- name = "decompress_zip___decompress_zip_0.0.8.tgz";
- url = "https://registry.yarnpkg.com/decompress-zip/-/decompress-zip-0.0.8.tgz";
- sha1 = "4a265b22c7b209d7b24fa66f2b2dfbced59044f3";
- };
- }
-
- {
- name = "deep_equal___deep_equal_0.1.2.tgz";
- path = fetchurl {
- name = "deep_equal___deep_equal_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.1.2.tgz";
- sha1 = "b246c2b80a570a47c11be1d9bd1070ec878b87ce";
- };
- }
-
- {
- name = "deep_extend___deep_extend_0.6.0.tgz";
- path = fetchurl {
- name = "deep_extend___deep_extend_0.6.0.tgz";
- url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz";
- sha1 = "c4fa7c95404a17a9c3e8ca7e1537312b736330ac";
- };
- }
-
- {
- name = "deep_extend___deep_extend_0.2.11.tgz";
- path = fetchurl {
- name = "deep_extend___deep_extend_0.2.11.tgz";
- url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.2.11.tgz";
- sha1 = "7a16ba69729132340506170494bc83f7076fe08f";
- };
- }
-
- {
- name = "deep_is___deep_is_0.1.3.tgz";
- path = fetchurl {
- name = "deep_is___deep_is_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz";
- sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
- };
- }
-
- {
- name = "defaults___defaults_1.0.3.tgz";
- path = fetchurl {
- name = "defaults___defaults_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz";
- sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d";
- };
- }
-
- {
- name = "define_property___define_property_0.2.5.tgz";
- path = fetchurl {
- name = "define_property___define_property_0.2.5.tgz";
- url = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz";
- sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
- };
- }
-
- {
- name = "define_property___define_property_1.0.0.tgz";
- path = fetchurl {
- name = "define_property___define_property_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz";
- sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
- };
- }
-
- {
- name = "define_property___define_property_2.0.2.tgz";
- path = fetchurl {
- name = "define_property___define_property_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz";
- sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d";
- };
- }
-
- {
- name = "defined___defined_0.0.0.tgz";
- path = fetchurl {
- name = "defined___defined_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz";
- sha1 = "f35eea7d705e933baf13b2f03b3f83d921403b3e";
- };
- }
-
- {
- name = "delayed_stream___delayed_stream_0.0.5.tgz";
- path = fetchurl {
- name = "delayed_stream___delayed_stream_0.0.5.tgz";
- url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz";
- sha1 = "d4b1f43a93e8296dfe02694f4680bc37a313c73f";
- };
- }
-
- {
- name = "delayed_stream___delayed_stream_1.0.0.tgz";
- path = fetchurl {
- name = "delayed_stream___delayed_stream_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
- sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
- };
- }
-
- {
- name = "delegates___delegates_1.0.0.tgz";
- path = fetchurl {
- name = "delegates___delegates_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz";
- sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
- };
- }
-
- {
- name = "depd___depd_1.1.2.tgz";
- path = fetchurl {
- name = "depd___depd_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
- sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
- };
- }
-
- {
- name = "deprecated___deprecated_0.0.1.tgz";
- path = fetchurl {
- name = "deprecated___deprecated_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz";
- sha1 = "f9c9af5464afa1e7a971458a8bdef2aa94d5bb19";
- };
- }
-
- {
- name = "deps_sort___deps_sort_0.1.2.tgz";
- path = fetchurl {
- name = "deps_sort___deps_sort_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/deps-sort/-/deps-sort-0.1.2.tgz";
- sha1 = "daa2fb614a17c9637d801e2f55339ae370f3611a";
- };
- }
-
- {
- name = "derequire___derequire_0.8.0.tgz";
- path = fetchurl {
- name = "derequire___derequire_0.8.0.tgz";
- url = "https://registry.yarnpkg.com/derequire/-/derequire-0.8.0.tgz";
- sha1 = "c1f7f1da2cede44adede047378f03f444e9c4c0d";
- };
- }
-
- {
- name = "destroy___destroy_1.0.4.tgz";
- path = fetchurl {
- name = "destroy___destroy_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
- sha1 = "978857442c44749e4206613e37946205826abd80";
- };
- }
-
- {
- name = "detect_file___detect_file_1.0.0.tgz";
- path = fetchurl {
- name = "detect_file___detect_file_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz";
- sha1 = "f0d66d03672a825cb1b73bdb3fe62310c8e552b7";
- };
- }
-
- {
- name = "detect_libc___detect_libc_1.0.3.tgz";
- path = fetchurl {
- name = "detect_libc___detect_libc_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz";
- sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
- };
- }
-
- {
- name = "detective___detective_3.1.0.tgz";
- path = fetchurl {
- name = "detective___detective_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/detective/-/detective-3.1.0.tgz";
- sha1 = "77782444ab752b88ca1be2e9d0a0395f1da25eed";
- };
- }
-
- {
- name = "di___di_0.0.1.tgz";
- path = fetchurl {
- name = "di___di_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz";
- sha1 = "806649326ceaa7caa3306d75d985ea2748ba913c";
- };
- }
-
- {
- name = "doctypes___doctypes_1.1.0.tgz";
- path = fetchurl {
- name = "doctypes___doctypes_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz";
- sha1 = "ea80b106a87538774e8a3a4a5afe293de489e0a9";
- };
- }
-
- {
- name = "dom_serialize___dom_serialize_2.2.1.tgz";
- path = fetchurl {
- name = "dom_serialize___dom_serialize_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz";
- sha1 = "562ae8999f44be5ea3076f5419dcd59eb43ac95b";
- };
- }
-
- {
- name = "domain_browser___domain_browser_1.1.7.tgz";
- path = fetchurl {
- name = "domain_browser___domain_browser_1.1.7.tgz";
- url = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz";
- sha1 = "867aa4b093faa05f1de08c06f4d7b21fdf8698bc";
- };
- }
-
- {
- name = "duplexer2___duplexer2_0.0.2.tgz";
- path = fetchurl {
- name = "duplexer2___duplexer2_0.0.2.tgz";
- url = "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz";
- sha1 = "c614dcf67e2fb14995a91711e5a617e8a60a31db";
- };
- }
-
- {
- name = "duplexer___duplexer_0.1.1.tgz";
- path = fetchurl {
- name = "duplexer___duplexer_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz";
- sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1";
- };
- }
-
- {
- name = "duplexify___duplexify_3.7.1.tgz";
- path = fetchurl {
- name = "duplexify___duplexify_3.7.1.tgz";
- url = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz";
- sha1 = "2a4df5317f6ccfd91f86d6fd25d8d8a103b88309";
- };
- }
-
- {
- name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
- path = fetchurl {
- name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
- sha1 = "3a83a904e54353287874c564b7549386849a98c9";
- };
- }
-
- {
- name = "ee_first___ee_first_1.1.1.tgz";
- path = fetchurl {
- name = "ee_first___ee_first_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
- sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
- };
- }
-
- {
- name = "encodeurl___encodeurl_1.0.2.tgz";
- path = fetchurl {
- name = "encodeurl___encodeurl_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
- sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
- };
- }
-
- {
- name = "end_of_stream___end_of_stream_1.4.4.tgz";
- path = fetchurl {
- name = "end_of_stream___end_of_stream_1.4.4.tgz";
- url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz";
- sha1 = "5ae64a5f45057baf3626ec14da0ca5e4b2431eb0";
- };
- }
-
- {
- name = "end_of_stream___end_of_stream_0.1.5.tgz";
- path = fetchurl {
- name = "end_of_stream___end_of_stream_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz";
- sha1 = "8e177206c3c80837d85632e8b9359dfe8b2f6eaf";
- };
- }
-
- {
- name = "engine.io_client___engine.io_client_1.8.5.tgz";
- path = fetchurl {
- name = "engine.io_client___engine.io_client_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.5.tgz";
- sha1 = "fe7fb60cb0dcf2fa2859489329cb5968dedeb11f";
- };
- }
-
- {
- name = "engine.io_parser___engine.io_parser_1.3.2.tgz";
- path = fetchurl {
- name = "engine.io_parser___engine.io_parser_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz";
- sha1 = "937b079f0007d0893ec56d46cb220b8cb435220a";
- };
- }
-
- {
- name = "engine.io___engine.io_1.8.5.tgz";
- path = fetchurl {
- name = "engine.io___engine.io_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.5.tgz";
- sha1 = "4ebe5e75c6dc123dee4afdce6e5fdced21eb93f6";
- };
- }
-
- {
- name = "ent___ent_2.2.0.tgz";
- path = fetchurl {
- name = "ent___ent_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz";
- sha1 = "e964219325a21d05f44466a2f686ed6ce5f5dd1d";
- };
- }
-
- {
- name = "error_ex___error_ex_1.3.2.tgz";
- path = fetchurl {
- name = "error_ex___error_ex_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz";
- sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf";
- };
- }
-
- {
- name = "es5_ext___es5_ext_0.10.53.tgz";
- path = fetchurl {
- name = "es5_ext___es5_ext_0.10.53.tgz";
- url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz";
- sha1 = "93c5a3acfdbef275220ad72644ad02ee18368de1";
- };
- }
-
- {
- name = "es5_ext___es5_ext_0.9.2.tgz";
- path = fetchurl {
- name = "es5_ext___es5_ext_0.9.2.tgz";
- url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.9.2.tgz";
- sha1 = "d2e309d1f223b0718648835acf5b8823a8061f8a";
- };
- }
-
- {
- name = "es6_iterator___es6_iterator_0.1.3.tgz";
- path = fetchurl {
- name = "es6_iterator___es6_iterator_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-0.1.3.tgz";
- sha1 = "d6f58b8c4fc413c249b4baa19768f8e4d7c8944e";
- };
- }
-
- {
- name = "es6_iterator___es6_iterator_2.0.3.tgz";
- path = fetchurl {
- name = "es6_iterator___es6_iterator_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz";
- sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
- };
- }
-
- {
- name = "es6_symbol___es6_symbol_3.1.3.tgz";
- path = fetchurl {
- name = "es6_symbol___es6_symbol_3.1.3.tgz";
- url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz";
- sha1 = "bad5d3c1bcdac28269f4cb331e431c78ac705d18";
- };
- }
-
- {
- name = "es6_symbol___es6_symbol_2.0.1.tgz";
- path = fetchurl {
- name = "es6_symbol___es6_symbol_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-2.0.1.tgz";
- sha1 = "761b5c67cfd4f1d18afb234f691d678682cb3bf3";
- };
- }
-
- {
- name = "es6_weak_map___es6_weak_map_0.1.4.tgz";
- path = fetchurl {
- name = "es6_weak_map___es6_weak_map_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-0.1.4.tgz";
- sha1 = "706cef9e99aa236ba7766c239c8b9e286ea7d228";
- };
- }
-
- {
- name = "escape_html___escape_html_1.0.3.tgz";
- path = fetchurl {
- name = "escape_html___escape_html_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
- sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
- };
- }
-
- {
- name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
- path = fetchurl {
- name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
- sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
- };
- }
-
- {
- name = "escodegen___escodegen_1.8.1.tgz";
- path = fetchurl {
- name = "escodegen___escodegen_1.8.1.tgz";
- url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz";
- sha1 = "5a5b53af4693110bebb0867aa3430dd3b70a1018";
- };
- }
-
- {
- name = "escodegen___escodegen_1.1.0.tgz";
- path = fetchurl {
- name = "escodegen___escodegen_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.1.0.tgz";
- sha1 = "c663923f6e20aad48d0c0fa49f31c6d4f49360cf";
- };
- }
-
- {
- name = "escope___escope_0.0.16.tgz";
- path = fetchurl {
- name = "escope___escope_0.0.16.tgz";
- url = "https://registry.yarnpkg.com/escope/-/escope-0.0.16.tgz";
- sha1 = "418c7a0afca721dafe659193fd986283e746538f";
- };
- }
-
- {
- name = "esprima_fb___esprima_fb_3001.0001.0000_dev_harmony_fb.tgz";
- path = fetchurl {
- name = "esprima_fb___esprima_fb_3001.0001.0000_dev_harmony_fb.tgz";
- url = "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz";
- sha1 = "b77d37abcd38ea0b77426bb8bc2922ce6b426411";
- };
- }
-
- {
- name = "esprima___esprima_2.7.3.tgz";
- path = fetchurl {
- name = "esprima___esprima_2.7.3.tgz";
- url = "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz";
- sha1 = "96e3b70d5779f6ad49cd032673d1c312767ba581";
- };
- }
-
- {
- name = "esprima___esprima_4.0.1.tgz";
- path = fetchurl {
- name = "esprima___esprima_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz";
- sha1 = "13b04cdb3e6c5d19df91ab6987a8695619b0aa71";
- };
- }
-
- {
- name = "esprima___esprima_1.0.4.tgz";
- path = fetchurl {
- name = "esprima___esprima_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz";
- sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad";
- };
- }
-
- {
- name = "esrefactor___esrefactor_0.1.0.tgz";
- path = fetchurl {
- name = "esrefactor___esrefactor_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/esrefactor/-/esrefactor-0.1.0.tgz";
- sha1 = "d142795a282339ab81e936b5b7a21b11bf197b13";
- };
- }
-
- {
- name = "estraverse___estraverse_5.0.0.tgz";
- path = fetchurl {
- name = "estraverse___estraverse_5.0.0.tgz";
- url = "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz";
- sha1 = "ac81750b482c11cca26e4b07e83ed8f75fbcdc22";
- };
- }
-
- {
- name = "estraverse___estraverse_1.9.3.tgz";
- path = fetchurl {
- name = "estraverse___estraverse_1.9.3.tgz";
- url = "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz";
- sha1 = "af67f2dc922582415950926091a4005d29c9bb44";
- };
- }
-
- {
- name = "estraverse___estraverse_0.0.4.tgz";
- path = fetchurl {
- name = "estraverse___estraverse_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/estraverse/-/estraverse-0.0.4.tgz";
- sha1 = "01a0932dfee574684a598af5a67c3bf9b6428db2";
- };
- }
-
- {
- name = "estraverse___estraverse_1.5.1.tgz";
- path = fetchurl {
- name = "estraverse___estraverse_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz";
- sha1 = "867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71";
- };
- }
-
- {
- name = "esutils___esutils_2.0.3.tgz";
- path = fetchurl {
- name = "esutils___esutils_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz";
- sha1 = "74d2eb4de0b8da1293711910d50775b9b710ef64";
- };
- }
-
- {
- name = "esutils___esutils_1.0.0.tgz";
- path = fetchurl {
- name = "esutils___esutils_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz";
- sha1 = "8151d358e20c8acc7fb745e7472c0025fe496570";
- };
- }
-
- {
- name = "etag___etag_1.7.0.tgz";
- path = fetchurl {
- name = "etag___etag_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz";
- sha1 = "03d30b5f67dd6e632d2945d30d6652731a34d5d8";
- };
- }
-
- {
- name = "event_emitter___event_emitter_0.2.2.tgz";
- path = fetchurl {
- name = "event_emitter___event_emitter_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.2.2.tgz";
- sha1 = "c81e3724eb55407c5a0d5ee3299411f700f54291";
- };
- }
-
- {
- name = "event_emitter___event_emitter_0.3.5.tgz";
- path = fetchurl {
- name = "event_emitter___event_emitter_0.3.5.tgz";
- url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz";
- sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39";
- };
- }
-
- {
- name = "event_stream___event_stream_4.0.1.tgz";
- path = fetchurl {
- name = "event_stream___event_stream_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/event-stream/-/event-stream-4.0.1.tgz";
- sha1 = "4092808ec995d0dd75ea4580c1df6a74db2cde65";
- };
- }
-
- {
- name = "event_stream___event_stream_3.3.2.tgz";
- path = fetchurl {
- name = "event_stream___event_stream_3.3.2.tgz";
- url = "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.2.tgz";
- sha1 = "3cc310feb1f28d2f62b2a085d736a9ef566378b8";
- };
- }
-
- {
- name = "event_stream___event_stream_3.3.5.tgz";
- path = fetchurl {
- name = "event_stream___event_stream_3.3.5.tgz";
- url = "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.5.tgz";
- sha1 = "e5dd8989543630d94c6cf4d657120341fa31636b";
- };
- }
-
- {
- name = "eventemitter3___eventemitter3_4.0.0.tgz";
- path = fetchurl {
- name = "eventemitter3___eventemitter3_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz";
- sha1 = "d65176163887ee59f386d64c82610b696a4a74eb";
- };
- }
-
- {
- name = "events___events_1.0.2.tgz";
- path = fetchurl {
- name = "events___events_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/events/-/events-1.0.2.tgz";
- sha1 = "75849dcfe93d10fb057c30055afdbd51d06a8e24";
- };
- }
-
- {
- name = "expand_braces___expand_braces_0.1.2.tgz";
- path = fetchurl {
- name = "expand_braces___expand_braces_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz";
- sha1 = "488b1d1d2451cb3d3a6b192cfc030f44c5855fea";
- };
- }
-
- {
- name = "expand_brackets___expand_brackets_0.1.5.tgz";
- path = fetchurl {
- name = "expand_brackets___expand_brackets_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz";
- sha1 = "df07284e342a807cd733ac5af72411e581d1177b";
- };
- }
-
- {
- name = "expand_brackets___expand_brackets_2.1.4.tgz";
- path = fetchurl {
- name = "expand_brackets___expand_brackets_2.1.4.tgz";
- url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz";
- sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
- };
- }
-
- {
- name = "expand_range___expand_range_0.1.1.tgz";
- path = fetchurl {
- name = "expand_range___expand_range_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz";
- sha1 = "4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044";
- };
- }
-
- {
- name = "expand_range___expand_range_1.8.2.tgz";
- path = fetchurl {
- name = "expand_range___expand_range_1.8.2.tgz";
- url = "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz";
- sha1 = "a299effd335fe2721ebae8e257ec79644fc85337";
- };
- }
-
- {
- name = "expand_tilde___expand_tilde_2.0.2.tgz";
- path = fetchurl {
- name = "expand_tilde___expand_tilde_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz";
- sha1 = "97e801aa052df02454de46b02bf621642cdc8502";
- };
- }
-
- {
- name = "ext___ext_1.4.0.tgz";
- path = fetchurl {
- name = "ext___ext_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz";
- sha1 = "89ae7a07158f79d35517882904324077e4379244";
- };
- }
-
- {
- name = "extend_shallow___extend_shallow_2.0.1.tgz";
- path = fetchurl {
- name = "extend_shallow___extend_shallow_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz";
- sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
- };
- }
-
- {
- name = "extend_shallow___extend_shallow_3.0.2.tgz";
- path = fetchurl {
- name = "extend_shallow___extend_shallow_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz";
- sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
- };
- }
-
- {
- name = "extend___extend_3.0.2.tgz";
- path = fetchurl {
- name = "extend___extend_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
- sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
- };
- }
-
- {
- name = "extglob___extglob_0.3.2.tgz";
- path = fetchurl {
- name = "extglob___extglob_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz";
- sha1 = "2e18ff3d2f49ab2765cec9023f011daa8d8349a1";
- };
- }
-
- {
- name = "extglob___extglob_2.0.4.tgz";
- path = fetchurl {
- name = "extglob___extglob_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz";
- sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543";
- };
- }
-
- {
- name = "extsprintf___extsprintf_1.3.0.tgz";
- path = fetchurl {
- name = "extsprintf___extsprintf_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
- sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
- };
- }
-
- {
- name = "extsprintf___extsprintf_1.4.0.tgz";
- path = fetchurl {
- name = "extsprintf___extsprintf_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
- sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
- };
- }
-
- {
- name = "fancy_log___fancy_log_1.3.3.tgz";
- path = fetchurl {
- name = "fancy_log___fancy_log_1.3.3.tgz";
- url = "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz";
- sha1 = "dbc19154f558690150a23953a0adbd035be45fc7";
- };
- }
-
- {
- name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
- path = fetchurl {
- name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
- sha1 = "545145077c501491e33b15ec408c294376e94ae4";
- };
- }
-
- {
- name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz";
- path = fetchurl {
- name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
- sha1 = "874bf69c6f404c2b5d99c481341399fd55892633";
- };
- }
-
- {
- name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
- path = fetchurl {
- name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
- sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
- };
- }
-
- {
- name = "faye_websocket___faye_websocket_0.7.3.tgz";
- path = fetchurl {
- name = "faye_websocket___faye_websocket_0.7.3.tgz";
- url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.7.3.tgz";
- sha1 = "cc4074c7f4a4dfd03af54dd65c354b135132ce11";
- };
- }
-
- {
- name = "file_uri_to_path___file_uri_to_path_1.0.0.tgz";
- path = fetchurl {
- name = "file_uri_to_path___file_uri_to_path_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz";
- sha1 = "553a7b8446ff6f684359c445f1e37a05dacc33dd";
- };
- }
-
- {
- name = "filename_regex___filename_regex_2.0.1.tgz";
- path = fetchurl {
- name = "filename_regex___filename_regex_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz";
- sha1 = "c1c4b9bee3e09725ddb106b75c1e301fe2f18b26";
- };
- }
-
- {
- name = "fill_range___fill_range_2.2.4.tgz";
- path = fetchurl {
- name = "fill_range___fill_range_2.2.4.tgz";
- url = "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz";
- sha1 = "eb1e773abb056dcd8df2bfdf6af59b8b3a936565";
- };
- }
-
- {
- name = "fill_range___fill_range_4.0.0.tgz";
- path = fetchurl {
- name = "fill_range___fill_range_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz";
- sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
- };
- }
-
- {
- name = "finalhandler___finalhandler_1.1.2.tgz";
- path = fetchurl {
- name = "finalhandler___finalhandler_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz";
- sha1 = "b7e7d000ffd11938d0fdb053506f6ebabe9f587d";
- };
- }
-
- {
- name = "find_index___find_index_0.1.1.tgz";
- path = fetchurl {
- name = "find_index___find_index_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz";
- sha1 = "675d358b2ca3892d795a1ab47232f8b6e2e0dde4";
- };
- }
-
- {
- name = "find_up___find_up_1.1.2.tgz";
- path = fetchurl {
- name = "find_up___find_up_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz";
- sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f";
- };
- }
-
- {
- name = "findup_sync___findup_sync_2.0.0.tgz";
- path = fetchurl {
- name = "findup_sync___findup_sync_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz";
- sha1 = "9326b1488c22d1a6088650a86901b2d9a90a2cbc";
- };
- }
-
- {
- name = "fined___fined_1.2.0.tgz";
- path = fetchurl {
- name = "fined___fined_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz";
- sha1 = "d00beccf1aa2b475d16d423b0238b713a2c4a37b";
- };
- }
-
- {
- name = "first_chunk_stream___first_chunk_stream_1.0.0.tgz";
- path = fetchurl {
- name = "first_chunk_stream___first_chunk_stream_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz";
- sha1 = "59bfb50cd905f60d7c394cd3d9acaab4e6ad934e";
- };
- }
-
- {
- name = "fixtures2js___fixtures2js_0.0.0.tgz";
- path = fetchurl {
- name = "fixtures2js___fixtures2js_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/fixtures2js/-/fixtures2js-0.0.0.tgz";
- sha1 = "602f7964c5b2963fe73224c8e4a3607d75c1b34f";
- };
- }
-
- {
- name = "flagged_respawn___flagged_respawn_1.0.1.tgz";
- path = fetchurl {
- name = "flagged_respawn___flagged_respawn_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz";
- sha1 = "e7de6f1279ddd9ca9aac8a5971d618606b3aab41";
- };
- }
-
- {
- name = "follow_redirects___follow_redirects_1.11.0.tgz";
- path = fetchurl {
- name = "follow_redirects___follow_redirects_1.11.0.tgz";
- url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz";
- sha1 = "afa14f08ba12a52963140fe43212658897bc0ecb";
- };
- }
-
- {
- name = "for_in___for_in_1.0.2.tgz";
- path = fetchurl {
- name = "for_in___for_in_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz";
- sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
- };
- }
-
- {
- name = "for_own___for_own_0.1.5.tgz";
- path = fetchurl {
- name = "for_own___for_own_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz";
- sha1 = "5265c681a4f294dabbf17c9509b6763aa84510ce";
- };
- }
-
- {
- name = "for_own___for_own_1.0.0.tgz";
- path = fetchurl {
- name = "for_own___for_own_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz";
- sha1 = "c63332f415cedc4b04dbfe70cf836494c53cb44b";
- };
- }
-
- {
- name = "forever_agent___forever_agent_0.5.2.tgz";
- path = fetchurl {
- name = "forever_agent___forever_agent_0.5.2.tgz";
- url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.5.2.tgz";
- sha1 = "6d0e09c4921f94a27f63d3b49c5feff1ea4c5130";
- };
- }
-
- {
- name = "forever_agent___forever_agent_0.6.1.tgz";
- path = fetchurl {
- name = "forever_agent___forever_agent_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
- sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
- };
- }
-
- {
- name = "fork_stream___fork_stream_0.0.4.tgz";
- path = fetchurl {
- name = "fork_stream___fork_stream_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz";
- sha1 = "db849fce77f6708a5f8f386ae533a0907b54ae70";
- };
- }
-
- {
- name = "form_data___form_data_0.1.4.tgz";
- path = fetchurl {
- name = "form_data___form_data_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/form-data/-/form-data-0.1.4.tgz";
- sha1 = "91abd788aba9702b1aabfa8bc01031a2ac9e3b12";
- };
- }
-
- {
- name = "form_data___form_data_0.2.0.tgz";
- path = fetchurl {
- name = "form_data___form_data_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/form-data/-/form-data-0.2.0.tgz";
- sha1 = "26f8bc26da6440e299cbdcfb69035c4f77a6e466";
- };
- }
-
- {
- name = "form_data___form_data_2.3.3.tgz";
- path = fetchurl {
- name = "form_data___form_data_2.3.3.tgz";
- url = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz";
- sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
- };
- }
-
- {
- name = "fragment_cache___fragment_cache_0.2.1.tgz";
- path = fetchurl {
- name = "fragment_cache___fragment_cache_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz";
- sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
- };
- }
-
- {
- name = "fresh___fresh_0.3.0.tgz";
- path = fetchurl {
- name = "fresh___fresh_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz";
- sha1 = "651f838e22424e7566de161d8358caa199f83d4f";
- };
- }
-
- {
- name = "from___from_0.1.7.tgz";
- path = fetchurl {
- name = "from___from_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz";
- sha1 = "83c60afc58b9c56997007ed1a768b3ab303a44fe";
- };
- }
-
- {
- name = "fs_access___fs_access_1.0.1.tgz";
- path = fetchurl {
- name = "fs_access___fs_access_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz";
- sha1 = "d6a87f262271cefebec30c553407fb995da8777a";
- };
- }
-
- {
- name = "fs_minipass___fs_minipass_1.2.7.tgz";
- path = fetchurl {
- name = "fs_minipass___fs_minipass_1.2.7.tgz";
- url = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz";
- sha1 = "ccff8570841e7fe4265693da88936c55aed7f7c7";
- };
- }
-
- {
- name = "fs.realpath___fs.realpath_1.0.0.tgz";
- path = fetchurl {
- name = "fs.realpath___fs.realpath_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
- sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
- };
- }
-
- {
- name = "fsevents___fsevents_1.2.12.tgz";
- path = fetchurl {
- name = "fsevents___fsevents_1.2.12.tgz";
- url = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz";
- sha1 = "db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c";
- };
- }
-
- {
- name = "fstream_ignore___fstream_ignore_0.0.10.tgz";
- path = fetchurl {
- name = "fstream_ignore___fstream_ignore_0.0.10.tgz";
- url = "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-0.0.10.tgz";
- sha1 = "b10f8f522cc55415f80b41f7d3a32e6cba254e8c";
- };
- }
-
- {
- name = "fstream___fstream_1.0.12.tgz";
- path = fetchurl {
- name = "fstream___fstream_1.0.12.tgz";
- url = "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz";
- sha1 = "4e8ba8ee2d48be4f7d0de505455548eae5932045";
- };
- }
-
- {
- name = "fstream___fstream_0.1.31.tgz";
- path = fetchurl {
- name = "fstream___fstream_0.1.31.tgz";
- url = "https://registry.yarnpkg.com/fstream/-/fstream-0.1.31.tgz";
- sha1 = "7337f058fbbbbefa8c9f561a28cab0849202c988";
- };
- }
-
- {
- name = "function_bind___function_bind_1.1.1.tgz";
- path = fetchurl {
- name = "function_bind___function_bind_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
- sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
- };
- }
-
- {
- name = "gauge___gauge_2.7.4.tgz";
- path = fetchurl {
- name = "gauge___gauge_2.7.4.tgz";
- url = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz";
- sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
- };
- }
-
- {
- name = "gaze___gaze_0.5.2.tgz";
- path = fetchurl {
- name = "gaze___gaze_0.5.2.tgz";
- url = "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz";
- sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f";
- };
- }
-
- {
- name = "gaze___gaze_1.1.3.tgz";
- path = fetchurl {
- name = "gaze___gaze_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz";
- sha1 = "c441733e13b927ac8c0ff0b4c3b033f28812924a";
- };
- }
-
- {
- name = "get_caller_file___get_caller_file_1.0.3.tgz";
- path = fetchurl {
- name = "get_caller_file___get_caller_file_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz";
- sha1 = "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a";
- };
- }
-
- {
- name = "get_stdin___get_stdin_4.0.1.tgz";
- path = fetchurl {
- name = "get_stdin___get_stdin_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz";
- sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe";
- };
- }
-
- {
- name = "get_value___get_value_2.0.6.tgz";
- path = fetchurl {
- name = "get_value___get_value_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz";
- sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
- };
- }
-
- {
- name = "getpass___getpass_0.1.7.tgz";
- path = fetchurl {
- name = "getpass___getpass_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
- sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
- };
- }
-
- {
- name = "glob_base___glob_base_0.3.0.tgz";
- path = fetchurl {
- name = "glob_base___glob_base_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz";
- sha1 = "dbb164f6221b1c0b1ccf82aea328b497df0ea3c4";
- };
- }
-
- {
- name = "glob_parent___glob_parent_2.0.0.tgz";
- path = fetchurl {
- name = "glob_parent___glob_parent_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz";
- sha1 = "81383d72db054fcccf5336daa902f182f6edbb28";
- };
- }
-
- {
- name = "glob_stream___glob_stream_3.1.18.tgz";
- path = fetchurl {
- name = "glob_stream___glob_stream_3.1.18.tgz";
- url = "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz";
- sha1 = "9170a5f12b790306fdfe598f313f8f7954fd143b";
- };
- }
-
- {
- name = "glob_watcher___glob_watcher_0.0.6.tgz";
- path = fetchurl {
- name = "glob_watcher___glob_watcher_0.0.6.tgz";
- url = "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz";
- sha1 = "b95b4a8df74b39c83298b0c05c978b4d9a3b710b";
- };
- }
-
- {
- name = "glob2base___glob2base_0.0.12.tgz";
- path = fetchurl {
- name = "glob2base___glob2base_0.0.12.tgz";
- url = "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz";
- sha1 = "9d419b3e28f12e83a362164a277055922c9c0d56";
- };
- }
-
- {
- name = "glob___glob_4.5.3.tgz";
- path = fetchurl {
- name = "glob___glob_4.5.3.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz";
- sha1 = "c6cb73d3226c1efef04de3c56d012f03377ee15f";
- };
- }
-
- {
- name = "glob___glob_5.0.15.tgz";
- path = fetchurl {
- name = "glob___glob_5.0.15.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz";
- sha1 = "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1";
- };
- }
-
- {
- name = "glob___glob_6.0.4.tgz";
- path = fetchurl {
- name = "glob___glob_6.0.4.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz";
- sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
- };
- }
-
- {
- name = "glob___glob_7.1.6.tgz";
- path = fetchurl {
- name = "glob___glob_7.1.6.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz";
- sha1 = "141f33b81a7c2492e125594307480c46679278a6";
- };
- }
-
- {
- name = "glob___glob_3.1.21.tgz";
- path = fetchurl {
- name = "glob___glob_3.1.21.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz";
- sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd";
- };
- }
-
- {
- name = "glob___glob_3.2.11.tgz";
- path = fetchurl {
- name = "glob___glob_3.2.11.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz";
- sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d";
- };
- }
-
- {
- name = "glob___glob_4.0.6.tgz";
- path = fetchurl {
- name = "glob___glob_4.0.6.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-4.0.6.tgz";
- sha1 = "695c50bdd4e2fb5c5d370b091f388d3707e291a7";
- };
- }
-
- {
- name = "global_modules___global_modules_1.0.0.tgz";
- path = fetchurl {
- name = "global_modules___global_modules_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz";
- sha1 = "6d770f0eb523ac78164d72b5e71a8877265cc3ea";
- };
- }
-
- {
- name = "global_prefix___global_prefix_1.0.2.tgz";
- path = fetchurl {
- name = "global_prefix___global_prefix_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz";
- sha1 = "dbf743c6c14992593c655568cb66ed32c0122ebe";
- };
- }
-
- {
- name = "globule___globule_1.3.1.tgz";
- path = fetchurl {
- name = "globule___globule_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz";
- sha1 = "90a25338f22b7fbeb527cee63c629aea754d33b9";
- };
- }
-
- {
- name = "globule___globule_0.1.0.tgz";
- path = fetchurl {
- name = "globule___globule_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz";
- sha1 = "d9c8edde1da79d125a151b79533b978676346ae5";
- };
- }
-
- {
- name = "glogg___glogg_1.0.2.tgz";
- path = fetchurl {
- name = "glogg___glogg_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz";
- sha1 = "2d7dd702beda22eb3bffadf880696da6d846313f";
- };
- }
-
- {
- name = "got___got_3.3.1.tgz";
- path = fetchurl {
- name = "got___got_3.3.1.tgz";
- url = "https://registry.yarnpkg.com/got/-/got-3.3.1.tgz";
- sha1 = "e5d0ed4af55fc3eef4d56007769d98192bcb2eca";
- };
- }
-
- {
- name = "graceful_fs___graceful_fs_3.0.12.tgz";
- path = fetchurl {
- name = "graceful_fs___graceful_fs_3.0.12.tgz";
- url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.12.tgz";
- sha1 = "0034947ce9ed695ec8ab0b854bc919e82b1ffaef";
- };
- }
-
- {
- name = "graceful_fs___graceful_fs_4.2.3.tgz";
- path = fetchurl {
- name = "graceful_fs___graceful_fs_4.2.3.tgz";
- url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz";
- sha1 = "4a12ff1b60376ef09862c2093edd908328be8423";
- };
- }
-
- {
- name = "graceful_fs___graceful_fs_1.2.3.tgz";
- path = fetchurl {
- name = "graceful_fs___graceful_fs_1.2.3.tgz";
- url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz";
- sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364";
- };
- }
-
- {
- name = "graceful_fs___graceful_fs_2.0.3.tgz";
- path = fetchurl {
- name = "graceful_fs___graceful_fs_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-2.0.3.tgz";
- sha1 = "7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0";
- };
- }
-
- {
- name = "guanlecoja___guanlecoja_0.9.2.tgz";
- path = fetchurl {
- name = "guanlecoja___guanlecoja_0.9.2.tgz";
- url = "https://registry.yarnpkg.com/guanlecoja/-/guanlecoja-0.9.2.tgz";
- sha1 = "03febe92d9e7575a633b4d5ad8d19f5ee1cdf326";
- };
- }
-
- {
- name = "gulp_angular_templatecache___gulp_angular_templatecache_1.9.1.tgz";
- path = fetchurl {
- name = "gulp_angular_templatecache___gulp_angular_templatecache_1.9.1.tgz";
- url = "https://registry.yarnpkg.com/gulp-angular-templatecache/-/gulp-angular-templatecache-1.9.1.tgz";
- sha1 = "60f631e97aaaa765d942e37042e4bfbb1a5df244";
- };
- }
-
- {
- name = "gulp_bower_deps___gulp_bower_deps_0.3.3.tgz";
- path = fetchurl {
- name = "gulp_bower_deps___gulp_bower_deps_0.3.3.tgz";
- url = "https://registry.yarnpkg.com/gulp-bower-deps/-/gulp-bower-deps-0.3.3.tgz";
- sha1 = "2109fe3fbee35069f67312bb977e591d890296cd";
- };
- }
-
- {
- name = "gulp_browserify___gulp_browserify_0.5.1.tgz";
- path = fetchurl {
- name = "gulp_browserify___gulp_browserify_0.5.1.tgz";
- url = "https://registry.yarnpkg.com/gulp-browserify/-/gulp-browserify-0.5.1.tgz";
- sha1 = "820108ac2554a954adb8be17d23958b0c04be083";
- };
- }
-
- {
- name = "gulp_cached___gulp_cached_1.1.1.tgz";
- path = fetchurl {
- name = "gulp_cached___gulp_cached_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/gulp-cached/-/gulp-cached-1.1.1.tgz";
- sha1 = "fe7cd4f87f37601e6073cfedee5c2bdaf8b6acce";
- };
- }
-
- {
- name = "gulp_clean_css___gulp_clean_css_2.4.0.tgz";
- path = fetchurl {
- name = "gulp_clean_css___gulp_clean_css_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-2.4.0.tgz";
- sha1 = "2ae48109fe83ccc967ff5ad53c044949a4863b36";
- };
- }
-
- {
- name = "gulp_coffee___gulp_coffee_2.3.5.tgz";
- path = fetchurl {
- name = "gulp_coffee___gulp_coffee_2.3.5.tgz";
- url = "https://registry.yarnpkg.com/gulp-coffee/-/gulp-coffee-2.3.5.tgz";
- sha1 = "8c64e9ac884e1bab4e20b66ac7c386a816859041";
- };
- }
-
- {
- name = "gulp_concat___gulp_concat_2.6.0.tgz";
- path = fetchurl {
- name = "gulp_concat___gulp_concat_2.6.0.tgz";
- url = "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.0.tgz";
- sha1 = "585cfb115411f348773131140566b6a81c69cb91";
- };
- }
-
- {
- name = "gulp_concat___gulp_concat_2.6.1.tgz";
- path = fetchurl {
- name = "gulp_concat___gulp_concat_2.6.1.tgz";
- url = "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz";
- sha1 = "633d16c95d88504628ad02665663cee5a4793353";
- };
- }
-
- {
- name = "gulp_fixtures2js___gulp_fixtures2js_0.0.1.tgz";
- path = fetchurl {
- name = "gulp_fixtures2js___gulp_fixtures2js_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/gulp-fixtures2js/-/gulp-fixtures2js-0.0.1.tgz";
- sha1 = "4a3cbb4404bdfab92f7d2b6e09de2bfd0ae78506";
- };
- }
-
- {
- name = "gulp_footer___gulp_footer_1.0.5.tgz";
- path = fetchurl {
- name = "gulp_footer___gulp_footer_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/gulp-footer/-/gulp-footer-1.0.5.tgz";
- sha1 = "e84ca777e266be7bbc2d45d2df0e7eba8dfa3e54";
- };
- }
-
- {
- name = "gulp_footer___gulp_footer_1.1.2.tgz";
- path = fetchurl {
- name = "gulp_footer___gulp_footer_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/gulp-footer/-/gulp-footer-1.1.2.tgz";
- sha1 = "7fe28324ec67e3d618d31e0f5ea2ee5b454f6877";
- };
- }
-
- {
- name = "gulp_header___gulp_header_1.8.2.tgz";
- path = fetchurl {
- name = "gulp_header___gulp_header_1.8.2.tgz";
- url = "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.2.tgz";
- sha1 = "3ab222f53719d2d03d81d9134252fe7d52425aa4";
- };
- }
-
- {
- name = "gulp_header___gulp_header_1.8.12.tgz";
- path = fetchurl {
- name = "gulp_header___gulp_header_1.8.12.tgz";
- url = "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz";
- sha1 = "ad306be0066599127281c4f8786660e705080a84";
- };
- }
-
- {
- name = "gulp_help___gulp_help_1.6.1.tgz";
- path = fetchurl {
- name = "gulp_help___gulp_help_1.6.1.tgz";
- url = "https://registry.yarnpkg.com/gulp-help/-/gulp-help-1.6.1.tgz";
- sha1 = "261db186e18397fef3f6a2c22e9c315bfa88ae0c";
- };
- }
-
- {
- name = "gulp_if___gulp_if_2.0.2.tgz";
- path = fetchurl {
- name = "gulp_if___gulp_if_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/gulp-if/-/gulp-if-2.0.2.tgz";
- sha1 = "a497b7e7573005041caa2bc8b7dda3c80444d629";
- };
- }
-
- {
- name = "gulp_less___gulp_less_1.3.9.tgz";
- path = fetchurl {
- name = "gulp_less___gulp_less_1.3.9.tgz";
- url = "https://registry.yarnpkg.com/gulp-less/-/gulp-less-1.3.9.tgz";
- sha1 = "e129750f236693ead5b522af311cc33eeff1910e";
- };
- }
-
- {
- name = "gulp_livereload___gulp_livereload_3.8.1.tgz";
- path = fetchurl {
- name = "gulp_livereload___gulp_livereload_3.8.1.tgz";
- url = "https://registry.yarnpkg.com/gulp-livereload/-/gulp-livereload-3.8.1.tgz";
- sha1 = "00f744b2d749d3e9e3746589c8a44acac779b50f";
- };
- }
-
- {
- name = "gulp_match___gulp_match_1.1.0.tgz";
- path = fetchurl {
- name = "gulp_match___gulp_match_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.1.0.tgz";
- sha1 = "552b7080fc006ee752c90563f9fec9d61aafdf4f";
- };
- }
-
- {
- name = "gulp_ng_annotate___gulp_ng_annotate_1.1.0.tgz";
- path = fetchurl {
- name = "gulp_ng_annotate___gulp_ng_annotate_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/gulp-ng-annotate/-/gulp-ng-annotate-1.1.0.tgz";
- sha1 = "5e801be073d8f6d343c4ff65b71717b90fac13ce";
- };
- }
-
- {
- name = "gulp_ng_classify___gulp_ng_classify_4.0.1.tgz";
- path = fetchurl {
- name = "gulp_ng_classify___gulp_ng_classify_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/gulp-ng-classify/-/gulp-ng-classify-4.0.1.tgz";
- sha1 = "3019161127c35c317ea08dc2a65ea35b592dbfd7";
- };
- }
-
- {
- name = "gulp_pug___gulp_pug_3.3.0.tgz";
- path = fetchurl {
- name = "gulp_pug___gulp_pug_3.3.0.tgz";
- url = "https://registry.yarnpkg.com/gulp-pug/-/gulp-pug-3.3.0.tgz";
- sha1 = "46982c1439c094c360542ed8ba5c882d3bb711cf";
- };
- }
-
- {
- name = "gulp_remember___gulp_remember_0.3.1.tgz";
- path = fetchurl {
- name = "gulp_remember___gulp_remember_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/gulp-remember/-/gulp-remember-0.3.1.tgz";
- sha1 = "5776b6f64c5a1c5c4d4555406723ec8e2b0407e7";
- };
- }
-
- {
- name = "gulp_rename___gulp_rename_1.2.3.tgz";
- path = fetchurl {
- name = "gulp_rename___gulp_rename_1.2.3.tgz";
- url = "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.3.tgz";
- sha1 = "37b75298e9d3e6c0fe9ac4eac13ce3be5434646b";
- };
- }
-
- {
- name = "gulp_replace___gulp_replace_0.5.4.tgz";
- path = fetchurl {
- name = "gulp_replace___gulp_replace_0.5.4.tgz";
- url = "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-0.5.4.tgz";
- sha1 = "69a67914bbd13c562bff14f504a403796aa0daa9";
- };
- }
-
- {
- name = "gulp_sass___gulp_sass_3.2.1.tgz";
- path = fetchurl {
- name = "gulp_sass___gulp_sass_3.2.1.tgz";
- url = "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-3.2.1.tgz";
- sha1 = "2e3688a96fd8be1c0c01340750c191b2e79fab94";
- };
- }
-
- {
- name = "gulp_sourcemaps___gulp_sourcemaps_1.6.0.tgz";
- path = fetchurl {
- name = "gulp_sourcemaps___gulp_sourcemaps_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz";
- sha1 = "b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c";
- };
- }
-
- {
- name = "gulp_uglify___gulp_uglify_1.4.2.tgz";
- path = fetchurl {
- name = "gulp_uglify___gulp_uglify_1.4.2.tgz";
- url = "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-1.4.2.tgz";
- sha1 = "2807ea1016e4962c37766c02feeb5501818857c3";
- };
- }
-
- {
- name = "gulp_util___gulp_util_3.0.8.tgz";
- path = fetchurl {
- name = "gulp_util___gulp_util_3.0.8.tgz";
- url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz";
- sha1 = "0054e1e744502e27c04c187c3ecc505dd54bbb4f";
- };
- }
-
- {
- name = "gulp_util___gulp_util_3.0.7.tgz";
- path = fetchurl {
- name = "gulp_util___gulp_util_3.0.7.tgz";
- url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz";
- sha1 = "78925c4b8f8b49005ac01a011c557e6218941cbb";
- };
- }
-
- {
- name = "gulp_util___gulp_util_2.2.20.tgz";
- path = fetchurl {
- name = "gulp_util___gulp_util_2.2.20.tgz";
- url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-2.2.20.tgz";
- sha1 = "d7146e5728910bd8f047a6b0b1e549bc22dbd64c";
- };
- }
-
- {
- name = "gulp_wrap___gulp_wrap_0.8.0.tgz";
- path = fetchurl {
- name = "gulp_wrap___gulp_wrap_0.8.0.tgz";
- url = "https://registry.yarnpkg.com/gulp-wrap/-/gulp-wrap-0.8.0.tgz";
- sha1 = "c41ce89a374947788b78c9e67f33bbe838c69b86";
- };
- }
-
- {
- name = "gulp___gulp_3.9.1.tgz";
- path = fetchurl {
- name = "gulp___gulp_3.9.1.tgz";
- url = "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz";
- sha1 = "571ce45928dd40af6514fc4011866016c13845b4";
- };
- }
-
- {
- name = "gulplog___gulplog_1.0.0.tgz";
- path = fetchurl {
- name = "gulplog___gulplog_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz";
- sha1 = "e28c4d45d05ecbbed818363ce8f9c5926229ffe5";
- };
- }
-
- {
- name = "handlebars___handlebars_4.7.3.tgz";
- path = fetchurl {
- name = "handlebars___handlebars_4.7.3.tgz";
- url = "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.3.tgz";
- sha1 = "8ece2797826886cf8082d1726ff21d2a022550ee";
- };
- }
-
- {
- name = "handlebars___handlebars_1.3.0.tgz";
- path = fetchurl {
- name = "handlebars___handlebars_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/handlebars/-/handlebars-1.3.0.tgz";
- sha1 = "9e9b130a93e389491322d975cf3ec1818c37ce34";
- };
- }
-
- {
- name = "har_schema___har_schema_2.0.0.tgz";
- path = fetchurl {
- name = "har_schema___har_schema_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
- sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
- };
- }
-
- {
- name = "har_validator___har_validator_5.1.3.tgz";
- path = fetchurl {
- name = "har_validator___har_validator_5.1.3.tgz";
- url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz";
- sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
- };
- }
-
- {
- name = "has_ansi___has_ansi_0.1.0.tgz";
- path = fetchurl {
- name = "has_ansi___has_ansi_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz";
- sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e";
- };
- }
-
- {
- name = "has_ansi___has_ansi_2.0.0.tgz";
- path = fetchurl {
- name = "has_ansi___has_ansi_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz";
- sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
- };
- }
-
- {
- name = "has_binary___has_binary_0.1.7.tgz";
- path = fetchurl {
- name = "has_binary___has_binary_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz";
- sha1 = "68e61eb16210c9545a0a5cce06a873912fe1e68c";
- };
- }
-
- {
- name = "has_color___has_color_0.1.7.tgz";
- path = fetchurl {
- name = "has_color___has_color_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz";
- sha1 = "67144a5260c34fc3cca677d041daf52fe7b78b2f";
- };
- }
-
- {
- name = "has_cors___has_cors_1.1.0.tgz";
- path = fetchurl {
- name = "has_cors___has_cors_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz";
- sha1 = "5e474793f7ea9843d1bb99c23eef49ff126fff39";
- };
- }
-
- {
- name = "has_flag___has_flag_1.0.0.tgz";
- path = fetchurl {
- name = "has_flag___has_flag_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz";
- sha1 = "9d9e793165ce017a00f00418c43f942a7b1d11fa";
- };
- }
-
- {
- name = "has_flag___has_flag_4.0.0.tgz";
- path = fetchurl {
- name = "has_flag___has_flag_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz";
- sha1 = "944771fd9c81c81265c4d6941860da06bb59479b";
- };
- }
-
- {
- name = "has_gulplog___has_gulplog_0.1.0.tgz";
- path = fetchurl {
- name = "has_gulplog___has_gulplog_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz";
- sha1 = "6414c82913697da51590397dafb12f22967811ce";
- };
- }
-
- {
- name = "has_unicode___has_unicode_2.0.1.tgz";
- path = fetchurl {
- name = "has_unicode___has_unicode_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz";
- sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
- };
- }
-
- {
- name = "has_value___has_value_0.3.1.tgz";
- path = fetchurl {
- name = "has_value___has_value_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz";
- sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
- };
- }
-
- {
- name = "has_value___has_value_1.0.0.tgz";
- path = fetchurl {
- name = "has_value___has_value_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz";
- sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
- };
- }
-
- {
- name = "has_values___has_values_0.1.4.tgz";
- path = fetchurl {
- name = "has_values___has_values_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz";
- sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
- };
- }
-
- {
- name = "has_values___has_values_1.0.0.tgz";
- path = fetchurl {
- name = "has_values___has_values_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz";
- sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
- };
- }
-
- {
- name = "has___has_1.0.3.tgz";
- path = fetchurl {
- name = "has___has_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
- sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
- };
- }
-
- {
- name = "hawk___hawk_1.1.1.tgz";
- path = fetchurl {
- name = "hawk___hawk_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz";
- sha1 = "87cd491f9b46e4e2aeaca335416766885d2d1ed9";
- };
- }
-
- {
- name = "hawk___hawk_1.0.0.tgz";
- path = fetchurl {
- name = "hawk___hawk_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/hawk/-/hawk-1.0.0.tgz";
- sha1 = "b90bb169807285411da7ffcb8dd2598502d3b52d";
- };
- }
-
- {
- name = "hoek___hoek_0.9.1.tgz";
- path = fetchurl {
- name = "hoek___hoek_0.9.1.tgz";
- url = "https://registry.yarnpkg.com/hoek/-/hoek-0.9.1.tgz";
- sha1 = "3d322462badf07716ea7eb85baf88079cddce505";
- };
- }
-
- {
- name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz";
- path = fetchurl {
- name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz";
- sha1 = "743298cef4e5af3e194161fbadcc2151d3a058e8";
- };
- }
-
- {
- name = "hosted_git_info___hosted_git_info_2.8.8.tgz";
- path = fetchurl {
- name = "hosted_git_info___hosted_git_info_2.8.8.tgz";
- url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz";
- sha1 = "7539bd4bc1e0e0a895815a2e0262420b12858488";
- };
- }
-
- {
- name = "http_browserify___http_browserify_1.3.2.tgz";
- path = fetchurl {
- name = "http_browserify___http_browserify_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.3.2.tgz";
- sha1 = "b562c34479349a690d7a6597df495aefa8c604f5";
- };
- }
-
- {
- name = "http_errors___http_errors_1.7.2.tgz";
- path = fetchurl {
- name = "http_errors___http_errors_1.7.2.tgz";
- url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz";
- sha1 = "4f5029cf13239f31036e5b2e55292bcfbcc85c8f";
- };
- }
-
- {
- name = "http_errors___http_errors_1.3.1.tgz";
- path = fetchurl {
- name = "http_errors___http_errors_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz";
- sha1 = "197e22cdebd4198585e8694ef6786197b91ed942";
- };
- }
-
- {
- name = "http_parser_js___http_parser_js_0.4.10.tgz";
- path = fetchurl {
- name = "http_parser_js___http_parser_js_0.4.10.tgz";
- url = "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz";
- sha1 = "92c9c1374c35085f75db359ec56cc257cbb93fa4";
- };
- }
-
- {
- name = "http_proxy___http_proxy_1.18.0.tgz";
- path = fetchurl {
- name = "http_proxy___http_proxy_1.18.0.tgz";
- url = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz";
- sha1 = "dbe55f63e75a347db7f3d99974f2692a314a6a3a";
- };
- }
-
- {
- name = "http_signature___http_signature_0.10.1.tgz";
- path = fetchurl {
- name = "http_signature___http_signature_0.10.1.tgz";
- url = "https://registry.yarnpkg.com/http-signature/-/http-signature-0.10.1.tgz";
- sha1 = "4fbdac132559aa8323121e540779c0a012b27e66";
- };
- }
-
- {
- name = "http_signature___http_signature_1.2.0.tgz";
- path = fetchurl {
- name = "http_signature___http_signature_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
- sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
- };
- }
-
- {
- name = "https_browserify___https_browserify_0.0.1.tgz";
- path = fetchurl {
- name = "https_browserify___https_browserify_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz";
- sha1 = "3f91365cabe60b77ed0ebba24b454e3e09d95a82";
- };
- }
-
- {
- name = "iconv_lite___iconv_lite_0.4.13.tgz";
- path = fetchurl {
- name = "iconv_lite___iconv_lite_0.4.13.tgz";
- url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz";
- sha1 = "1f88aba4ab0b1508e8312acc39345f36e992e2f2";
- };
- }
-
- {
- name = "iconv_lite___iconv_lite_0.4.24.tgz";
- path = fetchurl {
- name = "iconv_lite___iconv_lite_0.4.24.tgz";
- url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz";
- sha1 = "2022b4b25fbddc21d2f524974a474aafe733908b";
- };
- }
-
- {
- name = "ieee754___ieee754_1.1.13.tgz";
- path = fetchurl {
- name = "ieee754___ieee754_1.1.13.tgz";
- url = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz";
- sha1 = "ec168558e95aa181fd87d37f55c32bbcb6708b84";
- };
- }
-
- {
- name = "ignore_walk___ignore_walk_3.0.3.tgz";
- path = fetchurl {
- name = "ignore_walk___ignore_walk_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz";
- sha1 = "017e2447184bfeade7c238e4aefdd1e8f95b1e37";
- };
- }
-
- {
- name = "in_publish___in_publish_2.0.1.tgz";
- path = fetchurl {
- name = "in_publish___in_publish_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz";
- sha1 = "948b1a535c8030561cea522f73f78f4be357e00c";
- };
- }
-
- {
- name = "indent_string___indent_string_2.1.0.tgz";
- path = fetchurl {
- name = "indent_string___indent_string_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz";
- sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80";
- };
- }
-
- {
- name = "indexof___indexof_0.0.1.tgz";
- path = fetchurl {
- name = "indexof___indexof_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz";
- sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
- };
- }
-
- {
- name = "infinity_agent___infinity_agent_2.0.3.tgz";
- path = fetchurl {
- name = "infinity_agent___infinity_agent_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/infinity-agent/-/infinity-agent-2.0.3.tgz";
- sha1 = "45e0e2ff7a9eb030b27d62b74b3744b7a7ac4216";
- };
- }
-
- {
- name = "inflight___inflight_1.0.6.tgz";
- path = fetchurl {
- name = "inflight___inflight_1.0.6.tgz";
- url = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
- sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
- };
- }
-
- {
- name = "inherits___inherits_1.0.2.tgz";
- path = fetchurl {
- name = "inherits___inherits_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz";
- sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b";
- };
- }
-
- {
- name = "inherits___inherits_2.0.4.tgz";
- path = fetchurl {
- name = "inherits___inherits_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz";
- sha1 = "0fa2c64f932917c3433a0ded55363aae37416b7c";
- };
- }
-
- {
- name = "inherits___inherits_2.0.1.tgz";
- path = fetchurl {
- name = "inherits___inherits_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz";
- sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
- };
- }
-
- {
- name = "inherits___inherits_2.0.3.tgz";
- path = fetchurl {
- name = "inherits___inherits_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
- sha1 = "633c2c83e3da42a502f52466022480f4208261de";
- };
- }
-
- {
- name = "ini___ini_1.3.5.tgz";
- path = fetchurl {
- name = "ini___ini_1.3.5.tgz";
- url = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz";
- sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927";
- };
- }
-
- {
- name = "inline_source_map___inline_source_map_0.3.1.tgz";
- path = fetchurl {
- name = "inline_source_map___inline_source_map_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.3.1.tgz";
- sha1 = "a528b514e689fce90db3089e870d92f527acb5eb";
- };
- }
-
- {
- name = "inquirer___inquirer_0.4.1.tgz";
- path = fetchurl {
- name = "inquirer___inquirer_0.4.1.tgz";
- url = "https://registry.yarnpkg.com/inquirer/-/inquirer-0.4.1.tgz";
- sha1 = "6cf74eb1a347f97a1a207bea8ad1c987d0ff4b81";
- };
- }
-
- {
- name = "inquirer___inquirer_0.5.1.tgz";
- path = fetchurl {
- name = "inquirer___inquirer_0.5.1.tgz";
- url = "https://registry.yarnpkg.com/inquirer/-/inquirer-0.5.1.tgz";
- sha1 = "e9f2cd1ee172c7a32e054b78a03d4ddb0d7707f1";
- };
- }
-
- {
- name = "insert_module_globals___insert_module_globals_6.0.0.tgz";
- path = fetchurl {
- name = "insert_module_globals___insert_module_globals_6.0.0.tgz";
- url = "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-6.0.0.tgz";
- sha1 = "ee8aeb9dee16819e33aa14588a558824af0c15dc";
- };
- }
-
- {
- name = "insight___insight_0.3.1.tgz";
- path = fetchurl {
- name = "insight___insight_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/insight/-/insight-0.3.1.tgz";
- sha1 = "1a14f32c06115c0850338c38a253d707b611d448";
- };
- }
-
- {
- name = "interpret___interpret_1.2.0.tgz";
- path = fetchurl {
- name = "interpret___interpret_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz";
- sha1 = "d5061a6224be58e8083985f5014d844359576296";
- };
- }
-
- {
- name = "intersect___intersect_0.0.3.tgz";
- path = fetchurl {
- name = "intersect___intersect_0.0.3.tgz";
- url = "https://registry.yarnpkg.com/intersect/-/intersect-0.0.3.tgz";
- sha1 = "c1a4a5e5eac6ede4af7504cc07e0ada7bc9f4920";
- };
- }
-
- {
- name = "invert_kv___invert_kv_1.0.0.tgz";
- path = fetchurl {
- name = "invert_kv___invert_kv_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz";
- sha1 = "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6";
- };
- }
-
- {
- name = "is_absolute___is_absolute_1.0.0.tgz";
- path = fetchurl {
- name = "is_absolute___is_absolute_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz";
- sha1 = "395e1ae84b11f26ad1795e73c17378e48a301576";
- };
- }
-
- {
- name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
- path = fetchurl {
- name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
- url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
- sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
- };
- }
-
- {
- name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
- path = fetchurl {
- name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
- sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656";
- };
- }
-
- {
- name = "is_arrayish___is_arrayish_0.2.1.tgz";
- path = fetchurl {
- name = "is_arrayish___is_arrayish_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
- sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
- };
- }
-
- {
- name = "is_binary_path___is_binary_path_1.0.1.tgz";
- path = fetchurl {
- name = "is_binary_path___is_binary_path_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz";
- sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
- };
- }
-
- {
- name = "is_buffer___is_buffer_1.1.6.tgz";
- path = fetchurl {
- name = "is_buffer___is_buffer_1.1.6.tgz";
- url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
- sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
- };
- }
-
- {
- name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
- path = fetchurl {
- name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
- sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
- };
- }
-
- {
- name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
- path = fetchurl {
- name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
- sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7";
- };
- }
-
- {
- name = "is_descriptor___is_descriptor_0.1.6.tgz";
- path = fetchurl {
- name = "is_descriptor___is_descriptor_0.1.6.tgz";
- url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz";
- sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca";
- };
- }
-
- {
- name = "is_descriptor___is_descriptor_1.0.2.tgz";
- path = fetchurl {
- name = "is_descriptor___is_descriptor_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz";
- sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec";
- };
- }
-
- {
- name = "is_dotfile___is_dotfile_1.0.3.tgz";
- path = fetchurl {
- name = "is_dotfile___is_dotfile_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz";
- sha1 = "a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1";
- };
- }
-
- {
- name = "is_equal_shallow___is_equal_shallow_0.1.3.tgz";
- path = fetchurl {
- name = "is_equal_shallow___is_equal_shallow_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz";
- sha1 = "2238098fc221de0bcfa5d9eac4c45d638aa1c534";
- };
- }
-
- {
- name = "is_expression___is_expression_3.0.0.tgz";
- path = fetchurl {
- name = "is_expression___is_expression_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz";
- sha1 = "39acaa6be7fd1f3471dc42c7416e61c24317ac9f";
- };
- }
-
- {
- name = "is_extendable___is_extendable_0.1.1.tgz";
- path = fetchurl {
- name = "is_extendable___is_extendable_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz";
- sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
- };
- }
-
- {
- name = "is_extendable___is_extendable_1.0.1.tgz";
- path = fetchurl {
- name = "is_extendable___is_extendable_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz";
- sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4";
- };
- }
-
- {
- name = "is_extglob___is_extglob_1.0.0.tgz";
- path = fetchurl {
- name = "is_extglob___is_extglob_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz";
- sha1 = "ac468177c4943405a092fc8f29760c6ffc6206c0";
- };
- }
-
- {
- name = "is_extglob___is_extglob_2.1.1.tgz";
- path = fetchurl {
- name = "is_extglob___is_extglob_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz";
- sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
- };
- }
-
- {
- name = "is_finite___is_finite_1.1.0.tgz";
- path = fetchurl {
- name = "is_finite___is_finite_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz";
- sha1 = "904135c77fb42c0641d6aa1bcdbc4daa8da082f3";
- };
- }
-
- {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
- path = fetchurl {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
- sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
- };
- }
-
- {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
- path = fetchurl {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
- sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
- };
- }
-
- {
- name = "is_glob___is_glob_2.0.1.tgz";
- path = fetchurl {
- name = "is_glob___is_glob_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz";
- sha1 = "d096f926a3ded5600f3fdfd91198cb0888c2d863";
- };
- }
-
- {
- name = "is_glob___is_glob_3.1.0.tgz";
- path = fetchurl {
- name = "is_glob___is_glob_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz";
- sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
- };
- }
-
- {
- name = "is_npm___is_npm_1.0.0.tgz";
- path = fetchurl {
- name = "is_npm___is_npm_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz";
- sha1 = "f2fb63a65e4905b406c86072765a1a4dc793b9f4";
- };
- }
-
- {
- name = "is_number___is_number_0.1.1.tgz";
- path = fetchurl {
- name = "is_number___is_number_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz";
- sha1 = "69a7af116963d47206ec9bd9b48a14216f1e3806";
- };
- }
-
- {
- name = "is_number___is_number_2.1.0.tgz";
- path = fetchurl {
- name = "is_number___is_number_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz";
- sha1 = "01fcbbb393463a548f2f466cce16dece49db908f";
- };
- }
-
- {
- name = "is_number___is_number_3.0.0.tgz";
- path = fetchurl {
- name = "is_number___is_number_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz";
- sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
- };
- }
-
- {
- name = "is_number___is_number_4.0.0.tgz";
- path = fetchurl {
- name = "is_number___is_number_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz";
- sha1 = "0026e37f5454d73e356dfe6564699867c6a7f0ff";
- };
- }
-
- {
- name = "is_plain_object___is_plain_object_2.0.4.tgz";
- path = fetchurl {
- name = "is_plain_object___is_plain_object_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz";
- sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677";
- };
- }
-
- {
- name = "is_posix_bracket___is_posix_bracket_0.1.1.tgz";
- path = fetchurl {
- name = "is_posix_bracket___is_posix_bracket_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz";
- sha1 = "3334dc79774368e92f016e6fbc0a88f5cd6e6bc4";
- };
- }
-
- {
- name = "is_primitive___is_primitive_2.0.0.tgz";
- path = fetchurl {
- name = "is_primitive___is_primitive_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz";
- sha1 = "207bab91638499c07b2adf240a41a87210034575";
- };
- }
-
- {
- name = "is_promise___is_promise_2.1.0.tgz";
- path = fetchurl {
- name = "is_promise___is_promise_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz";
- sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
- };
- }
-
- {
- name = "is_redirect___is_redirect_1.0.0.tgz";
- path = fetchurl {
- name = "is_redirect___is_redirect_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz";
- sha1 = "1d03dded53bd8db0f30c26e4f95d36fc7c87dc24";
- };
- }
-
- {
- name = "is_regex___is_regex_1.0.5.tgz";
- path = fetchurl {
- name = "is_regex___is_regex_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz";
- sha1 = "39d589a358bf18967f726967120b8fc1aed74eae";
- };
- }
-
- {
- name = "is_relative___is_relative_1.0.0.tgz";
- path = fetchurl {
- name = "is_relative___is_relative_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz";
- sha1 = "a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d";
- };
- }
-
- {
- name = "is_root___is_root_0.1.0.tgz";
- path = fetchurl {
- name = "is_root___is_root_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-root/-/is-root-0.1.0.tgz";
- sha1 = "825e394ab593df2d73c5d0092fce507270b53dcb";
- };
- }
-
- {
- name = "is_stream___is_stream_1.1.0.tgz";
- path = fetchurl {
- name = "is_stream___is_stream_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
- sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
- };
- }
-
- {
- name = "is_typedarray___is_typedarray_1.0.0.tgz";
- path = fetchurl {
- name = "is_typedarray___is_typedarray_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
- sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
- };
- }
-
- {
- name = "is_unc_path___is_unc_path_1.0.0.tgz";
- path = fetchurl {
- name = "is_unc_path___is_unc_path_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz";
- sha1 = "d731e8898ed090a12c352ad2eaed5095ad322c9d";
- };
- }
-
- {
- name = "is_utf8___is_utf8_0.2.1.tgz";
- path = fetchurl {
- name = "is_utf8___is_utf8_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz";
- sha1 = "4b0da1442104d1b336340e80797e865cf39f7d72";
- };
- }
-
- {
- name = "is_windows___is_windows_1.0.2.tgz";
- path = fetchurl {
- name = "is_windows___is_windows_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz";
- sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d";
- };
- }
-
- {
- name = "is___is_3.3.0.tgz";
- path = fetchurl {
- name = "is___is_3.3.0.tgz";
- url = "https://registry.yarnpkg.com/is/-/is-3.3.0.tgz";
- sha1 = "61cff6dd3c4193db94a3d62582072b44e5645d79";
- };
- }
-
- {
- name = "isarray___isarray_0.0.1.tgz";
- path = fetchurl {
- name = "isarray___isarray_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz";
- sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
- };
- }
-
- {
- name = "isarray___isarray_1.0.0.tgz";
- path = fetchurl {
- name = "isarray___isarray_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
- sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
- };
- }
-
- {
- name = "isbinaryfile___isbinaryfile_3.0.3.tgz";
- path = fetchurl {
- name = "isbinaryfile___isbinaryfile_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz";
- sha1 = "5d6def3edebf6e8ca8cae9c30183a804b5f8be80";
- };
- }
-
- {
- name = "isexe___isexe_2.0.0.tgz";
- path = fetchurl {
- name = "isexe___isexe_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
- sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
- };
- }
-
- {
- name = "isobject___isobject_2.1.0.tgz";
- path = fetchurl {
- name = "isobject___isobject_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz";
- sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
- };
- }
-
- {
- name = "isobject___isobject_3.0.1.tgz";
- path = fetchurl {
- name = "isobject___isobject_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz";
- sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
- };
- }
-
- {
- name = "isstream___isstream_0.1.2.tgz";
- path = fetchurl {
- name = "isstream___isstream_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
- sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
- };
- }
-
- {
- name = "istanbul___istanbul_0.4.5.tgz";
- path = fetchurl {
- name = "istanbul___istanbul_0.4.5.tgz";
- url = "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz";
- sha1 = "65c7d73d4c4da84d4f3ac310b918fb0b8033733b";
- };
- }
-
- {
- name = "istextorbinary___istextorbinary_1.0.2.tgz";
- path = fetchurl {
- name = "istextorbinary___istextorbinary_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-1.0.2.tgz";
- sha1 = "ace19354d1a9a0173efeb1084ce0f87b0ad7decf";
- };
- }
-
- {
- name = "jasmine_core___jasmine_core_2.99.1.tgz";
- path = fetchurl {
- name = "jasmine_core___jasmine_core_2.99.1.tgz";
- url = "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.99.1.tgz";
- sha1 = "e6400df1e6b56e130b61c4bcd093daa7f6e8ca15";
- };
- }
-
- {
- name = "js_base64___js_base64_2.5.2.tgz";
- path = fetchurl {
- name = "js_base64___js_base64_2.5.2.tgz";
- url = "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz";
- sha1 = "313b6274dda718f714d00b3330bbae6e38e90209";
- };
- }
-
- {
- name = "js_string_escape___js_string_escape_1.0.1.tgz";
- path = fetchurl {
- name = "js_string_escape___js_string_escape_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz";
- sha1 = "e2625badbc0d67c7533e9edc1068c587ae4137ef";
- };
- }
-
- {
- name = "js_stringify___js_stringify_1.0.2.tgz";
- path = fetchurl {
- name = "js_stringify___js_stringify_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz";
- sha1 = "1736fddfd9724f28a3682adc6230ae7e4e9679db";
- };
- }
-
- {
- name = "js_yaml___js_yaml_3.13.1.tgz";
- path = fetchurl {
- name = "js_yaml___js_yaml_3.13.1.tgz";
- url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz";
- sha1 = "aff151b30bfdfa8e49e05da22e7415e9dfa37847";
- };
- }
-
- {
- name = "js_yaml___js_yaml_3.0.2.tgz";
- path = fetchurl {
- name = "js_yaml___js_yaml_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.0.2.tgz";
- sha1 = "9937865f8e897a5e894e73c2c5cf2e89b32eb771";
- };
- }
-
- {
- name = "jsbn___jsbn_0.1.1.tgz";
- path = fetchurl {
- name = "jsbn___jsbn_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
- sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
- };
- }
-
- {
- name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
- path = fetchurl {
- name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
- url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
- sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
- };
- }
-
- {
- name = "json_schema___json_schema_0.2.3.tgz";
- path = fetchurl {
- name = "json_schema___json_schema_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
- sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
- };
- }
-
- {
- name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
- path = fetchurl {
- name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
- url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
- sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
- };
- }
-
- {
- name = "json3___json3_3.3.2.tgz";
- path = fetchurl {
- name = "json3___json3_3.3.2.tgz";
- url = "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz";
- sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
- };
- }
-
- {
- name = "jsonify___jsonify_0.0.0.tgz";
- path = fetchurl {
- name = "jsonify___jsonify_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz";
- sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
- };
- }
-
- {
- name = "jsonparse___jsonparse_0.0.5.tgz";
- path = fetchurl {
- name = "jsonparse___jsonparse_0.0.5.tgz";
- url = "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz";
- sha1 = "330542ad3f0a654665b778f3eb2d9a9fa507ac64";
- };
- }
-
- {
- name = "jsprim___jsprim_1.4.1.tgz";
- path = fetchurl {
- name = "jsprim___jsprim_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
- sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
- };
- }
-
- {
- name = "jstransformer___jstransformer_1.0.0.tgz";
- path = fetchurl {
- name = "jstransformer___jstransformer_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz";
- sha1 = "ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3";
- };
- }
-
- {
- name = "junk___junk_0.3.0.tgz";
- path = fetchurl {
- name = "junk___junk_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/junk/-/junk-0.3.0.tgz";
- sha1 = "6c89c636f6e99898d8efbfc50430db40be71e10c";
- };
- }
-
- {
- name = "karma_chrome_launcher___karma_chrome_launcher_2.1.1.tgz";
- path = fetchurl {
- name = "karma_chrome_launcher___karma_chrome_launcher_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz";
- sha1 = "216879c68ac04d8d5140e99619ba04b59afd46cf";
- };
- }
-
- {
- name = "karma_coffee_preprocessor___karma_coffee_preprocessor_0.3.0.tgz";
- path = fetchurl {
- name = "karma_coffee_preprocessor___karma_coffee_preprocessor_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/karma-coffee-preprocessor/-/karma-coffee-preprocessor-0.3.0.tgz";
- sha1 = "a4d8dc2b145bfef458a203d308b63bc03c9b4259";
- };
- }
-
- {
- name = "karma_coverage___karma_coverage_0.5.5.tgz";
- path = fetchurl {
- name = "karma_coverage___karma_coverage_0.5.5.tgz";
- url = "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-0.5.5.tgz";
- sha1 = "b0d58b1025d59d5c6620263186f1d58f5d5348c5";
- };
- }
-
- {
- name = "karma_jasmine___karma_jasmine_0.3.8.tgz";
- path = fetchurl {
- name = "karma_jasmine___karma_jasmine_0.3.8.tgz";
- url = "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-0.3.8.tgz";
- sha1 = "5b6457791ad9b89aa173f079e3ebe1b8c805236c";
- };
- }
-
- {
- name = "karma_sourcemap_loader___karma_sourcemap_loader_0.3.7.tgz";
- path = fetchurl {
- name = "karma_sourcemap_loader___karma_sourcemap_loader_0.3.7.tgz";
- url = "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz";
- sha1 = "91322c77f8f13d46fed062b042e1009d4c4505d8";
- };
- }
-
- {
- name = "karma___karma_0.13.22.tgz";
- path = fetchurl {
- name = "karma___karma_0.13.22.tgz";
- url = "https://registry.yarnpkg.com/karma/-/karma-0.13.22.tgz";
- sha1 = "07750b1bd063d7e7e7b91bcd2e6354d8f2aa8744";
- };
- }
-
- {
- name = "kind_of___kind_of_3.2.2.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_3.2.2.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz";
- sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
- };
- }
-
- {
- name = "kind_of___kind_of_4.0.0.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz";
- sha1 = "20813df3d712928b207378691a45066fae72dd57";
- };
- }
-
- {
- name = "kind_of___kind_of_5.1.0.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_5.1.0.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz";
- sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d";
- };
- }
-
- {
- name = "kind_of___kind_of_6.0.3.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_6.0.3.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz";
- sha1 = "07c05034a6c349fa06e24fa35aa76db4580ce4dd";
- };
- }
-
- {
- name = "latest_version___latest_version_1.0.1.tgz";
- path = fetchurl {
- name = "latest_version___latest_version_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/latest-version/-/latest-version-1.0.1.tgz";
- sha1 = "72cfc46e3e8d1be651e1ebb54ea9f6ea96f374bb";
- };
- }
-
- {
- name = "lazy_cache___lazy_cache_1.0.4.tgz";
- path = fetchurl {
- name = "lazy_cache___lazy_cache_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz";
- sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e";
- };
- }
-
- {
- name = "lazypipe___lazypipe_1.0.2.tgz";
- path = fetchurl {
- name = "lazypipe___lazypipe_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/lazypipe/-/lazypipe-1.0.2.tgz";
- sha1 = "b66f64ed7fd8b04869f1f1bcb795dbbaa80e418c";
- };
- }
-
- {
- name = "lcid___lcid_1.0.0.tgz";
- path = fetchurl {
- name = "lcid___lcid_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz";
- sha1 = "308accafa0bc483a3867b4b6f2b9506251d1b835";
- };
- }
-
- {
- name = "less___less_1.7.5.tgz";
- path = fetchurl {
- name = "less___less_1.7.5.tgz";
- url = "https://registry.yarnpkg.com/less/-/less-1.7.5.tgz";
- sha1 = "4f220cf7288a27eaca739df6e4808a2d4c0d5756";
- };
- }
-
- {
- name = "levn___levn_0.3.0.tgz";
- path = fetchurl {
- name = "levn___levn_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz";
- sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
- };
- }
-
- {
- name = "lexical_scope___lexical_scope_1.1.1.tgz";
- path = fetchurl {
- name = "lexical_scope___lexical_scope_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.1.1.tgz";
- sha1 = "debac1067435f1359d90fcfd9e94bcb2ee47b2bf";
- };
- }
-
- {
- name = "liftoff___liftoff_2.5.0.tgz";
- path = fetchurl {
- name = "liftoff___liftoff_2.5.0.tgz";
- url = "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz";
- sha1 = "2009291bb31cea861bbf10a7c15a28caf75c31ec";
- };
- }
-
- {
- name = "livereload_js___livereload_js_2.4.0.tgz";
- path = fetchurl {
- name = "livereload_js___livereload_js_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz";
- sha1 = "447c31cf1ea9ab52fc20db615c5ddf678f78009c";
- };
- }
-
- {
- name = "load_json_file___load_json_file_1.1.0.tgz";
- path = fetchurl {
- name = "load_json_file___load_json_file_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz";
- sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0";
- };
- }
-
- {
- name = "lockfile___lockfile_0.4.3.tgz";
- path = fetchurl {
- name = "lockfile___lockfile_0.4.3.tgz";
- url = "https://registry.yarnpkg.com/lockfile/-/lockfile-0.4.3.tgz";
- sha1 = "79b965ee9b32d9dd24b59cf81205e6dcb6d3b224";
- };
- }
-
- {
- name = "lodash._baseassign___lodash._baseassign_3.2.0.tgz";
- path = fetchurl {
- name = "lodash._baseassign___lodash._baseassign_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz";
- sha1 = "8c38a099500f215ad09e59f1722fd0c52bfe0a4e";
- };
- }
-
- {
- name = "lodash._basecopy___lodash._basecopy_3.0.1.tgz";
- path = fetchurl {
- name = "lodash._basecopy___lodash._basecopy_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz";
- sha1 = "8da0e6a876cf344c0ad8a54882111dd3c5c7ca36";
- };
- }
-
- {
- name = "lodash._basetostring___lodash._basetostring_3.0.1.tgz";
- path = fetchurl {
- name = "lodash._basetostring___lodash._basetostring_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz";
- sha1 = "d1861d877f824a52f669832dcaf3ee15566a07d5";
- };
- }
-
- {
- name = "lodash._basevalues___lodash._basevalues_3.0.0.tgz";
- path = fetchurl {
- name = "lodash._basevalues___lodash._basevalues_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz";
- sha1 = "5b775762802bde3d3297503e26300820fdf661b7";
- };
- }
-
- {
- name = "lodash._bindcallback___lodash._bindcallback_3.0.1.tgz";
- path = fetchurl {
- name = "lodash._bindcallback___lodash._bindcallback_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz";
- sha1 = "e531c27644cf8b57a99e17ed95b35c748789392e";
- };
- }
-
- {
- name = "lodash._createassigner___lodash._createassigner_3.1.1.tgz";
- path = fetchurl {
- name = "lodash._createassigner___lodash._createassigner_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz";
- sha1 = "838a5bae2fdaca63ac22dee8e19fa4e6d6970b11";
- };
- }
-
- {
- name = "lodash._escapehtmlchar___lodash._escapehtmlchar_2.4.1.tgz";
- path = fetchurl {
- name = "lodash._escapehtmlchar___lodash._escapehtmlchar_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz";
- sha1 = "df67c3bb6b7e8e1e831ab48bfa0795b92afe899d";
- };
- }
-
- {
- name = "lodash._escapestringchar___lodash._escapestringchar_2.4.1.tgz";
- path = fetchurl {
- name = "lodash._escapestringchar___lodash._escapestringchar_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz";
- sha1 = "ecfe22618a2ade50bfeea43937e51df66f0edb72";
- };
- }
-
- {
- name = "lodash._getnative___lodash._getnative_3.9.1.tgz";
- path = fetchurl {
- name = "lodash._getnative___lodash._getnative_3.9.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz";
- sha1 = "570bc7dede46d61cdcde687d65d3eecbaa3aaff5";
- };
- }
-
- {
- name = "lodash._htmlescapes___lodash._htmlescapes_2.4.1.tgz";
- path = fetchurl {
- name = "lodash._htmlescapes___lodash._htmlescapes_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz";
- sha1 = "32d14bf0844b6de6f8b62a051b4f67c228b624cb";
- };
- }
-
- {
- name = "lodash._isiterateecall___lodash._isiterateecall_3.0.9.tgz";
- path = fetchurl {
- name = "lodash._isiterateecall___lodash._isiterateecall_3.0.9.tgz";
- url = "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz";
- sha1 = "5203ad7ba425fae842460e696db9cf3e6aac057c";
- };
- }
-
- {
- name = "lodash._isnative___lodash._isnative_2.4.1.tgz";
- path = fetchurl {
- name = "lodash._isnative___lodash._isnative_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz";
- sha1 = "3ea6404b784a7be836c7b57580e1cdf79b14832c";
- };
- }
-
- {
- name = "lodash._objecttypes___lodash._objecttypes_2.4.1.tgz";
- path = fetchurl {
- name = "lodash._objecttypes___lodash._objecttypes_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz";
- sha1 = "7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11";
- };
- }
-
- {
- name = "lodash._reescape___lodash._reescape_3.0.0.tgz";
- path = fetchurl {
- name = "lodash._reescape___lodash._reescape_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz";
- sha1 = "2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a";
- };
- }
-
- {
- name = "lodash._reevaluate___lodash._reevaluate_3.0.0.tgz";
- path = fetchurl {
- name = "lodash._reevaluate___lodash._reevaluate_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz";
- sha1 = "58bc74c40664953ae0b124d806996daca431e2ed";
- };
- }
-
- {
- name = "lodash._reinterpolate___lodash._reinterpolate_2.4.1.tgz";
- path = fetchurl {
- name = "lodash._reinterpolate___lodash._reinterpolate_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz";
- sha1 = "4f1227aa5a8711fc632f5b07a1f4607aab8b3222";
- };
- }
-
- {
- name = "lodash._reinterpolate___lodash._reinterpolate_3.0.0.tgz";
- path = fetchurl {
- name = "lodash._reinterpolate___lodash._reinterpolate_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz";
- sha1 = "0ccf2d89166af03b3663c796538b75ac6e114d9d";
- };
- }
-
- {
- name = "lodash._reunescapedhtml___lodash._reunescapedhtml_2.4.1.tgz";
- path = fetchurl {
- name = "lodash._reunescapedhtml___lodash._reunescapedhtml_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz";
- sha1 = "747c4fc40103eb3bb8a0976e571f7a2659e93ba7";
- };
- }
-
- {
- name = "lodash._root___lodash._root_3.0.1.tgz";
- path = fetchurl {
- name = "lodash._root___lodash._root_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz";
- sha1 = "fba1c4524c19ee9a5f8136b4609f017cf4ded692";
- };
- }
-
- {
- name = "lodash._shimkeys___lodash._shimkeys_2.4.1.tgz";
- path = fetchurl {
- name = "lodash._shimkeys___lodash._shimkeys_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz";
- sha1 = "6e9cc9666ff081f0b5a6c978b83e242e6949d203";
- };
- }
-
- {
- name = "lodash.assign___lodash.assign_4.2.0.tgz";
- path = fetchurl {
- name = "lodash.assign___lodash.assign_4.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz";
- sha1 = "0d99f3ccd7a6d261d19bdaeb9245005d285808e7";
- };
- }
-
- {
- name = "lodash.assign___lodash.assign_3.2.0.tgz";
- path = fetchurl {
- name = "lodash.assign___lodash.assign_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz";
- sha1 = "3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa";
- };
- }
-
- {
- name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
- path = fetchurl {
- name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz";
- sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef";
- };
- }
-
- {
- name = "lodash.debounce___lodash.debounce_2.4.1.tgz";
- path = fetchurl {
- name = "lodash.debounce___lodash.debounce_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-2.4.1.tgz";
- sha1 = "d8cead246ec4b926e8b85678fc396bfeba8cc6fc";
- };
- }
-
- {
- name = "lodash.defaults___lodash.defaults_2.4.1.tgz";
- path = fetchurl {
- name = "lodash.defaults___lodash.defaults_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz";
- sha1 = "a7e8885f05e68851144b6e12a8f3678026bc4c54";
- };
- }
-
- {
- name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
- path = fetchurl {
- name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
- sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
- };
- }
-
- {
- name = "lodash.escape___lodash.escape_3.2.0.tgz";
- path = fetchurl {
- name = "lodash.escape___lodash.escape_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz";
- sha1 = "995ee0dc18c1b48cc92effae71a10aab5b487698";
- };
- }
-
- {
- name = "lodash.escape___lodash.escape_2.4.1.tgz";
- path = fetchurl {
- name = "lodash.escape___lodash.escape_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-2.4.1.tgz";
- sha1 = "2ce12c5e084db0a57dda5e5d1eeeb9f5d175a3b4";
- };
- }
-
- {
- name = "lodash.isarguments___lodash.isarguments_3.1.0.tgz";
- path = fetchurl {
- name = "lodash.isarguments___lodash.isarguments_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz";
- sha1 = "2f573d85c6a24289ff00663b491c1d338ff3458a";
- };
- }
-
- {
- name = "lodash.isarray___lodash.isarray_3.0.4.tgz";
- path = fetchurl {
- name = "lodash.isarray___lodash.isarray_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz";
- sha1 = "79e4eb88c36a8122af86f844aa9bcd851b5fbb55";
- };
- }
-
- {
- name = "lodash.isfunction___lodash.isfunction_2.4.1.tgz";
- path = fetchurl {
- name = "lodash.isfunction___lodash.isfunction_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz";
- sha1 = "2cfd575c73e498ab57e319b77fa02adef13a94d1";
- };
- }
-
- {
- name = "lodash.isobject___lodash.isobject_2.4.1.tgz";
- path = fetchurl {
- name = "lodash.isobject___lodash.isobject_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz";
- sha1 = "5a2e47fe69953f1ee631a7eba1fe64d2d06558f5";
- };
- }
-
- {
- name = "lodash.keys___lodash.keys_3.1.2.tgz";
- path = fetchurl {
- name = "lodash.keys___lodash.keys_3.1.2.tgz";
- url = "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz";
- sha1 = "4dbc0472b156be50a0b286855d1bd0b0c656098a";
- };
- }
-
- {
- name = "lodash.keys___lodash.keys_2.4.1.tgz";
- path = fetchurl {
- name = "lodash.keys___lodash.keys_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz";
- sha1 = "48dea46df8ff7632b10d706b8acb26591e2b3727";
- };
- }
-
- {
- name = "lodash.now___lodash.now_2.4.1.tgz";
- path = fetchurl {
- name = "lodash.now___lodash.now_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.now/-/lodash.now-2.4.1.tgz";
- sha1 = "6872156500525185faf96785bb7fe7fe15b562c6";
- };
- }
-
- {
- name = "lodash.restparam___lodash.restparam_3.6.1.tgz";
- path = fetchurl {
- name = "lodash.restparam___lodash.restparam_3.6.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz";
- sha1 = "936a4e309ef330a7645ed4145986c85ae5b20805";
- };
- }
-
- {
- name = "lodash.template___lodash.template_2.4.1.tgz";
- path = fetchurl {
- name = "lodash.template___lodash.template_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-2.4.1.tgz";
- sha1 = "9e611007edf629129a974ab3c48b817b3e1cf20d";
- };
- }
-
- {
- name = "lodash.template___lodash.template_3.6.2.tgz";
- path = fetchurl {
- name = "lodash.template___lodash.template_3.6.2.tgz";
- url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz";
- sha1 = "f8cdecc6169a255be9098ae8b0c53d378931d14f";
- };
- }
-
- {
- name = "lodash.template___lodash.template_4.5.0.tgz";
- path = fetchurl {
- name = "lodash.template___lodash.template_4.5.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz";
- sha1 = "f976195cf3f347d0d5f52483569fe8031ccce8ab";
- };
- }
-
- {
- name = "lodash.templatesettings___lodash.templatesettings_3.1.1.tgz";
- path = fetchurl {
- name = "lodash.templatesettings___lodash.templatesettings_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz";
- sha1 = "fb307844753b66b9f1afa54e262c745307dba8e5";
- };
- }
-
- {
- name = "lodash.templatesettings___lodash.templatesettings_4.2.0.tgz";
- path = fetchurl {
- name = "lodash.templatesettings___lodash.templatesettings_4.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz";
- sha1 = "e481310f049d3cf6d47e912ad09313b154f0fb33";
- };
- }
-
- {
- name = "lodash.templatesettings___lodash.templatesettings_2.4.1.tgz";
- path = fetchurl {
- name = "lodash.templatesettings___lodash.templatesettings_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz";
- sha1 = "ea76c75d11eb86d4dbe89a83893bb861929ac699";
- };
- }
-
- {
- name = "lodash.values___lodash.values_2.4.1.tgz";
- path = fetchurl {
- name = "lodash.values___lodash.values_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz";
- sha1 = "abf514436b3cb705001627978cbcf30b1280eea4";
- };
- }
-
- {
- name = "lodash___lodash_2.4.2.tgz";
- path = fetchurl {
- name = "lodash___lodash_2.4.2.tgz";
- url = "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz";
- sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e";
- };
- }
-
- {
- name = "lodash___lodash_3.10.1.tgz";
- path = fetchurl {
- name = "lodash___lodash_3.10.1.tgz";
- url = "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz";
- sha1 = "5bf45e8e49ba4189e17d482789dfd15bd140b7b6";
- };
- }
-
- {
- name = "lodash___lodash_4.17.15.tgz";
- path = fetchurl {
- name = "lodash___lodash_4.17.15.tgz";
- url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz";
- sha1 = "b447f6670a0455bbfeedd11392eff330ea097548";
- };
- }
-
- {
- name = "lodash___lodash_1.0.2.tgz";
- path = fetchurl {
- name = "lodash___lodash_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz";
- sha1 = "8f57560c83b59fc270bd3d561b690043430e2551";
- };
- }
-
- {
- name = "log4js___log4js_0.6.38.tgz";
- path = fetchurl {
- name = "log4js___log4js_0.6.38.tgz";
- url = "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz";
- sha1 = "2c494116695d6fb25480943d3fc872e662a522fd";
- };
- }
-
- {
- name = "longest___longest_1.0.1.tgz";
- path = fetchurl {
- name = "longest___longest_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz";
- sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097";
- };
- }
-
- {
- name = "loophole___loophole_1.1.0.tgz";
- path = fetchurl {
- name = "loophole___loophole_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/loophole/-/loophole-1.1.0.tgz";
- sha1 = "37949fea453b6256acc725c320ce0c5a7f70a2bd";
- };
- }
-
- {
- name = "loud_rejection___loud_rejection_1.6.0.tgz";
- path = fetchurl {
- name = "loud_rejection___loud_rejection_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz";
- sha1 = "5b46f80147edee578870f086d04821cf998e551f";
- };
- }
-
- {
- name = "lowercase_keys___lowercase_keys_1.0.1.tgz";
- path = fetchurl {
- name = "lowercase_keys___lowercase_keys_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz";
- sha1 = "6f9e30b47084d971a7c820ff15a6c5167b74c26f";
- };
- }
-
- {
- name = "lru_cache___lru_cache_2.7.3.tgz";
- path = fetchurl {
- name = "lru_cache___lru_cache_2.7.3.tgz";
- url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz";
- sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952";
- };
- }
-
- {
- name = "lru_cache___lru_cache_4.1.5.tgz";
- path = fetchurl {
- name = "lru_cache___lru_cache_4.1.5.tgz";
- url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz";
- sha1 = "8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd";
- };
- }
-
- {
- name = "lru_cache___lru_cache_2.3.1.tgz";
- path = fetchurl {
- name = "lru_cache___lru_cache_2.3.1.tgz";
- url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.3.1.tgz";
- sha1 = "b3adf6b3d856e954e2c390e6cef22081245a53d6";
- };
- }
-
- {
- name = "lru_cache___lru_cache_2.5.2.tgz";
- path = fetchurl {
- name = "lru_cache___lru_cache_2.5.2.tgz";
- url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.5.2.tgz";
- sha1 = "1fddad938aae1263ce138680be1b3f591c0ab41c";
- };
- }
-
- {
- name = "lru_queue___lru_queue_0.1.0.tgz";
- path = fetchurl {
- name = "lru_queue___lru_queue_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz";
- sha1 = "2738bd9f0d3cf4f84490c5736c48699ac632cda3";
- };
- }
-
- {
- name = "make_iterator___make_iterator_1.0.1.tgz";
- path = fetchurl {
- name = "make_iterator___make_iterator_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz";
- sha1 = "29b33f312aa8f547c4a5e490f56afcec99133ad6";
- };
- }
-
- {
- name = "map_cache___map_cache_0.2.2.tgz";
- path = fetchurl {
- name = "map_cache___map_cache_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz";
- sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
- };
- }
-
- {
- name = "map_obj___map_obj_1.0.1.tgz";
- path = fetchurl {
- name = "map_obj___map_obj_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz";
- sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d";
- };
- }
-
- {
- name = "map_stream___map_stream_0.0.7.tgz";
- path = fetchurl {
- name = "map_stream___map_stream_0.0.7.tgz";
- url = "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz";
- sha1 = "8a1f07896d82b10926bd3744a2420009f88974a8";
- };
- }
-
- {
- name = "map_stream___map_stream_0.1.0.tgz";
- path = fetchurl {
- name = "map_stream___map_stream_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz";
- sha1 = "e56aa94c4c8055a16404a0674b78f215f7c8e194";
- };
- }
-
- {
- name = "map_visit___map_visit_1.0.0.tgz";
- path = fetchurl {
- name = "map_visit___map_visit_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz";
- sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
- };
- }
-
- {
- name = "math_random___math_random_1.0.4.tgz";
- path = fetchurl {
- name = "math_random___math_random_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz";
- sha1 = "5dd6943c938548267016d4e34f057583080c514c";
- };
- }
-
- {
- name = "media_typer___media_typer_0.3.0.tgz";
- path = fetchurl {
- name = "media_typer___media_typer_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
- sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
- };
- }
-
- {
- name = "memoizee___memoizee_0.2.6.tgz";
- path = fetchurl {
- name = "memoizee___memoizee_0.2.6.tgz";
- url = "https://registry.yarnpkg.com/memoizee/-/memoizee-0.2.6.tgz";
- sha1 = "bb45a7ad02530082f1612671dab35219cd2e0741";
- };
- }
-
- {
- name = "memoizee___memoizee_0.3.10.tgz";
- path = fetchurl {
- name = "memoizee___memoizee_0.3.10.tgz";
- url = "https://registry.yarnpkg.com/memoizee/-/memoizee-0.3.10.tgz";
- sha1 = "4eca0d8aed39ec9d017f4c5c2f2f6432f42e5c8f";
- };
- }
-
- {
- name = "meow___meow_3.7.0.tgz";
- path = fetchurl {
- name = "meow___meow_3.7.0.tgz";
- url = "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz";
- sha1 = "72cb668b425228290abbfa856892587308a801fb";
- };
- }
-
- {
- name = "merge_stream___merge_stream_1.0.1.tgz";
- path = fetchurl {
- name = "merge_stream___merge_stream_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz";
- sha1 = "4041202d508a342ba00174008df0c251b8c135e1";
- };
- }
-
- {
- name = "merge___merge_1.2.1.tgz";
- path = fetchurl {
- name = "merge___merge_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz";
- sha1 = "38bebf80c3220a8a487b6fcfb3941bb11720c145";
- };
- }
-
- {
- name = "micromatch___micromatch_2.3.11.tgz";
- path = fetchurl {
- name = "micromatch___micromatch_2.3.11.tgz";
- url = "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz";
- sha1 = "86677c97d1720b363431d04d0d15293bd38c1565";
- };
- }
-
- {
- name = "micromatch___micromatch_3.1.10.tgz";
- path = fetchurl {
- name = "micromatch___micromatch_3.1.10.tgz";
- url = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz";
- sha1 = "70859bc95c9840952f359a068a3fc49f9ecfac23";
- };
- }
-
- {
- name = "mime_db___mime_db_1.43.0.tgz";
- path = fetchurl {
- name = "mime_db___mime_db_1.43.0.tgz";
- url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz";
- sha1 = "0a12e0502650e473d735535050e7c8f4eb4fae58";
- };
- }
-
- {
- name = "mime_db___mime_db_1.12.0.tgz";
- path = fetchurl {
- name = "mime_db___mime_db_1.12.0.tgz";
- url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz";
- sha1 = "3d0c63180f458eb10d325aaa37d7c58ae312e9d7";
- };
- }
-
- {
- name = "mime_types___mime_types_2.1.26.tgz";
- path = fetchurl {
- name = "mime_types___mime_types_2.1.26.tgz";
- url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz";
- sha1 = "9c921fc09b7e149a65dfdc0da4d20997200b0a06";
- };
- }
-
- {
- name = "mime_types___mime_types_1.0.2.tgz";
- path = fetchurl {
- name = "mime_types___mime_types_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz";
- sha1 = "995ae1392ab8affcbfcb2641dd054e943c0d5dce";
- };
- }
-
- {
- name = "mime_types___mime_types_2.0.14.tgz";
- path = fetchurl {
- name = "mime_types___mime_types_2.0.14.tgz";
- url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz";
- sha1 = "310e159db23e077f8bb22b748dabfa4957140aa6";
- };
- }
-
- {
- name = "mime___mime_1.3.4.tgz";
- path = fetchurl {
- name = "mime___mime_1.3.4.tgz";
- url = "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz";
- sha1 = "115f9e3b6b3daf2959983cb38f149a2d40eb5d53";
- };
- }
-
- {
- name = "mime___mime_1.6.0.tgz";
- path = fetchurl {
- name = "mime___mime_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
- sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
- };
- }
-
- {
- name = "mime___mime_1.2.11.tgz";
- path = fetchurl {
- name = "mime___mime_1.2.11.tgz";
- url = "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz";
- sha1 = "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10";
- };
- }
-
- {
- name = "mini_lr___mini_lr_0.1.9.tgz";
- path = fetchurl {
- name = "mini_lr___mini_lr_0.1.9.tgz";
- url = "https://registry.yarnpkg.com/mini-lr/-/mini-lr-0.1.9.tgz";
- sha1 = "02199d27347953d1fd1d6dbded4261f187b2d0f6";
- };
- }
-
- {
- name = "minimatch___minimatch_0.3.0.tgz";
- path = fetchurl {
- name = "minimatch___minimatch_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz";
- sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd";
- };
- }
-
- {
- name = "minimatch___minimatch_3.0.4.tgz";
- path = fetchurl {
- name = "minimatch___minimatch_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
- sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
- };
- }
-
- {
- name = "minimatch___minimatch_0.2.14.tgz";
- path = fetchurl {
- name = "minimatch___minimatch_0.2.14.tgz";
- url = "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz";
- sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a";
- };
- }
-
- {
- name = "minimatch___minimatch_1.0.0.tgz";
- path = fetchurl {
- name = "minimatch___minimatch_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/minimatch/-/minimatch-1.0.0.tgz";
- sha1 = "e0dd2120b49e1b724ce8d714c520822a9438576d";
- };
- }
-
- {
- name = "minimatch___minimatch_2.0.10.tgz";
- path = fetchurl {
- name = "minimatch___minimatch_2.0.10.tgz";
- url = "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz";
- sha1 = "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7";
- };
- }
-
- {
- name = "minimist___minimist_0.2.1.tgz";
- path = fetchurl {
- name = "minimist___minimist_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz";
- sha1 = "827ba4e7593464e7c221e8c5bed930904ee2c455";
- };
- }
-
- {
- name = "minimist___minimist_1.2.5.tgz";
- path = fetchurl {
- name = "minimist___minimist_1.2.5.tgz";
- url = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz";
- sha1 = "67d66014b66a6a8aaa0c083c5fd58df4e4e97602";
- };
- }
-
- {
- name = "minimist___minimist_0.0.10.tgz";
- path = fetchurl {
- name = "minimist___minimist_0.0.10.tgz";
- url = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz";
- sha1 = "de3f98543dbf96082be48ad1a0c7cda836301dcf";
- };
- }
-
- {
- name = "minipass___minipass_2.9.0.tgz";
- path = fetchurl {
- name = "minipass___minipass_2.9.0.tgz";
- url = "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz";
- sha1 = "e713762e7d3e32fed803115cf93e04bca9fcc9a6";
- };
- }
-
- {
- name = "minizlib___minizlib_1.3.3.tgz";
- path = fetchurl {
- name = "minizlib___minizlib_1.3.3.tgz";
- url = "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz";
- sha1 = "2290de96818a34c29551c8a8d301216bd65a861d";
- };
- }
-
- {
- name = "mixin_deep___mixin_deep_1.3.2.tgz";
- path = fetchurl {
- name = "mixin_deep___mixin_deep_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz";
- sha1 = "1120b43dc359a785dce65b55b82e257ccf479566";
- };
- }
-
- {
- name = "mkdirp___mkdirp_0.5.4.tgz";
- path = fetchurl {
- name = "mkdirp___mkdirp_0.5.4.tgz";
- url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz";
- sha1 = "fd01504a6797ec5c9be81ff43d204961ed64a512";
- };
- }
-
- {
- name = "mkdirp___mkdirp_0.3.5.tgz";
- path = fetchurl {
- name = "mkdirp___mkdirp_0.3.5.tgz";
- url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz";
- sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7";
- };
- }
-
- {
- name = "mkpath___mkpath_0.1.0.tgz";
- path = fetchurl {
- name = "mkpath___mkpath_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz";
- sha1 = "7554a6f8d871834cc97b5462b122c4c124d6de91";
- };
- }
-
- {
- name = "module_deps___module_deps_2.0.6.tgz";
- path = fetchurl {
- name = "module_deps___module_deps_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/module-deps/-/module-deps-2.0.6.tgz";
- sha1 = "b999321c73ac33580f00712c0f3075fdca42563f";
- };
- }
-
- {
- name = "mout___mout_0.9.1.tgz";
- path = fetchurl {
- name = "mout___mout_0.9.1.tgz";
- url = "https://registry.yarnpkg.com/mout/-/mout-0.9.1.tgz";
- sha1 = "84f0f3fd6acc7317f63de2affdcc0cee009b0477";
- };
- }
-
- {
- name = "ms___ms_0.7.1.tgz";
- path = fetchurl {
- name = "ms___ms_0.7.1.tgz";
- url = "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz";
- sha1 = "9cd13c03adbff25b65effde7ce864ee952017098";
- };
- }
-
- {
- name = "ms___ms_0.7.2.tgz";
- path = fetchurl {
- name = "ms___ms_0.7.2.tgz";
- url = "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz";
- sha1 = "ae25cf2512b3885a1d95d7f037868d8431124765";
- };
- }
-
- {
- name = "ms___ms_2.0.0.tgz";
- path = fetchurl {
- name = "ms___ms_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
- sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
- };
- }
-
- {
- name = "ms___ms_2.1.2.tgz";
- path = fetchurl {
- name = "ms___ms_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz";
- sha1 = "d09d1f357b443f493382a8eb3ccd183872ae6009";
- };
- }
-
- {
- name = "multipipe___multipipe_0.1.2.tgz";
- path = fetchurl {
- name = "multipipe___multipipe_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz";
- sha1 = "2a8f2ddf70eed564dff2d57f1e1a137d9f05078b";
- };
- }
-
- {
- name = "mute_stream___mute_stream_0.0.4.tgz";
- path = fetchurl {
- name = "mute_stream___mute_stream_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.4.tgz";
- sha1 = "a9219960a6d5d5d046597aee51252c6655f7177e";
- };
- }
-
- {
- name = "mute_stream___mute_stream_0.0.8.tgz";
- path = fetchurl {
- name = "mute_stream___mute_stream_0.0.8.tgz";
- url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz";
- sha1 = "1630c42b2251ff81e2a283de96a5497ea92e5e0d";
- };
- }
-
- {
- name = "nan___nan_2.14.0.tgz";
- path = fetchurl {
- name = "nan___nan_2.14.0.tgz";
- url = "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz";
- sha1 = "7818f722027b2459a86f0295d434d1fc2336c52c";
- };
- }
-
- {
- name = "nanomatch___nanomatch_1.2.13.tgz";
- path = fetchurl {
- name = "nanomatch___nanomatch_1.2.13.tgz";
- url = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz";
- sha1 = "b87a8aa4fc0de8fe6be88895b38983ff265bd119";
- };
- }
-
- {
- name = "natives___natives_1.1.6.tgz";
- path = fetchurl {
- name = "natives___natives_1.1.6.tgz";
- url = "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz";
- sha1 = "a603b4a498ab77173612b9ea1acdec4d980f00bb";
- };
- }
-
- {
- name = "needle___needle_2.3.3.tgz";
- path = fetchurl {
- name = "needle___needle_2.3.3.tgz";
- url = "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz";
- sha1 = "a041ad1d04a871b0ebb666f40baaf1fb47867117";
- };
- }
-
- {
- name = "negotiator___negotiator_0.6.1.tgz";
- path = fetchurl {
- name = "negotiator___negotiator_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz";
- sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
- };
- }
-
- {
- name = "neo_async___neo_async_2.6.1.tgz";
- path = fetchurl {
- name = "neo_async___neo_async_2.6.1.tgz";
- url = "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz";
- sha1 = "ac27ada66167fa8849a6addd837f6b189ad2081c";
- };
- }
-
- {
- name = "nested_error_stacks___nested_error_stacks_1.0.2.tgz";
- path = fetchurl {
- name = "nested_error_stacks___nested_error_stacks_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz";
- sha1 = "19f619591519f096769a5ba9a86e6eeec823c3cf";
- };
- }
-
- {
- name = "next_tick___next_tick_0.1.0.tgz";
- path = fetchurl {
- name = "next_tick___next_tick_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/next-tick/-/next-tick-0.1.0.tgz";
- sha1 = "1912cce8eb9b697d640fbba94f8f00dec3b94259";
- };
- }
-
- {
- name = "next_tick___next_tick_1.1.0.tgz";
- path = fetchurl {
- name = "next_tick___next_tick_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz";
- sha1 = "1836ee30ad56d67ef281b22bd199f709449b35eb";
- };
- }
-
- {
- name = "next_tick___next_tick_0.2.2.tgz";
- path = fetchurl {
- name = "next_tick___next_tick_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz";
- sha1 = "75da4a927ee5887e39065880065b7336413b310d";
- };
- }
-
- {
- name = "next_tick___next_tick_1.0.0.tgz";
- path = fetchurl {
- name = "next_tick___next_tick_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz";
- sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c";
- };
- }
-
- {
- name = "ng_annotate___ng_annotate_1.2.2.tgz";
- path = fetchurl {
- name = "ng_annotate___ng_annotate_1.2.2.tgz";
- url = "https://registry.yarnpkg.com/ng-annotate/-/ng-annotate-1.2.2.tgz";
- sha1 = "dc3fc51ba0b2f8b385dbe047f4da06f580a1fd61";
- };
- }
-
- {
- name = "ng_classify___ng_classify_4.1.1.tgz";
- path = fetchurl {
- name = "ng_classify___ng_classify_4.1.1.tgz";
- url = "https://registry.yarnpkg.com/ng-classify/-/ng-classify-4.1.1.tgz";
- sha1 = "6688b924c3c9b5f94da5f8fbc0d55176f3dda122";
- };
- }
-
- {
- name = "node_gyp___node_gyp_3.8.0.tgz";
- path = fetchurl {
- name = "node_gyp___node_gyp_3.8.0.tgz";
- url = "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz";
- sha1 = "540304261c330e80d0d5edce253a68cb3964218c";
- };
- }
-
- {
- name = "node_pre_gyp___node_pre_gyp_0.14.0.tgz";
- path = fetchurl {
- name = "node_pre_gyp___node_pre_gyp_0.14.0.tgz";
- url = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz";
- sha1 = "9a0596533b877289bcad4e143982ca3d904ddc83";
- };
- }
-
- {
- name = "node_sass___node_sass_4.13.1.tgz";
- path = fetchurl {
- name = "node_sass___node_sass_4.13.1.tgz";
- url = "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz";
- sha1 = "9db5689696bb2eec2c32b98bfea4c7a2e992d0a3";
- };
- }
-
- {
- name = "node_uuid___node_uuid_1.4.8.tgz";
- path = fetchurl {
- name = "node_uuid___node_uuid_1.4.8.tgz";
- url = "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz";
- sha1 = "b040eb0923968afabf8d32fb1f17f1167fdab907";
- };
- }
-
- {
- name = "node.extend___node.extend_1.1.8.tgz";
- path = fetchurl {
- name = "node.extend___node.extend_1.1.8.tgz";
- url = "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.8.tgz";
- sha1 = "0aab3e63789f4e6d68b42bc00073ad1881243cf0";
- };
- }
-
- {
- name = "nopt___nopt_3.0.6.tgz";
- path = fetchurl {
- name = "nopt___nopt_3.0.6.tgz";
- url = "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz";
- sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
- };
- }
-
- {
- name = "nopt___nopt_4.0.3.tgz";
- path = fetchurl {
- name = "nopt___nopt_4.0.3.tgz";
- url = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz";
- sha1 = "a375cad9d02fd921278d954c2254d5aa57e15e48";
- };
- }
-
- {
- name = "nopt___nopt_1.0.10.tgz";
- path = fetchurl {
- name = "nopt___nopt_1.0.10.tgz";
- url = "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz";
- sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
- };
- }
-
- {
- name = "nopt___nopt_2.2.1.tgz";
- path = fetchurl {
- name = "nopt___nopt_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/nopt/-/nopt-2.2.1.tgz";
- sha1 = "2aa09b7d1768487b3b89a9c5aa52335bff0baea7";
- };
- }
-
- {
- name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
- path = fetchurl {
- name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
- url = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz";
- sha1 = "e66db1838b200c1dfc233225d12cb36520e234a8";
- };
- }
-
- {
- name = "normalize_path___normalize_path_2.1.1.tgz";
- path = fetchurl {
- name = "normalize_path___normalize_path_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz";
- sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
- };
- }
-
- {
- name = "npm_bundled___npm_bundled_1.1.1.tgz";
- path = fetchurl {
- name = "npm_bundled___npm_bundled_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz";
- sha1 = "1edd570865a94cdb1bc8220775e29466c9fb234b";
- };
- }
-
- {
- name = "npm_normalize_package_bin___npm_normalize_package_bin_1.0.1.tgz";
- path = fetchurl {
- name = "npm_normalize_package_bin___npm_normalize_package_bin_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz";
- sha1 = "6e79a41f23fd235c0623218228da7d9c23b8f6e2";
- };
- }
-
- {
- name = "npm_packlist___npm_packlist_1.4.8.tgz";
- path = fetchurl {
- name = "npm_packlist___npm_packlist_1.4.8.tgz";
- url = "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz";
- sha1 = "56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e";
- };
- }
-
- {
- name = "npmlog___npmlog_4.1.2.tgz";
- path = fetchurl {
- name = "npmlog___npmlog_4.1.2.tgz";
- url = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz";
- sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
- };
- }
-
- {
- name = "null_check___null_check_1.0.0.tgz";
- path = fetchurl {
- name = "null_check___null_check_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz";
- sha1 = "977dffd7176012b9ec30d2a39db5cf72a0439edd";
- };
- }
-
- {
- name = "number_is_nan___number_is_nan_1.0.1.tgz";
- path = fetchurl {
- name = "number_is_nan___number_is_nan_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz";
- sha1 = "097b602b53422a522c1afb8790318336941a011d";
- };
- }
-
- {
- name = "oauth_sign___oauth_sign_0.3.0.tgz";
- path = fetchurl {
- name = "oauth_sign___oauth_sign_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.3.0.tgz";
- sha1 = "cb540f93bb2b22a7d5941691a288d60e8ea9386e";
- };
- }
-
- {
- name = "oauth_sign___oauth_sign_0.5.0.tgz";
- path = fetchurl {
- name = "oauth_sign___oauth_sign_0.5.0.tgz";
- url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.5.0.tgz";
- sha1 = "d767f5169325620eab2e087ef0c472e773db6461";
- };
- }
-
- {
- name = "oauth_sign___oauth_sign_0.9.0.tgz";
- path = fetchurl {
- name = "oauth_sign___oauth_sign_0.9.0.tgz";
- url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
- sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
- };
- }
-
- {
- name = "object_assign___object_assign_4.1.1.tgz";
- path = fetchurl {
- name = "object_assign___object_assign_4.1.1.tgz";
- url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
- sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
- };
- }
-
- {
- name = "object_assign___object_assign_4.1.0.tgz";
- path = fetchurl {
- name = "object_assign___object_assign_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz";
- sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
- };
- }
-
- {
- name = "object_assign___object_assign_2.1.1.tgz";
- path = fetchurl {
- name = "object_assign___object_assign_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz";
- sha1 = "43c36e5d569ff8e4816c4efa8be02d26967c18aa";
- };
- }
-
- {
- name = "object_assign___object_assign_3.0.0.tgz";
- path = fetchurl {
- name = "object_assign___object_assign_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz";
- sha1 = "9bedd5ca0897949bca47e7ff408062d549f587f2";
- };
- }
-
- {
- name = "object_assign___object_assign_0.1.2.tgz";
- path = fetchurl {
- name = "object_assign___object_assign_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/object-assign/-/object-assign-0.1.2.tgz";
- sha1 = "036992f073aff7b2db83d06b3fb3155a5ccac37f";
- };
- }
-
- {
- name = "object_component___object_component_0.0.3.tgz";
- path = fetchurl {
- name = "object_component___object_component_0.0.3.tgz";
- url = "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz";
- sha1 = "f0c69aa50efc95b866c186f400a33769cb2f1291";
- };
- }
-
- {
- name = "object_copy___object_copy_0.1.0.tgz";
- path = fetchurl {
- name = "object_copy___object_copy_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz";
- sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
- };
- }
-
- {
- name = "object_keys___object_keys_0.4.0.tgz";
- path = fetchurl {
- name = "object_keys___object_keys_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz";
- sha1 = "28a6aae7428dd2c3a92f3d95f21335dd204e0336";
- };
- }
-
- {
- name = "object_visit___object_visit_1.0.1.tgz";
- path = fetchurl {
- name = "object_visit___object_visit_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz";
- sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
- };
- }
-
- {
- name = "object.defaults___object.defaults_1.1.0.tgz";
- path = fetchurl {
- name = "object.defaults___object.defaults_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz";
- sha1 = "3a7f868334b407dea06da16d88d5cd29e435fecf";
- };
- }
-
- {
- name = "object.map___object.map_1.0.1.tgz";
- path = fetchurl {
- name = "object.map___object.map_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz";
- sha1 = "cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37";
- };
- }
-
- {
- name = "object.omit___object.omit_2.0.1.tgz";
- path = fetchurl {
- name = "object.omit___object.omit_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz";
- sha1 = "1a9c744829f39dbb858c76ca3579ae2a54ebd1fa";
- };
- }
-
- {
- name = "object.pick___object.pick_1.3.0.tgz";
- path = fetchurl {
- name = "object.pick___object.pick_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz";
- sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
- };
- }
-
- {
- name = "on_finished___on_finished_2.3.0.tgz";
- path = fetchurl {
- name = "on_finished___on_finished_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
- sha1 = "20f1336481b083cd75337992a16971aa2d906947";
- };
- }
-
- {
- name = "once___once_1.4.0.tgz";
- path = fetchurl {
- name = "once___once_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
- sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
- };
- }
-
- {
- name = "once___once_1.3.3.tgz";
- path = fetchurl {
- name = "once___once_1.3.3.tgz";
- url = "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz";
- sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20";
- };
- }
-
- {
- name = "opn___opn_0.1.2.tgz";
- path = fetchurl {
- name = "opn___opn_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/opn/-/opn-0.1.2.tgz";
- sha1 = "c527832cfd964d52096b524d0035ecaece51db4f";
- };
- }
-
- {
- name = "optimist___optimist_0.6.1.tgz";
- path = fetchurl {
- name = "optimist___optimist_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz";
- sha1 = "da3ea74686fa21a19a111c326e90eb15a0196686";
- };
- }
-
- {
- name = "optimist___optimist_0.3.7.tgz";
- path = fetchurl {
- name = "optimist___optimist_0.3.7.tgz";
- url = "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz";
- sha1 = "c90941ad59e4273328923074d2cf2e7cbc6ec0d9";
- };
- }
-
- {
- name = "optionator___optionator_0.8.3.tgz";
- path = fetchurl {
- name = "optionator___optionator_0.8.3.tgz";
- url = "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz";
- sha1 = "84fa1d036fe9d3c7e21d99884b601167ec8fb495";
- };
- }
-
- {
- name = "options___options_0.0.6.tgz";
- path = fetchurl {
- name = "options___options_0.0.6.tgz";
- url = "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz";
- sha1 = "ec22d312806bb53e731773e7cdaefcf1c643128f";
- };
- }
-
- {
- name = "orchestrator___orchestrator_0.3.8.tgz";
- path = fetchurl {
- name = "orchestrator___orchestrator_0.3.8.tgz";
- url = "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz";
- sha1 = "14e7e9e2764f7315fbac184e506c7aa6df94ad7e";
- };
- }
-
- {
- name = "ordered_ast_traverse___ordered_ast_traverse_1.1.1.tgz";
- path = fetchurl {
- name = "ordered_ast_traverse___ordered_ast_traverse_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/ordered-ast-traverse/-/ordered-ast-traverse-1.1.1.tgz";
- sha1 = "6843a170bc0eee8b520cc8ddc1ddd3aa30fa057c";
- };
- }
-
- {
- name = "ordered_esprima_props___ordered_esprima_props_1.1.0.tgz";
- path = fetchurl {
- name = "ordered_esprima_props___ordered_esprima_props_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/ordered-esprima-props/-/ordered-esprima-props-1.1.0.tgz";
- sha1 = "a9827086df5f010aa60e9bd02b6e0335cea2ffcb";
- };
- }
-
- {
- name = "ordered_read_streams___ordered_read_streams_0.1.0.tgz";
- path = fetchurl {
- name = "ordered_read_streams___ordered_read_streams_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz";
- sha1 = "fd565a9af8eb4473ba69b6ed8a34352cb552f126";
- };
- }
-
- {
- name = "os_browserify___os_browserify_0.1.2.tgz";
- path = fetchurl {
- name = "os_browserify___os_browserify_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz";
- sha1 = "49ca0293e0b19590a5f5de10c7f265a617d8fe54";
- };
- }
-
- {
- name = "os_homedir___os_homedir_1.0.2.tgz";
- path = fetchurl {
- name = "os_homedir___os_homedir_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz";
- sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
- };
- }
-
- {
- name = "os_locale___os_locale_1.4.0.tgz";
- path = fetchurl {
- name = "os_locale___os_locale_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz";
- sha1 = "20f9f17ae29ed345e8bde583b13d2009803c14d9";
- };
- }
-
- {
- name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
- path = fetchurl {
- name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
- sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
- };
- }
-
- {
- name = "osenv___osenv_0.1.5.tgz";
- path = fetchurl {
- name = "osenv___osenv_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz";
- sha1 = "85cdfafaeb28e8677f416e287592b5f3f49ea410";
- };
- }
-
- {
- name = "osenv___osenv_0.0.3.tgz";
- path = fetchurl {
- name = "osenv___osenv_0.0.3.tgz";
- url = "https://registry.yarnpkg.com/osenv/-/osenv-0.0.3.tgz";
- sha1 = "cd6ad8ddb290915ad9e22765576025d411f29cb6";
- };
- }
-
- {
- name = "p_throttler___p_throttler_0.0.1.tgz";
- path = fetchurl {
- name = "p_throttler___p_throttler_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/p-throttler/-/p-throttler-0.0.1.tgz";
- sha1 = "c341e3589ec843852a035e6f88e6c1e96150029b";
- };
- }
-
- {
- name = "package_json___package_json_1.2.0.tgz";
- path = fetchurl {
- name = "package_json___package_json_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/package-json/-/package-json-1.2.0.tgz";
- sha1 = "c8ecac094227cdf76a316874ed05e27cc939a0e0";
- };
- }
-
- {
- name = "pako___pako_0.2.9.tgz";
- path = fetchurl {
- name = "pako___pako_0.2.9.tgz";
- url = "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz";
- sha1 = "f3f7522f4ef782348da8161bad9ecfd51bf83a75";
- };
- }
-
- {
- name = "parents___parents_0.0.2.tgz";
- path = fetchurl {
- name = "parents___parents_0.0.2.tgz";
- url = "https://registry.yarnpkg.com/parents/-/parents-0.0.2.tgz";
- sha1 = "67147826e497d40759aaf5ba4c99659b6034d302";
- };
- }
-
- {
- name = "parents___parents_0.0.3.tgz";
- path = fetchurl {
- name = "parents___parents_0.0.3.tgz";
- url = "https://registry.yarnpkg.com/parents/-/parents-0.0.3.tgz";
- sha1 = "fa212f024d9fa6318dbb6b4ce676c8be493b9c43";
- };
- }
-
- {
- name = "parse_filepath___parse_filepath_1.0.2.tgz";
- path = fetchurl {
- name = "parse_filepath___parse_filepath_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz";
- sha1 = "a632127f53aaf3d15876f5872f3ffac763d6c891";
- };
- }
-
- {
- name = "parse_glob___parse_glob_3.0.4.tgz";
- path = fetchurl {
- name = "parse_glob___parse_glob_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz";
- sha1 = "b2c376cfb11f35513badd173ef0bb6e3a388391c";
- };
- }
-
- {
- name = "parse_json___parse_json_2.2.0.tgz";
- path = fetchurl {
- name = "parse_json___parse_json_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz";
- sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
- };
- }
-
- {
- name = "parse_node_version___parse_node_version_1.0.1.tgz";
- path = fetchurl {
- name = "parse_node_version___parse_node_version_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz";
- sha1 = "e2b5dbede00e7fa9bc363607f53327e8b073189b";
- };
- }
-
- {
- name = "parse_passwd___parse_passwd_1.0.0.tgz";
- path = fetchurl {
- name = "parse_passwd___parse_passwd_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz";
- sha1 = "6d5b934a456993b23d37f40a382d6f1666a8e5c6";
- };
- }
-
- {
- name = "parsejson___parsejson_0.0.3.tgz";
- path = fetchurl {
- name = "parsejson___parsejson_0.0.3.tgz";
- url = "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz";
- sha1 = "ab7e3759f209ece99437973f7d0f1f64ae0e64ab";
- };
- }
-
- {
- name = "parseqs___parseqs_0.0.5.tgz";
- path = fetchurl {
- name = "parseqs___parseqs_0.0.5.tgz";
- url = "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz";
- sha1 = "d5208a3738e46766e291ba2ea173684921a8b89d";
- };
- }
-
- {
- name = "parseuri___parseuri_0.0.5.tgz";
- path = fetchurl {
- name = "parseuri___parseuri_0.0.5.tgz";
- url = "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz";
- sha1 = "80204a50d4dbb779bfdc6ebe2778d90e4bce320a";
- };
- }
-
- {
- name = "parseurl___parseurl_1.3.3.tgz";
- path = fetchurl {
- name = "parseurl___parseurl_1.3.3.tgz";
- url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz";
- sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4";
- };
- }
-
- {
- name = "pascalcase___pascalcase_0.1.1.tgz";
- path = fetchurl {
- name = "pascalcase___pascalcase_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz";
- sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
- };
- }
-
- {
- name = "path_browserify___path_browserify_0.0.1.tgz";
- path = fetchurl {
- name = "path_browserify___path_browserify_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz";
- sha1 = "e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a";
- };
- }
-
- {
- name = "path_exists___path_exists_2.1.0.tgz";
- path = fetchurl {
- name = "path_exists___path_exists_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz";
- sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
- };
- }
-
- {
- name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
- path = fetchurl {
- name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
- sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
- };
- }
-
- {
- name = "path_parse___path_parse_1.0.6.tgz";
- path = fetchurl {
- name = "path_parse___path_parse_1.0.6.tgz";
- url = "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz";
- sha1 = "d62dbb5679405d72c4737ec58600e9ddcf06d24c";
- };
- }
-
- {
- name = "path_platform___path_platform_0.0.1.tgz";
- path = fetchurl {
- name = "path_platform___path_platform_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/path-platform/-/path-platform-0.0.1.tgz";
- sha1 = "b5585d7c3c463d89aa0060d86611cf1afd617e2a";
- };
- }
-
- {
- name = "path_root_regex___path_root_regex_0.1.2.tgz";
- path = fetchurl {
- name = "path_root_regex___path_root_regex_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz";
- sha1 = "bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d";
- };
- }
-
- {
- name = "path_root___path_root_0.1.1.tgz";
- path = fetchurl {
- name = "path_root___path_root_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz";
- sha1 = "9a4a6814cac1c0cd73360a95f32083c8ea4745b7";
- };
- }
-
- {
- name = "path_type___path_type_1.1.0.tgz";
- path = fetchurl {
- name = "path_type___path_type_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz";
- sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441";
- };
- }
-
- {
- name = "pause_stream___pause_stream_0.0.11.tgz";
- path = fetchurl {
- name = "pause_stream___pause_stream_0.0.11.tgz";
- url = "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz";
- sha1 = "fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445";
- };
- }
-
- {
- name = "performance_now___performance_now_2.1.0.tgz";
- path = fetchurl {
- name = "performance_now___performance_now_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
- sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
- };
- }
-
- {
- name = "pify___pify_2.3.0.tgz";
- path = fetchurl {
- name = "pify___pify_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
- sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
- };
- }
-
- {
- name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
- path = fetchurl {
- name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
- sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
- };
- }
-
- {
- name = "pinkie___pinkie_2.0.4.tgz";
- path = fetchurl {
- name = "pinkie___pinkie_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz";
- sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
- };
- }
-
- {
- name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
- path = fetchurl {
- name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
- sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
- };
- }
-
- {
- name = "prelude_ls___prelude_ls_1.1.2.tgz";
- path = fetchurl {
- name = "prelude_ls___prelude_ls_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz";
- sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
- };
- }
-
- {
- name = "prepend_http___prepend_http_1.0.4.tgz";
- path = fetchurl {
- name = "prepend_http___prepend_http_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz";
- sha1 = "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc";
- };
- }
-
- {
- name = "preserve___preserve_0.2.0.tgz";
- path = fetchurl {
- name = "preserve___preserve_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz";
- sha1 = "815ed1f6ebc65926f865b310c0713bcb3315ce4b";
- };
- }
-
- {
- name = "pretty_hrtime___pretty_hrtime_1.0.3.tgz";
- path = fetchurl {
- name = "pretty_hrtime___pretty_hrtime_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz";
- sha1 = "b7e3ea42435a4c9b2759d99e0f201eb195802ee1";
- };
- }
-
- {
- name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
- path = fetchurl {
- name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
- sha1 = "7820d9b16120cc55ca9ae7792680ae7dba6d7fe2";
- };
- }
-
- {
- name = "process___process_0.7.0.tgz";
- path = fetchurl {
- name = "process___process_0.7.0.tgz";
- url = "https://registry.yarnpkg.com/process/-/process-0.7.0.tgz";
- sha1 = "c52208161a34adf3812344ae85d3e6150469389d";
- };
- }
-
- {
- name = "process___process_0.5.2.tgz";
- path = fetchurl {
- name = "process___process_0.5.2.tgz";
- url = "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz";
- sha1 = "1638d8a8e34c2f440a91db95ab9aeb677fc185cf";
- };
- }
-
- {
- name = "process___process_0.6.0.tgz";
- path = fetchurl {
- name = "process___process_0.6.0.tgz";
- url = "https://registry.yarnpkg.com/process/-/process-0.6.0.tgz";
- sha1 = "7dd9be80ffaaedd4cb628f1827f1cbab6dc0918f";
- };
- }
-
- {
- name = "promise___promise_7.3.1.tgz";
- path = fetchurl {
- name = "promise___promise_7.3.1.tgz";
- url = "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz";
- sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf";
- };
- }
-
- {
- name = "promptly___promptly_0.2.1.tgz";
- path = fetchurl {
- name = "promptly___promptly_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/promptly/-/promptly-0.2.1.tgz";
- sha1 = "6444e7ca4dbd9899e7eeb5ec3922827ebdc22b3b";
- };
- }
-
- {
- name = "pseudomap___pseudomap_1.0.2.tgz";
- path = fetchurl {
- name = "pseudomap___pseudomap_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz";
- sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
- };
- }
-
- {
- name = "psl___psl_1.8.0.tgz";
- path = fetchurl {
- name = "psl___psl_1.8.0.tgz";
- url = "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz";
- sha1 = "9326f8bcfb013adcc005fdff056acce020e51c24";
- };
- }
-
- {
- name = "pug_attrs___pug_attrs_2.0.4.tgz";
- path = fetchurl {
- name = "pug_attrs___pug_attrs_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz";
- sha1 = "b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336";
- };
- }
-
- {
- name = "pug_code_gen___pug_code_gen_2.0.2.tgz";
- path = fetchurl {
- name = "pug_code_gen___pug_code_gen_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.2.tgz";
- sha1 = "ad0967162aea077dcf787838d94ed14acb0217c2";
- };
- }
-
- {
- name = "pug_error___pug_error_1.3.3.tgz";
- path = fetchurl {
- name = "pug_error___pug_error_1.3.3.tgz";
- url = "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz";
- sha1 = "f342fb008752d58034c185de03602dd9ffe15fa6";
- };
- }
-
- {
- name = "pug_filters___pug_filters_3.1.1.tgz";
- path = fetchurl {
- name = "pug_filters___pug_filters_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz";
- sha1 = "ab2cc82db9eeccf578bda89130e252a0db026aa7";
- };
- }
-
- {
- name = "pug_lexer___pug_lexer_4.1.0.tgz";
- path = fetchurl {
- name = "pug_lexer___pug_lexer_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz";
- sha1 = "531cde48c7c0b1fcbbc2b85485c8665e31489cfd";
- };
- }
-
- {
- name = "pug_linker___pug_linker_3.0.6.tgz";
- path = fetchurl {
- name = "pug_linker___pug_linker_3.0.6.tgz";
- url = "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz";
- sha1 = "f5bf218b0efd65ce6670f7afc51658d0f82989fb";
- };
- }
-
- {
- name = "pug_load___pug_load_2.0.12.tgz";
- path = fetchurl {
- name = "pug_load___pug_load_2.0.12.tgz";
- url = "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz";
- sha1 = "d38c85eb85f6e2f704dea14dcca94144d35d3e7b";
- };
- }
-
- {
- name = "pug_parser___pug_parser_5.0.1.tgz";
- path = fetchurl {
- name = "pug_parser___pug_parser_5.0.1.tgz";
- url = "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz";
- sha1 = "03e7ada48b6840bd3822f867d7d90f842d0ffdc9";
- };
- }
-
- {
- name = "pug_runtime___pug_runtime_2.0.5.tgz";
- path = fetchurl {
- name = "pug_runtime___pug_runtime_2.0.5.tgz";
- url = "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz";
- sha1 = "6da7976c36bf22f68e733c359240d8ae7a32953a";
- };
- }
-
- {
- name = "pug_strip_comments___pug_strip_comments_1.0.4.tgz";
- path = fetchurl {
- name = "pug_strip_comments___pug_strip_comments_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz";
- sha1 = "cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8";
- };
- }
-
- {
- name = "pug_walk___pug_walk_1.1.8.tgz";
- path = fetchurl {
- name = "pug_walk___pug_walk_1.1.8.tgz";
- url = "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz";
- sha1 = "b408f67f27912f8c21da2f45b7230c4bd2a5ea7a";
- };
- }
-
- {
- name = "pug___pug_2.0.4.tgz";
- path = fetchurl {
- name = "pug___pug_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz";
- sha1 = "ee7682ec0a60494b38d48a88f05f3b0ac931377d";
- };
- }
-
- {
- name = "punycode___punycode_1.3.2.tgz";
- path = fetchurl {
- name = "punycode___punycode_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz";
- sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
- };
- }
-
- {
- name = "punycode___punycode_2.1.1.tgz";
- path = fetchurl {
- name = "punycode___punycode_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
- sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
- };
- }
-
- {
- name = "punycode___punycode_1.2.4.tgz";
- path = fetchurl {
- name = "punycode___punycode_1.2.4.tgz";
- url = "https://registry.yarnpkg.com/punycode/-/punycode-1.2.4.tgz";
- sha1 = "54008ac972aec74175def9cba6df7fa9d3918740";
- };
- }
-
- {
- name = "q___q_1.5.1.tgz";
- path = fetchurl {
- name = "q___q_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz";
- sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
- };
- }
-
- {
- name = "q___q_0.9.7.tgz";
- path = fetchurl {
- name = "q___q_0.9.7.tgz";
- url = "https://registry.yarnpkg.com/q/-/q-0.9.7.tgz";
- sha1 = "4de2e6cb3b29088c9e4cbc03bf9d42fb96ce2f75";
- };
- }
-
- {
- name = "q___q_1.0.1.tgz";
- path = fetchurl {
- name = "q___q_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/q/-/q-1.0.1.tgz";
- sha1 = "11872aeedee89268110b10a718448ffb10112a14";
- };
- }
-
- {
- name = "qs___qs_5.2.0.tgz";
- path = fetchurl {
- name = "qs___qs_5.2.0.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-5.2.0.tgz";
- sha1 = "a9f31142af468cb72b25b30136ba2456834916be";
- };
- }
-
- {
- name = "qs___qs_6.7.0.tgz";
- path = fetchurl {
- name = "qs___qs_6.7.0.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz";
- sha1 = "41dc1a015e3d581f1621776be31afb2876a9b1bc";
- };
- }
-
- {
- name = "qs___qs_0.6.6.tgz";
- path = fetchurl {
- name = "qs___qs_0.6.6.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-0.6.6.tgz";
- sha1 = "6e015098ff51968b8a3c819001d5f2c89bc4b107";
- };
- }
-
- {
- name = "qs___qs_1.0.2.tgz";
- path = fetchurl {
- name = "qs___qs_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-1.0.2.tgz";
- sha1 = "50a93e2b5af6691c31bcea5dae78ee6ea1903768";
- };
- }
-
- {
- name = "qs___qs_2.2.5.tgz";
- path = fetchurl {
- name = "qs___qs_2.2.5.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-2.2.5.tgz";
- sha1 = "1088abaf9dcc0ae5ae45b709e6c6b5888b23923c";
- };
- }
-
- {
- name = "qs___qs_2.3.3.tgz";
- path = fetchurl {
- name = "qs___qs_2.3.3.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz";
- sha1 = "e9e85adbe75da0bbe4c8e0476a086290f863b404";
- };
- }
-
- {
- name = "qs___qs_6.5.2.tgz";
- path = fetchurl {
- name = "qs___qs_6.5.2.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
- sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
- };
- }
-
- {
- name = "querystring_es3___querystring_es3_0.2.0.tgz";
- path = fetchurl {
- name = "querystring_es3___querystring_es3_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.0.tgz";
- sha1 = "c365a08a69c443accfeb3a9deab35e3f0abaa476";
- };
- }
-
- {
- name = "querystring___querystring_0.2.0.tgz";
- path = fetchurl {
- name = "querystring___querystring_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz";
- sha1 = "b209849203bb25df820da756e747005878521620";
- };
- }
-
- {
- name = "randomatic___randomatic_3.1.1.tgz";
- path = fetchurl {
- name = "randomatic___randomatic_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz";
- sha1 = "b776efc59375984e36c537b2f51a1f0aff0da1ed";
- };
- }
-
- {
- name = "range_parser___range_parser_1.0.3.tgz";
- path = fetchurl {
- name = "range_parser___range_parser_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz";
- sha1 = "6872823535c692e2c2a0103826afd82c2e0ff175";
- };
- }
-
- {
- name = "raw_body___raw_body_2.4.0.tgz";
- path = fetchurl {
- name = "raw_body___raw_body_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz";
- sha1 = "a1ce6fb9c9bc356ca52e89256ab59059e13d0332";
- };
- }
-
- {
- name = "raw_body___raw_body_2.1.7.tgz";
- path = fetchurl {
- name = "raw_body___raw_body_2.1.7.tgz";
- url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz";
- sha1 = "adfeace2e4fb3098058014d08c072dcc59758774";
- };
- }
-
- {
- name = "rc___rc_1.2.8.tgz";
- path = fetchurl {
- name = "rc___rc_1.2.8.tgz";
- url = "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz";
- sha1 = "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed";
- };
- }
-
- {
- name = "read_all_stream___read_all_stream_3.1.0.tgz";
- path = fetchurl {
- name = "read_all_stream___read_all_stream_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz";
- sha1 = "35c3e177f2078ef789ee4bfafa4373074eaef4fa";
- };
- }
-
- {
- name = "read_pkg_up___read_pkg_up_1.0.1.tgz";
- path = fetchurl {
- name = "read_pkg_up___read_pkg_up_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz";
- sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02";
- };
- }
-
- {
- name = "read_pkg___read_pkg_1.1.0.tgz";
- path = fetchurl {
- name = "read_pkg___read_pkg_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz";
- sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28";
- };
- }
-
- {
- name = "read___read_1.0.7.tgz";
- path = fetchurl {
- name = "read___read_1.0.7.tgz";
- url = "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz";
- sha1 = "b3da19bd052431a97671d44a42634adf710b40c4";
- };
- }
-
- {
- name = "readable_stream___readable_stream_1.0.34.tgz";
- path = fetchurl {
- name = "readable_stream___readable_stream_1.0.34.tgz";
- url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz";
- sha1 = "125820e34bc842d2f2aaafafe4c2916ee32c157c";
- };
- }
-
- {
- name = "readable_stream___readable_stream_1.1.14.tgz";
- path = fetchurl {
- name = "readable_stream___readable_stream_1.1.14.tgz";
- url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz";
- sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
- };
- }
-
- {
- name = "readable_stream___readable_stream_2.3.7.tgz";
- path = fetchurl {
- name = "readable_stream___readable_stream_2.3.7.tgz";
- url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz";
- sha1 = "1eca1cf711aef814c04f62252a36a62f6cb23b57";
- };
- }
-
- {
- name = "readdirp___readdirp_2.2.1.tgz";
- path = fetchurl {
- name = "readdirp___readdirp_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz";
- sha1 = "0e87622a3325aa33e892285caf8b4e846529a525";
- };
- }
-
- {
- name = "readline2___readline2_0.1.1.tgz";
- path = fetchurl {
- name = "readline2___readline2_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/readline2/-/readline2-0.1.1.tgz";
- sha1 = "99443ba6e83b830ef3051bfd7dc241a82728d568";
- };
- }
-
- {
- name = "rechoir___rechoir_0.6.2.tgz";
- path = fetchurl {
- name = "rechoir___rechoir_0.6.2.tgz";
- url = "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz";
- sha1 = "85204b54dba82d5742e28c96756ef43af50e3384";
- };
- }
-
- {
- name = "redent___redent_1.0.0.tgz";
- path = fetchurl {
- name = "redent___redent_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz";
- sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde";
- };
- }
-
- {
- name = "redeyed___redeyed_0.4.4.tgz";
- path = fetchurl {
- name = "redeyed___redeyed_0.4.4.tgz";
- url = "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz";
- sha1 = "37e990a6f2b21b2a11c2e6a48fd4135698cba97f";
- };
- }
-
- {
- name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
- path = fetchurl {
- name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
- url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
- sha1 = "be05ad7f9bf7d22e056f9726cee5017fbf19e2e9";
- };
- }
-
- {
- name = "regex_cache___regex_cache_0.4.4.tgz";
- path = fetchurl {
- name = "regex_cache___regex_cache_0.4.4.tgz";
- url = "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz";
- sha1 = "75bdc58a2a1496cec48a12835bc54c8d562336dd";
- };
- }
-
- {
- name = "regex_not___regex_not_1.0.2.tgz";
- path = fetchurl {
- name = "regex_not___regex_not_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz";
- sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c";
- };
- }
-
- {
- name = "registry_url___registry_url_3.1.0.tgz";
- path = fetchurl {
- name = "registry_url___registry_url_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz";
- sha1 = "3d4ef870f73dde1d77f0cf9a381432444e174942";
- };
- }
-
- {
- name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
- path = fetchurl {
- name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
- sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
- };
- }
-
- {
- name = "repeat_element___repeat_element_1.1.3.tgz";
- path = fetchurl {
- name = "repeat_element___repeat_element_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz";
- sha1 = "782e0d825c0c5a3bb39731f84efee6b742e6b1ce";
- };
- }
-
- {
- name = "repeat_string___repeat_string_0.2.2.tgz";
- path = fetchurl {
- name = "repeat_string___repeat_string_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz";
- sha1 = "c7a8d3236068362059a7e4651fc6884e8b1fb4ae";
- };
- }
-
- {
- name = "repeat_string___repeat_string_1.6.1.tgz";
- path = fetchurl {
- name = "repeat_string___repeat_string_1.6.1.tgz";
- url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz";
- sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
- };
- }
-
- {
- name = "repeating___repeating_2.0.1.tgz";
- path = fetchurl {
- name = "repeating___repeating_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz";
- sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
- };
- }
-
- {
- name = "replace_ext___replace_ext_0.0.1.tgz";
- path = fetchurl {
- name = "replace_ext___replace_ext_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz";
- sha1 = "29bbd92078a739f0bcce2b4ee41e837953522924";
- };
- }
-
- {
- name = "replace_ext___replace_ext_1.0.0.tgz";
- path = fetchurl {
- name = "replace_ext___replace_ext_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz";
- sha1 = "de63128373fcbf7c3ccfa4de5a480c45a67958eb";
- };
- }
-
- {
- name = "replacestream___replacestream_4.0.3.tgz";
- path = fetchurl {
- name = "replacestream___replacestream_4.0.3.tgz";
- url = "https://registry.yarnpkg.com/replacestream/-/replacestream-4.0.3.tgz";
- sha1 = "3ee5798092be364b1cdb1484308492cb3dff2f36";
- };
- }
-
- {
- name = "request_progress___request_progress_0.3.1.tgz";
- path = fetchurl {
- name = "request_progress___request_progress_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/request-progress/-/request-progress-0.3.1.tgz";
- sha1 = "0721c105d8a96ac6b2ce8b2c89ae2d5ecfcf6b3a";
- };
- }
-
- {
- name = "request_replay___request_replay_0.2.0.tgz";
- path = fetchurl {
- name = "request_replay___request_replay_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/request-replay/-/request-replay-0.2.0.tgz";
- sha1 = "9b693a5d118b39f5c596ead5ed91a26444057f60";
- };
- }
-
- {
- name = "request___request_2.88.2.tgz";
- path = fetchurl {
- name = "request___request_2.88.2.tgz";
- url = "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz";
- sha1 = "d73c918731cb5a87da047e207234146f664d12b3";
- };
- }
-
- {
- name = "request___request_2.27.0.tgz";
- path = fetchurl {
- name = "request___request_2.27.0.tgz";
- url = "https://registry.yarnpkg.com/request/-/request-2.27.0.tgz";
- sha1 = "dfb1a224dd3a5a9bade4337012503d710e538668";
- };
- }
-
- {
- name = "request___request_2.36.0.tgz";
- path = fetchurl {
- name = "request___request_2.36.0.tgz";
- url = "https://registry.yarnpkg.com/request/-/request-2.36.0.tgz";
- sha1 = "28c6c04262c7b9ffdd21b9255374517ee6d943f5";
- };
- }
-
- {
- name = "request___request_2.40.0.tgz";
- path = fetchurl {
- name = "request___request_2.40.0.tgz";
- url = "https://registry.yarnpkg.com/request/-/request-2.40.0.tgz";
- sha1 = "4dd670f696f1e6e842e66b4b5e839301ab9beb67";
- };
- }
-
- {
- name = "request___request_2.51.0.tgz";
- path = fetchurl {
- name = "request___request_2.51.0.tgz";
- url = "https://registry.yarnpkg.com/request/-/request-2.51.0.tgz";
- sha1 = "35d00bbecc012e55f907b1bd9e0dbd577bfef26e";
- };
- }
-
- {
- name = "require_directory___require_directory_2.1.1.tgz";
- path = fetchurl {
- name = "require_directory___require_directory_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
- sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
- };
- }
-
- {
- name = "require_main_filename___require_main_filename_1.0.1.tgz";
- path = fetchurl {
- name = "require_main_filename___require_main_filename_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz";
- sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
- };
- }
-
- {
- name = "requires_port___requires_port_1.0.0.tgz";
- path = fetchurl {
- name = "requires_port___requires_port_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz";
- sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
- };
- }
-
- {
- name = "resolve_dir___resolve_dir_1.0.1.tgz";
- path = fetchurl {
- name = "resolve_dir___resolve_dir_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz";
- sha1 = "79a40644c362be82f26effe739c9bb5382046f43";
- };
- }
-
- {
- name = "resolve_url___resolve_url_0.2.1.tgz";
- path = fetchurl {
- name = "resolve_url___resolve_url_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz";
- sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
- };
- }
-
- {
- name = "resolve___resolve_0.6.3.tgz";
- path = fetchurl {
- name = "resolve___resolve_0.6.3.tgz";
- url = "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz";
- sha1 = "dd957982e7e736debdf53b58a4dd91754575dd46";
- };
- }
-
- {
- name = "resolve___resolve_1.1.7.tgz";
- path = fetchurl {
- name = "resolve___resolve_1.1.7.tgz";
- url = "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz";
- sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b";
- };
- }
-
- {
- name = "resolve___resolve_1.15.1.tgz";
- path = fetchurl {
- name = "resolve___resolve_1.15.1.tgz";
- url = "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz";
- sha1 = "27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8";
- };
- }
-
- {
- name = "resolve___resolve_0.3.1.tgz";
- path = fetchurl {
- name = "resolve___resolve_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/resolve/-/resolve-0.3.1.tgz";
- sha1 = "34c63447c664c70598d1c9b126fc43b2a24310a4";
- };
- }
-
- {
- name = "ret___ret_0.1.15.tgz";
- path = fetchurl {
- name = "ret___ret_0.1.15.tgz";
- url = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz";
- sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc";
- };
- }
-
- {
- name = "retry___retry_0.6.1.tgz";
- path = fetchurl {
- name = "retry___retry_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/retry/-/retry-0.6.1.tgz";
- sha1 = "fdc90eed943fde11b893554b8cc63d0e899ba918";
- };
- }
-
- {
- name = "rfile___rfile_1.0.0.tgz";
- path = fetchurl {
- name = "rfile___rfile_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/rfile/-/rfile-1.0.0.tgz";
- sha1 = "59708cf90ca1e74c54c3cfc5c36fdb9810435261";
- };
- }
-
- {
- name = "right_align___right_align_0.1.3.tgz";
- path = fetchurl {
- name = "right_align___right_align_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz";
- sha1 = "61339b722fe6a3515689210d24e14c96148613ef";
- };
- }
-
- {
- name = "rimraf___rimraf_2.7.1.tgz";
- path = fetchurl {
- name = "rimraf___rimraf_2.7.1.tgz";
- url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz";
- sha1 = "35797f13a7fdadc566142c29d4f07ccad483e3ec";
- };
- }
-
- {
- name = "rimraf___rimraf_2.2.8.tgz";
- path = fetchurl {
- name = "rimraf___rimraf_2.2.8.tgz";
- url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz";
- sha1 = "e439be2aaee327321952730f99a8929e4fc50582";
- };
- }
-
- {
- name = "rimraf___rimraf_2.4.5.tgz";
- path = fetchurl {
- name = "rimraf___rimraf_2.4.5.tgz";
- url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz";
- sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
- };
- }
-
- {
- name = "ruglify___ruglify_1.0.0.tgz";
- path = fetchurl {
- name = "ruglify___ruglify_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/ruglify/-/ruglify-1.0.0.tgz";
- sha1 = "dc8930e2a9544a274301cc9972574c0d0986b675";
- };
- }
-
- {
- name = "run_sequence___run_sequence_1.1.5.tgz";
- path = fetchurl {
- name = "run_sequence___run_sequence_1.1.5.tgz";
- url = "https://registry.yarnpkg.com/run-sequence/-/run-sequence-1.1.5.tgz";
- sha1 = "556bd47eb47877349e36c9c582748897db7be4f7";
- };
- }
-
- {
- name = "safe_buffer___safe_buffer_5.2.0.tgz";
- path = fetchurl {
- name = "safe_buffer___safe_buffer_5.2.0.tgz";
- url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz";
- sha1 = "b74daec49b1148f88c64b68d49b1e815c1f2f519";
- };
- }
-
- {
- name = "safe_buffer___safe_buffer_5.1.2.tgz";
- path = fetchurl {
- name = "safe_buffer___safe_buffer_5.1.2.tgz";
- url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
- sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
- };
- }
-
- {
- name = "safe_regex___safe_regex_1.1.0.tgz";
- path = fetchurl {
- name = "safe_regex___safe_regex_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz";
- sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
- };
- }
-
- {
- name = "safer_buffer___safer_buffer_2.1.2.tgz";
- path = fetchurl {
- name = "safer_buffer___safer_buffer_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
- sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
- };
- }
-
- {
- name = "sass_graph___sass_graph_2.2.4.tgz";
- path = fetchurl {
- name = "sass_graph___sass_graph_2.2.4.tgz";
- url = "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz";
- sha1 = "13fbd63cd1caf0908b9fd93476ad43a51d1e0b49";
- };
- }
-
- {
- name = "sax___sax_1.2.4.tgz";
- path = fetchurl {
- name = "sax___sax_1.2.4.tgz";
- url = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
- sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
- };
- }
-
- {
- name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz";
- path = fetchurl {
- name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz";
- sha1 = "8eb06db9a9723333824d3f5530641149847ce5d1";
- };
- }
-
- {
- name = "semver_diff___semver_diff_2.1.0.tgz";
- path = fetchurl {
- name = "semver_diff___semver_diff_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz";
- sha1 = "4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36";
- };
- }
-
- {
- name = "semver___semver_5.7.1.tgz";
- path = fetchurl {
- name = "semver___semver_5.7.1.tgz";
- url = "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz";
- sha1 = "a954f931aeba508d307bbf069eff0c01c96116f7";
- };
- }
-
- {
- name = "semver___semver_4.3.6.tgz";
- path = fetchurl {
- name = "semver___semver_4.3.6.tgz";
- url = "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz";
- sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da";
- };
- }
-
- {
- name = "semver___semver_2.3.2.tgz";
- path = fetchurl {
- name = "semver___semver_2.3.2.tgz";
- url = "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz";
- sha1 = "b9848f25d6cf36333073ec9ef8856d42f1233e52";
- };
- }
-
- {
- name = "semver___semver_5.3.0.tgz";
- path = fetchurl {
- name = "semver___semver_5.3.0.tgz";
- url = "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz";
- sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
- };
- }
-
- {
- name = "send___send_0.13.2.tgz";
- path = fetchurl {
- name = "send___send_0.13.2.tgz";
- url = "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz";
- sha1 = "765e7607c8055452bba6f0b052595350986036de";
- };
- }
-
- {
- name = "sequencify___sequencify_0.0.7.tgz";
- path = fetchurl {
- name = "sequencify___sequencify_0.0.7.tgz";
- url = "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz";
- sha1 = "90cff19d02e07027fd767f5ead3e7b95d1e7380c";
- };
- }
-
- {
- name = "serve_static___serve_static_1.10.3.tgz";
- path = fetchurl {
- name = "serve_static___serve_static_1.10.3.tgz";
- url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.10.3.tgz";
- sha1 = "ce5a6ecd3101fed5ec09827dac22a9c29bfb0535";
- };
- }
-
- {
- name = "set_blocking___set_blocking_2.0.0.tgz";
- path = fetchurl {
- name = "set_blocking___set_blocking_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
- sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
- };
- }
-
- {
- name = "set_value___set_value_2.0.1.tgz";
- path = fetchurl {
- name = "set_value___set_value_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz";
- sha1 = "a18d40530e6f07de4228c7defe4227af8cad005b";
- };
- }
-
- {
- name = "setprototypeof___setprototypeof_1.1.1.tgz";
- path = fetchurl {
- name = "setprototypeof___setprototypeof_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz";
- sha1 = "7e95acb24aa92f5885e0abef5ba131330d4ae683";
- };
- }
-
- {
- name = "shallow_copy___shallow_copy_0.0.1.tgz";
- path = fetchurl {
- name = "shallow_copy___shallow_copy_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz";
- sha1 = "415f42702d73d810330292cc5ee86eae1a11a170";
- };
- }
-
- {
- name = "shell_quote___shell_quote_0.0.1.tgz";
- path = fetchurl {
- name = "shell_quote___shell_quote_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/shell-quote/-/shell-quote-0.0.1.tgz";
- sha1 = "1a41196f3c0333c482323593d6886ecf153dd986";
- };
- }
-
- {
- name = "shell_quote___shell_quote_1.4.3.tgz";
- path = fetchurl {
- name = "shell_quote___shell_quote_1.4.3.tgz";
- url = "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.4.3.tgz";
- sha1 = "952c44e0b1ed9013ef53958179cc643e8777466b";
- };
- }
-
- {
- name = "sigmund___sigmund_1.0.1.tgz";
- path = fetchurl {
- name = "sigmund___sigmund_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz";
- sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
- };
- }
-
- {
- name = "signal_exit___signal_exit_3.0.3.tgz";
- path = fetchurl {
- name = "signal_exit___signal_exit_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz";
- sha1 = "a1410c2edd8f077b08b4e253c8eacfcaf057461c";
- };
- }
-
- {
- name = "simple_fmt___simple_fmt_0.1.0.tgz";
- path = fetchurl {
- name = "simple_fmt___simple_fmt_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz";
- sha1 = "191bf566a59e6530482cb25ab53b4a8dc85c3a6b";
- };
- }
-
- {
- name = "simple_is___simple_is_0.2.0.tgz";
- path = fetchurl {
- name = "simple_is___simple_is_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz";
- sha1 = "2abb75aade39deb5cc815ce10e6191164850baf0";
- };
- }
-
- {
- name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
- path = fetchurl {
- name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
- sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b";
- };
- }
-
- {
- name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
- path = fetchurl {
- name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
- sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2";
- };
- }
-
- {
- name = "snapdragon___snapdragon_0.8.2.tgz";
- path = fetchurl {
- name = "snapdragon___snapdragon_0.8.2.tgz";
- url = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz";
- sha1 = "64922e7c565b0e14204ba1aa7d6964278d25182d";
- };
- }
-
- {
- name = "sntp___sntp_0.2.4.tgz";
- path = fetchurl {
- name = "sntp___sntp_0.2.4.tgz";
- url = "https://registry.yarnpkg.com/sntp/-/sntp-0.2.4.tgz";
- sha1 = "fb885f18b0f3aad189f824862536bceeec750900";
- };
- }
-
- {
- name = "socket.io_adapter___socket.io_adapter_0.5.0.tgz";
- path = fetchurl {
- name = "socket.io_adapter___socket.io_adapter_0.5.0.tgz";
- url = "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz";
- sha1 = "cb6d4bb8bec81e1078b99677f9ced0046066bb8b";
- };
- }
-
- {
- name = "socket.io_client___socket.io_client_1.7.4.tgz";
- path = fetchurl {
- name = "socket.io_client___socket.io_client_1.7.4.tgz";
- url = "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.4.tgz";
- sha1 = "ec9f820356ed99ef6d357f0756d648717bdd4281";
- };
- }
-
- {
- name = "socket.io_parser___socket.io_parser_2.3.1.tgz";
- path = fetchurl {
- name = "socket.io_parser___socket.io_parser_2.3.1.tgz";
- url = "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz";
- sha1 = "dd532025103ce429697326befd64005fcfe5b4a0";
- };
- }
-
- {
- name = "socket.io___socket.io_1.7.4.tgz";
- path = fetchurl {
- name = "socket.io___socket.io_1.7.4.tgz";
- url = "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.4.tgz";
- sha1 = "2f7ecedc3391bf2d5c73e291fe233e6e34d4dd00";
- };
- }
-
- {
- name = "source_map_resolve___source_map_resolve_0.5.3.tgz";
- path = fetchurl {
- name = "source_map_resolve___source_map_resolve_0.5.3.tgz";
- url = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz";
- sha1 = "190866bece7553e1f8f267a2ee82c606b5509a1a";
- };
- }
-
- {
- name = "source_map_url___source_map_url_0.4.0.tgz";
- path = fetchurl {
- name = "source_map_url___source_map_url_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz";
- sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
- };
- }
-
- {
- name = "source_map___source_map_0.1.34.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.1.34.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz";
- sha1 = "a7cfe89aec7b1682c3b198d0acfb47d7d090566b";
- };
- }
-
- {
- name = "source_map___source_map_0.1.43.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.1.43.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz";
- sha1 = "c24bc146ca517c1471f5dacbe2571b2b7f9e3346";
- };
- }
-
- {
- name = "source_map___source_map_0.4.4.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.4.4.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz";
- sha1 = "eba4f5da9c0dc999de68032d8b4f76173652036b";
- };
- }
-
- {
- name = "source_map___source_map_0.5.7.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.5.7.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz";
- sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
- };
- }
-
- {
- name = "source_map___source_map_0.6.1.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
- sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
- };
- }
-
- {
- name = "source_map___source_map_0.2.0.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz";
- sha1 = "dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d";
- };
- }
-
- {
- name = "source_map___source_map_0.3.0.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.3.0.tgz";
- sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9";
- };
- }
-
- {
- name = "sparkles___sparkles_1.0.1.tgz";
- path = fetchurl {
- name = "sparkles___sparkles_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz";
- sha1 = "008db65edce6c50eec0c5e228e1945061dd0437c";
- };
- }
-
- {
- name = "spdx_correct___spdx_correct_3.1.0.tgz";
- path = fetchurl {
- name = "spdx_correct___spdx_correct_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz";
- sha1 = "fb83e504445268f154b074e218c87c003cd31df4";
- };
- }
-
- {
- name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
- path = fetchurl {
- name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz";
- sha1 = "2ea450aee74f2a89bfb94519c07fcd6f41322977";
- };
- }
-
- {
- name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
- path = fetchurl {
- name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
- sha1 = "99e119b7a5da00e05491c9fa338b7904823b41d0";
- };
- }
-
- {
- name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz";
- path = fetchurl {
- name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz";
- url = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz";
- sha1 = "3694b5804567a458d3c8045842a6358632f62654";
- };
- }
-
- {
- name = "split_string___split_string_3.1.0.tgz";
- path = fetchurl {
- name = "split_string___split_string_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz";
- sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2";
- };
- }
-
- {
- name = "split___split_0.3.3.tgz";
- path = fetchurl {
- name = "split___split_0.3.3.tgz";
- url = "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz";
- sha1 = "cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f";
- };
- }
-
- {
- name = "split___split_1.0.1.tgz";
- path = fetchurl {
- name = "split___split_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz";
- sha1 = "605bd9be303aa59fb35f9229fbea0ddec9ea07d9";
- };
- }
-
- {
- name = "sprintf_js___sprintf_js_1.0.3.tgz";
- path = fetchurl {
- name = "sprintf_js___sprintf_js_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
- sha1 = "04e6926f662895354f3dd015203633b857297e2c";
- };
- }
-
- {
- name = "sshpk___sshpk_1.16.1.tgz";
- path = fetchurl {
- name = "sshpk___sshpk_1.16.1.tgz";
- url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz";
- sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877";
- };
- }
-
- {
- name = "stable___stable_0.1.8.tgz";
- path = fetchurl {
- name = "stable___stable_0.1.8.tgz";
- url = "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz";
- sha1 = "836eb3c8382fe2936feaf544631017ce7d47a3cf";
- };
- }
-
- {
- name = "static_extend___static_extend_0.1.2.tgz";
- path = fetchurl {
- name = "static_extend___static_extend_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz";
- sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
- };
- }
-
- {
- name = "statuses___statuses_1.5.0.tgz";
- path = fetchurl {
- name = "statuses___statuses_1.5.0.tgz";
- url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
- sha1 = "161c7dac177659fd9811f43771fa99381478628c";
- };
- }
-
- {
- name = "statuses___statuses_1.2.1.tgz";
- path = fetchurl {
- name = "statuses___statuses_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz";
- sha1 = "dded45cc18256d51ed40aec142489d5c61026d28";
- };
- }
-
- {
- name = "stdout_stream___stdout_stream_1.4.1.tgz";
- path = fetchurl {
- name = "stdout_stream___stdout_stream_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz";
- sha1 = "5ac174cdd5cd726104aa0c0b2bd83815d8d535de";
- };
- }
-
- {
- name = "stream_browserify___stream_browserify_0.1.3.tgz";
- path = fetchurl {
- name = "stream_browserify___stream_browserify_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-0.1.3.tgz";
- sha1 = "95cf1b369772e27adaf46352265152689c6c4be9";
- };
- }
-
- {
- name = "stream_combiner___stream_combiner_0.2.2.tgz";
- path = fetchurl {
- name = "stream_combiner___stream_combiner_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz";
- sha1 = "aec8cbac177b56b6f4fa479ced8c1912cee52858";
- };
- }
-
- {
- name = "stream_combiner___stream_combiner_0.0.4.tgz";
- path = fetchurl {
- name = "stream_combiner___stream_combiner_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz";
- sha1 = "4d5e433c185261dde623ca3f44c586bcf5c4ad14";
- };
- }
-
- {
- name = "stream_combiner___stream_combiner_0.1.0.tgz";
- path = fetchurl {
- name = "stream_combiner___stream_combiner_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.1.0.tgz";
- sha1 = "0dc389a3c203f8f4d56368f95dde52eb9269b5be";
- };
- }
-
- {
- name = "stream_consume___stream_consume_0.1.1.tgz";
- path = fetchurl {
- name = "stream_consume___stream_consume_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.1.tgz";
- sha1 = "d3bdb598c2bd0ae82b8cac7ac50b1107a7996c48";
- };
- }
-
- {
- name = "stream_shift___stream_shift_1.0.1.tgz";
- path = fetchurl {
- name = "stream_shift___stream_shift_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz";
- sha1 = "d7088281559ab2778424279b0877da3c392d5a3d";
- };
- }
-
- {
- name = "string_length___string_length_1.0.1.tgz";
- path = fetchurl {
- name = "string_length___string_length_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz";
- sha1 = "56970fb1c38558e9e70b728bf3de269ac45adfac";
- };
- }
-
- {
- name = "string_width___string_width_1.0.2.tgz";
- path = fetchurl {
- name = "string_width___string_width_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz";
- sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
- };
- }
-
- {
- name = "string_width___string_width_2.1.1.tgz";
- path = fetchurl {
- name = "string_width___string_width_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
- sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
- };
- }
-
- {
- name = "string_decoder___string_decoder_0.0.1.tgz";
- path = fetchurl {
- name = "string_decoder___string_decoder_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.0.1.tgz";
- sha1 = "f5472d0a8d1650ec823752d24e6fd627b39bf141";
- };
- }
-
- {
- name = "string_decoder___string_decoder_0.10.31.tgz";
- path = fetchurl {
- name = "string_decoder___string_decoder_0.10.31.tgz";
- url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz";
- sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
- };
- }
-
- {
- name = "string_decoder___string_decoder_1.1.1.tgz";
- path = fetchurl {
- name = "string_decoder___string_decoder_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz";
- sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8";
- };
- }
-
- {
- name = "stringify_object___stringify_object_0.2.1.tgz";
- path = fetchurl {
- name = "stringify_object___stringify_object_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/stringify-object/-/stringify-object-0.2.1.tgz";
- sha1 = "b58be50b3ff5f371038c545d4332656bfded5620";
- };
- }
-
- {
- name = "stringmap___stringmap_0.2.2.tgz";
- path = fetchurl {
- name = "stringmap___stringmap_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz";
- sha1 = "556c137b258f942b8776f5b2ef582aa069d7d1b1";
- };
- }
-
- {
- name = "stringset___stringset_0.2.1.tgz";
- path = fetchurl {
- name = "stringset___stringset_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/stringset/-/stringset-0.2.1.tgz";
- sha1 = "ef259c4e349344377fcd1c913dd2e848c9c042b5";
- };
- }
-
- {
- name = "stringstream___stringstream_0.0.6.tgz";
- path = fetchurl {
- name = "stringstream___stringstream_0.0.6.tgz";
- url = "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz";
- sha1 = "7880225b0d4ad10e30927d167a1d6f2fd3b33a72";
- };
- }
-
- {
- name = "strip_ansi___strip_ansi_0.3.0.tgz";
- path = fetchurl {
- name = "strip_ansi___strip_ansi_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz";
- sha1 = "25f48ea22ca79187f3174a4db8759347bb126220";
- };
- }
-
- {
- name = "strip_ansi___strip_ansi_2.0.1.tgz";
- path = fetchurl {
- name = "strip_ansi___strip_ansi_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-2.0.1.tgz";
- sha1 = "df62c1aa94ed2f114e1d0f21fd1d50482b79a60e";
- };
- }
-
- {
- name = "strip_ansi___strip_ansi_3.0.1.tgz";
- path = fetchurl {
- name = "strip_ansi___strip_ansi_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
- sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
- };
- }
-
- {
- name = "strip_ansi___strip_ansi_4.0.0.tgz";
- path = fetchurl {
- name = "strip_ansi___strip_ansi_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
- sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
- };
- }
-
- {
- name = "strip_ansi___strip_ansi_0.1.1.tgz";
- path = fetchurl {
- name = "strip_ansi___strip_ansi_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz";
- sha1 = "39e8a98d044d150660abe4a6808acf70bb7bc991";
- };
- }
-
- {
- name = "strip_bom___strip_bom_1.0.0.tgz";
- path = fetchurl {
- name = "strip_bom___strip_bom_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz";
- sha1 = "85b8862f3844b5a6d5ec8467a93598173a36f794";
- };
- }
-
- {
- name = "strip_bom___strip_bom_2.0.0.tgz";
- path = fetchurl {
- name = "strip_bom___strip_bom_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz";
- sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e";
- };
- }
-
- {
- name = "strip_indent___strip_indent_1.0.1.tgz";
- path = fetchurl {
- name = "strip_indent___strip_indent_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz";
- sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2";
- };
- }
-
- {
- name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
- path = fetchurl {
- name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
- sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
- };
- }
-
- {
- name = "subarg___subarg_0.0.1.tgz";
- path = fetchurl {
- name = "subarg___subarg_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/subarg/-/subarg-0.0.1.tgz";
- sha1 = "3d56b07dacfbc45bbb63f7672b43b63e46368e3a";
- };
- }
-
- {
- name = "supports_color___supports_color_0.2.0.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz";
- sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a";
- };
- }
-
- {
- name = "supports_color___supports_color_2.0.0.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz";
- sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
- };
- }
-
- {
- name = "supports_color___supports_color_3.2.3.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_3.2.3.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz";
- sha1 = "65ac0504b3954171d8a64946b2ae3cbb8a5f54f6";
- };
- }
-
- {
- name = "supports_color___supports_color_7.1.0.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz";
- sha1 = "68e32591df73e25ad1c4b49108a2ec507962bfd1";
- };
- }
-
- {
- name = "syntax_error___syntax_error_1.1.6.tgz";
- path = fetchurl {
- name = "syntax_error___syntax_error_1.1.6.tgz";
- url = "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.1.6.tgz";
- sha1 = "b4549706d386cc1c1dc7c2423f18579b6cade710";
- };
- }
-
- {
- name = "tar___tar_2.2.2.tgz";
- path = fetchurl {
- name = "tar___tar_2.2.2.tgz";
- url = "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz";
- sha1 = "0ca8848562c7299b8b446ff6a4d60cdbb23edc40";
- };
- }
-
- {
- name = "tar___tar_4.4.13.tgz";
- path = fetchurl {
- name = "tar___tar_4.4.13.tgz";
- url = "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz";
- sha1 = "43b364bc52888d555298637b10d60790254ab525";
- };
- }
-
- {
- name = "tar___tar_0.1.20.tgz";
- path = fetchurl {
- name = "tar___tar_0.1.20.tgz";
- url = "https://registry.yarnpkg.com/tar/-/tar-0.1.20.tgz";
- sha1 = "42940bae5b5f22c74483699126f9f3f27449cb13";
- };
- }
-
- {
- name = "ternary_stream___ternary_stream_2.1.1.tgz";
- path = fetchurl {
- name = "ternary_stream___ternary_stream_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-2.1.1.tgz";
- sha1 = "4ad64b98668d796a085af2c493885a435a8a8bfc";
- };
- }
-
- {
- name = "textextensions___textextensions_1.0.2.tgz";
- path = fetchurl {
- name = "textextensions___textextensions_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/textextensions/-/textextensions-1.0.2.tgz";
- sha1 = "65486393ee1f2bb039a60cbba05b0b68bd9501d2";
- };
- }
-
- {
- name = "throttleit___throttleit_0.0.2.tgz";
- path = fetchurl {
- name = "throttleit___throttleit_0.0.2.tgz";
- url = "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz";
- sha1 = "cfedf88e60c00dd9697b61fdd2a8343a9b680eaf";
- };
- }
-
- {
- name = "through2___through2_0.4.2.tgz";
- path = fetchurl {
- name = "through2___through2_0.4.2.tgz";
- url = "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz";
- sha1 = "dbf5866031151ec8352bb6c4db64a2292a840b9b";
- };
- }
-
- {
- name = "through2___through2_0.5.1.tgz";
- path = fetchurl {
- name = "through2___through2_0.5.1.tgz";
- url = "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz";
- sha1 = "dfdd012eb9c700e2323fd334f38ac622ab372da7";
- };
- }
-
- {
- name = "through2___through2_0.6.5.tgz";
- path = fetchurl {
- name = "through2___through2_0.6.5.tgz";
- url = "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz";
- sha1 = "41ab9c67b29d57209071410e1d7a7a968cd3ad48";
- };
- }
-
- {
- name = "through2___through2_2.0.5.tgz";
- path = fetchurl {
- name = "through2___through2_2.0.5.tgz";
- url = "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz";
- sha1 = "01c1e39eb31d07cb7d03a96a70823260b23132cd";
- };
- }
-
- {
- name = "through___through_2.3.8.tgz";
- path = fetchurl {
- name = "through___through_2.3.8.tgz";
- url = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz";
- sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
- };
- }
-
- {
- name = "through___through_2.2.7.tgz";
- path = fetchurl {
- name = "through___through_2.2.7.tgz";
- url = "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz";
- sha1 = "6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd";
- };
- }
-
- {
- name = "tildify___tildify_1.2.0.tgz";
- path = fetchurl {
- name = "tildify___tildify_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz";
- sha1 = "dcec03f55dca9b7aa3e5b04f21817eb56e63588a";
- };
- }
-
- {
- name = "time_stamp___time_stamp_1.1.0.tgz";
- path = fetchurl {
- name = "time_stamp___time_stamp_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz";
- sha1 = "764a5a11af50561921b133f3b44e618687e0f5c3";
- };
- }
-
- {
- name = "timed_out___timed_out_2.0.0.tgz";
- path = fetchurl {
- name = "timed_out___timed_out_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/timed-out/-/timed-out-2.0.0.tgz";
- sha1 = "f38b0ae81d3747d628001f41dafc652ace671c0a";
- };
- }
-
- {
- name = "timers_browserify___timers_browserify_1.0.3.tgz";
- path = fetchurl {
- name = "timers_browserify___timers_browserify_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.0.3.tgz";
- sha1 = "ffba70c9c12eed916fd67318e629ac6f32295551";
- };
- }
-
- {
- name = "timers_ext___timers_ext_0.1.7.tgz";
- path = fetchurl {
- name = "timers_ext___timers_ext_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz";
- sha1 = "6f57ad8578e07a3fb9f91d9387d65647555e25c6";
- };
- }
-
- {
- name = "tmp___tmp_0.0.23.tgz";
- path = fetchurl {
- name = "tmp___tmp_0.0.23.tgz";
- url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.23.tgz";
- sha1 = "de874aa5e974a85f0a32cdfdbd74663cb3bd9c74";
- };
- }
-
- {
- name = "tmp___tmp_0.0.33.tgz";
- path = fetchurl {
- name = "tmp___tmp_0.0.33.tgz";
- url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz";
- sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9";
- };
- }
-
- {
- name = "to_array___to_array_0.1.4.tgz";
- path = fetchurl {
- name = "to_array___to_array_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz";
- sha1 = "17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890";
- };
- }
-
- {
- name = "to_fast_properties___to_fast_properties_1.0.3.tgz";
- path = fetchurl {
- name = "to_fast_properties___to_fast_properties_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz";
- sha1 = "b83571fa4d8c25b82e231b06e3a3055de4ca1a47";
- };
- }
-
- {
- name = "to_object_path___to_object_path_0.3.0.tgz";
- path = fetchurl {
- name = "to_object_path___to_object_path_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz";
- sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
- };
- }
-
- {
- name = "to_regex_range___to_regex_range_2.1.1.tgz";
- path = fetchurl {
- name = "to_regex_range___to_regex_range_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz";
- sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
- };
- }
-
- {
- name = "to_regex___to_regex_3.0.2.tgz";
- path = fetchurl {
- name = "to_regex___to_regex_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz";
- sha1 = "13cfdd9b336552f30b51f33a8ae1b42a7a7599ce";
- };
- }
-
- {
- name = "toidentifier___toidentifier_1.0.0.tgz";
- path = fetchurl {
- name = "toidentifier___toidentifier_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz";
- sha1 = "7e1be3470f1e77948bc43d94a3c8f4d7752ba553";
- };
- }
-
- {
- name = "token_stream___token_stream_0.0.1.tgz";
- path = fetchurl {
- name = "token_stream___token_stream_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz";
- sha1 = "ceeefc717a76c4316f126d0b9dbaa55d7e7df01a";
- };
- }
-
- {
- name = "touch___touch_0.0.2.tgz";
- path = fetchurl {
- name = "touch___touch_0.0.2.tgz";
- url = "https://registry.yarnpkg.com/touch/-/touch-0.0.2.tgz";
- sha1 = "a65a777795e5cbbe1299499bdc42281ffb21b5f4";
- };
- }
-
- {
- name = "tough_cookie___tough_cookie_4.0.0.tgz";
- path = fetchurl {
- name = "tough_cookie___tough_cookie_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz";
- sha1 = "d822234eeca882f991f0f908824ad2622ddbece4";
- };
- }
-
- {
- name = "tough_cookie___tough_cookie_2.5.0.tgz";
- path = fetchurl {
- name = "tough_cookie___tough_cookie_2.5.0.tgz";
- url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz";
- sha1 = "cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2";
- };
- }
-
- {
- name = "traverse___traverse_0.3.9.tgz";
- path = fetchurl {
- name = "traverse___traverse_0.3.9.tgz";
- url = "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz";
- sha1 = "717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9";
- };
- }
-
- {
- name = "trim_newlines___trim_newlines_1.0.0.tgz";
- path = fetchurl {
- name = "trim_newlines___trim_newlines_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz";
- sha1 = "5887966bb582a4503a41eb524f7d35011815a613";
- };
- }
-
- {
- name = "true_case_path___true_case_path_1.0.3.tgz";
- path = fetchurl {
- name = "true_case_path___true_case_path_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz";
- sha1 = "f813b5a8c86b40da59606722b144e3225799f47d";
- };
- }
-
- {
- name = "tryor___tryor_0.1.2.tgz";
- path = fetchurl {
- name = "tryor___tryor_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/tryor/-/tryor-0.1.2.tgz";
- sha1 = "8145e4ca7caff40acde3ccf946e8b8bb75b4172b";
- };
- }
-
- {
- name = "tty_browserify___tty_browserify_0.0.1.tgz";
- path = fetchurl {
- name = "tty_browserify___tty_browserify_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz";
- sha1 = "3f05251ee17904dfd0677546670db9651682b811";
- };
- }
-
- {
- name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
- path = fetchurl {
- name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
- url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
- sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
- };
- }
-
- {
- name = "tunnel_agent___tunnel_agent_0.3.0.tgz";
- path = fetchurl {
- name = "tunnel_agent___tunnel_agent_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.3.0.tgz";
- sha1 = "ad681b68f5321ad2827c4cfb1b7d5df2cfe942ee";
- };
- }
-
- {
- name = "tunnel_agent___tunnel_agent_0.4.3.tgz";
- path = fetchurl {
- name = "tunnel_agent___tunnel_agent_0.4.3.tgz";
- url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz";
- sha1 = "6373db76909fe570e08d73583365ed828a74eeeb";
- };
- }
-
- {
- name = "tweetnacl___tweetnacl_0.14.5.tgz";
- path = fetchurl {
- name = "tweetnacl___tweetnacl_0.14.5.tgz";
- url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
- sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
- };
- }
-
- {
- name = "type_check___type_check_0.3.2.tgz";
- path = fetchurl {
- name = "type_check___type_check_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz";
- sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
- };
- }
-
- {
- name = "type_is___type_is_1.6.18.tgz";
- path = fetchurl {
- name = "type_is___type_is_1.6.18.tgz";
- url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz";
- sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131";
- };
- }
-
- {
- name = "type___type_1.2.0.tgz";
- path = fetchurl {
- name = "type___type_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz";
- sha1 = "848dd7698dafa3e54a6c479e759c4bc3f18847a0";
- };
- }
-
- {
- name = "type___type_2.0.0.tgz";
- path = fetchurl {
- name = "type___type_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz";
- sha1 = "5f16ff6ef2eb44f260494dae271033b29c09a9c3";
- };
- }
-
- {
- name = "typedarray___typedarray_0.0.6.tgz";
- path = fetchurl {
- name = "typedarray___typedarray_0.0.6.tgz";
- url = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz";
- sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
- };
- }
-
- {
- name = "uglify_js___uglify_js_2.5.0.tgz";
- path = fetchurl {
- name = "uglify_js___uglify_js_2.5.0.tgz";
- url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.5.0.tgz";
- sha1 = "4ab5d65a4730ecb7a4fb62d3f499e2054d98fba1";
- };
- }
-
- {
- name = "uglify_js___uglify_js_2.8.29.tgz";
- path = fetchurl {
- name = "uglify_js___uglify_js_2.8.29.tgz";
- url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz";
- sha1 = "29c5733148057bb4e1f75df35b7a9cb72e6a59dd";
- };
- }
-
- {
- name = "uglify_js___uglify_js_3.8.1.tgz";
- path = fetchurl {
- name = "uglify_js___uglify_js_3.8.1.tgz";
- url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.8.1.tgz";
- sha1 = "43bb15ce6f545eaa0a64c49fd29375ea09fa0f93";
- };
- }
-
- {
- name = "uglify_js___uglify_js_2.2.5.tgz";
- path = fetchurl {
- name = "uglify_js___uglify_js_2.2.5.tgz";
- url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.2.5.tgz";
- sha1 = "a6e02a70d839792b9780488b7b8b184c095c99c7";
- };
- }
-
- {
- name = "uglify_js___uglify_js_2.3.6.tgz";
- path = fetchurl {
- name = "uglify_js___uglify_js_2.3.6.tgz";
- url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz";
- sha1 = "fa0984770b428b7a9b2a8058f46355d14fef211a";
- };
- }
-
- {
- name = "uglify_js___uglify_js_2.4.24.tgz";
- path = fetchurl {
- name = "uglify_js___uglify_js_2.4.24.tgz";
- url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.4.24.tgz";
- sha1 = "fad5755c1e1577658bb06ff9ab6e548c95bebd6e";
- };
- }
-
- {
- name = "uglify_save_license___uglify_save_license_0.4.1.tgz";
- path = fetchurl {
- name = "uglify_save_license___uglify_save_license_0.4.1.tgz";
- url = "https://registry.yarnpkg.com/uglify-save-license/-/uglify-save-license-0.4.1.tgz";
- sha1 = "95726c17cc6fd171c3617e3bf4d8d82aa8c4cce1";
- };
- }
-
- {
- name = "uglify_to_browserify___uglify_to_browserify_1.0.2.tgz";
- path = fetchurl {
- name = "uglify_to_browserify___uglify_to_browserify_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz";
- sha1 = "6e0924d6bda6b5afe349e39a6d632850a0f882b7";
- };
- }
-
- {
- name = "ultron___ultron_1.0.2.tgz";
- path = fetchurl {
- name = "ultron___ultron_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz";
- sha1 = "ace116ab557cd197386a4e88f4685378c8b2e4fa";
- };
- }
-
- {
- name = "umd___umd_2.0.0.tgz";
- path = fetchurl {
- name = "umd___umd_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/umd/-/umd-2.0.0.tgz";
- sha1 = "749683b0d514728ae0e1b6195f5774afc0ad4f8f";
- };
- }
-
- {
- name = "unc_path_regex___unc_path_regex_0.1.2.tgz";
- path = fetchurl {
- name = "unc_path_regex___unc_path_regex_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz";
- sha1 = "e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa";
- };
- }
-
- {
- name = "underscore.string___underscore.string_2.4.0.tgz";
- path = fetchurl {
- name = "underscore.string___underscore.string_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz";
- sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b";
- };
- }
-
- {
- name = "underscore___underscore_1.7.0.tgz";
- path = fetchurl {
- name = "underscore___underscore_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz";
- sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209";
- };
- }
-
- {
- name = "union_value___union_value_1.0.1.tgz";
- path = fetchurl {
- name = "union_value___union_value_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz";
- sha1 = "0b6fe7b835aecda61c6ea4d4f02c14221e109847";
- };
- }
-
- {
- name = "unique_stream___unique_stream_1.0.0.tgz";
- path = fetchurl {
- name = "unique_stream___unique_stream_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz";
- sha1 = "d59a4a75427447d9aa6c91e70263f8d26a4b104b";
- };
- }
-
- {
- name = "universalify___universalify_0.1.2.tgz";
- path = fetchurl {
- name = "universalify___universalify_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz";
- sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66";
- };
- }
-
- {
- name = "unpipe___unpipe_1.0.0.tgz";
- path = fetchurl {
- name = "unpipe___unpipe_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
- sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
- };
- }
-
- {
- name = "unset_value___unset_value_1.0.0.tgz";
- path = fetchurl {
- name = "unset_value___unset_value_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz";
- sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
- };
- }
-
- {
- name = "update_notifier___update_notifier_0.2.2.tgz";
- path = fetchurl {
- name = "update_notifier___update_notifier_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/update-notifier/-/update-notifier-0.2.2.tgz";
- sha1 = "e69b3a784b4e686a2acd98f5e66944591996e187";
- };
- }
-
- {
- name = "uri_js___uri_js_4.2.2.tgz";
- path = fetchurl {
- name = "uri_js___uri_js_4.2.2.tgz";
- url = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
- sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
- };
- }
-
- {
- name = "urix___urix_0.1.0.tgz";
- path = fetchurl {
- name = "urix___urix_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz";
- sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
- };
- }
-
- {
- name = "url___url_0.10.3.tgz";
- path = fetchurl {
- name = "url___url_0.10.3.tgz";
- url = "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz";
- sha1 = "021e4d9c7705f21bbf37d03ceb58767402774c64";
- };
- }
-
- {
- name = "use___use_3.1.1.tgz";
- path = fetchurl {
- name = "use___use_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz";
- sha1 = "d50c8cac79a19fbc20f2911f56eb973f4e10070f";
- };
- }
-
- {
- name = "user_home___user_home_1.1.1.tgz";
- path = fetchurl {
- name = "user_home___user_home_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz";
- sha1 = "2b5be23a32b63a7c9deb8d0f28d485724a3df190";
- };
- }
-
- {
- name = "useragent___useragent_2.3.0.tgz";
- path = fetchurl {
- name = "useragent___useragent_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz";
- sha1 = "217f943ad540cb2128658ab23fc960f6a88c9972";
- };
- }
-
- {
- name = "util_deprecate___util_deprecate_1.0.2.tgz";
- path = fetchurl {
- name = "util_deprecate___util_deprecate_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
- sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
- };
- }
-
- {
- name = "util___util_0.10.3.tgz";
- path = fetchurl {
- name = "util___util_0.10.3.tgz";
- url = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz";
- sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
- };
- }
-
- {
- name = "util___util_0.10.4.tgz";
- path = fetchurl {
- name = "util___util_0.10.4.tgz";
- url = "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz";
- sha1 = "3aa0125bfe668a4672de58857d3ace27ecb76901";
- };
- }
-
- {
- name = "utils_merge___utils_merge_1.0.1.tgz";
- path = fetchurl {
- name = "utils_merge___utils_merge_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz";
- sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
- };
- }
-
- {
- name = "uuid___uuid_2.0.3.tgz";
- path = fetchurl {
- name = "uuid___uuid_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz";
- sha1 = "67e2e863797215530dff318e5bf9dcebfd47b21a";
- };
- }
-
- {
- name = "uuid___uuid_3.4.0.tgz";
- path = fetchurl {
- name = "uuid___uuid_3.4.0.tgz";
- url = "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz";
- sha1 = "b23e4358afa8a202fe7a100af1f5f883f02007ee";
- };
- }
-
- {
- name = "uuid___uuid_1.4.2.tgz";
- path = fetchurl {
- name = "uuid___uuid_1.4.2.tgz";
- url = "https://registry.yarnpkg.com/uuid/-/uuid-1.4.2.tgz";
- sha1 = "453019f686966a6df83cdc5244e7c990ecc332fc";
- };
- }
-
- {
- name = "v8flags___v8flags_2.1.1.tgz";
- path = fetchurl {
- name = "v8flags___v8flags_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz";
- sha1 = "aab1a1fa30d45f88dd321148875ac02c0b55e5b4";
- };
- }
-
- {
- name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
- path = fetchurl {
- name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
- sha1 = "fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a";
- };
- }
-
- {
- name = "verror___verror_1.10.0.tgz";
- path = fetchurl {
- name = "verror___verror_1.10.0.tgz";
- url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
- sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
- };
- }
-
- {
- name = "vinyl_fs___vinyl_fs_0.3.14.tgz";
- path = fetchurl {
- name = "vinyl_fs___vinyl_fs_0.3.14.tgz";
- url = "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz";
- sha1 = "9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6";
- };
- }
-
- {
- name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.1.4.tgz";
- path = fetchurl {
- name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.1.4.tgz";
- sha1 = "c5fcbd43e2f238423c2dc98bddd6f79b72bc345b";
- };
- }
-
- {
- name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.2.1.tgz";
- path = fetchurl {
- name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz";
- sha1 = "ab6549d61d172c2b1b87be5c508d239c8ef87705";
- };
- }
-
- {
- name = "vinyl___vinyl_0.2.3.tgz";
- path = fetchurl {
- name = "vinyl___vinyl_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.2.3.tgz";
- sha1 = "bca938209582ec5a49ad538a00fa1f125e513252";
- };
- }
-
- {
- name = "vinyl___vinyl_0.4.6.tgz";
- path = fetchurl {
- name = "vinyl___vinyl_0.4.6.tgz";
- url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz";
- sha1 = "2f356c87a550a255461f36bbeb2a5ba8bf784847";
- };
- }
-
- {
- name = "vinyl___vinyl_0.5.3.tgz";
- path = fetchurl {
- name = "vinyl___vinyl_0.5.3.tgz";
- url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz";
- sha1 = "b0455b38fc5e0cf30d4325132e461970c2091cde";
- };
- }
-
- {
- name = "vinyl___vinyl_1.2.0.tgz";
- path = fetchurl {
- name = "vinyl___vinyl_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz";
- sha1 = "5c88036cf565e5df05558bfc911f8656df218884";
- };
- }
-
- {
- name = "vinyl___vinyl_2.2.0.tgz";
- path = fetchurl {
- name = "vinyl___vinyl_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz";
- sha1 = "d85b07da96e458d25b2ffe19fece9f2caa13ed86";
- };
- }
-
- {
- name = "vm_browserify___vm_browserify_0.0.4.tgz";
- path = fetchurl {
- name = "vm_browserify___vm_browserify_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz";
- sha1 = "5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73";
- };
- }
-
- {
- name = "void_elements___void_elements_2.0.1.tgz";
- path = fetchurl {
- name = "void_elements___void_elements_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz";
- sha1 = "c066afb582bb1cb4128d60ea92392e94d5e9dbec";
- };
- }
-
- {
- name = "websocket_driver___websocket_driver_0.7.3.tgz";
- path = fetchurl {
- name = "websocket_driver___websocket_driver_0.7.3.tgz";
- url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz";
- sha1 = "a2d4e0d4f4f116f1e6297eba58b05d430100e9f9";
- };
- }
-
- {
- name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
- path = fetchurl {
- name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz";
- sha1 = "5d2ff22977003ec687a4b87073dfbbac146ccf29";
- };
- }
-
- {
- name = "which_module___which_module_1.0.0.tgz";
- path = fetchurl {
- name = "which_module___which_module_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz";
- sha1 = "bba63ca861948994ff307736089e3b96026c2a4f";
- };
- }
-
- {
- name = "which___which_1.3.1.tgz";
- path = fetchurl {
- name = "which___which_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz";
- sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a";
- };
- }
-
- {
- name = "which___which_1.0.9.tgz";
- path = fetchurl {
- name = "which___which_1.0.9.tgz";
- url = "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz";
- sha1 = "460c1da0f810103d0321a9b633af9e575e64486f";
- };
- }
-
- {
- name = "wide_align___wide_align_1.1.3.tgz";
- path = fetchurl {
- name = "wide_align___wide_align_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz";
- sha1 = "ae074e6bdc0c14a431e804e624549c633b000457";
- };
- }
-
- {
- name = "window_size___window_size_0.1.0.tgz";
- path = fetchurl {
- name = "window_size___window_size_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz";
- sha1 = "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d";
- };
- }
-
- {
- name = "with___with_5.1.1.tgz";
- path = fetchurl {
- name = "with___with_5.1.1.tgz";
- url = "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz";
- sha1 = "fa4daa92daf32c4ea94ed453c81f04686b575dfe";
- };
- }
-
- {
- name = "word_wrap___word_wrap_1.2.3.tgz";
- path = fetchurl {
- name = "word_wrap___word_wrap_1.2.3.tgz";
- url = "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz";
- sha1 = "610636f6b1f703891bd34771ccb17fb93b47079c";
- };
- }
-
- {
- name = "wordwrap___wordwrap_0.0.2.tgz";
- path = fetchurl {
- name = "wordwrap___wordwrap_0.0.2.tgz";
- url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz";
- sha1 = "b79669bb42ecb409f83d583cad52ca17eaa1643f";
- };
- }
-
- {
- name = "wordwrap___wordwrap_1.0.0.tgz";
- path = fetchurl {
- name = "wordwrap___wordwrap_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz";
- sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
- };
- }
-
- {
- name = "wordwrap___wordwrap_0.0.3.tgz";
- path = fetchurl {
- name = "wordwrap___wordwrap_0.0.3.tgz";
- url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz";
- sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
- };
- }
-
- {
- name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
- path = fetchurl {
- name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
- sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
- };
- }
-
- {
- name = "wrappy___wrappy_1.0.2.tgz";
- path = fetchurl {
- name = "wrappy___wrappy_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
- sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
- };
- }
-
- {
- name = "ws___ws_1.1.5.tgz";
- path = fetchurl {
- name = "ws___ws_1.1.5.tgz";
- url = "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz";
- sha1 = "cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51";
- };
- }
-
- {
- name = "wtf_8___wtf_8_1.0.0.tgz";
- path = fetchurl {
- name = "wtf_8___wtf_8_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz";
- sha1 = "392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a";
- };
- }
-
- {
- name = "xdg_basedir___xdg_basedir_1.0.1.tgz";
- path = fetchurl {
- name = "xdg_basedir___xdg_basedir_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-1.0.1.tgz";
- sha1 = "14ff8f63a4fdbcb05d5b6eea22b36f3033b9f04e";
- };
- }
-
- {
- name = "xmlhttprequest_ssl___xmlhttprequest_ssl_1.5.3.tgz";
- path = fetchurl {
- name = "xmlhttprequest_ssl___xmlhttprequest_ssl_1.5.3.tgz";
- url = "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz";
- sha1 = "185a888c04eca46c3e4070d99f7b49de3528992d";
- };
- }
-
- {
- name = "xtend___xtend_4.0.2.tgz";
- path = fetchurl {
- name = "xtend___xtend_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz";
- sha1 = "bb72779f5fa465186b1f438f674fa347fdb5db54";
- };
- }
-
- {
- name = "xtend___xtend_3.0.0.tgz";
- path = fetchurl {
- name = "xtend___xtend_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz";
- sha1 = "5cce7407baf642cba7becda568111c493f59665a";
- };
- }
-
- {
- name = "xtend___xtend_2.1.2.tgz";
- path = fetchurl {
- name = "xtend___xtend_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz";
- sha1 = "6efecc2a4dad8e6962c4901b337ce7ba87b5d28b";
- };
- }
-
- {
- name = "y18n___y18n_3.2.1.tgz";
- path = fetchurl {
- name = "y18n___y18n_3.2.1.tgz";
- url = "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz";
- sha1 = "6d15fba884c08679c0d77e88e7759e811e07fa41";
- };
- }
-
- {
- name = "yallist___yallist_2.1.2.tgz";
- path = fetchurl {
- name = "yallist___yallist_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz";
- sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
- };
- }
-
- {
- name = "yallist___yallist_3.1.1.tgz";
- path = fetchurl {
- name = "yallist___yallist_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz";
- sha1 = "dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd";
- };
- }
-
- {
- name = "yargs_parser___yargs_parser_5.0.0.tgz";
- path = fetchurl {
- name = "yargs_parser___yargs_parser_5.0.0.tgz";
- url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz";
- sha1 = "275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a";
- };
- }
-
- {
- name = "yargs___yargs_7.1.0.tgz";
- path = fetchurl {
- name = "yargs___yargs_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz";
- sha1 = "6ba318eb16961727f5d284f8ea003e8d6154d0c8";
- };
- }
-
- {
- name = "yargs___yargs_3.10.0.tgz";
- path = fetchurl {
- name = "yargs___yargs_3.10.0.tgz";
- url = "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz";
- sha1 = "f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1";
- };
- }
-
- {
- name = "yargs___yargs_3.5.4.tgz";
- path = fetchurl {
- name = "yargs___yargs_3.5.4.tgz";
- url = "https://registry.yarnpkg.com/yargs/-/yargs-3.5.4.tgz";
- sha1 = "d8aff8f665e94c34bd259bdebd1bfaf0ddd35361";
- };
- }
-
- {
- name = "yeast___yeast_0.1.2.tgz";
- path = fetchurl {
- name = "yeast___yeast_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz";
- sha1 = "008e06d8094320c372dbc2f8ed76a0ca6c8ac419";
- };
- }
- ];
-}
diff --git a/pkgs/python-packages/buildbot/plugins/default.nix b/pkgs/python-packages/buildbot/plugins/default.nix
deleted file mode 100644
index 22a8507..0000000
--- a/pkgs/python-packages/buildbot/plugins/default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, python }:
-{
- buildslist = callPackage ./buildslist {
- pythonPackages = python.pkgs;
- };
-}
diff --git a/pkgs/python-packages/default.nix b/pkgs/python-packages/default.nix
deleted file mode 100644
index 441c5bc..0000000
--- a/pkgs/python-packages/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ mylibs, callPackage, python }:
-{
- blivet3 = callPackage ./blivet { inherit python; pythonPackages = python.pkgs; };
- buildbot-plugins = callPackage ./buildbot/plugins { inherit python; };
- wokkel = callPackage ./wokkel.nix { pythonPackages = python.pkgs; };
- pymilter = callPackage ./pymilter.nix { pythonPackages = python.pkgs; };
-}
diff --git a/pkgs/python-packages/pymilter.nix b/pkgs/python-packages/pymilter.nix
deleted file mode 100644
index 736794e..0000000
--- a/pkgs/python-packages/pymilter.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ pythonPackages, libmilter }: with pythonPackages;
-buildPythonPackage rec {
- pname = "pymilter";
- version = "1.0.4";
- src = fetchPypi {
- inherit pname version;
- sha256 = "1bpcvq7d72q0zi7c8h5knhasywwz9gxc23n9fxmw874n5k8hsn7k";
- };
- doCheck = false;
- buildInputs = [ libmilter ];
-}
diff --git a/pkgs/python-packages/wokkel.nix b/pkgs/python-packages/wokkel.nix
deleted file mode 100644
index 3237f2b..0000000
--- a/pkgs/python-packages/wokkel.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ pythonPackages }: with pythonPackages;
-buildPythonPackage rec {
- pname = "wokkel";
- version = "18.0.0";
- src = fetchPypi {
- inherit pname version;
- sha256 = "1spq44gg8gsviqx1dvlmjpgfc0wk0jpyx4ap01y2pad1ai9cw016";
- };
- propagatedBuildInputs = [ twisted.extras.tls twisted incremental dateutil ];
- doCheck = false;
-}
diff --git a/pkgs/rrsync_sudo/default.nix b/pkgs/rrsync_sudo/default.nix
deleted file mode 100644
index 7a47320..0000000
--- a/pkgs/rrsync_sudo/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ rrsync }:
-
-rrsync.overrideAttrs(old: {
- patches = old.patches or [] ++ [ ./sudo.patch ];
- postPatch = old.postPatch + ''
- substituteInPlace support/rrsync --replace /usr/bin/sudo /run/wrappers/bin/sudo
- '';
-})
diff --git a/pkgs/rrsync_sudo/sudo.patch b/pkgs/rrsync_sudo/sudo.patch
deleted file mode 100644
index 6de9cc9..0000000
--- a/pkgs/rrsync_sudo/sudo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/support/rrsync 2015-09-14 01:23:54.000000000 +0200
-+++ b/support/rrsync 2020-02-08 13:55:14.302163313 +0100
-@@ -48,7 +48,7 @@
-
- my $command = $ENV{SSH_ORIGINAL_COMMAND};
- die "$0: Not invoked via sshd\n$Usage" unless defined $command;
--die "$0: SSH_ORIGINAL_COMMAND='$command' is not rsync\n" unless $command =~ s/^rsync\s+//;
-+die "$0: SSH_ORIGINAL_COMMAND='$command' is not rsync\n" unless $command =~ s/^sudo rsync\s+//;
- die "$0: --server option is not first\n" unless $command =~ /^--server\s/;
- our $am_sender = $command =~ /^--server\s+--sender\s/; # Restrictive on purpose!
- die "$0 sending to read-only server not allowed\n" if $only eq 'r' && !$am_sender;
-@@ -227,7 +227,7 @@
- }
-
- # Note: This assumes that the rsync protocol will not be maliciously hijacked.
--exec(RSYNC, @opts, @args) or die "exec(rsync @opts @args) failed: $? $!";
-+exec("/usr/bin/sudo", RSYNC, @opts, @args) or die "exec(sudo rsync @opts @args) failed: $? $!";
-
- sub check_arg
- {
diff --git a/pkgs/signaldctl/default.nix b/pkgs/signaldctl/default.nix
deleted file mode 100644
index 3ae85d8..0000000
--- a/pkgs/signaldctl/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ buildGoModule, fetchgit, lib }:
-
-buildGoModule {
- pname = "signaldctl";
- version = "main-3ca2d6f6";
- src = fetchgit {
- url = "https://gitlab.com/signald/signald-go.git";
- branchName = "main";
- rev = "3ca2d6f6c91d44f34fca3221c430d1c47fa31a5a";
- sha256 = "0hh2jqfdsvclilqllyfxswpw6fk0ncyhbiy08mwfp3dnk8nlz5vk";
- };
- vendorSha256 = "0m3spzv79fgnrg0sxhi3nrpdrvmrznwdca6rrz8qxgqb7a58qcxv";
-}
diff --git a/pkgs/slang_1/default.nix b/pkgs/slang_1/default.nix
deleted file mode 100644
index cd626e0..0000000
--- a/pkgs/slang_1/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ stdenv, fetchpatch, fetchurl }:
-stdenv.mkDerivation rec {
- name = "slang-debian-patched-${version}";
- version = "1.4.9";
- src = fetchurl {
- url = "ftp://space.mit.edu/pub/davis/slang/v1.4/slang-1.4.9.tar.gz";
- sha256 = "1y2mg0whqh4b3acd0k17i4biz55bimxg8aaxhmwd165cvspxns9r";
- };
- debian_patches = fetchurl {
- url = "http://archive.debian.org/debian-archive/debian-amd64/pool/main/s/slang/slang_1.4.9dbs-8.diff.gz";
- sha256 = "0xdq14k5ynqfwpmis1rcggs7m4n921i3bs27icbmbhfg5gb2hap2";
- };
- patchPhase = ''
- gunzip -c ${debian_patches} | patch -p1
- for i in debian/patches/*; do
- patch -p1 < $i
- done
- '';
- preConfigure = ''
- makeFlagsArray=(CFLAGS=" -g -O2 -fno-strength-reduce -DUTF8 -D_REENTRANT -D_XOPEN_SOURCE=500")
- '';
- postBuild = ''
- sed -i "1i#ifndef UTF8\n#define UTF8\n#endif" src/slang.h
- '';
-}
diff --git a/pkgs/status_engine/host_perfdata.patch b/pkgs/status_engine/host_perfdata.patch
deleted file mode 100644
index 0c8a20b..0000000
--- a/pkgs/status_engine/host_perfdata.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff --git a/src/statusengine.c b/src/statusengine.c
-index cc0b06e..2a18dec 100644
---- a/src/statusengine.c
-+++ b/src/statusengine.c
-@@ -304,6 +304,7 @@ int enable_ocsp = 0;
-
- int use_restart_data=1;
- int use_service_perfdata=0;
-+int use_host_perfdata=0;
-
- int statusengine_process_config_var(char *arg);
- int statusengine_process_module_args(char *args);
-@@ -612,6 +613,9 @@ int statusengine_process_config_var(char *arg) {
- } else if (!strcmp(var, "use_service_perfdata")) {
- use_service_perfdata = atoi(val);
- logswitch(NSLOG_INFO_MESSAGE, "start with enabled use_service_perfdata");
-+ } else if (!strcmp(var, "use_host_perfdata")) {
-+ use_host_perfdata = atoi(val);
-+ logswitch(NSLOG_INFO_MESSAGE, "start with enabled use_host_perfdata");
- } else {
- return ERROR;
- }
-@@ -1067,6 +1071,24 @@ int statusengine_handle_data(int event_type, void *data){
- json_object_put(my_object);
- free(raw_command);
-
-+ if(use_host_perfdata){
-+ my_object = json_object_new_object();
-+ json_object_object_add(my_object, "type", json_object_new_int(hostcheck->type));
-+ json_object_object_add(my_object, "flags", json_object_new_int(hostcheck->flags));
-+ json_object_object_add(my_object, "attr", json_object_new_int(hostcheck->attr));
-+ json_object_object_add(my_object, "timestamp", json_object_new_int(hostcheck->timestamp.tv_sec));
-+
-+ json_object *hostcheck_object = json_object_new_object();
-+ HOSTCHECKFIELD_STRING(host_name);
-+ HOSTCHECKFIELD_STRING(perf_data);
-+ json_object_object_add(hostcheck_object, "start_time", json_object_new_int64(nag_hostcheck->start_time.tv_sec));
-+
-+ json_object_object_add(my_object, "hostcheck", hostcheck_object);
-+ const char* json_string = json_object_to_json_string(my_object);
-+ statusengine_send_job("statusngin_host_perfdata", (void *)json_string);
-+
-+ json_object_put(my_object);
-+ }
- }
- break;
-
diff --git a/pkgs/status_engine/interface.nix b/pkgs/status_engine/interface.nix
deleted file mode 100644
index 7ee4889..0000000
--- a/pkgs/status_engine/interface.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ stdenv, composerEnv, fetchurl, callPackage, config_file ? "/var/lib/status_engine/interface.yml" }:
-composerEnv.buildPackage (
- import ./interface_php_packages.nix { inherit composerEnv fetchurl; } // rec {
- pname = "interface";
- version = "3.4.0";
- name = "${pname}-${version}";
- src = fetchurl {
- url = "https://github.com/statusengine/${pname}/archive/${version}.tar.gz";
- sha256 = "1l11cskv740xvqs9a2yj9zkvgvxvymaq5qap36g2r4hkqbfbbjj2";
- };
- unpackPhase = null;
- postUnpack = ''
- src=$(pwd)/$sourceRoot
- '';
- postInstall = ''
- ln -s ${config_file} $out/etc/config.yml
- '';
- preInstall = ''
- cp ${./interface_composer.lock} $out/composer.lock
- '';
- })
diff --git a/pkgs/status_engine/interface_composer.lock b/pkgs/status_engine/interface_composer.lock
deleted file mode 100644
index 8911d9f..0000000
--- a/pkgs/status_engine/interface_composer.lock
+++ /dev/null
@@ -1,1323 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
- "This file is @generated automatically"
- ],
- "content-hash": "668fd19407022566bb6a70398e2f954e",
- "packages": [
- {
- "name": "crate/crate-dbal",
- "version": "2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/crate/crate-dbal.git",
- "reference": "f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/crate/crate-dbal/zipball/f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417",
- "reference": "f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417",
- "shasum": ""
- },
- "require": {
- "crate/crate-pdo": "^1.0.0",
- "doctrine/dbal": "^2.10.1",
- "php": "^7.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.0",
- "squizlabs/php_codesniffer": "~1.5.2"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Crate\\DBAL": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Crate.io",
- "email": "office@crate.io",
- "homepage": "https://crate.io",
- "role": "maintainer"
- }
- ],
- "description": "Doctrine Database Abstraction Layer (DBAL) adapter for CrateDB",
- "homepage": "https://github.com/crate/crate-dbal",
- "keywords": [
- "crate",
- "database",
- "dbal",
- "doctrine"
- ],
- "time": "2020-01-08T08:31:16+00:00"
- },
- {
- "name": "crate/crate-pdo",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/crate/crate-pdo.git",
- "reference": "33332cef1a27844e473265e584223f142c37317f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/crate/crate-pdo/zipball/33332cef1a27844e473265e584223f142c37317f",
- "reference": "33332cef1a27844e473265e584223f142c37317f",
- "shasum": ""
- },
- "require": {
- "ext-pdo": "*",
- "guzzlehttp/guzzle": "~6.0",
- "php": "^7.2"
- },
- "require-dev": {
- "phpstan/phpstan": "^0.9.2",
- "phpunit/phpunit": "~7.0",
- "squizlabs/php_codesniffer": "^2.8.1"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Crate\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Crate.io",
- "email": "office@crate.io",
- "homepage": "https://crate.io",
- "role": "maintainer"
- }
- ],
- "description": "PDO adapter for CrateDB",
- "homepage": "https://github.com/crate/crate-pdo",
- "keywords": [
- "crate",
- "database",
- "pdo"
- ],
- "time": "2019-04-09T07:48:20+00:00"
- },
- {
- "name": "doctrine/cache",
- "version": "1.10.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/cache.git",
- "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/35a4a70cd94e09e2259dfae7488afc6b474ecbd3",
- "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3",
- "shasum": ""
- },
- "require": {
- "php": "~7.1 || ^8.0"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
- },
- "require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
- "doctrine/coding-standard": "^6.0",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0",
- "predis/predis": "~1.0"
- },
- "suggest": {
- "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
- "homepage": "https://www.doctrine-project.org/projects/cache.html",
- "keywords": [
- "abstraction",
- "apcu",
- "cache",
- "caching",
- "couchdb",
- "memcached",
- "php",
- "redis",
- "xcache"
- ],
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-27T16:24:54+00:00"
- },
- {
- "name": "doctrine/dbal",
- "version": "2.10.2",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/dbal.git",
- "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8",
- "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8",
- "shasum": ""
- },
- "require": {
- "doctrine/cache": "^1.0",
- "doctrine/event-manager": "^1.0",
- "ext-pdo": "*",
- "php": "^7.2"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "jetbrains/phpstorm-stubs": "^2019.1",
- "nikic/php-parser": "^4.4",
- "phpstan/phpstan": "^0.12",
- "phpunit/phpunit": "^8.4.1",
- "symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
- "vimeo/psalm": "^3.11"
- },
- "suggest": {
- "symfony/console": "For helpful console commands such as SQL execution and import of files."
- },
- "bin": [
- "bin/doctrine-dbal"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.10.x-dev",
- "dev-develop": "3.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
- "homepage": "https://www.doctrine-project.org/projects/dbal.html",
- "keywords": [
- "abstraction",
- "database",
- "db2",
- "dbal",
- "mariadb",
- "mssql",
- "mysql",
- "oci8",
- "oracle",
- "pdo",
- "pgsql",
- "postgresql",
- "queryobject",
- "sasql",
- "sql",
- "sqlanywhere",
- "sqlite",
- "sqlserver",
- "sqlsrv"
- ],
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
- "type": "tidelift"
- }
- ],
- "time": "2020-04-20T17:19:26+00:00"
- },
- {
- "name": "doctrine/event-manager",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/event-manager.git",
- "reference": "629572819973f13486371cb611386eb17851e85c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c",
- "reference": "629572819973f13486371cb611386eb17851e85c",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "conflict": {
- "doctrine/common": "<2.9@dev"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- },
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
- }
- ],
- "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
- "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
- "keywords": [
- "event",
- "event dispatcher",
- "event manager",
- "event system",
- "events"
- ],
- "time": "2019-11-10T09:48:07+00:00"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "6.5.4",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
- "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.6.1",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "1.17.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
- "psr/log": "^1.1"
- },
- "suggest": {
- "psr/log": "Required for using the Log middleware"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.5-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ],
- "time": "2020-05-25T19:35:05+00:00"
- },
- {
- "name": "guzzlehttp/promises",
- "version": "v1.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
- "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ],
- "time": "2016-12-20T10:07:11+00:00"
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "1.6.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
- "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "ext-zlib": "*",
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
- },
- "suggest": {
- "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.6-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Schultze",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "PSR-7 message implementation that also provides common utility methods",
- "keywords": [
- "http",
- "message",
- "psr-7",
- "request",
- "response",
- "stream",
- "uri",
- "url"
- ],
- "time": "2019-07-01T23:21:34+00:00"
- },
- {
- "name": "nikic/fast-route",
- "version": "v1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nikic/FastRoute.git",
- "reference": "181d480e08d9476e61381e04a71b34dc0432e812"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
- "reference": "181d480e08d9476e61381e04a71b34dc0432e812",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35|~5.7"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "FastRoute\\": "src/"
- },
- "files": [
- "src/functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Nikita Popov",
- "email": "nikic@php.net"
- }
- ],
- "description": "Fast request router for PHP",
- "keywords": [
- "router",
- "routing"
- ],
- "time": "2018-02-13T20:26:39+00:00"
- },
- {
- "name": "paragonie/random_compat",
- "version": "v9.99.99",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "shasum": ""
- },
- "require": {
- "php": "^7"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "type": "library",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ],
- "time": "2018-07-02T15:55:56+00:00"
- },
- {
- "name": "pimple/pimple",
- "version": "v3.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Pimple.git",
- "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930",
- "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930",
- "shasum": ""
- },
- "require": {
- "php": "^7.2.5",
- "psr/container": "^1.0"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^3.4|^4.4|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.3.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Pimple": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Pimple, a simple Dependency Injection Container",
- "homepage": "https://pimple.symfony.com",
- "keywords": [
- "container",
- "dependency injection"
- ],
- "time": "2020-03-03T09:12:48+00:00"
- },
- {
- "name": "psr/container",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
- "keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
- ],
- "time": "2017-02-14T16:28:37+00:00"
- },
- {
- "name": "psr/http-message",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2016-08-06T14:39:51+00:00"
- },
- {
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/ralouphie/getallheaders.git",
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5 || ^6.5"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/getallheaders.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ralph Khattar",
- "email": "ralph.khattar@gmail.com"
- }
- ],
- "description": "A polyfill for getallheaders.",
- "time": "2019-03-08T08:55:37+00:00"
- },
- {
- "name": "slim/csrf",
- "version": "0.8.3",
- "source": {
- "type": "git",
- "url": "https://github.com/slimphp/Slim-Csrf.git",
- "reference": "5f2bcf5d89adf86dc0455a32bea84d912ab466a7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/slimphp/Slim-Csrf/zipball/5f2bcf5d89adf86dc0455a32bea84d912ab466a7",
- "reference": "5f2bcf5d89adf86dc0455a32bea84d912ab466a7",
- "shasum": ""
- },
- "require": {
- "paragonie/random_compat": "^1.1|^2.0|^9.99",
- "php": ">=5.5.0",
- "psr/http-message": "^1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0",
- "slim/slim": "~3.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Slim\\Csrf\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Josh Lockhart",
- "email": "hello@joshlockhart.com",
- "homepage": "http://joshlockhart.com"
- }
- ],
- "description": "Slim Framework 3 CSRF protection middleware",
- "homepage": "http://slimframework.com",
- "keywords": [
- "csrf",
- "framework",
- "middleware",
- "slim"
- ],
- "time": "2018-08-22T16:12:18+00:00"
- },
- {
- "name": "slim/slim",
- "version": "3.12.3",
- "source": {
- "type": "git",
- "url": "https://github.com/slimphp/Slim.git",
- "reference": "1c9318a84ffb890900901136d620b4f03a59da38"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/slimphp/Slim/zipball/1c9318a84ffb890900901136d620b4f03a59da38",
- "reference": "1c9318a84ffb890900901136d620b4f03a59da38",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "ext-libxml": "*",
- "ext-simplexml": "*",
- "nikic/fast-route": "^1.0",
- "php": ">=5.5.0",
- "pimple/pimple": "^3.0",
- "psr/container": "^1.0",
- "psr/http-message": "^1.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0",
- "squizlabs/php_codesniffer": "^2.5"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Slim\\": "Slim"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Josh Lockhart",
- "email": "hello@joshlockhart.com",
- "homepage": "https://joshlockhart.com"
- },
- {
- "name": "Andrew Smith",
- "email": "a.smith@silentworks.co.uk",
- "homepage": "http://silentworks.co.uk"
- },
- {
- "name": "Rob Allen",
- "email": "rob@akrabat.com",
- "homepage": "http://akrabat.com"
- },
- {
- "name": "Gabriel Manricks",
- "email": "gmanricks@me.com",
- "homepage": "http://gabrielmanricks.com"
- }
- ],
- "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs",
- "homepage": "https://slimframework.com",
- "keywords": [
- "api",
- "framework",
- "micro",
- "router"
- ],
- "time": "2019-11-28T17:40:33+00:00"
- },
- {
- "name": "symfony/console",
- "version": "v2.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41",
- "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1|~3.0.0",
- "symfony/process": "~2.1|~3.0.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-30T12:35:10+00:00"
- },
- {
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
- "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/polyfill-mbstring": "^1.3",
- "symfony/polyfill-php72": "^1.10"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-12T16:47:27+00:00"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
- "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-12T16:47:27+00:00"
- },
- {
- "name": "symfony/polyfill-php72",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "f048e612a3905f34931127360bdd2def19a5e582"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
- "reference": "f048e612a3905f34931127360bdd2def19a5e582",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-12T16:47:27+00:00"
- },
- {
- "name": "symfony/yaml",
- "version": "v2.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "f79824187de95064a2f5038904c4d7f0227fedb5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5",
- "reference": "f79824187de95064a2f5038904c4d7f0227fedb5",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-30T12:35:10+00:00"
- }
- ],
- "packages-dev": [],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">=5.5.9",
- "ext-ldap": "*"
- },
- "platform-dev": [],
- "plugin-api-version": "1.1.0"
-}
diff --git a/pkgs/status_engine/interface_php_packages.nix b/pkgs/status_engine/interface_php_packages.nix
deleted file mode 100644
index d81e83c..0000000
--- a/pkgs/status_engine/interface_php_packages.nix
+++ /dev/null
@@ -1,217 +0,0 @@
-# Generated with composer2nix and adapted to return only the list of
-# packages
-{ composerEnv, fetchurl }:
-{
- packages = {
- "crate/crate-dbal" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "crate-crate-dbal-f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417";
- src = fetchurl {
- url = https://api.github.com/repos/crate/crate-dbal/zipball/f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417;
- sha256 = "0778m29av1nj6596b7x6xz6frd41nrswn20r327lpdfw7y6b19ni";
- };
- };
- };
- "crate/crate-pdo" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "crate-crate-pdo-33332cef1a27844e473265e584223f142c37317f";
- src = fetchurl {
- url = https://api.github.com/repos/crate/crate-pdo/zipball/33332cef1a27844e473265e584223f142c37317f;
- sha256 = "11w30hyr0lfw800aakl0ii8pwdv7vzpbjklw0z96hzsky788hfa7";
- };
- };
- };
- "doctrine/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-cache-35a4a70cd94e09e2259dfae7488afc6b474ecbd3";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/cache/zipball/35a4a70cd94e09e2259dfae7488afc6b474ecbd3;
- sha256 = "1fk0c8vhjgl7j4b2vd4k7sshdrqysqwcp9mlxbapf8x7nmpa6i9b";
- };
- };
- };
- "doctrine/dbal" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-dbal-aab745e7b6b2de3b47019da81e7225e14dcfdac8";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8;
- sha256 = "04c6r4p1b0iknjk95hpc4fsyxg8s2x1skfmnx2g11z64jvldzs62";
- };
- };
- };
- "doctrine/event-manager" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-event-manager-629572819973f13486371cb611386eb17851e85c";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c;
- sha256 = "02zglsk2zfnpabs83an7zg18h2k31h00vzk6qpawvmy35r1vmrfn";
- };
- };
- };
- "guzzlehttp/guzzle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "guzzlehttp-guzzle-a4a1b6930528a8f7ee03518e6442ec7a44155d9d";
- src = fetchurl {
- url = https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d;
- sha256 = "0midln6ji6b990vkc0syn631nf6r94lv5600dcc26lcivz8c4gk3";
- };
- };
- };
- "guzzlehttp/promises" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "guzzlehttp-promises-a59da6cf61d80060647ff4d3eb2c03a2bc694646";
- src = fetchurl {
- url = https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646;
- sha256 = "1kpl91fzalcgkcs16lpakvzcnbkry3id4ynx6xhq477p4fipdciz";
- };
- };
- };
- "guzzlehttp/psr7" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "guzzlehttp-psr7-239400de7a173fe9901b9ac7c06497751f00727a";
- src = fetchurl {
- url = https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a;
- sha256 = "0mfq93x7ayix6l3v5jkk40a9hnmrxaqr9vk1r26q39d1s6292ma7";
- };
- };
- };
- "nikic/fast-route" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "nikic-fast-route-181d480e08d9476e61381e04a71b34dc0432e812";
- src = fetchurl {
- url = https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812;
- sha256 = "0sjqivm0gp6d6nal58n4r5wzyi21r4hdzn4v31ydgjgni7877p4i";
- };
- };
- };
- "paragonie/random_compat" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "paragonie-random_compat-84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95";
- src = fetchurl {
- url = https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95;
- sha256 = "03nsccdvcb79l64b7lsmx0n8ldf5z3v8niqr7bpp6wg401qp9p09";
- };
- };
- };
- "pimple/pimple" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "pimple-pimple-e55d12f9d6a0e7f9c85992b73df1267f46279930";
- src = fetchurl {
- url = https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930;
- sha256 = "0xmx8jc9shh2a63wg6574g6qc63w3nvr7w4062d97sbgnn62r6hw";
- };
- };
- };
- "psr/container" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-container-b7ce3b176482dbbc1245ebf52b181af44c2cf55f";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f;
- sha256 = "0rkz64vgwb0gfi09klvgay4qnw993l1dc03vyip7d7m2zxi6cy4j";
- };
- };
- };
- "psr/http-message" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-http-message-f6561bf28d520154e4b0ec72be95418abe6d9363";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363;
- sha256 = "195dd67hva9bmr52iadr4kyp2gw2f5l51lplfiay2pv6l9y4cf45";
- };
- };
- };
- "ralouphie/getallheaders" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "ralouphie-getallheaders-120b605dfeb996808c31b6477290a714d356e822";
- src = fetchurl {
- url = https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822;
- sha256 = "1bv7ndkkankrqlr2b4kw7qp3fl0dxi6bp26bnim6dnlhavd6a0gg";
- };
- };
- };
- "slim/csrf" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "slim-csrf-5f2bcf5d89adf86dc0455a32bea84d912ab466a7";
- src = fetchurl {
- url = https://api.github.com/repos/slimphp/Slim-Csrf/zipball/5f2bcf5d89adf86dc0455a32bea84d912ab466a7;
- sha256 = "1n8q8cgc2y60z7waqw9xyq9pl9dvww85rbdcnap55d5a55api8j5";
- };
- };
- };
- "slim/slim" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "slim-slim-1c9318a84ffb890900901136d620b4f03a59da38";
- src = fetchurl {
- url = https://api.github.com/repos/slimphp/Slim/zipball/1c9318a84ffb890900901136d620b4f03a59da38;
- sha256 = "08s7y7apz609vg745wr61nn0ji029zvnd0435fn3kmn57f8lgq7x";
- };
- };
- };
- "symfony/console" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-console-d232bfc100dfd32b18ccbcab4bcc8f28697b7e41";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41;
- sha256 = "16kgs7x60y3vj0bbmljj80hq1x8fb6w1g0fd1j2hc1cbphgj8x67";
- };
- };
- };
- "symfony/polyfill-intl-idn" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-intl-idn-3bff59ea7047e925be6b7f2059d60af31bb46d6a";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a;
- sha256 = "0c26v3xpchyiqckp663n7i3hgswbzy56r0jdwjizrsgqq731h6fp";
- };
- };
- };
- "symfony/polyfill-mbstring" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-mbstring-fa79b11539418b02fc5e1897267673ba2c19419c";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c;
- sha256 = "17m46mkkcv7fsxf71si0cq8xdf6b1k272mc5bfwgl00h8s9bk0rs";
- };
- };
- };
- "symfony/polyfill-php72" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-php72-f048e612a3905f34931127360bdd2def19a5e582";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582;
- sha256 = "1lkjxh17nfaglh7v2m3zw2fy6b2w8nmxr7jb1gqqpvg74yqqz83f";
- };
- };
- };
- "symfony/yaml" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-yaml-f79824187de95064a2f5038904c4d7f0227fedb5";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5;
- sha256 = "1pwx4bckfjz0afz62q02vl0i4wmg3c6f963jrhlx247b1z6isram";
- };
- };
- };
- };
-}
diff --git a/pkgs/status_engine/module.json b/pkgs/status_engine/module.json
deleted file mode 100644
index 5ed06d2..0000000
--- a/pkgs/status_engine/module.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "d461e95-master",
- "meta": {
- "name": "statusengine-module",
- "url": "https://github.com/statusengine/module",
- "branch": "master"
- },
- "github": {
- "owner": "statusengine",
- "repo": "module",
- "rev": "d461e95a11fffaac604d11ac42d237b5e13071bc",
- "sha256": "1awmq9rck9xy82pambnd2wh66ndif8x8jpk4qbbghs9f2sd48x1n",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/status_engine/module.nix b/pkgs/status_engine/module.nix
deleted file mode 100644
index 43d2b09..0000000
--- a/pkgs/status_engine/module.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ stdenv, mylibs, gearmand, json_c, libuuid, libevent, pkgconfig, glib }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./module.json // {
- patches = [ ./host_perfdata.patch ];
- buildInputs = [ gearmand json_c libuuid libevent pkgconfig glib ];
- makeFlags = "all";
- installPhase = ''
- mkdir -p $out/lib/status-engine
- cp -a src/bin/* $out/lib/status-engine
- '';
-})
diff --git a/pkgs/status_engine/worker.json b/pkgs/status_engine/worker.json
deleted file mode 100644
index 301bab5..0000000
--- a/pkgs/status_engine/worker.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "02267d4-master",
- "meta": {
- "name": "worker",
- "url": "https://github.com/statusengine/worker",
- "branch": "master"
- },
- "github": {
- "owner": "statusengine",
- "repo": "worker",
- "rev": "02267d495ae69137d6765dc6b0f453f80216f1cf",
- "sha256": "06ci4mkmifdf1z15yc8rxl44ppi45vjz4s136yaccq9d8vk9iyd4",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/status_engine/worker.nix b/pkgs/status_engine/worker.nix
deleted file mode 100644
index 1232303..0000000
--- a/pkgs/status_engine/worker.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ stdenv, mylibs, composerEnv, fetchurl, gearmand, callPackage, php73, config_file ? "/var/lib/status_engine/ui.yml" }:
-let
- gearman = php73.buildPecl rec {
- version = "2.0.6";
- pname = "gearman";
- src = fetchurl {
- url = "https://github.com/wcgallego/pecl-gearman/archive/${pname}-${version}.tar.gz";
- sha256 = "0bliga4j41xkvdfh6bqi6k8x6mfxbi5sl9gix97axs7w0ncyfprz";
- };
- configureFlags = [ "--with-gearman=${gearmand}" ];
- nativeBuildInputs = [ gearmand ];
- };
-in
-(composerEnv.override {
- php = php73.withExtensions({ enabled, all }: enabled ++ (with all; [gearman redis mbstring bcmath json iconv]));
-}).buildPackage (mylibs.fetchedGithub ./worker.json //
- import ./worker_php_packages.nix { inherit composerEnv fetchurl; } // rec {
- postInstall = ''
- ln -s ${config_file} $out/etc/config.yml
- '';
- preInstall = ''
- cp ${./worker_composer.lock} $out/composer.lock
- '';
-})
diff --git a/pkgs/status_engine/worker_composer.lock b/pkgs/status_engine/worker_composer.lock
deleted file mode 100644
index 63f2646..0000000
--- a/pkgs/status_engine/worker_composer.lock
+++ /dev/null
@@ -1,1457 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
- "This file is @generated automatically"
- ],
- "content-hash": "0b9940904a72531dd233d2c1b0ea28a0",
- "packages": [
- {
- "name": "crate/crate-dbal",
- "version": "0.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/crate/crate-dbal.git",
- "reference": "3329f19d39f648bdd7613e5c8dc7e230f45814d9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/crate/crate-dbal/zipball/3329f19d39f648bdd7613e5c8dc7e230f45814d9",
- "reference": "3329f19d39f648bdd7613e5c8dc7e230f45814d9",
- "shasum": ""
- },
- "require": {
- "crate/crate-pdo": "~0.6.0",
- "doctrine/dbal": "~2.5.5",
- "php": "~5.5|~7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0",
- "squizlabs/php_codesniffer": "~1.5.2"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Crate\\DBAL": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache2"
- ],
- "description": "A Doctrine Database Abstraction Layer for the Crate.io DBMS",
- "homepage": "https://github.com/crate/crate-dbal",
- "keywords": [
- "crate",
- "database",
- "dbal",
- "doctrine"
- ],
- "time": "2017-04-07T13:26:54+00:00"
- },
- {
- "name": "crate/crate-pdo",
- "version": "0.6.3",
- "source": {
- "type": "git",
- "url": "https://github.com/crate/crate-pdo.git",
- "reference": "31a88d1004235327a4651a10a5b98a7803b3cde3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/crate/crate-pdo/zipball/31a88d1004235327a4651a10a5b98a7803b3cde3",
- "reference": "31a88d1004235327a4651a10a5b98a7803b3cde3",
- "shasum": ""
- },
- "require": {
- "ext-pdo": "*",
- "guzzlehttp/guzzle": "~6.0",
- "php": "~5.5|~7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0",
- "squizlabs/php_codesniffer": "~1.5.2"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Crate\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache2"
- ],
- "description": "A PDO adapter for interacting with the Crate.io DBMS",
- "homepage": "https://github.com/crate/crate-pdo",
- "keywords": [
- "crate",
- "database",
- "pdo"
- ],
- "time": "2017-07-17T12:50:03+00:00"
- },
- {
- "name": "doctrine/annotations",
- "version": "1.10.3",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/annotations.git",
- "reference": "5db60a4969eba0e0c197a19c077780aadbc43c5d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/5db60a4969eba0e0c197a19c077780aadbc43c5d",
- "reference": "5db60a4969eba0e0c197a19c077780aadbc43c5d",
- "shasum": ""
- },
- "require": {
- "doctrine/lexer": "1.*",
- "ext-tokenizer": "*",
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "doctrine/cache": "1.*",
- "phpunit/phpunit": "^7.5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Docblock Annotations Parser",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "annotations",
- "docblock",
- "parser"
- ],
- "time": "2020-05-25T17:24:27+00:00"
- },
- {
- "name": "doctrine/cache",
- "version": "1.10.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/cache.git",
- "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/35a4a70cd94e09e2259dfae7488afc6b474ecbd3",
- "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3",
- "shasum": ""
- },
- "require": {
- "php": "~7.1 || ^8.0"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
- },
- "require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
- "doctrine/coding-standard": "^6.0",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0",
- "predis/predis": "~1.0"
- },
- "suggest": {
- "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
- "homepage": "https://www.doctrine-project.org/projects/cache.html",
- "keywords": [
- "abstraction",
- "apcu",
- "cache",
- "caching",
- "couchdb",
- "memcached",
- "php",
- "redis",
- "xcache"
- ],
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-27T16:24:54+00:00"
- },
- {
- "name": "doctrine/collections",
- "version": "1.6.5",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/collections.git",
- "reference": "fc0206348e17e530d09463fef07ba8968406cd6d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/fc0206348e17e530d09463fef07ba8968406cd6d",
- "reference": "fc0206348e17e530d09463fef07ba8968406cd6d",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpstan/phpstan-shim": "^0.9.2",
- "phpunit/phpunit": "^7.0",
- "vimeo/psalm": "^3.8.1"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.",
- "homepage": "https://www.doctrine-project.org/projects/collections.html",
- "keywords": [
- "array",
- "collections",
- "iterators",
- "php"
- ],
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-25T19:24:35+00:00"
- },
- {
- "name": "doctrine/common",
- "version": "v2.7.3",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/common.git",
- "reference": "4acb8f89626baafede6ee5475bc5844096eba8a9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/common/zipball/4acb8f89626baafede6ee5475bc5844096eba8a9",
- "reference": "4acb8f89626baafede6ee5475bc5844096eba8a9",
- "shasum": ""
- },
- "require": {
- "doctrine/annotations": "1.*",
- "doctrine/cache": "1.*",
- "doctrine/collections": "1.*",
- "doctrine/inflector": "1.*",
- "doctrine/lexer": "1.*",
- "php": "~5.6|~7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.4.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Common Library for Doctrine projects",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "annotations",
- "collections",
- "eventmanager",
- "persistence",
- "spl"
- ],
- "time": "2017-07-22T08:35:12+00:00"
- },
- {
- "name": "doctrine/dbal",
- "version": "v2.5.13",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/dbal.git",
- "reference": "729340d8d1eec8f01bff708e12e449a3415af873"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/729340d8d1eec8f01bff708e12e449a3415af873",
- "reference": "729340d8d1eec8f01bff708e12e449a3415af873",
- "shasum": ""
- },
- "require": {
- "doctrine/common": ">=2.4,<2.8-dev",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*",
- "symfony/console": "2.*||^3.0"
- },
- "suggest": {
- "symfony/console": "For helpful console commands such as SQL execution and import of files."
- },
- "bin": [
- "bin/doctrine-dbal"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.5.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\DBAL\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Database Abstraction Layer",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "database",
- "dbal",
- "persistence",
- "queryobject"
- ],
- "time": "2017-07-22T20:44:48+00:00"
- },
- {
- "name": "doctrine/inflector",
- "version": "1.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/inflector.git",
- "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c",
- "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^7.0",
- "phpstan/phpstan": "^0.11",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-strict-rules": "^0.11",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector",
- "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
- "homepage": "https://www.doctrine-project.org/projects/inflector.html",
- "keywords": [
- "inflection",
- "inflector",
- "lowercase",
- "manipulation",
- "php",
- "plural",
- "singular",
- "strings",
- "uppercase",
- "words"
- ],
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-29T07:19:59+00:00"
- },
- {
- "name": "doctrine/lexer",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/lexer.git",
- "reference": "e864bbf5904cb8f5bb334f99209b48018522f042"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042",
- "reference": "e864bbf5904cb8f5bb334f99209b48018522f042",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpstan/phpstan": "^0.11.8",
- "phpunit/phpunit": "^8.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
- "homepage": "https://www.doctrine-project.org/projects/lexer.html",
- "keywords": [
- "annotations",
- "docblock",
- "lexer",
- "parser",
- "php"
- ],
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-25T17:44:05+00:00"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "6.5.4",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
- "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.6.1",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "1.17.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
- "psr/log": "^1.1"
- },
- "suggest": {
- "psr/log": "Required for using the Log middleware"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.5-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ],
- "time": "2020-05-25T19:35:05+00:00"
- },
- {
- "name": "guzzlehttp/promises",
- "version": "v1.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
- "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ],
- "time": "2016-12-20T10:07:11+00:00"
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "1.6.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
- "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "ext-zlib": "*",
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
- },
- "suggest": {
- "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.6-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Schultze",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "PSR-7 message implementation that also provides common utility methods",
- "keywords": [
- "http",
- "message",
- "psr-7",
- "request",
- "response",
- "stream",
- "uri",
- "url"
- ],
- "time": "2019-07-01T23:21:34+00:00"
- },
- {
- "name": "php-amqplib/php-amqplib",
- "version": "v2.11.3",
- "source": {
- "type": "git",
- "url": "https://github.com/php-amqplib/php-amqplib.git",
- "reference": "6353c5d2d3021a301914bc6566e695c99cfeb742"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/6353c5d2d3021a301914bc6566e695c99cfeb742",
- "reference": "6353c5d2d3021a301914bc6566e695c99cfeb742",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "ext-sockets": "*",
- "php": ">=5.6.3",
- "phpseclib/phpseclib": "^2.0.0"
- },
- "conflict": {
- "php": "7.4.0 - 7.4.1"
- },
- "replace": {
- "videlalvaro/php-amqplib": "self.version"
- },
- "require-dev": {
- "ext-curl": "*",
- "nategood/httpful": "^0.2.20",
- "phpunit/phpunit": "^5.7|^6.5|^7.0",
- "squizlabs/php_codesniffer": "^2.5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.11-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PhpAmqpLib\\": "PhpAmqpLib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL-2.1-or-later"
- ],
- "authors": [
- {
- "name": "Alvaro Videla",
- "role": "Original Maintainer"
- },
- {
- "name": "Raúl Araya",
- "email": "nubeiro@gmail.com",
- "role": "Maintainer"
- },
- {
- "name": "Luke Bakken",
- "email": "luke@bakken.io",
- "role": "Maintainer"
- },
- {
- "name": "Ramūnas Dronga",
- "email": "github@ramuno.lt",
- "role": "Maintainer"
- }
- ],
- "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.",
- "homepage": "https://github.com/php-amqplib/php-amqplib/",
- "keywords": [
- "message",
- "queue",
- "rabbitmq"
- ],
- "time": "2020-05-13T13:56:11+00:00"
- },
- {
- "name": "phpseclib/phpseclib",
- "version": "2.0.27",
- "source": {
- "type": "git",
- "url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc",
- "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phing/phing": "~2.7",
- "phpunit/phpunit": "^4.8.35|^5.7|^6.0",
- "sami/sami": "~2.0",
- "squizlabs/php_codesniffer": "~2.0"
- },
- "suggest": {
- "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
- "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
- "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
- "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
- },
- "type": "library",
- "autoload": {
- "files": [
- "phpseclib/bootstrap.php"
- ],
- "psr-4": {
- "phpseclib\\": "phpseclib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jim Wigginton",
- "email": "terrafrost@php.net",
- "role": "Lead Developer"
- },
- {
- "name": "Patrick Monnerat",
- "email": "pm@datasphere.ch",
- "role": "Developer"
- },
- {
- "name": "Andreas Fischer",
- "email": "bantu@phpbb.com",
- "role": "Developer"
- },
- {
- "name": "Hans-Jürgen Petrich",
- "email": "petrich@tronic-media.com",
- "role": "Developer"
- },
- {
- "name": "Graham Campbell",
- "email": "graham@alt-three.com",
- "role": "Developer"
- }
- ],
- "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
- "homepage": "http://phpseclib.sourceforge.net",
- "keywords": [
- "BigInteger",
- "aes",
- "asn.1",
- "asn1",
- "blowfish",
- "crypto",
- "cryptography",
- "encryption",
- "rsa",
- "security",
- "sftp",
- "signature",
- "signing",
- "ssh",
- "twofish",
- "x.509",
- "x509"
- ],
- "funding": [
- {
- "url": "https://github.com/terrafrost",
- "type": "github"
- },
- {
- "url": "https://www.patreon.com/phpseclib",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib",
- "type": "tidelift"
- }
- ],
- "time": "2020-04-04T23:17:33+00:00"
- },
- {
- "name": "psr/http-message",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2016-08-06T14:39:51+00:00"
- },
- {
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/ralouphie/getallheaders.git",
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5 || ^6.5"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/getallheaders.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ralph Khattar",
- "email": "ralph.khattar@gmail.com"
- }
- ],
- "description": "A polyfill for getallheaders.",
- "time": "2019-03-08T08:55:37+00:00"
- },
- {
- "name": "symfony/console",
- "version": "v2.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41",
- "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1|~3.0.0",
- "symfony/process": "~2.1|~3.0.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-30T12:35:10+00:00"
- },
- {
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
- "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/polyfill-mbstring": "^1.3",
- "symfony/polyfill-php72": "^1.10"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-12T16:47:27+00:00"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
- "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-12T16:47:27+00:00"
- },
- {
- "name": "symfony/polyfill-php72",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "f048e612a3905f34931127360bdd2def19a5e582"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
- "reference": "f048e612a3905f34931127360bdd2def19a5e582",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-12T16:47:27+00:00"
- },
- {
- "name": "symfony/yaml",
- "version": "v2.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "f79824187de95064a2f5038904c4d7f0227fedb5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5",
- "reference": "f79824187de95064a2f5038904c4d7f0227fedb5",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-30T12:35:10+00:00"
- }
- ],
- "packages-dev": [],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">=5.5.9",
- "ext-redis": "*",
- "ext-gearman": "*",
- "ext-mbstring": "*",
- "ext-bcmath": "*",
- "ext-json": "*",
- "ext-iconv": "*"
- },
- "platform-dev": [],
- "plugin-api-version": "1.1.0"
-}
diff --git a/pkgs/status_engine/worker_php_packages.nix b/pkgs/status_engine/worker_php_packages.nix
deleted file mode 100644
index 1d956ad..0000000
--- a/pkgs/status_engine/worker_php_packages.nix
+++ /dev/null
@@ -1,217 +0,0 @@
-# Generated with composer2nix and adapted to return only the list of
-# packages
-{ composerEnv, fetchurl }:
-{
- packages = {
- "crate/crate-dbal" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "crate-crate-dbal-3329f19d39f648bdd7613e5c8dc7e230f45814d9";
- src = fetchurl {
- url = https://api.github.com/repos/crate/crate-dbal/zipball/3329f19d39f648bdd7613e5c8dc7e230f45814d9;
- sha256 = "013z63zcvrnmxphdm6qqy0if1397lmbb0g3yrpjbka98pg8zm99g";
- };
- };
- };
- "crate/crate-pdo" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "crate-crate-pdo-31a88d1004235327a4651a10a5b98a7803b3cde3";
- src = fetchurl {
- url = https://api.github.com/repos/crate/crate-pdo/zipball/31a88d1004235327a4651a10a5b98a7803b3cde3;
- sha256 = "194f6daj9ghlwyplp86nazh1av6jadqznwqijqgr1g3dfmgb3y16";
- };
- };
- };
- "doctrine/annotations" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-annotations-5db60a4969eba0e0c197a19c077780aadbc43c5d";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/annotations/zipball/5db60a4969eba0e0c197a19c077780aadbc43c5d;
- sha256 = "1a8psmvs90x4nflfvjvp6j9yjmq6z9jgsb3plrp5c7iy7snkq1v2";
- };
- };
- };
- "doctrine/cache" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-cache-35a4a70cd94e09e2259dfae7488afc6b474ecbd3";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/cache/zipball/35a4a70cd94e09e2259dfae7488afc6b474ecbd3;
- sha256 = "1fk0c8vhjgl7j4b2vd4k7sshdrqysqwcp9mlxbapf8x7nmpa6i9b";
- };
- };
- };
- "doctrine/collections" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-collections-fc0206348e17e530d09463fef07ba8968406cd6d";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/collections/zipball/fc0206348e17e530d09463fef07ba8968406cd6d;
- sha256 = "1aqnjna5cc5hyy6wypmayvl5lgz2qbym6innmr3qaq9nff6r9qlf";
- };
- };
- };
- "doctrine/common" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-common-4acb8f89626baafede6ee5475bc5844096eba8a9";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/common/zipball/4acb8f89626baafede6ee5475bc5844096eba8a9;
- sha256 = "0qjqframvg81z3lwqaj5haanqj9v3dfbj170pxmwlgmrfsbr16zh";
- };
- };
- };
- "doctrine/dbal" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-dbal-729340d8d1eec8f01bff708e12e449a3415af873";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/dbal/zipball/729340d8d1eec8f01bff708e12e449a3415af873;
- sha256 = "184p8h0n6mcm0y6vfyh0z6qcxmmf8h5z4vdvxd4ycmx0531lnhj3";
- };
- };
- };
- "doctrine/inflector" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-inflector-4650c8b30c753a76bf44fb2ed00117d6f367490c";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c;
- sha256 = "13jnzwpzz63i6zipmhb22lv35l5gq6wmji0532c94331wcq5bvv9";
- };
- };
- };
- "doctrine/lexer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-lexer-e864bbf5904cb8f5bb334f99209b48018522f042";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042;
- sha256 = "11lg9fcy0crb8inklajhx3kyffdbx7xzdj8kwl21xsgq9nm9iwvv";
- };
- };
- };
- "guzzlehttp/guzzle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "guzzlehttp-guzzle-a4a1b6930528a8f7ee03518e6442ec7a44155d9d";
- src = fetchurl {
- url = https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d;
- sha256 = "0midln6ji6b990vkc0syn631nf6r94lv5600dcc26lcivz8c4gk3";
- };
- };
- };
- "guzzlehttp/promises" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "guzzlehttp-promises-a59da6cf61d80060647ff4d3eb2c03a2bc694646";
- src = fetchurl {
- url = https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646;
- sha256 = "1kpl91fzalcgkcs16lpakvzcnbkry3id4ynx6xhq477p4fipdciz";
- };
- };
- };
- "guzzlehttp/psr7" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "guzzlehttp-psr7-239400de7a173fe9901b9ac7c06497751f00727a";
- src = fetchurl {
- url = https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a;
- sha256 = "0mfq93x7ayix6l3v5jkk40a9hnmrxaqr9vk1r26q39d1s6292ma7";
- };
- };
- };
- "php-amqplib/php-amqplib" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "php-amqplib-php-amqplib-6353c5d2d3021a301914bc6566e695c99cfeb742";
- src = fetchurl {
- url = https://api.github.com/repos/php-amqplib/php-amqplib/zipball/6353c5d2d3021a301914bc6566e695c99cfeb742;
- sha256 = "1nadc5afkn1fiws2w1wh0n032pr5b4dzfg1dcqyf2jnh0nsgq0xp";
- };
- };
- };
- "phpseclib/phpseclib" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpseclib-phpseclib-34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc";
- src = fetchurl {
- url = https://api.github.com/repos/phpseclib/phpseclib/zipball/34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc;
- sha256 = "1jlc8plx0v0rq3zqhc19a01r7xx7a2p6gl7mkzf2hn0kss50plz5";
- };
- };
- };
- "psr/http-message" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "psr-http-message-f6561bf28d520154e4b0ec72be95418abe6d9363";
- src = fetchurl {
- url = https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363;
- sha256 = "195dd67hva9bmr52iadr4kyp2gw2f5l51lplfiay2pv6l9y4cf45";
- };
- };
- };
- "ralouphie/getallheaders" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "ralouphie-getallheaders-120b605dfeb996808c31b6477290a714d356e822";
- src = fetchurl {
- url = https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822;
- sha256 = "1bv7ndkkankrqlr2b4kw7qp3fl0dxi6bp26bnim6dnlhavd6a0gg";
- };
- };
- };
- "symfony/console" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-console-d232bfc100dfd32b18ccbcab4bcc8f28697b7e41";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41;
- sha256 = "16kgs7x60y3vj0bbmljj80hq1x8fb6w1g0fd1j2hc1cbphgj8x67";
- };
- };
- };
- "symfony/polyfill-intl-idn" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-intl-idn-3bff59ea7047e925be6b7f2059d60af31bb46d6a";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a;
- sha256 = "0c26v3xpchyiqckp663n7i3hgswbzy56r0jdwjizrsgqq731h6fp";
- };
- };
- };
- "symfony/polyfill-mbstring" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-mbstring-fa79b11539418b02fc5e1897267673ba2c19419c";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c;
- sha256 = "17m46mkkcv7fsxf71si0cq8xdf6b1k272mc5bfwgl00h8s9bk0rs";
- };
- };
- };
- "symfony/polyfill-php72" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-php72-f048e612a3905f34931127360bdd2def19a5e582";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582;
- sha256 = "1lkjxh17nfaglh7v2m3zw2fy6b2w8nmxr7jb1gqqpvg74yqqz83f";
- };
- };
- };
- "symfony/yaml" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-yaml-f79824187de95064a2f5038904c4d7f0227fedb5";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5;
- sha256 = "1pwx4bckfjz0afz62q02vl0i4wmg3c6f963jrhlx247b1z6isram";
- };
- };
- };
- };
-}
diff --git a/pkgs/telegram-history-dump/default.nix b/pkgs/telegram-history-dump/default.nix
deleted file mode 100644
index 050b351..0000000
--- a/pkgs/telegram-history-dump/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ stdenv, ruby, mylibs }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./telegram-history-dump.json // {
- installPhase = ''
- mkdir -p $out/lib $out/bin
- cp -a $src $out/lib/telegram-history-dump
- ln -s $out/lib/telegram-history-dump/telegram-history-dump.rb $out/bin/telegram-history-dump
- '';
- buildInputs = [ ruby ];
-})
diff --git a/pkgs/telegram-history-dump/telegram-history-dump.json b/pkgs/telegram-history-dump/telegram-history-dump.json
deleted file mode 100644
index 487df73..0000000
--- a/pkgs/telegram-history-dump/telegram-history-dump.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "468ea91-master",
- "meta": {
- "name": "telegram-history-dump",
- "url": "https://github.com/tvdstaaij/telegram-history-dump",
- "branch": "master"
- },
- "github": {
- "owner": "tvdstaaij",
- "repo": "telegram-history-dump",
- "rev": "468ea91e543529b54bc2c5ea28b1ea17f362fd3e",
- "sha256": "1wmwiqacfa56bmwx50njnb15cg0fy6rbdrmrjd4xfbh8bs6yp0gh",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/telegramircd/default.nix b/pkgs/telegramircd/default.nix
deleted file mode 100644
index 2f1d7ca..0000000
--- a/pkgs/telegramircd/default.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ openssl, telethon, python3Packages, mylibs }:
-with python3Packages;
-buildPythonApplication rec {
- format = "other";
- pname = "telegramircd";
- version = "master";
- propagatedBuildInputs = [ telethon aiohttp ConfigArgParse openssl ];
- src = (mylibs.fetchedGithub ./telegramircd.json).src;
- LD_LIBRARY_PATH = "${openssl.out}/lib";
- installPhase = ''
- install -D $src/telegramircd.py $out/bin/telegramircd
- wrapProgram "$out/bin/telegramircd" \
- --prefix LD_LIBRARY_PATH : "${openssl.out}/lib"
- install -Dm644 "$src/config" -t "$out/etc/telegramircd/"
- '';
-}
diff --git a/pkgs/telegramircd/telegramircd.json b/pkgs/telegramircd/telegramircd.json
deleted file mode 100644
index 3d219f8..0000000
--- a/pkgs/telegramircd/telegramircd.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "40a0c7c-master",
- "meta": {
- "name": "telegramircd",
- "url": "https://github.com/MaskRay/telegramircd",
- "branch": "master"
- },
- "github": {
- "owner": "MaskRay",
- "repo": "telegramircd",
- "rev": "40a0c7cf60492bde3f44d43f06f62e3792480139",
- "sha256": "123fjhgxq2fzn0ar8274jv7jjbxnlpidrj5333kbch7rpcipks0y",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/telethon_sync/default.nix b/pkgs/telethon_sync/default.nix
deleted file mode 100644
index a03e1c3..0000000
--- a/pkgs/telethon_sync/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib, python3Packages, fetchgit }:
-with python3Packages;
-buildPythonPackage rec {
- pname = "Telethon-sync";
- version = "1.1.1";
-
- src = fetchgit {
- url = "https://github.com/LonamiWebs/Telethon";
- branchName = "sync-stale";
- rev = "6a785a01aa56cfd21c8c5beb9d722c68d664ba5e";
- sha256 = "0g7gnln5kbh1gy6sfb3jg6knmi33n6sgzy2rni2x6af84lza0lgc";
- };
-
- propagatedBuildInputs = [
- rsa pyaes async_generator
- ];
- doCheck = false;
-
- meta = with lib; {
- homepage = https://github.com/LonamiWebs/Telethon;
- description = "Full-featured Telegram client library for Python 3";
- license = licenses.mit;
- };
-}
diff --git a/pkgs/terminal-velocity/default.nix b/pkgs/terminal-velocity/default.nix
deleted file mode 100644
index 1a015c0..0000000
--- a/pkgs/terminal-velocity/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ python36Packages }:
-with python36Packages;
-buildPythonApplication rec {
- pname = "terminal-velocity-git";
- version = "0.2.0";
- src = fetchPypi {
- inherit pname version;
- sha256 = "13yrkcmvh5h5fwnai61sbmqkrjyisz08n62pq0ada2lyyqf7g6b9";
- };
-
- patches = [
- ./sort_found_notes.patch
- ./python3_support.patch
- # FIXME: update this patch when version changes
- ./fix_build.patch
- ];
-
- preCheck = ''
- # Needed for urwid test
- export LC_ALL=en_US.UTF-8
- '';
- propagatedBuildInputs = [
- chardet
- urwid
- (sh.overridePythonAttrs { doCheck = false; })
- pyyaml
- ];
- buildInputs = [
- m2r
- (restructuredtext_lint.overridePythonAttrs { doCheck = false; })
- pygments
- ];
-
- postInstall = ''
- rm $out/bin/terminal_velocity
- '';
-}
diff --git a/pkgs/terminal-velocity/fix_build.patch b/pkgs/terminal-velocity/fix_build.patch
deleted file mode 100644
index b08e0c4..0000000
--- a/pkgs/terminal-velocity/fix_build.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-commit a64bf3d58f6ba7f5fa72fe5b89a3973cac0c1a99
-Author: Ismaël Bouya
-Date: Sat Mar 9 20:13:52 2019 +0100
-
- Remove mister_bump dependency
-
-diff --git a/setup.py b/setup.py
-index 84a99e9..a783dff 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1,7 +1,9 @@
- from setuptools import setup
- from m2r import parse_from_file
- import restructuredtext_lint
--from mister_bump import bump
-+
-+def bump():
-+ return "0.2.0"
-
- # Parser README.md into reStructuredText format
- rst_readme = parse_from_file('README.md')
diff --git a/pkgs/terminal-velocity/python3_support.patch b/pkgs/terminal-velocity/python3_support.patch
deleted file mode 100644
index bd4aec7..0000000
--- a/pkgs/terminal-velocity/python3_support.patch
+++ /dev/null
@@ -1,215 +0,0 @@
-commit 6ca19964b9e8a7866fd7e21a3dac9ccd35f0d434
-Author: Ismaël Bouya
-Date: Sat Mar 9 20:13:18 2019 +0100
-
- Add python3 support
-
-diff --git a/terminal_velocity/notebook.py b/terminal_velocity/notebook.py
-index b6226dc..11f76de 100644
---- a/terminal_velocity/notebook.py
-+++ b/terminal_velocity/notebook.py
-@@ -60,51 +60,6 @@ import sys
- import chardet
-
-
--def unicode_or_bust(raw_text):
-- """Return the given raw text data decoded to unicode.
--
-- If the text cannot be decoded, return None.
--
-- """
-- encodings = ["utf-8"]
-- for encoding in (sys.getfilesystemencoding(), sys.getdefaultencoding()):
-- # I would use a set for this, but they don't maintain order.
-- if encoding not in encodings:
-- encodings.append(encoding)
--
-- for encoding in encodings:
-- if encoding: # getfilesystemencoding() may return None
-- try:
-- decoded = unicode(raw_text, encoding=encoding)
-- return decoded
-- except UnicodeDecodeError:
-- pass
--
-- # If none of those guesses worked, let chardet have a go.
-- encoding = chardet.detect(raw_text)["encoding"]
-- if encoding and encoding not in encodings:
-- try:
-- decoded = unicode(raw_text, encoding=encoding)
-- logger.debug("File decoded with chardet, encoding was {0}".format(
-- encoding))
-- return decoded
-- except UnicodeDecodeError:
-- pass
-- except LookupError:
-- pass
--
-- # I've heard that decoding with cp1252 never fails, so try that last.
-- try:
-- decoded = unicode(raw_text, encoding="cp1252")
-- logger.debug("File decoded with encoding cp1252")
-- return decoded
-- except UnicodeDecodeError:
-- pass
--
-- # If nothing worked then give up.
-- return None
--
--
- class Error(Exception):
- """Base class for exceptions in this module."""
- pass
-@@ -192,12 +147,12 @@ class PlainTextNote(object):
- # subdirs) if they don't exist.
- directory = os.path.split(self.abspath)[0]
- if not os.path.isdir(directory):
-- logger.debug(u"'{0} doesn't exist, creating it".format(directory))
-+ logger.debug("'{0} doesn't exist, creating it".format(directory))
- try:
- os.makedirs(directory)
- except os.error as e:
- raise NewNoteError(
-- u"{0} could not be created: {1}".format(directory, e))
-+ "{0} could not be created: {1}".format(directory, e))
-
- # Create an empty file if the file doesn't exist.
- open(self.abspath, 'a')
-@@ -217,11 +172,11 @@ class PlainTextNote(object):
-
- @property
- def contents(self):
-- contents = unicode_or_bust(open(self.abspath, "r").read())
-+ contents = open(self.abspath, "rb").read().decode(errors='ignore')
- if contents is None:
- logger.error(
-- u"Could not decode file contents: {0}".format(self.abspath))
-- return u""
-+ "Could not decode file contents: {0}".format(self.abspath))
-+ return ""
- else:
- return contents
-
-@@ -322,12 +277,12 @@ class PlainTextNoteBook(object):
-
- # Create notebook_dir if it doesn't exist.
- if not os.path.isdir(self.path):
-- logger.debug(u"'{0} doesn't exist, creating it".format(self.path))
-+ logger.debug("'{0} doesn't exist, creating it".format(self.path))
- try:
- os.makedirs(self.path)
- except os.error as e:
- raise NewNoteBookError(
-- u"{0} could not be created: {1}".format(self.path, e))
-+ "{0} could not be created: {1}".format(self.path, e))
- else:
- # TODO: Check that self.path is a directory, if not raise.
- pass
-@@ -358,13 +313,12 @@ class PlainTextNoteBook(object):
- abspath = os.path.join(root, filename)
- relpath = os.path.relpath(abspath, self.path)
- relpath, ext = os.path.splitext(relpath)
-- unicode_relpath = unicode_or_bust(relpath)
- if relpath is None:
- # The filename could not be decoded.
- logger.error(
- "Could not decode filename: {0}".format(relpath))
- else:
-- self.add_new(title=unicode_relpath, extension=ext)
-+ self.add_new(title=relpath, extension=ext)
-
- @property
- def path(self):
-@@ -418,7 +372,7 @@ class PlainTextNoteBook(object):
- for note in self._notes:
- if note.title == title and note.extension == extension:
- raise NoteAlreadyExistsError(
-- u"Note already in NoteBook: {0}".format(note.title))
-+ "Note already in NoteBook: {0}".format(note.title))
-
- # Ok, add the note.
- note = PlainTextNote(title, self, extension)
-diff --git a/terminal_velocity/terminal_velocity.py b/terminal_velocity/terminal_velocity.py
-index 5f0e213..9234bea 100755
---- a/terminal_velocity/terminal_velocity.py
-+++ b/terminal_velocity/terminal_velocity.py
-@@ -1,7 +1,7 @@
--#!/usr/bin/env python2
-+#!/usr/bin/env python3
- """A fast note-taking app for the UNIX terminal"""
- from __future__ import print_function
--import ConfigParser
-+import configparser
- import argparse
- import os
- import logging
-@@ -9,9 +9,9 @@ import logging.handlers
- import sys
-
- #import terminal_velocity.urwid_ui as urwid_ui
--import urwid_ui
-+from . import urwid_ui
-
--from git import get_git_project_config, git_project_is_configured, fetch_changes, push_changes
-+from .git import get_git_project_config, git_project_is_configured, fetch_changes, push_changes
-
-
- def startup():
-@@ -37,7 +37,7 @@ def main():
-
- # Parse the config file.
- config_file = os.path.abspath(os.path.expanduser(args.config))
-- config = ConfigParser.SafeConfigParser()
-+ config = configparser.ConfigParser()
- config.read(config_file)
- defaults = dict(config.items('DEFAULT'))
-
-diff --git a/terminal_velocity/urwid_ui.py b/terminal_velocity/urwid_ui.py
-index caebcb9..89bab35 100644
---- a/terminal_velocity/urwid_ui.py
-+++ b/terminal_velocity/urwid_ui.py
-@@ -10,7 +10,7 @@ import logging
- logger = logging.getLogger(__name__)
-
- import urwid
--import notebook
-+from . import notebook
-
-
- palette = [
-@@ -27,8 +27,6 @@ def system(cmd, loop):
-
- loop.screen.stop()
-
-- cmd = u"{0}".format(cmd)
-- cmd = cmd.encode("utf-8") # FIXME: Correct encoding?
- safe_cmd = shlex.split(cmd)
-
- logger.debug("System command: {0}".format(safe_cmd))
-@@ -114,7 +112,7 @@ class AutocompleteWidget(urwid.Edit):
-
- # When search bar is empty show placeholder text.
- if not self.edit_text and not self.autocomplete_text:
-- placeholder_text = u"Find or Create"
-+ placeholder_text = "Find or Create"
- return (placeholder_text,
- [("placeholder", len(placeholder_text))])
-
-@@ -186,7 +184,7 @@ class NoteFilterListBox(urwid.ListBox):
-
- def render(self, size, focus=False):
- if len(self.list_walker) == 0:
-- placeholder = placeholder_text(u"No matching notes, press Enter "
-+ placeholder = placeholder_text("No matching notes, press Enter "
- "to create a new note")
- return placeholder.render(size)
- return super(NoteFilterListBox, self).render(size, self.fake_focus)
-@@ -399,7 +397,7 @@ class MainFrame(urwid.Frame):
- # If the user has no notes yet show some placeholder text, otherwise
- # show the note list.
- if len(self.notebook) == 0:
-- self.body = placeholder_text(u"You have no notes yet, to create "
-+ self.body = placeholder_text("You have no notes yet, to create "
- "a note type a note title then press Enter")
- else:
- self.body = urwid.Padding(self.list_box, left=1, right=1)
diff --git a/pkgs/terminal-velocity/sort_found_notes.patch b/pkgs/terminal-velocity/sort_found_notes.patch
deleted file mode 100644
index 2bc563c..0000000
--- a/pkgs/terminal-velocity/sort_found_notes.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-commit 0f9df37046e58c8963aff93c649e5d3dbf2202bd
-Author: Ismaël Bouya
-Date: Sat Mar 9 20:11:46 2019 +0100
-
- Add sorting option
-
-diff --git a/terminal_velocity/terminal_velocity.py b/terminal_velocity/terminal_velocity.py
-index a53eda3..5f0e213 100755
---- a/terminal_velocity/terminal_velocity.py
-+++ b/terminal_velocity/terminal_velocity.py
-@@ -90,6 +90,10 @@ the default default will be used"""
- default=defaults.get("log_file", "~/.tvlog"),
- help="the file to log to (default: %(default)s)")
-
-+ parser.add_argument("-s", "--sort", dest="sort", action="store",
-+ default=defaults.get("sort", "date"),
-+ help="the note sorting rules. Possible values: date, title (default: %(default)s)")
-+
- parser.add_argument("-p", "--print-config", dest="print_config",
- action="store_true", default=False,
- help="print your configuration settings then exit")
-@@ -138,7 +142,7 @@ the default default will be used"""
- try:
- urwid_ui.launch(notes_dir=args.notes_dir, editor=args.editor,
- extension=args.extension, extensions=args.extensions,
-- exclude=args.exclude)
-+ exclude=args.exclude, sort=args.sort)
- except KeyboardInterrupt:
- # Run the shutdown hook
- shutdown()
-diff --git a/terminal_velocity/urwid_ui.py b/terminal_velocity/urwid_ui.py
-index 34cf4f6..caebcb9 100644
---- a/terminal_velocity/urwid_ui.py
-+++ b/terminal_velocity/urwid_ui.py
-@@ -237,11 +237,12 @@ class NoteFilterListBox(urwid.ListBox):
- class MainFrame(urwid.Frame):
- """The topmost urwid widget."""
-
-- def __init__(self, notes_dir, editor, extension, extensions, exclude=None):
-+ def __init__(self, notes_dir, editor, extension, extensions, exclude=None, sort="date"):
-
- self.editor = editor
- self.notebook = notebook.PlainTextNoteBook(notes_dir, extension,
- extensions, exclude=exclude)
-+ self.sort = sort
-
- # Don't filter the note list when the text in the search box changes.
- self.suppress_filter = False
-@@ -408,7 +409,10 @@ class MainFrame(urwid.Frame):
-
- # Sort the notes.
- # TODO: Support different sort orderings.
-- matching_notes.sort(key=lambda x: x.mtime, reverse=True)
-+ if self.sort == "title":
-+ matching_notes.sort(key=lambda x: x.title)
-+ else:
-+ matching_notes.sort(key=lambda x: x.mtime, reverse=True)
-
- # Tell the list box to show only the matching notes.
- self.list_box.filter(matching_notes)
-@@ -433,10 +437,10 @@ class MainFrame(urwid.Frame):
- self.selected_note = note
-
-
--def launch(notes_dir, editor, extension, extensions, exclude=None):
-+def launch(notes_dir, editor, extension, extensions, exclude=None, sort="date"):
- """Launch the user interface."""
-
-- frame = MainFrame(notes_dir, editor, extension, extensions, exclude=exclude)
-+ frame = MainFrame(notes_dir, editor, extension, extensions, exclude=exclude, sort=sort)
- loop = urwid.MainLoop(frame, palette)
- frame.loop = loop
- loop.run()
diff --git a/pkgs/tiv/default.nix b/pkgs/tiv/default.nix
deleted file mode 100644
index 3e7a56c..0000000
--- a/pkgs/tiv/default.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ buildPerlPackage, fetchurl, perlPackages }:
-buildPerlPackage rec {
- pname = "tiv";
- version = "2015";
- src = fetchurl {
- url = "http://xyne.archlinux.ca/projects/tiv/src/tiv-${version}.tar.xz";
- sha256 = "1vq073v7z7vmcd57lhs4rf4jasji69cpjgkz4dykp94a77p1qq90";
- };
-
- outputs = ["out"];
- buildInputs = with perlPackages; [ PerlMagick ];
- perlPreHookScript = ./tiv_builder.sh;
- perlPreHook = ''
- source $perlPreHookScript
- '';
- installPhase = ''
- install -Dm755 tiv "$out/bin/tiv"
- '';
-}
diff --git a/pkgs/tiv/tiv_builder.sh b/pkgs/tiv/tiv_builder.sh
deleted file mode 100644
index ea16682..0000000
--- a/pkgs/tiv/tiv_builder.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-orig=$(declare -f preConfigure)
-new_name="preConfigure2 ${orig#preConfigure}"
-eval "$new_name"
-
-preConfigure() {
- preConfigure2 || true
-}
-
diff --git a/pkgs/twins/default.nix b/pkgs/twins/default.nix
deleted file mode 100644
index d0656bb..0000000
--- a/pkgs/twins/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ buildGoModule, fetchgit }:
-
-buildGoModule {
- pname = "twins";
- version = "master-cd85204";
- src = fetchgit {
- url = "https://code.rocketnine.space/tslocum/twins.git";
- branchName = "master";
- rev = "cd8520468072c39914ce5c8f6900dd804848d7ad";
- sha256 = "14pxcq24g3cllq8w76dwn7mmcphdpw4f5d2nhwxh06hs8ci22fz3";
- };
-
- vendorSha256 = "1h8bk8v1p52b3qwk71mv8015p990jczq31p7b7bwypb4im5l5pd9";
-
-}
diff --git a/pkgs/umami/build-geo.patch b/pkgs/umami/build-geo.patch
deleted file mode 100644
index 7a4f075..0000000
--- a/pkgs/umami/build-geo.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/scripts/build-geo.js b/scripts/build-geo.js
-index cc66f94..5464b54 100644
---- a/scripts/build-geo.js
-+++ b/scripts/build-geo.js
-@@ -22,9 +22,7 @@ if (!fs.existsSync(dest)) {
-
- const download = url =>
- new Promise(resolve => {
-- https.get(url, res => {
-- resolve(res.pipe(zlib.createGunzip({})).pipe(tar.t()));
-- });
-+ resolve(fs.createReadStream(url).pipe(zlib.createGunzip({})).pipe(tar.t()));
- });
-
- download(url).then(
diff --git a/pkgs/umami/default.nix b/pkgs/umami/default.nix
deleted file mode 100644
index 5620f90..0000000
--- a/pkgs/umami/default.nix
+++ /dev/null
@@ -1,72 +0,0 @@
-{ nodejs, writeScriptBin, stdenv, yarn2nix-moretea, lib, fetchzip, fetchurl, zlib, openssl, fetchFromGitHub }:
-let
- version = "1.17.0";
- geolite2-country-url = "https://raw.githubusercontent.com/GitSquared/node-geolite2-redist/master/redist/GeoLite2-Country.tar.gz";
- geolite2-country = fetchurl {
- url = geolite2-country-url;
- sha256 = "0mdjvx1dfpkhg5kbp7jnrspzybaavhlxmna44l7rw05nrw5nv9zw";
- };
- toBin = sha256: name: fetchurl {
- inherit name sha256;
- url = "https://binaries.prisma.sh/all_commits/e421996c87d5f3c8f7eeadd502d4ad402c89464d/debian-openssl-1.1.x/${name}.gz";
- downloadToTemp = true;
- executable = true;
- postFetch = ''
- cat "$downloadedFile" | gunzip > $out
- patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
- --set-rpath "${lib.makeLibraryPath [ openssl zlib ]}:$(patchelf --print-rpath $out)" \
- $out
- chmod +x $out
- '';
- };
- binaries = {
- DATABASE_TYPE = "postgresql";
- PRISMA_QUERY_ENGINE_BINARY = toBin "1sy67xqvbmgzksw7bl31k74k41jr44n514idqbi70j2i6jxbrl4j" "query-engine";
- PRISMA_INTROSPECTION_ENGINE_BINARY = toBin "1kcszg11f71sg2y0ki7kg4prwlyb67bdjpjcky9kyjd8n9ilc8hj" "introspection-engine";
- PRISMA_MIGRATION_ENGINE_BINARY = toBin "1lmz0wwjaavap9k6z5ysqrhlgs3r3kc9jpri2lv0lq95qmwr5hzq" "migration-engine";
- PRISMA_FMT_BINARY = toBin "0241aszja3j1pp7pxs40irmfj06ilfjbzyqjzrzrb5azk7izwm73" "prisma-fmt";
- };
- src = fetchFromGitHub {
- owner = "mikecao";
- repo = "umami";
- rev = "v${version}";
- sha256 = "15jfgf057lsl20vdw45v5cim5d2ilalzaaxn6h82pz4d2fj1w0nh";
- };
- node-modules = yarn2nix-moretea.mkYarnModules rec {
- pname = "umami";
- inherit version;
- name = "${pname}-${version}";
- yarnLock = "${src}/yarn.lock";
- packageJSON = "${src}/package.json";
- pkgConfig.npm-run-all.postInstall = ''
- patchShebangs .
- '';
- pkgConfig.rollup.postInstall = ''
- patchShebangs .
- '';
- };
- package = stdenv.mkDerivation (binaries // {
- pname = "umami";
- inherit version src;
- buildInputs = [ nodejs ];
- patches = [ ./build-geo.patch ];
- configurePhase = ''
- cp -r ${node-modules}/node_modules .
- chmod u+w -R node_modules
- '';
- buildPhase = ''
- sed -i -e "s@${geolite2-country-url}@${geolite2-country}@" scripts/build-geo.js
- npm run build
- '';
- installPhase = ''
- cp -a . $out
- '';
- });
- script = writeScriptBin "umami" (''
- #! ${stdenv.shell}
- cd ${package}
- '' + builtins.concatStringsSep "\n" (lib.mapAttrsToList (n: v: "export ${n}=${v}") binaries) + "\n" + ''
- ${nodejs}/bin/npm run start-env
- '');
-in
- script // { nodeApp = package; }
diff --git a/pkgs/unicode/default.nix b/pkgs/unicode/default.nix
deleted file mode 100644
index 756e939..0000000
--- a/pkgs/unicode/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ lib, fetchurl, runCommand, libarchive }:
-with lib.attrsets;
-let
- version = "12.0";
- version-full = "${version}.0";
- files = {
- emoji-data = fetchurl {
- url = "http://www.unicode.org/Public/emoji/${version}/emoji-data.txt";
- sha256 = "03sf7h1d6kb9m5s02lif88jsi5kjszpkfvcymaqxj8ds70ar9pgv";
- };
- emoji-sequences = fetchurl {
- url = "http://www.unicode.org/Public/emoji/${version}/emoji-sequences.txt";
- sha256 = "1hghki2rn3n7m4lwpwi2a5wrsf2nij4bxga9ldabx4g0g2k23svs";
- };
- emoji-test = fetchurl {
- url = "http://www.unicode.org/Public/emoji/${version}/emoji-test.txt";
- sha256 = "1dqd0fh999mh6naj816ni113m9dimfy3ih9nffjq2lrv9mmlgdck";
- };
- emoji-variation-sequences = fetchurl {
- url = "http://www.unicode.org/Public/emoji/${version}/emoji-variation-sequences.txt";
- sha256 = "1cccwx5bl79w4c19vi5dhjqxrph92s8hihp9y8s2cqvdzmgbln7a";
- };
- emoji-zwj-sequences = fetchurl {
- url = "http://www.unicode.org/Public/emoji/${version}/emoji-zwj-sequences.txt";
- sha256 = "1l791nbijmmhwa7kmvfn8gp26ban512l6mgqpz1mnbq3xm19181n";
- };
- };
- zippedFiles = {
- UCD = fetchurl {
- url = "http://www.unicode.org/Public/zipped/${version-full}/UCD.zip";
- sha256 = "1ighy39cjkmqnv1797wrxjz76mv1fdw7zp5j04q55bkwxsdkvrmh";
- };
- Unihan = fetchurl {
- url = "http://www.unicode.org/Public/zipped/${version-full}/Unihan.zip";
- sha256 = "1kfdhgg2gm52x3s07bijb5cxjy0jxwhd097k5lqhvzpznprm6ibf";
- };
- };
-in
- runCommand "unicode" {
- buildInputs = [ libarchive ];
- } ''
- mkdir -p $out/share/unicode
- ${builtins.concatStringsSep "\n" (mapAttrsToList (n: u: "install -Dm644 ${u} $out/share/unicode/emoji/${n}.txt") files)}
- ${builtins.concatStringsSep "\n" (mapAttrsToList (n: u: ''
- install -Dm644 ${u} $out/share/unicode/${n}.zip
- bsdtar -C "$out/share/unicode" -x -f "$out/share/unicode/${n}.zip"
- '') zippedFiles)}
- ''
diff --git a/pkgs/webapps/adminer/default.nix b/pkgs/webapps/adminer/default.nix
deleted file mode 100644
index 203b565..0000000
--- a/pkgs/webapps/adminer/default.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{ stdenv, fetchurl }:
-stdenv.mkDerivation rec {
- version = "4.7.1";
- name = "adminer-${version}";
- src = fetchurl {
- url = "https://github.com/vrana/adminer/releases/download/v${version}/${name}.php";
- sha256 = "00gnck9vd44wc6ihf7hh4ma6jvdsw69xgjlkbrdf6irnni6rnvhn";
- };
- phases = "installPhase";
- installPhase = ''
- mkdir -p $out
- cp $src $out/index.php
- '';
-}
diff --git a/pkgs/webapps/apache-theme/default.nix b/pkgs/webapps/apache-theme/default.nix
deleted file mode 100644
index 4b5755a..0000000
--- a/pkgs/webapps/apache-theme/default.nix
+++ /dev/null
@@ -1,88 +0,0 @@
-{ theme_root ? null }:
-rec {
- theme = ./theme;
- apacheConfig = let
- theme_root' = if isNull theme_root then theme else theme_root;
- in ''
-
- Alias /theme ${theme_root'}
-
- Options -Indexes
- AllowOverride None
- Require all granted
-
-
- # mod_autoindex
-
- Options Indexes
- AllowOverride None
- Require all granted
-
- # Inspired from Apaxy by @adamwhitcroft
-
- IndexOptions +Charset=UTF-8 +FancyIndexing +IgnoreCase +FoldersFirst +XHTML +HTMLTable +SuppressRules +SuppressDescription +NameWidth=* +IconsAreLinks +ShowForbidden
-
- IndexHeadInsert " "
-
- IndexIgnoreReset ON
- IndexIgnore /theme .htaccess %{ignored}
-
- AddIcon /theme/icons/blank.png ^^BLANKICON^^
- AddIcon /theme/icons/folder.png ^^DIRECTORY^^
- AddIcon /theme/icons/folder-home.png ..
-
- AddIconByType (TXT,/theme/icons/text.png) text/*
- AddIconByType (IMG,/theme/icons/image.png) image/*
- AddIconByType (SND,/theme/icons/audio.png) audio/*
- AddIconByType (VID,/theme/icons/video.png) video/*
-
- AddIcon /theme/icons/archive.png .7z .bz2 .cab .gz .tar
- AddIcon /theme/icons/audio.png .aac .aif .aifc .aiff .ape .au .flac .iff .m4a .mid .mp3 .mpa .ra .wav .wma .f4a .f4b .oga .ogg .xm .it .s3m .mod
- AddIcon /theme/icons/bin.png .bin .hex
- AddIcon /theme/icons/bmp.png .bmp
- AddIcon /theme/icons/c.png .c
- AddIcon /theme/icons/calc.png .xlsx .xlsm .xltx .xltm .xlam .xlr .xls .csv
- AddIcon /theme/icons/cd.png .iso
- AddIcon /theme/icons/cpp.png .cpp
- AddIcon /theme/icons/css.png .css .sass .scss
- AddIcon /theme/icons/deb.png .deb
- AddIcon /theme/icons/doc.png .doc .docx .docm .dot .dotx .dotm .log .msg .odt .pages .rtf .tex .wpd .wps
- AddIcon /theme/icons/draw.png .svg .svgz
- AddIcon /theme/icons/eps.png .ai .eps
- AddIcon /theme/icons/exe.png .exe
- AddIcon /theme/icons/gif.png .gif
- AddIcon /theme/icons/h.png .h
- AddIcon /theme/icons/html.png .html .xhtml .shtml .htm .URL .url
- AddIcon /theme/icons/ico.png .ico
- AddIcon /theme/icons/java.png .jar
- AddIcon /theme/icons/jpg.png .jpg .jpeg .jpe
- AddIcon /theme/icons/js.png .js .json
- AddIcon /theme/icons/markdown.png .md
- AddIcon /theme/icons/package.png .pkg .dmg
- AddIcon /theme/icons/pdf.png .pdf
- AddIcon /theme/icons/php.png .php .phtml
- AddIcon /theme/icons/playlist.png .m3u .m3u8 .pls .pls8
- AddIcon /theme/icons/png.png .png
- AddIcon /theme/icons/ps.png .ps
- AddIcon /theme/icons/psd.png .psd
- AddIcon /theme/icons/py.png .py
- AddIcon /theme/icons/rar.png .rar
- AddIcon /theme/icons/rb.png .rb
- AddIcon /theme/icons/rpm.png .rpm
- AddIcon /theme/icons/rss.png .rss
- AddIcon /theme/icons/script.png .bat .cmd .sh
- AddIcon /theme/icons/sql.png .sql
- AddIcon /theme/icons/tiff.png .tiff .tif
- AddIcon /theme/icons/text.png .txt .nfo
- AddIcon /theme/icons/video.png .asf .asx .avi .flv .mkv .mov .mp4 .mpg .rm .srt .swf .vob .wmv .m4v .f4v .f4p .ogv
- AddIcon /theme/icons/xml.png .xml
- AddIcon /theme/icons/zip.png .zip
- DefaultIcon /theme/icons/default.png
-
- HeaderName /theme/header.html
- ReadmeName /theme/footer.html
- IndexStyleSheet /theme/style.css
-
-
- '';
-}
diff --git a/pkgs/webapps/apache-theme/theme/.htaccess b/pkgs/webapps/apache-theme/theme/.htaccess
deleted file mode 100644
index f9e5472..0000000
--- a/pkgs/webapps/apache-theme/theme/.htaccess
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Apaxy by @adamwhitcroft
-#
-# For a full breakdown of the mod_autoindex module
-# http://apache.org/docs/2.2/mod/mod_autoindex.html
-#
-
-# Don't index this folder
-Options -Indexes
diff --git a/pkgs/webapps/apache-theme/theme/footer.html b/pkgs/webapps/apache-theme/theme/footer.html
deleted file mode 100644
index 57a2012..0000000
--- a/pkgs/webapps/apache-theme/theme/footer.html
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
diff --git a/pkgs/webapps/apache-theme/theme/header.html b/pkgs/webapps/apache-theme/theme/header.html
deleted file mode 100644
index cbded6a..0000000
--- a/pkgs/webapps/apache-theme/theme/header.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/pkgs/webapps/apache-theme/theme/icons/archive.png b/pkgs/webapps/apache-theme/theme/icons/archive.png
deleted file mode 100644
index 99ae6fc..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/archive.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/audio.png b/pkgs/webapps/apache-theme/theme/icons/audio.png
deleted file mode 100644
index a67618d..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/audio.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/authors.png b/pkgs/webapps/apache-theme/theme/icons/authors.png
deleted file mode 100644
index 78bf784..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/authors.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/bin.png b/pkgs/webapps/apache-theme/theme/icons/bin.png
deleted file mode 100644
index ec2220b..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/bin.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/blank.png b/pkgs/webapps/apache-theme/theme/icons/blank.png
deleted file mode 100644
index bef1f60..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/blank.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/bmp.png b/pkgs/webapps/apache-theme/theme/icons/bmp.png
deleted file mode 100644
index c6f3044..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/bmp.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/c.png b/pkgs/webapps/apache-theme/theme/icons/c.png
deleted file mode 100644
index 12adaa3..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/c.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/calc.png b/pkgs/webapps/apache-theme/theme/icons/calc.png
deleted file mode 100644
index a034367..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/calc.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/cd.png b/pkgs/webapps/apache-theme/theme/icons/cd.png
deleted file mode 100644
index 3a3ffbb..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/cd.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/copying.png b/pkgs/webapps/apache-theme/theme/icons/copying.png
deleted file mode 100644
index 83fa06e..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/copying.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/cpp.png b/pkgs/webapps/apache-theme/theme/icons/cpp.png
deleted file mode 100644
index 47e8b1e..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/cpp.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/css.png b/pkgs/webapps/apache-theme/theme/icons/css.png
deleted file mode 100644
index 15f7695..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/css.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/deb.png b/pkgs/webapps/apache-theme/theme/icons/deb.png
deleted file mode 100644
index 1b12d29..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/deb.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/default.png b/pkgs/webapps/apache-theme/theme/icons/default.png
deleted file mode 100644
index 6997229..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/default.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/diff.png b/pkgs/webapps/apache-theme/theme/icons/diff.png
deleted file mode 100644
index 5bef920..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/diff.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/doc.png b/pkgs/webapps/apache-theme/theme/icons/doc.png
deleted file mode 100644
index 5732f9b..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/doc.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/draw.png b/pkgs/webapps/apache-theme/theme/icons/draw.png
deleted file mode 100644
index 8f1da5c..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/draw.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/eps.png b/pkgs/webapps/apache-theme/theme/icons/eps.png
deleted file mode 100644
index 93736bb..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/eps.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/exe.png b/pkgs/webapps/apache-theme/theme/icons/exe.png
deleted file mode 100644
index 31299b7..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/exe.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/folder-home.png b/pkgs/webapps/apache-theme/theme/icons/folder-home.png
deleted file mode 100644
index 14fe20a..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/folder-home.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/folder-open.png b/pkgs/webapps/apache-theme/theme/icons/folder-open.png
deleted file mode 100644
index 2aa5cc7..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/folder-open.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/folder-page.png b/pkgs/webapps/apache-theme/theme/icons/folder-page.png
deleted file mode 100644
index 604f9ad..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/folder-page.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png b/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png
deleted file mode 100644
index b82d7a9..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/folder-parent.png b/pkgs/webapps/apache-theme/theme/icons/folder-parent.png
deleted file mode 100644
index 3c964f1..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/folder-parent.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/folder.png b/pkgs/webapps/apache-theme/theme/icons/folder.png
deleted file mode 100644
index 7c613e0..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/folder.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/gif.png b/pkgs/webapps/apache-theme/theme/icons/gif.png
deleted file mode 100644
index 01a2f2a..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/gif.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/gzip.png b/pkgs/webapps/apache-theme/theme/icons/gzip.png
deleted file mode 100644
index 99ae6fc..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/gzip.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/h.png b/pkgs/webapps/apache-theme/theme/icons/h.png
deleted file mode 100644
index d3c7a9c..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/h.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/hpp.png b/pkgs/webapps/apache-theme/theme/icons/hpp.png
deleted file mode 100644
index e5e52e2..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/hpp.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/html.png b/pkgs/webapps/apache-theme/theme/icons/html.png
deleted file mode 100644
index 2f94a78..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/html.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/ico.png b/pkgs/webapps/apache-theme/theme/icons/ico.png
deleted file mode 100644
index 82227e8..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/ico.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/image.png b/pkgs/webapps/apache-theme/theme/icons/image.png
deleted file mode 100644
index add1c59..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/image.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/install.png b/pkgs/webapps/apache-theme/theme/icons/install.png
deleted file mode 100644
index 0a9c036..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/install.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/java.png b/pkgs/webapps/apache-theme/theme/icons/java.png
deleted file mode 100644
index 63b8683..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/java.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/jpg.png b/pkgs/webapps/apache-theme/theme/icons/jpg.png
deleted file mode 100644
index a50c99b..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/jpg.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/js.png b/pkgs/webapps/apache-theme/theme/icons/js.png
deleted file mode 100644
index af1a475..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/js.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/json.png b/pkgs/webapps/apache-theme/theme/icons/json.png
deleted file mode 100644
index af1a475..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/json.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/log.png b/pkgs/webapps/apache-theme/theme/icons/log.png
deleted file mode 100644
index 02f1b9a..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/log.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/makefile.png b/pkgs/webapps/apache-theme/theme/icons/makefile.png
deleted file mode 100644
index f99ea4c..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/makefile.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/markdown.png b/pkgs/webapps/apache-theme/theme/icons/markdown.png
deleted file mode 100644
index 25c8373..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/markdown.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/package.png b/pkgs/webapps/apache-theme/theme/icons/package.png
deleted file mode 100644
index fb1343e..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/package.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/pdf.png b/pkgs/webapps/apache-theme/theme/icons/pdf.png
deleted file mode 100644
index 7408d8d..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/pdf.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/php.png b/pkgs/webapps/apache-theme/theme/icons/php.png
deleted file mode 100644
index 22c4df6..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/php.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/playlist.png b/pkgs/webapps/apache-theme/theme/icons/playlist.png
deleted file mode 100644
index 8d6f281..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/playlist.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/png.png b/pkgs/webapps/apache-theme/theme/icons/png.png
deleted file mode 100644
index 1fe1ec4..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/png.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/pres.png b/pkgs/webapps/apache-theme/theme/icons/pres.png
deleted file mode 100644
index db195e9..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/pres.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/ps.png b/pkgs/webapps/apache-theme/theme/icons/ps.png
deleted file mode 100644
index 05f3ed9..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/ps.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/psd.png b/pkgs/webapps/apache-theme/theme/icons/psd.png
deleted file mode 100644
index 62718ee..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/psd.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/py.png b/pkgs/webapps/apache-theme/theme/icons/py.png
deleted file mode 100644
index 0aaffd1..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/py.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/rar.png b/pkgs/webapps/apache-theme/theme/icons/rar.png
deleted file mode 100644
index 8a0ff54..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/rar.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/rb.png b/pkgs/webapps/apache-theme/theme/icons/rb.png
deleted file mode 100644
index c7db42f..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/rb.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/readme.png b/pkgs/webapps/apache-theme/theme/icons/readme.png
deleted file mode 100644
index 3ae48cd..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/readme.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/rpm.png b/pkgs/webapps/apache-theme/theme/icons/rpm.png
deleted file mode 100644
index 64699ac..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/rpm.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/rss.png b/pkgs/webapps/apache-theme/theme/icons/rss.png
deleted file mode 100644
index a1130a1..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/rss.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/rtf.png b/pkgs/webapps/apache-theme/theme/icons/rtf.png
deleted file mode 100644
index 25c8373..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/rtf.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/script.png b/pkgs/webapps/apache-theme/theme/icons/script.png
deleted file mode 100644
index 1099b5f..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/script.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/source.png b/pkgs/webapps/apache-theme/theme/icons/source.png
deleted file mode 100644
index 5bef920..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/source.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/sql.png b/pkgs/webapps/apache-theme/theme/icons/sql.png
deleted file mode 100644
index b3b1467..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/sql.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/tar.png b/pkgs/webapps/apache-theme/theme/icons/tar.png
deleted file mode 100644
index bab3b6a..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/tar.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/tex.png b/pkgs/webapps/apache-theme/theme/icons/tex.png
deleted file mode 100644
index 1487b25..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/tex.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/text.png b/pkgs/webapps/apache-theme/theme/icons/text.png
deleted file mode 100644
index 1d48677..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/text.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/tiff.png b/pkgs/webapps/apache-theme/theme/icons/tiff.png
deleted file mode 100644
index 819e64c..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/tiff.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/unknown.png b/pkgs/webapps/apache-theme/theme/icons/unknown.png
deleted file mode 100644
index b1dcc3f..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/unknown.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/vcal.png b/pkgs/webapps/apache-theme/theme/icons/vcal.png
deleted file mode 100644
index 3d81455..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/vcal.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/video.png b/pkgs/webapps/apache-theme/theme/icons/video.png
deleted file mode 100644
index f92f7e1..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/video.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/xml.png b/pkgs/webapps/apache-theme/theme/icons/xml.png
deleted file mode 100644
index 83a83df..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/xml.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/icons/zip.png b/pkgs/webapps/apache-theme/theme/icons/zip.png
deleted file mode 100644
index cc196c1..0000000
Binary files a/pkgs/webapps/apache-theme/theme/icons/zip.png and /dev/null differ
diff --git a/pkgs/webapps/apache-theme/theme/style.css b/pkgs/webapps/apache-theme/theme/style.css
deleted file mode 100644
index 4d25c9f..0000000
--- a/pkgs/webapps/apache-theme/theme/style.css
+++ /dev/null
@@ -1,160 +0,0 @@
-/*------------------------------------*\
- Apaxy
- by @adamwhitcroft
-
- Theme name: Apaxy
- Theme author: @adamwhitcroft
-\*------------------------------------*/
-@import url('//fonts.googleapis.com/css?family=Open+Sans');
-/* Have to use @import for the font, as you can only specify a single stylesheet */
-* {
- margin:0;
- padding:0;
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing: border-box;
-}
-
-html {
- min-height:100%;
- border-top:10px solid #ECEEF1;
- border-bottom:10px solid #ECEEF1;
- color:#61666c;
- font-weight:400;
- font-size:1em;
- font-family:'Open Sans', sans-serif;
- line-height:2em;
-}
-body {
- padding:20px;
- -webkit-backface-visibility:hidden;
-}
-code {
- font-family:consolas,monospace;
-}
-a {
- color:#61666c;
- text-decoration:none;
-}
-a, img {
- border:none;
- outline:none
-}
-a:hover {
- color:#2a2a2a;
-}
-/*------------------------------------*\
- Wrapper
-\*------------------------------------*/
-.wrapper {
- margin:0 auto;
- padding-top:20px;
- max-width:80%;
-}
-/*------------------------------------*\
- Demo block
-\*------------------------------------*/
-.block {
- font-size:.875em;
- margin:20px 0;
- padding:20px;
- color:#9099A3;
-}
-/*------------------------------------*\
- Table (directory listing)
-\*------------------------------------*/
-table {
- width:100%;
- border-collapse:collapse;
- font-size:.875em;
-}
-tr {
- outline:0;
- border:0;
-}
-tr:hover td {
- background:#f6f6f6;
-}
-th {
- text-align:left;
- font-size:.75em;
- padding-right:20px;
-}
-/* 2nd Column: Filename */
-th + th {
- width:65%;
-}
-/* 3rd Column: Last Modified */
-th + th + th {
-}
-/* 4th Column: Size */
-th + th + th + th {
- width:5%;
-}
-tr td:first-of-type {
- padding-left:10px;
- padding-right:10px;
-}
-td {
- padding:5px 0;
- outline:0;
- border:0;
- border-bottom:1px solid #edf1f5;
- vertical-align:middle;
- text-align:left;
- -webkit-transition:background 300ms ease;
- -moz-transition:background 300ms ease;
- -ms-transition:background 300ms ease;
- -o-transition:background 300ms ease;
- transition:background 300ms ease;
-}
-td a{
- display: block;
-}
-tr.parent a[href^="/"] {
- color:#9099A3;
-}
- .parent a[href^="/"]:hover {
- color:#2281d0;
- }
-/*------------------------------------*\
- Footer
-\*------------------------------------*/
-.footer {
- text-align:center;
- font-size:.75em;
-}
-
-h1#pagetitle {
- text-align: center;
-}
-tr.parent a[href="/"]{
- display: none;
-}
-
-tr.indexhead {
- visibility: hidden;
-}
-
-th.indexcollastmod, td.indexcollastmod, th.indexcolsize, td.indexcolsize {
- visibility: hidden;
-}
-
-.instructions a {
- text-decoration: underline;
-}
-
-.instructions h2 {
- margin-top: 10px;
-}
-.instructions em.important:before {
- content: "⚠ Important ⚠ ";
- color: red;
-}
-.instructions pre {
- width: 50em;
- padding: 10px 15px;
- display: table;
- border: 1px inset black;
- line-height: 1em;
-}
diff --git a/pkgs/webapps/awl/default.nix b/pkgs/webapps/awl/default.nix
deleted file mode 100644
index dc78339..0000000
--- a/pkgs/webapps/awl/default.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ stdenv, fetchurl }:
-stdenv.mkDerivation rec {
- version = "0.62";
- name = "awl-${version}";
- src = fetchurl {
- url = "https://www.davical.org/downloads/awl_${version}.orig.tar.xz";
- sha256 = "0x9pr8sq3bicnvzsxfwdsqxnvfygn6gy5pawmm6i6fyb1p5h5izz";
- };
- unpackCmd = ''
- tar --one-top-level -xf $curSrc
- '';
- installPhase = ''
- mkdir -p $out
- cp -ra dba docs inc scripts tests $out
- '';
-}
diff --git a/pkgs/webapps/davical/default.nix b/pkgs/webapps/davical/default.nix
deleted file mode 100644
index 045a93b..0000000
--- a/pkgs/webapps/davical/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ davical_config ? "/etc/davical/config.php", stdenv, fetchurl, gettext }:
-stdenv.mkDerivation rec {
- version = "1.1.10";
- name = "davical-${version}";
- src = fetchurl {
- url = "https://www.davical.org/downloads/davical_${version}.orig.tar.xz";
- sha256 = "1d8zw558qrz2rybdv853ai04ar7v5a2dsypnffapx9ihgnrv4hq3";
- };
- unpackCmd = ''
- tar --one-top-level -xf $curSrc
- '';
- makeFlags = "all";
- patchPhase = ''
- # https://gitlab.com/davical-project/davical/-/issues/229
- sed -i -e 's/"newpass1"/"newpass1", "password"/g' htdocs/always.php
- '';
- installPhase = ''
- mkdir -p $out
- cp -ra config dba docs htdocs inc locale po scripts testing zonedb $out
- ln -s ${davical_config} $out/config/config.php
- '';
- buildInputs = [ gettext ];
-}
diff --git a/pkgs/webapps/default.nix b/pkgs/webapps/default.nix
deleted file mode 100644
index cbee0b3..0000000
--- a/pkgs/webapps/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ callPackage, mylibs, composerEnv }:
-rec {
- adminer = callPackage ./adminer {};
- apache-theme = callPackage ./apache-theme {};
- awl = callPackage ./awl {};
- davical = callPackage ./davical {};
- diaspora = callPackage ./diaspora { inherit mylibs; };
- dokuwiki = callPackage ./dokuwiki { inherit mylibs; };
- etherpad-lite = callPackage ./etherpad-lite {};
- grocy = callPackage ./grocy { inherit mylibs composerEnv; };
- infcloud = callPackage ./infcloud {};
- mantisbt_2 = callPackage ./mantisbt_2 {};
- mastodon = callPackage ./mastodon { inherit mylibs; };
- mediagoblin = callPackage ./mediagoblin { inherit mylibs; };
- nextcloud = callPackage ./nextcloud {};
- peertube = (mylibs.flakeCompat ../../flakes/peertube).default;
- phpbb = callPackage ./phpbb {};
- phpldapadmin = callPackage ./phpldapadmin {};
- rompr = callPackage ./rompr { inherit mylibs; };
- roundcubemail = callPackage ./roundcubemail {};
- spip = callPackage ./spip {};
- surfer = callPackage ./surfer { inherit mylibs; };
- taskwarrior-web = callPackage ./taskwarrior-web { inherit mylibs; };
- ttrss = callPackage ./ttrss {};
- wallabag = callPackage ./wallabag { inherit composerEnv; };
- yourls = callPackage ./yourls { inherit mylibs; };
-}
diff --git a/pkgs/webapps/diaspora/default.nix b/pkgs/webapps/diaspora/default.nix
deleted file mode 100644
index b435347..0000000
--- a/pkgs/webapps/diaspora/default.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{ ldap ? false, varDir ? "/var/lib/diaspora", podmin_email ? null, config_dir ? "/etc/diaspora",
- mylibs, stdenv, bundlerEnv, writeText,
- cacert, defaultGemConfig, perl, ruby_2_4, nodejs, which, git }:
-let
- diaspora_src = stdenv.mkDerivation (mylibs.fetchedGithub ./diaspora.json // rec {
- buildPhase = ''
- ${if ldap then "patch -p1 < ${./ldap.patch}" else ""}
- # FIXME: bundlerEnv below doesn't take postgresql group for some
- # reason
- echo 'gem "pg", "1.1.3"' >> Gemfile
- '';
- installPhase = ''
- cp -a . $out
- '';
- });
- gems = bundlerEnv {
- name = "diaspora-env";
- gemfile = "${diaspora_src}/Gemfile";
- lockfile = "${diaspora_src}/Gemfile.lock";
- gemset = if ldap then ./gemset_ldap.nix else ./gemset.nix;
- groups = [ "postgresql" "default" "production" ];
- gemConfig = defaultGemConfig // {
- kostya-sigar = attrs: {
- buildInputs = [ perl ];
- };
- };
- };
- build_config = writeText "diaspora.yml" ''
- configuration:
- environment:
- certificate_authorities: '${cacert}/etc/ssl/certs/ca-bundle.crt'
- ${if podmin_email != null then ''
- # dummy comment for indentation
- admins:
- podmin_email: '${podmin_email}'
- '' else ""}
- production:
- environment:
- '';
- dummy_token = writeText "secret_token.rb" ''
- Diaspora::Application.config.secret_key_base = 'dummy'
- '';
-in
-stdenv.mkDerivation {
- name = "diaspora";
- inherit diaspora_src;
- builder = writeText "build_diaspora" ''
- source $stdenv/setup
- cp -a $diaspora_src $out
- cd $out
- chmod -R u+rwX .
- tar -czf public/source.tar.gz ./{app,db,lib,script,Gemfile,Gemfile.lock,Rakefile,config.ru}
- ln -s database.yml.example config/database.yml
- ln -s ${build_config} config/diaspora.yml
- ln -s ${dummy_token} config/initializers/secret_token.rb
- ln -sf ${varDir}/schedule.yml config/schedule.yml
- ln -sf ${varDir}/oidc_key.pem config/oidc_key.pem
- ln -sf ${varDir}/uploads public/uploads
- RAILS_ENV=production ${gems}/bin/rake assets:precompile
- ln -sf ${config_dir}/database.yml config/database.yml
- ln -sf ${config_dir}/diaspora.yml config/diaspora.yml
- ln -sf ${config_dir}/secret_token.rb config/initializers/secret_token.rb
- rm -rf tmp log
- ln -sf ${varDir}/tmp tmp
- ln -sf ${varDir}/log log
- '';
- propagatedBuildInputs = [ gems nodejs which git ];
- passthru = { inherit gems varDir; };
-}
diff --git a/pkgs/webapps/diaspora/diaspora.json b/pkgs/webapps/diaspora/diaspora.json
deleted file mode 100644
index e6795aa..0000000
--- a/pkgs/webapps/diaspora/diaspora.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "v0.7.10.0",
- "meta": {
- "name": "diaspora",
- "url": "https://github.com/diaspora/diaspora",
- "branch": "refs/tags/v0.7.10.0"
- },
- "github": {
- "owner": "diaspora",
- "repo": "diaspora",
- "rev": "f0085cf5bb1c45bdfba866f628153d299e56eca8",
- "sha256": "02mnb40rdkk6jlnvpy61fad59gbpgnlwz1k35w4wfqdwzq0znaqp",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/diaspora/gemset.nix b/pkgs/webapps/diaspora/gemset.nix
deleted file mode 100644
index e47f5b7..0000000
--- a/pkgs/webapps/diaspora/gemset.nix
+++ /dev/null
@@ -1,3047 +0,0 @@
-{
- actioncable = {
- dependencies = ["actionpack" "nio4r" "websocket-driver"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "07r6hnh05db84yr9419mbhyzp20hr8yy9m50jxc2w91ghm2qnrrf";
- type = "gem";
- };
- version = "5.1.6";
- };
- actionmailer = {
- dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1s9xcqfx97q4yva2zc4qzb567mwzhry6v3x3zc318aqhcrz31g7c";
- type = "gem";
- };
- version = "5.1.6";
- };
- actionpack = {
- dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0vz2ms80nqw21c304g3w2vkbs80gadzhi3mcwwym7smxccr37kcd";
- type = "gem";
- };
- version = "5.1.6";
- };
- actionview = {
- dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1kfxlz9v7b47pdyy1whb4zzhvaj8h4sp1ajhbih2ax1hkldyg081";
- type = "gem";
- };
- version = "5.1.6";
- };
- active_model_serializers = {
- dependencies = ["activemodel" "concurrent-ruby"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "19zr5pp84q4ya7mfrcanakjv86lv4wfmbcbbd2xnd4bkyprw5w7z";
- type = "gem";
- };
- version = "0.9.7";
- };
- activejob = {
- dependencies = ["activesupport" "globalid"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "02lssq8ps98mfg20dyhcpd16f9c0v4zzy7gfbb6ksbs06wrrd4d2";
- type = "gem";
- };
- version = "5.1.6";
- };
- activemodel = {
- dependencies = ["activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10f8cpv4sl1w3m1qj8hl6sd2f1n7x91h45qaf57qr894ll22jgby";
- type = "gem";
- };
- version = "5.1.6";
- };
- activerecord = {
- dependencies = ["activemodel" "activesupport" "arel"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1iqkvxzx5bfp8rmlccww0cj1xr6iaxmn3hhbj1dv5j9c8mnm980x";
- type = "gem";
- };
- version = "5.1.6";
- };
- activerecord-import = {
- dependencies = ["activerecord"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1bxpbrcwc9k6khizwdikvfbhw9pcvs4sp3h4grpcww5k7bgpliz6";
- type = "gem";
- };
- version = "0.27.0";
- };
- activesupport = {
- dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08dm0mgmj31ggk7ib66wfagj4bgbr2jfl500bqb22x0szslz5lll";
- type = "gem";
- };
- version = "5.1.6";
- };
- acts-as-taggable-on = {
- dependencies = ["activerecord"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0hl52pjgfzy3acdwnbxfqy08m808vlv9dmsyp03d5x7x0y499kvl";
- type = "gem";
- };
- version = "6.0.0";
- };
- acts_as_api = {
- dependencies = ["activemodel" "activesupport" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06miad13nnfr2gslc203ahsbvj499s9lngxxvfizwp964vglygsc";
- type = "gem";
- };
- version = "1.0.1";
- };
- addressable = {
- dependencies = ["public_suffix"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
- type = "gem";
- };
- version = "2.5.2";
- };
- aes_key_wrap = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0li86k0g812jkzrppb2fvqngvzp09nygywjpn81nx90s01wxqw07";
- type = "gem";
- };
- version = "1.0.1";
- };
- arel = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl";
- type = "gem";
- };
- version = "8.0.0";
- };
- asset_sync = {
- dependencies = ["activemodel" "fog-core" "mime-types" "unf"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0mfz51g8rzk5h5fpdhfkycnm7y4dpfhx46wm7fygna7nd4w9ixdx";
- type = "gem";
- };
- version = "2.5.0";
- };
- ast = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
- type = "gem";
- };
- version = "2.4.0";
- };
- attr_required = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2";
- type = "gem";
- };
- version = "1.0.1";
- };
- autoprefixer-rails = {
- dependencies = ["execjs"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08irrl1mz6skagr1lygq79l34lc0dghgva0v9q7nng76dpiglgj3";
- type = "gem";
- };
- version = "8.6.5";
- };
- backports = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g";
- type = "gem";
- };
- version = "3.11.4";
- };
- bcrypt = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
- type = "gem";
- };
- version = "3.1.12";
- };
- bindata = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kz42nvxnk1j9cj0i8lcnhprcgdqsqska92g6l19ziadydfk2gqy";
- type = "gem";
- };
- version = "2.4.4";
- };
- bootstrap-sass = {
- dependencies = ["autoprefixer-rails" "sass"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1bc9bf6caddqn1rv15b5x56yczmbjzaxzl9lk5zbwrg1bfph4bx9";
- type = "gem";
- };
- version = "3.3.7";
- };
- bootstrap-switch-rails = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zkwc1hfmihnm0n9lkva5zk0cmqpfcpnrwnmaniyvgx7rac2r14l";
- type = "gem";
- };
- version = "3.3.3";
- };
- buftok = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rzsy1vy50v55x9z0nivf23y0r9jkmq6i130xa75pq9i8qrn1mxs";
- type = "gem";
- };
- version = "0.2.0";
- };
- builder = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
- type = "gem";
- };
- version = "3.2.3";
- };
- byebug = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10znc1hjv8n686hhpl08f3m2g6h08a4b83nxblqwy2kqamkxcqf8";
- type = "gem";
- };
- version = "10.0.2";
- };
- capybara = {
- dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10zj8syak12xd1kqywr35bkr2hkdjq18kij54x1ys8c26h6j4d0m";
- type = "gem";
- };
- version = "3.11.1";
- };
- carrierwave = {
- dependencies = ["activemodel" "activesupport" "mime-types"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1k9kla5ncygm97vn33lsrs7ch5zy4qqhhvc8m3khm986yaqh75qs";
- type = "gem";
- };
- version = "1.2.3";
- };
- celluloid = {
- dependencies = ["celluloid-essentials" "celluloid-extras" "celluloid-fsm" "celluloid-pool" "celluloid-supervision" "timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10i29q7kkdlrhf5rg43xygdfm795a02vp28k2ca3nklmqna57qmg";
- type = "gem";
- };
- version = "0.17.3";
- };
- celluloid-essentials = {
- dependencies = ["timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1l4p3p73wjdj07ww124q0db5k1cyzggbndzmcb12xbsf2dnj121k";
- type = "gem";
- };
- version = "0.20.5";
- };
- celluloid-extras = {
- dependencies = ["timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "078agvnsfp78jv343kn5g1cz50147dk0q46blwh5r8lk6whag7ng";
- type = "gem";
- };
- version = "0.20.5";
- };
- celluloid-fsm = {
- dependencies = ["timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pmpi6h4abpkczp46rd6llk1mldpx19i9hll8mkxp3kxin9slivc";
- type = "gem";
- };
- version = "0.20.5";
- };
- celluloid-io = {
- dependencies = ["celluloid" "nio4r" "timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1frcpja7h9vcxsw7w7ff550x54rfx514fpv2n6kawbk1j4zrm314";
- type = "gem";
- };
- version = "0.17.3";
- };
- celluloid-pool = {
- dependencies = ["timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1bfr54ijl95bnhqlabhf5p4ff9n0y2sslc91f49jjn33n2zm755c";
- type = "gem";
- };
- version = "0.20.5";
- };
- celluloid-supervision = {
- dependencies = ["timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1b41gg1rsmms0m5mshy6h66y5rydl3nv6x9wf050ixfa1s2c8vzw";
- type = "gem";
- };
- version = "0.20.6";
- };
- chunky_png = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
- type = "gem";
- };
- version = "1.3.10";
- };
- cliver = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
- type = "gem";
- };
- version = "0.3.2";
- };
- coderay = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
- type = "gem";
- };
- version = "1.1.2";
- };
- compass = {
- dependencies = ["chunky_png" "compass-core" "compass-import-once" "rb-fsevent" "rb-inotify" "sass"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lfi83w8z75czr0pf0rmj9hda22082h3cmvczl8r1ma9agf88y2c";
- type = "gem";
- };
- version = "1.0.3";
- };
- compass-core = {
- dependencies = ["multi_json" "sass"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0yaspqwdmzwdcqviclbs3blq7an16pysrfzylz8q1gxmmd6bpj3a";
- type = "gem";
- };
- version = "1.0.3";
- };
- compass-import-once = {
- dependencies = ["sass"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq";
- type = "gem";
- };
- version = "1.0.5";
- };
- compass-rails = {
- dependencies = ["compass" "sass-rails" "sprockets"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "02ydlbl1qb80myjv5xrpwzhmmj6qd80jf5izvpqhq2bikv84j9wr";
- type = "gem";
- };
- version = "3.1.0";
- };
- concurrent-ruby = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18q9skp5pfq4jwbxzmw8q2rn4cpw6mf4561i2hsjcl1nxdag2jvb";
- type = "gem";
- };
- version = "1.1.3";
- };
- configurate = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1m6cppb4jf7liwc3f5dvgn2v2nhp2jq8ixb9papaqz24f4s8dnd1";
- type = "gem";
- };
- version = "0.3.1";
- };
- connection_pool = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
- type = "gem";
- };
- version = "2.2.2";
- };
- coveralls = {
- dependencies = ["json" "simplecov" "term-ansicolor" "thor" "tins"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "022kc16np6w4mv17hq3m9hhw9l8hjl78ld3fzqqx6337vwvwvwcg";
- type = "gem";
- };
- version = "0.8.22";
- };
- crack = {
- dependencies = ["safe_yaml"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
- type = "gem";
- };
- version = "0.4.3";
- };
- crass = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
- type = "gem";
- };
- version = "1.0.4";
- };
- cucumber = {
- dependencies = ["builder" "cucumber-core" "cucumber-expressions" "cucumber-wire" "diff-lcs" "gherkin" "multi_json" "multi_test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1s2brssrpal8hyhcgg974x3xyhpmvpwps5ypd9p8w2lg01l1pp3j";
- type = "gem";
- };
- version = "3.1.2";
- };
- cucumber-api-steps = {
- dependencies = ["cucumber" "jsonpath"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0fij6bgzshda68jp7kac0hs5n6xsmv49g8ynqhy6s3znc9d4qjbw";
- type = "gem";
- };
- version = "0.14.0";
- };
- cucumber-core = {
- dependencies = ["backports" "cucumber-tag_expressions" "gherkin"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c";
- type = "gem";
- };
- version = "3.2.1";
- };
- cucumber-expressions = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw";
- type = "gem";
- };
- version = "6.0.1";
- };
- cucumber-rails = {
- dependencies = ["capybara" "cucumber" "mime-types" "nokogiri" "railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0pmlza6r2601k1i7v3z8gj4apdcq6qa830bzwkj1pnfjzn4z12n7";
- type = "gem";
- };
- version = "1.6.0";
- };
- cucumber-tag_expressions = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc";
- type = "gem";
- };
- version = "1.1.1";
- };
- cucumber-wire = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f";
- type = "gem";
- };
- version = "0.0.1";
- };
- database_cleaner = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "05i0nf2aj70m61y3fspypdkc6d1qgibf5kav05a71b5gjz0k7y5x";
- type = "gem";
- };
- version = "1.7.0";
- };
- devise = {
- dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1vs8nibl568ghm6a7hbw6xgcv8zbm4gykprcxpnzi7bz5d4gvcjx";
- type = "gem";
- };
- version = "4.5.0";
- };
- devise_lastseenable = {
- dependencies = ["devise" "rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1h83h73qjh8fc7lmr089shky8lc3wm4xn653rjdbb0cddflvrx8y";
- type = "gem";
- };
- version = "0.0.6";
- };
- diaspora-prosody-config = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1976ijqjf5jcq1jwr6vi0srjadhbqfa9y3nxyipzcv91pzskl2lp";
- type = "gem";
- };
- version = "0.0.7";
- };
- diaspora_federation = {
- dependencies = ["faraday" "faraday_middleware" "nokogiri" "typhoeus" "valid"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1xxy6ahlhgyr00qkfmmq0h3nqm6gjkr9i6hsqr0nkb3l6qg0m0yc";
- type = "gem";
- };
- version = "0.2.5";
- };
- diaspora_federation-json_schema = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0hfv4cq5wfdg86xmbp5y0h50b11326ymzks1yr9dvr4wa7di00hr";
- type = "gem";
- };
- version = "0.2.5";
- };
- diaspora_federation-rails = {
- dependencies = ["actionpack" "diaspora_federation"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1wrni7d9084v3pqd3sq8j532wx5ym6kmd959bw29bzwxc3zidd9h";
- type = "gem";
- };
- version = "0.2.5";
- };
- diaspora_federation-test = {
- dependencies = ["diaspora_federation" "fabrication" "uuid"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1b09y78pyl9kix8slbybnks2cbq0ac9wml31j2s6qwjixranjsm4";
- type = "gem";
- };
- version = "0.2.5";
- };
- diff-lcs = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
- type = "gem";
- };
- version = "1.3";
- };
- docile = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
- type = "gem";
- };
- version = "1.3.1";
- };
- domain_name = {
- dependencies = ["unf"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
- type = "gem";
- };
- version = "0.5.20180417";
- };
- entypo-rails = {
- dependencies = ["railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "124x0jszg6n0k2lcacd627ndlp1fv7cbgnv4scwy5s3czp0qwip6";
- type = "gem";
- };
- version = "3.0.0";
- };
- equalizer = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
- type = "gem";
- };
- version = "0.0.11";
- };
- erubi = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bws86na9k565raiz0kk61yy5pxxp0fmwyzpibdwjkq0xzx8q6q1";
- type = "gem";
- };
- version = "1.7.1";
- };
- eslintrb = {
- dependencies = ["execjs" "multi_json" "rake"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kx9sbs7pnl436zyczylnqqb1858hffy66fwdqfmcn18q8xdqwkx";
- type = "gem";
- };
- version = "2.1.0";
- };
- et-orbi = {
- dependencies = ["tzinfo"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
- type = "gem";
- };
- version = "1.1.6";
- };
- ethon = {
- dependencies = ["ffi"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0y70szwm2p0b9qfvpqrzjrgm3jz0ig65vlbfr6ppc3z0m1h7kv48";
- type = "gem";
- };
- version = "0.11.0";
- };
- excon = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
- type = "gem";
- };
- version = "0.62.0";
- };
- execjs = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
- type = "gem";
- };
- version = "2.7.0";
- };
- eye = {
- dependencies = ["celluloid" "celluloid-io" "kostya-sigar" "state_machines" "thor"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0gqrrrisy492m6sczq775dyg9sxkl926r8lkr6z33kfb4cnimfzk";
- type = "gem";
- };
- version = "0.10.0";
- };
- fabrication = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0an28kjand4mjbkmnwd9fmgq3y5vf717zpmiijavar3sxqj52zri";
- type = "gem";
- };
- version = "2.20.1";
- };
- factory_girl = {
- dependencies = ["activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0cc60v28r7w1gp34p4amzdnq7cyip6qhffvxywsj3ypilyf8jqla";
- type = "gem";
- };
- version = "4.8.0";
- };
- factory_girl_rails = {
- dependencies = ["factory_girl" "railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0hw8qqp30vm4yf4a36r1r65wk78ihxmas7jg5fyl6fcf705z9fvv";
- type = "gem";
- };
- version = "4.8.0";
- };
- faraday = {
- dependencies = ["multipart-post"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "16hwxc8v0z6gkanckjhx0ffgqmzpc4ywz4dfhxpjlz2mbz8d5m52";
- type = "gem";
- };
- version = "0.15.3";
- };
- faraday-cookie_jar = {
- dependencies = ["faraday" "http-cookie"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1di4gx6446a6zdkrpj679m5k515i53wvb4yxcsqvy8d8zacxiiv6";
- type = "gem";
- };
- version = "0.0.6";
- };
- faraday_middleware = {
- dependencies = ["faraday"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p7icfl28nvl8qqdsngryz1snqic9l8x6bk0dxd7ygn230y0k41d";
- type = "gem";
- };
- version = "0.12.2";
- };
- ffi = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
- type = "gem";
- };
- version = "1.9.25";
- };
- fixture_builder = {
- dependencies = ["activerecord" "activesupport" "hashdiff"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1qlq0nyfhjvz09hm0jankl9bgs9672k31b3lmsfq8p135x3xs627";
- type = "gem";
- };
- version = "0.5.2.rc3";
- };
- fog-aws = {
- dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zprxg0spvkkri1jf40zg3rfr5h2gq6009d7l36lifpvhjn658cs";
- type = "gem";
- };
- version = "3.3.0";
- };
- fog-core = {
- dependencies = ["builder" "excon" "formatador" "mime-types"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fsama04wlxhv537bm4b7rr4zzn0mvisy87m3qzv6f0mhlrq3zp8";
- type = "gem";
- };
- version = "2.1.2";
- };
- fog-json = {
- dependencies = ["fog-core" "multi_json"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
- type = "gem";
- };
- version = "1.2.0";
- };
- fog-xml = {
- dependencies = ["fog-core" "nokogiri"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
- type = "gem";
- };
- version = "0.1.3";
- };
- formatador = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
- type = "gem";
- };
- version = "0.2.5";
- };
- fugit = {
- dependencies = ["et-orbi" "raabro"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
- type = "gem";
- };
- version = "1.1.6";
- };
- fuubar = {
- dependencies = ["rspec-core" "ruby-progressbar"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1sqkr1nh49rlm86l3qyrgsdqavgqii4pnrjn7855z6dfavh3spxr";
- type = "gem";
- };
- version = "2.3.2";
- };
- get_process_mem = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1bvfjdign16r0zwm2rlfrq0sk1licvmlgbnlpnyckniv5r7i080g";
- type = "gem";
- };
- version = "0.2.3";
- };
- gherkin = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s";
- type = "gem";
- };
- version = "5.1.0";
- };
- gitlab = {
- dependencies = ["httparty" "terminal-table"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1nncjmk71ivjxmgkpv100yybry5c7ld6xjgi1b5zsfv4g3mz0v34";
- type = "gem";
- };
- version = "4.7.0";
- };
- globalid = {
- dependencies = ["activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "02smrgdi11kziqi9zhnsy9i6yr2fnxrqlv3lllsvdjki3cd4is38";
- type = "gem";
- };
- version = "0.4.1";
- };
- gon = {
- dependencies = ["actionpack" "multi_json" "request_store"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "07sm7fd94pfscrbs4lyprs0das8s1yn32cw521ch738jaqb388xl";
- type = "gem";
- };
- version = "6.2.1";
- };
- guard = {
- dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
- type = "gem";
- };
- version = "2.15.0";
- };
- guard-compat = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
- type = "gem";
- };
- version = "1.2.1";
- };
- guard-rspec = {
- dependencies = ["guard" "guard-compat" "rspec"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
- type = "gem";
- };
- version = "4.7.3";
- };
- guard-rubocop = {
- dependencies = ["guard" "rubocop"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p97zkzasghl1md13rh57n3s2rr2kqly8w4vfn6vaj89igjpagdp";
- type = "gem";
- };
- version = "1.3.0";
- };
- haml = {
- dependencies = ["temple" "tilt"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac";
- type = "gem";
- };
- version = "5.0.4";
- };
- haml_lint = {
- dependencies = ["haml" "rainbow" "rake" "rubocop" "sysexits"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "125aj0j84nx5gqm42hfx5d8486higlra423ahgfpsdjwbp399rwv";
- type = "gem";
- };
- version = "0.28.0";
- };
- hamlit = {
- dependencies = ["temple" "thor" "tilt"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "14fsc208qsf46cflk23vs2fdw435dk65fwv55zhziciwn96ld8sf";
- type = "gem";
- };
- version = "2.9.1";
- };
- handlebars_assets = {
- dependencies = ["execjs" "sprockets" "tilt"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18pyksz4jb0n28acqxv14ahy8mkc9ldqbbn73gcj28m0l9wjzsca";
- type = "gem";
- };
- version = "0.23.2";
- };
- hashdiff = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
- type = "gem";
- };
- version = "0.3.7";
- };
- hashie = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1hh5lybf8hm7d7xs4xm8hxvm8xqrs2flc8fnwkrclaj746izw6xb";
- type = "gem";
- };
- version = "3.5.7";
- };
- http = {
- dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
- type = "gem";
- };
- version = "3.3.0";
- };
- http-cookie = {
- dependencies = ["domain_name"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
- type = "gem";
- };
- version = "1.0.3";
- };
- http-form_data = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
- type = "gem";
- };
- version = "2.1.1";
- };
- http_accept_language = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
- type = "gem";
- };
- version = "2.1.1";
- };
- "http_parser.rb" = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
- type = "gem";
- };
- version = "0.6.0";
- };
- httparty = {
- dependencies = ["mime-types" "multi_xml"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1xmm7pxmz3pblkdr76dg7qm5s60kpp3yvh46c2i0bn1dm0zgl730";
- type = "gem";
- };
- version = "0.16.3";
- };
- httpclient = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
- type = "gem";
- };
- version = "2.8.3";
- };
- i18n = {
- dependencies = ["concurrent-ruby"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1gcp1m1p6dpasycfz2sj82ci9ggz7lsskz9c9q6gvfwxrl8y9dx7";
- type = "gem";
- };
- version = "1.1.1";
- };
- i18n-inflector = {
- dependencies = ["i18n"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "081jr7z947aqjfmpbfs10w9jxi205jwgk4mgd8jds1b4m4i8mc7g";
- type = "gem";
- };
- version = "2.6.7";
- };
- i18n-inflector-rails = {
- dependencies = ["actionpack" "i18n-inflector" "railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0c04jm657akp5n14syhcwnn3hnsvx7harvg97768bvf3f9a37hyk";
- type = "gem";
- };
- version = "1.0.7";
- };
- ipaddress = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
- type = "gem";
- };
- version = "0.8.3";
- };
- jaro_winkler = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0rr797nqz081bfk30m2apj5h24bg5d1jr1c8p3xwx4hbwsrbclah";
- type = "gem";
- };
- version = "1.5.1";
- };
- jasmine = {
- dependencies = ["jasmine-core" "phantomjs" "rack" "rake"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1xfwf163wi5a9i0vlm564cqi6k30h15wnrwd15ph95jfa5516kv1";
- type = "gem";
- };
- version = "3.3.0";
- };
- jasmine-core = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1b12bjfrxvb8mwjwlfyngykd80lz956glcpfz7rhhw7n75b2rdlv";
- type = "gem";
- };
- version = "3.3.0";
- };
- jasmine-jquery-rails = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0cq5zd4ng5dlza45whd6sa7bzd60rlddk9760271mybdqyd96jlv";
- type = "gem";
- };
- version = "2.0.3";
- };
- jquery-rails = {
- dependencies = ["rails-dom-testing" "railties" "thor"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "17201sb8ddwy4yprizmqabq1kfx3m9c53p0yqngn63m07jjcpnh8";
- type = "gem";
- };
- version = "4.3.3";
- };
- js-routes = {
- dependencies = ["railties" "sprockets-rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "14yx3jrd4sgcwgj8yrrqdwl691mci1hcjqyyvp0v15jbzis1bclm";
- type = "gem";
- };
- version = "1.4.4";
- };
- js_image_paths = {
- dependencies = ["rails" "sprockets"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1d4kq8895i61a338ddk5f2k16l5lvmnkby9cdjwnmm2jddw4q7nf";
- type = "gem";
- };
- version = "0.1.1";
- };
- json = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
- type = "gem";
- };
- version = "2.1.0";
- };
- json-jwt = {
- dependencies = ["activesupport" "aes_key_wrap" "bindata"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "065k7vffdki73f4nz89lxi6wxmcw5dlf593831pgvlbralll6x3r";
- type = "gem";
- };
- version = "1.9.4";
- };
- json-schema = {
- dependencies = ["addressable"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5";
- type = "gem";
- };
- version = "2.8.1";
- };
- json-schema-rspec = {
- dependencies = ["json-schema" "rspec"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ip30yjzyigqqp9jwkrw9x9vrfpnmwi160zmk2vkrwlv9pby0wr9";
- type = "gem";
- };
- version = "0.0.4";
- };
- jsonpath = {
- dependencies = ["multi_json" "to_regexp"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06i41lwpj0dwvbxcpqrad5pjn2gmcv0srv0zw0ap7irwc21ifd7d";
- type = "gem";
- };
- version = "0.9.6";
- };
- jwt = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
- type = "gem";
- };
- version = "2.1.0";
- };
- kgio = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1528pyj1szzzp3pgj05fzjd36qjrxm9yj2x5radc9p1z7vl67y50";
- type = "gem";
- };
- version = "2.11.2";
- };
- kostya-sigar = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0z0pcykhjyrb7kq76jfcyxc1qq23gj5zmgy3miy87v85ydrxiqwb";
- type = "gem";
- };
- version = "2.0.4";
- };
- leaflet-rails = {
- dependencies = ["rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0dy7vhsjj1fhbbqm2s7pw57vgysd31qqi4y0hm91325hmvq75grb";
- type = "gem";
- };
- version = "1.3.1";
- };
- listen = {
- dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
- type = "gem";
- };
- version = "3.1.5";
- };
- little-plugger = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
- type = "gem";
- };
- version = "1.1.4";
- };
- logging = {
- dependencies = ["little-plugger" "multi_json"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06j6iaj89h9jhkx1x3hlswqrfnqds8br05xb1qra69dpvbdmjcwn";
- type = "gem";
- };
- version = "2.2.2";
- };
- logging-rails = {
- dependencies = ["logging"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "022cnj9v177282kadd9ygzjpvlvbq9k5z0xhdbbmgypi05z4i239";
- type = "gem";
- };
- version = "0.6.0";
- };
- loofah = {
- dependencies = ["crass" "nokogiri"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
- type = "gem";
- };
- version = "2.2.3";
- };
- lumberjack = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
- type = "gem";
- };
- version = "1.0.13";
- };
- macaddr = {
- dependencies = ["systemu"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1clii8mvhmh5lmnm95ljnjygyiyhdpja85c5vy487rhxn52scn0b";
- type = "gem";
- };
- version = "1.7.1";
- };
- mail = {
- dependencies = ["mini_mime"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
- type = "gem";
- };
- version = "2.7.1";
- };
- markdown-it-html5-embed = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10n2z6j0whc6makxvcf2jhpwb8xrj4s6vyywijsaaxs0cn490a5c";
- type = "gem";
- };
- version = "1.0.0";
- };
- markerb = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08sm3kafc3086l0a9is2cysk7j2k71mxy6ba295pwwzyvy734y76";
- type = "gem";
- };
- version = "1.1.0";
- };
- memoizable = {
- dependencies = ["thread_safe"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c";
- type = "gem";
- };
- version = "0.4.2";
- };
- method_source = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
- type = "gem";
- };
- version = "0.9.2";
- };
- mime-types = {
- dependencies = ["mime-types-data"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
- type = "gem";
- };
- version = "3.2.2";
- };
- mime-types-data = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
- type = "gem";
- };
- version = "3.2018.0812";
- };
- mini_magick = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0sisx59mr5kydmxmx5vr8spmrxhrjkfqv35zhsqdlyzmp1z5px9p";
- type = "gem";
- };
- version = "4.9.2";
- };
- mini_mime = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
- type = "gem";
- };
- version = "1.0.1";
- };
- mini_portile2 = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
- type = "gem";
- };
- version = "2.3.0";
- };
- minitest = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
- type = "gem";
- };
- version = "5.11.3";
- };
- mobile-fu = {
- dependencies = ["rack-mobile-detect" "rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lxfcsd7dwwcpa1j2jbl382anmv6kksf5q1wqj14gc6jxxjq9s4i";
- type = "gem";
- };
- version = "1.4.0";
- };
- multi_json = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
- type = "gem";
- };
- version = "1.13.1";
- };
- multi_test = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd";
- type = "gem";
- };
- version = "0.1.2";
- };
- multi_xml = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
- type = "gem";
- };
- version = "0.6.0";
- };
- multipart-post = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
- type = "gem";
- };
- version = "2.0.0";
- };
- mysql2 = {
- groups = ["mysql"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1a2kdjgzwh1p2rkcmxaawy6ibi32b04wbdd5d4wr8i342pq76di4";
- type = "gem";
- };
- version = "0.5.2";
- };
- naught = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1wwjx35zgbc0nplp8a866iafk4zsrbhwwz4pav5gydr2wm26nksg";
- type = "gem";
- };
- version = "1.1.0";
- };
- nenv = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
- type = "gem";
- };
- version = "0.3.0";
- };
- nio4r = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
- type = "gem";
- };
- version = "2.3.1";
- };
- nokogiri = {
- dependencies = ["mini_portile2"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
- type = "gem";
- };
- version = "1.8.5";
- };
- notiffany = {
- dependencies = ["nenv" "shellany"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
- type = "gem";
- };
- version = "0.1.1";
- };
- oauth = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
- type = "gem";
- };
- version = "0.5.4";
- };
- oauth2 = {
- dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0av6nlb5y2sm6m8fx669ywrqa9858yqaqfqzny75nqp3anag89qh";
- type = "gem";
- };
- version = "1.4.1";
- };
- octokit = {
- dependencies = ["sawyer"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6";
- type = "gem";
- };
- version = "4.13.0";
- };
- omniauth = {
- dependencies = ["hashie" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1msqr4qq7mfdvl3rg89529isrv595hvjpj2gi0say4b8nwqfggmg";
- type = "gem";
- };
- version = "1.8.1";
- };
- omniauth-oauth = {
- dependencies = ["oauth" "omniauth"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
- type = "gem";
- };
- version = "1.1.0";
- };
- omniauth-oauth2 = {
- dependencies = ["oauth2" "omniauth"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kscjf1y0lnggsl4z3w5bwllqshqjlsl5kmcya5haydajdnzvdjr";
- type = "gem";
- };
- version = "1.5.0";
- };
- omniauth-tumblr = {
- dependencies = ["multi_json" "omniauth-oauth"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10ncmfym4l6k6aqp402g7mqxahbggcj5xkpsjxgngs746s82y97w";
- type = "gem";
- };
- version = "1.2";
- };
- omniauth-twitter = {
- dependencies = ["omniauth-oauth" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0r5j65hkpgzhvvbs90id3nfsjgsad6ymzggbm7zlaxvnrmvnrk65";
- type = "gem";
- };
- version = "1.4.0";
- };
- omniauth-wordpress = {
- dependencies = ["omniauth-oauth2"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "008zx4zwrbzyvlgv6hy68k1d05zskiwvcgwvxxbxhbl0mvlmh303";
- type = "gem";
- };
- version = "0.2.2";
- };
- open_graph_reader = {
- dependencies = ["faraday" "nokogiri"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0af4yldyb0d8zglw73s13pyn0g90gs4m5zf7bwy8r4kym9zbvc21";
- type = "gem";
- };
- version = "0.6.2";
- };
- openid_connect = {
- dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1r13bv18nyvw0g1nw3fzffvv2si99zj24w0k5zgawf4q6nn5f7vd";
- type = "gem";
- };
- version = "1.1.6";
- };
- orm_adapter = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
- type = "gem";
- };
- version = "0.5.0";
- };
- parallel = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67";
- type = "gem";
- };
- version = "1.12.1";
- };
- parser = {
- dependencies = ["ast"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zjk0w1kjj3xk8ymy1430aa4gg0k8ckphfj88br6il4pm83f0n1f";
- type = "gem";
- };
- version = "2.5.3.0";
- };
- pg = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb";
- type = "gem";
- };
- version = "1.1.3";
- };
- phantomjs = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0y8pbbyq9dirxb7igkb2s5limz2895qmr41c09fjhx6k6fxcz4mk";
- type = "gem";
- };
- version = "2.1.1.0";
- };
- poltergeist = {
- dependencies = ["capybara" "cliver" "websocket-driver"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0il80p97psmhs6scl0grq031gv7kws4ylvvd6zyr8xv91qadga95";
- type = "gem";
- };
- version = "1.18.1";
- };
- powerpack = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv";
- type = "gem";
- };
- version = "0.1.2";
- };
- pronto = {
- dependencies = ["gitlab" "httparty" "octokit" "rainbow" "rugged" "thor"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "13xbg1pm3kz5zbzxad5qgqnkzkp3ddajj7wxx16aqbfr7rqggvhz";
- type = "gem";
- };
- version = "0.9.5";
- };
- pronto-eslint = {
- dependencies = ["eslintrb" "pronto"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1cxyx6mlcdgv4ykliaizkx9cps68xf7qvy8lzxmv7pcqzkxaq7xc";
- type = "gem";
- };
- version = "0.9.1";
- };
- pronto-haml = {
- dependencies = ["haml_lint" "pronto"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "116iln1whwiqy55f86q33lnnic0awnqm415xvxwnhwlagcbwmnkg";
- type = "gem";
- };
- version = "0.9.0";
- };
- pronto-rubocop = {
- dependencies = ["pronto" "rubocop"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bcm34qlpp02wf69why5lpi5p53h5r4fq36f4b1fwi621fwzlgsy";
- type = "gem";
- };
- version = "0.9.1";
- };
- pronto-scss = {
- dependencies = ["pronto" "scss_lint"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kgaqd6l2w3brdsp5231fpfr6fwajciz2hdr925l1zhh6ni1y2za";
- type = "gem";
- };
- version = "0.9.1";
- };
- pry = {
- dependencies = ["coderay" "method_source"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
- type = "gem";
- };
- version = "0.12.2";
- };
- pry-byebug = {
- dependencies = ["byebug" "pry"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0y2758593i2ij0nhmv0j1pbdfx2cgi52ns6wkij0frgnk2lf650g";
- type = "gem";
- };
- version = "3.6.0";
- };
- public_suffix = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
- type = "gem";
- };
- version = "3.0.3";
- };
- raabro = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
- type = "gem";
- };
- version = "1.1.6";
- };
- rack = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
- type = "gem";
- };
- version = "2.0.6";
- };
- rack-cors = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1j27vy1bmhbqcyzhxg8d07qassmax769xjalfwcwz6qfiq8cf013";
- type = "gem";
- };
- version = "1.0.2";
- };
- rack-google-analytics = {
- dependencies = ["actionpack" "activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "09pv0z5dhjjrlhi9qj5qy48hi66f7iix337qrapg7mvwwz6czcvj";
- type = "gem";
- };
- version = "1.2.0";
- };
- rack-mobile-detect = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bagli6ldhkpd1yym775sxy7w5n4jds6gbcjm3gmcl37vggvm8a5";
- type = "gem";
- };
- version = "0.4.0";
- };
- rack-oauth2 = {
- dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kmxj9hbjhhcs3yyb433s82hkpmzb536m0mwfadjiaisganx1cii";
- type = "gem";
- };
- version = "1.9.3";
- };
- rack-piwik = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0raxrckapqh693lpid0cnx1j1v2i3mz5cyssg7grgrilgrn9318z";
- type = "gem";
- };
- version = "0.3.0";
- };
- rack-protection = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ylx74ravz7nvnyygq0nk3v86qdzrmqxpwpayhppyy50l72rcajq";
- type = "gem";
- };
- version = "2.0.4";
- };
- rack-rewrite = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0milw71dv96wnc6i48vbzypws51dgf415kkp8c4air0mkdhpj838";
- type = "gem";
- };
- version = "1.5.1";
- };
- rack-ssl = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0c21xqkjyl10fngq6dy8082vmn2png8cwkiyzv83ymixq5cx7ygp";
- type = "gem";
- };
- version = "1.4.1";
- };
- rack-test = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
- type = "gem";
- };
- version = "1.1.0";
- };
- rails = {
- dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lb07cbwgm371zyn9i6fyj9q8rmv89lacmyzrfvzxqqx2n3ilc5q";
- type = "gem";
- };
- version = "5.1.6";
- };
- rails-assets-autosize = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0hr72mfprb9678lf7dj9lh801lm7p98nzkrnrz764sy9lmbpzcib";
- type = "gem";
- };
- version = "4.0.2";
- };
- rails-assets-backbone = {
- dependencies = ["rails-assets-underscore"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0zjgwhgfmg1jyyds7zfjp6g4bz8vw56qvhlrpj943wcqpdxm93id";
- type = "gem";
- };
- version = "1.3.3";
- };
- rails-assets-blueimp-gallery = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "18b7xvvkdnd39xlbkyw46i86w3wzj349s8iv5wdiypa5qdcql8mq";
- type = "gem";
- };
- version = "2.33.0";
- };
- rails-assets-bootstrap = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0x4i11132qcmghmqb061iq47yksrr7i0la5hzzdm38dxybh87x5v";
- type = "gem";
- };
- version = "3.3.7";
- };
- rails-assets-bootstrap-markdown = {
- dependencies = ["rails-assets-bootstrap"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1nxirs9wx5jxrjmxjwvsqlf2rsypjn3ajg7fs28c4ib7wwpabwj3";
- type = "gem";
- };
- version = "2.10.0";
- };
- rails-assets-corejs-typeahead = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1p5i6afd156rakrin99c2ryaz3zykx21ir6y10l34jnw03rikcfg";
- type = "gem";
- };
- version = "1.2.1";
- };
- rails-assets-diaspora_jsxc = {
- dependencies = ["rails-assets-emojione" "rails-assets-favico.js" "rails-assets-jquery-colorbox" "rails-assets-jquery-fullscreen-plugin" "rails-assets-jquery.slimscroll" "rails-assets-jquery.ui"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "07vqdj0l8fsj4fd2sschba2jgfbimyfad56009ldzlcvb6ml5nhi";
- type = "gem";
- };
- version = "0.1.5.develop.7";
- };
- rails-assets-emojione = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1j29vbsf6v9ikiqlmnfgzxys4xsa1glvmfky8id5xfyymnjx2c52";
- type = "gem";
- };
- version = "2.0.1";
- };
- "rails-assets-favico.js" = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "19yndhljmqlvarf49h5v71zq0p0ngvspjr2v0m6lac0q9ni7r5bv";
- type = "gem";
- };
- version = "0.3.10";
- };
- rails-assets-fine-uploader = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1vxj78x2vvlchpapxpaawysc9wn8alzdd3gxhwfwy11xv8ka9mdv";
- type = "gem";
- };
- version = "5.13.0";
- };
- rails-assets-highlightjs = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0spmb0gkfs13fmljjv1n53r53q69fhb6r573ndbxnhgb3izqgnqp";
- type = "gem";
- };
- version = "9.12.0";
- };
- rails-assets-jasmine = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1n6yixrl9cgq5kckay75b44p878s1kqi69mhgyw99w8dsq8i2vy5";
- type = "gem";
- };
- version = "3.3.0";
- };
- rails-assets-jasmine-ajax = {
- dependencies = ["rails-assets-jasmine"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0l8z0p75x1yzk1l1ryfvdlvq8yq4w2xngp4icz478axd5jcqx6kg";
- type = "gem";
- };
- version = "3.4.0";
- };
- rails-assets-jquery = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1wcaappk12w300733lrqb571cir9nw35d9q6d2i52wwdvhv2fx2y";
- type = "gem";
- };
- version = "3.3.1";
- };
- rails-assets-jquery-colorbox = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "19ws3r1zfviwnfr9s0jh6iqss50iwqkf4a78zhrk0p3bb4lvmmsp";
- type = "gem";
- };
- version = "1.6.4";
- };
- rails-assets-jquery-fullscreen-plugin = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0ldvq4s15lap9p6w7d1yw6dajn2gh6p75dbkp79p0d8ylzapsd58";
- type = "gem";
- };
- version = "0.5.0";
- };
- rails-assets-jquery-placeholder = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0h17gjazc27pj4cm2ig232ww4d4ppq9bcginwzjss95pl63richi";
- type = "gem";
- };
- version = "2.3.1";
- };
- rails-assets-jquery-textchange = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0rsw3cn9a5njv80zy53339kmrmv60b8fqcrr7bacapbagb2rd4dj";
- type = "gem";
- };
- version = "0.2.3";
- };
- "rails-assets-jquery.are-you-sure" = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0nj04aqh9jpcg57xbjxpm2vn7mkd5clnpma907515a1nxy40bym0";
- type = "gem";
- };
- version = "1.9.0";
- };
- "rails-assets-jquery.slimscroll" = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1rymmd2rxy1vjjj70v88abmdlfs55276rs3rksj300dgirnnj998";
- type = "gem";
- };
- version = "1.3.8";
- };
- "rails-assets-jquery.ui" = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0xc9kfb29hi441irj49b7aawxkddk1dxzy938rpqv9ylpsj7knaa";
- type = "gem";
- };
- version = "1.11.4";
- };
- rails-assets-markdown-it = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0fxx7ldszsdqr5ry21bnxmv33byz7abpk9lcp100q5cqsjx091r9";
- type = "gem";
- };
- version = "8.4.2";
- };
- rails-assets-markdown-it--markdown-it-for-inline = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0fznv2x7ndadr3wb4dzhh86bpcpwz8f4d8rfhz4sfbqlai40j3jl";
- type = "gem";
- };
- version = "0.1.1";
- };
- rails-assets-markdown-it-diaspora-mention = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0asggm7wgmdll8x94291p2w6icmp2izi914dlh3b7vb7dpjq3jig";
- type = "gem";
- };
- version = "1.2.0";
- };
- rails-assets-markdown-it-hashtag = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0dr8fwaxgkfqm7z4rl4jdym0i1ycqw1sgkxshkd9k0849ry12cdk";
- type = "gem";
- };
- version = "0.4.0";
- };
- rails-assets-markdown-it-sanitizer = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0fkpffh83fc257zkzaia93j4hw2baz90lg10s5yxsxww06q5dn36";
- type = "gem";
- };
- version = "0.4.3";
- };
- rails-assets-markdown-it-sub = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "08hjij5fqvhvg7s27n4g8qqsks974g3kc5k7xl2qmh41k7f4hcrk";
- type = "gem";
- };
- version = "1.0.0";
- };
- rails-assets-markdown-it-sup = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "17nnnvky7zy0yiwwl6dm8ibbkyvvf63xfp3snch4dzmras05lmig";
- type = "gem";
- };
- version = "1.0.0";
- };
- rails-assets-underscore = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1ccnzj7aqrvngcs915y290pijryqmjygimdwlrykpyj8vwzifdnc";
- type = "gem";
- };
- version = "1.9.1";
- };
- rails-assets-utatti-perfect-scrollbar = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0m8syfv8p5bnwm8nrba6mpjnhrd29ffwzi6awhiw537jqw42b12v";
- type = "gem";
- };
- version = "1.4.0";
- };
- rails-controller-testing = {
- dependencies = ["actionpack" "actionview" "activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "16kdkk73mhhs73iz3i1i0ryjm84dadiyh817b3nh8acdi490jyhy";
- type = "gem";
- };
- version = "1.0.2";
- };
- rails-dom-testing = {
- dependencies = ["activesupport" "nokogiri"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
- type = "gem";
- };
- version = "2.0.3";
- };
- rails-html-sanitizer = {
- dependencies = ["loofah"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
- type = "gem";
- };
- version = "1.0.4";
- };
- rails-i18n = {
- dependencies = ["i18n" "railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "05lkhc737a9dw0hd5ljmja0yp4cw39r3200s1r0n4bs7z1g3ka7l";
- type = "gem";
- };
- version = "5.1.2";
- };
- rails-timeago = {
- dependencies = ["actionpack" "activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01x1vs9hni9wn8dc4fmyqzkrn651chzsi2mhmk0pxdrfx9md0lxv";
- type = "gem";
- };
- version = "2.16.0";
- };
- railties = {
- dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ycy2gdaj0px1vfaghskvl6qkczwaigrli2zxn54w7zn1z29faj8";
- type = "gem";
- };
- version = "5.1.6";
- };
- rainbow = {
- dependencies = ["rake"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08w2ghc5nv0kcq5b257h7dwjzjz1pqcavajfdx2xjyxqsvh2y34w";
- type = "gem";
- };
- version = "2.2.2";
- };
- raindrops = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1qpbd9jif40c53fz2r0l8khfl016y8s8bkx37ibcaafclbl3xygp";
- type = "gem";
- };
- version = "0.19.0";
- };
- rake = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg";
- type = "gem";
- };
- version = "12.3.1";
- };
- rb-fsevent = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
- type = "gem";
- };
- version = "0.10.3";
- };
- rb-inotify = {
- dependencies = ["ffi"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
- type = "gem";
- };
- version = "0.9.10";
- };
- redcarpet = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7";
- type = "gem";
- };
- version = "3.4.0";
- };
- redis = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0i415x8gi0c5vsiy6ikvx5js6fhc4x80a5lqv8iidy2iymd20irv";
- type = "gem";
- };
- version = "3.3.5";
- };
- regexp_parser = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18g5jyg3blsdrz3mc8d87bms6qqn6gcdh1nvdhvgbjdpk9pw21dq";
- type = "gem";
- };
- version = "1.3.0";
- };
- request_store = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
- type = "gem";
- };
- version = "1.4.1";
- };
- responders = {
- dependencies = ["actionpack" "railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rhdyyvvm26f2l3fgwdp6xasfl2y0whwgy766bhdwz697mf78zfn";
- type = "gem";
- };
- version = "2.4.0";
- };
- rspec = {
- dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
- type = "gem";
- };
- version = "3.8.0";
- };
- rspec-core = {
- dependencies = ["rspec-support"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
- type = "gem";
- };
- version = "3.8.0";
- };
- rspec-expectations = {
- dependencies = ["diff-lcs" "rspec-support"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
- type = "gem";
- };
- version = "3.8.2";
- };
- rspec-json_expectations = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0l3dhvkb95zwyg72wz33azxigc9cisqgg3z16ksns1sx0b93nnbn";
- type = "gem";
- };
- version = "2.1.0";
- };
- rspec-mocks = {
- dependencies = ["diff-lcs" "rspec-support"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
- type = "gem";
- };
- version = "3.8.0";
- };
- rspec-rails = {
- dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0sqj5da2kc937j5jb18jcf0hrmmzwgj7pk62j0q3qndhc2kvx88p";
- type = "gem";
- };
- version = "3.8.1";
- };
- rspec-support = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
- type = "gem";
- };
- version = "3.8.0";
- };
- rubocop = {
- dependencies = ["jaro_winkler" "parallel" "parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ivk049z3mp12nc6v1wn35bsq1g7nz1i2r4xwzqf0v25hm2v7n1i";
- type = "gem";
- };
- version = "0.60.0";
- };
- ruby-oembed = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1kw4aplb3m13z3kchhb79wf87qb3prn1m99s6vl5cyp0xqwyymv0";
- type = "gem";
- };
- version = "0.12.0";
- };
- ruby-progressbar = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk";
- type = "gem";
- };
- version = "1.10.0";
- };
- ruby_dep = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
- type = "gem";
- };
- version = "1.5.0";
- };
- rubyzip = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1n1lb2sdwh9h27y244hxzg1lrxxg2m53pk1vq7p33bna003qkyrj";
- type = "gem";
- };
- version = "1.2.2";
- };
- rugged = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1jv4nw9hvlxp8hhhlllrfcznki82i50fp1sj65zsjllfl2bvz8x6";
- type = "gem";
- };
- version = "0.27.5";
- };
- safe_yaml = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
- type = "gem";
- };
- version = "1.0.4";
- };
- sass = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kfpcwh8dgw4lc81qglkvjl73689jy3g7196zkxm4fpskg1p5lkw";
- type = "gem";
- };
- version = "3.4.25";
- };
- sass-rails = {
- dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s";
- type = "gem";
- };
- version = "5.0.7";
- };
- sawyer = {
- dependencies = ["addressable" "faraday"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0sv1463r7bqzvx4drqdmd36m7rrv6sf1v3c6vswpnq3k6vdw2dvd";
- type = "gem";
- };
- version = "0.8.1";
- };
- scss_lint = {
- dependencies = ["rake" "sass"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "11rl8kj32p34mqlkhxvlwfrwl8gdl0iha8q9xsrr3sjxjagzv8yp";
- type = "gem";
- };
- version = "0.55.0";
- };
- secure_headers = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "17cxci8jyvlgssix0cy7kbm5m2h7s8ym9caj8nilrbd21jis9pc5";
- type = "gem";
- };
- version = "6.0.0";
- };
- shellany = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
- type = "gem";
- };
- version = "0.0.1";
- };
- shoulda-matchers = {
- dependencies = ["activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a";
- type = "gem";
- };
- version = "3.1.2";
- };
- sidekiq = {
- dependencies = ["connection_pool" "rack-protection" "redis"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zyf9y3rvzizbwh68i2g1lzd40lalrdc4iyjmaa74gnfwsf92i26";
- type = "gem";
- };
- version = "5.2.3";
- };
- sidekiq-cron = {
- dependencies = ["fugit" "sidekiq"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1aliswahmpxn1ib2brn4126gk97ac3zdnwr71mn8vzbr3vdd7fl0";
- type = "gem";
- };
- version = "1.0.4";
- };
- simple_captcha2 = {
- dependencies = ["rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0vdjydym8sjpa8c1q0n2hanj3n9vzi4ycdw2p6bbm6qqmm1f3fq3";
- type = "gem";
- };
- version = "0.4.3";
- };
- simple_oauth = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0dw9ii6m7wckml100xhjc6vxpjcry174lbi9jz5v7ibjr3i94y8l";
- type = "gem";
- };
- version = "0.3.1";
- };
- simplecov = {
- dependencies = ["docile" "json" "simplecov-html"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
- type = "gem";
- };
- version = "0.16.1";
- };
- simplecov-html = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
- type = "gem";
- };
- version = "0.10.2";
- };
- sinon-rails = {
- dependencies = ["railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1b7996hb8vfky29b0zcql90x8i6vhdg2zy9nfzmhh820gjv3kggb";
- type = "gem";
- };
- version = "1.15.0";
- };
- spring = {
- dependencies = ["activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "168yz9c1fv21wc5i8q7n43b9nk33ivg3ws1fn6x0afgryz3ssx75";
- type = "gem";
- };
- version = "2.0.2";
- };
- spring-commands-cucumber = {
- dependencies = ["spring"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0mw81gvms2svn4k4pc6ly7smkmf0j9r2xbf0d38vygbyhiwd1c9a";
- type = "gem";
- };
- version = "1.0.1";
- };
- spring-commands-rspec = {
- dependencies = ["spring"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
- type = "gem";
- };
- version = "1.0.4";
- };
- sprockets = {
- dependencies = ["concurrent-ruby" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
- type = "gem";
- };
- version = "3.7.2";
- };
- sprockets-rails = {
- dependencies = ["actionpack" "activesupport" "sprockets"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
- type = "gem";
- };
- version = "3.2.1";
- };
- state_machines = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
- type = "gem";
- };
- version = "0.5.0";
- };
- string-direction = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0iyddwmkj425c6xbn5pmlr2yzwcq4snzlan7rky5b1yp2pvf70jj";
- type = "gem";
- };
- version = "1.2.1";
- };
- swd = {
- dependencies = ["activesupport" "attr_required" "httpclient"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1s2vjb6f13za7p1iycl2p73d3p202xa6xny9fjrp8ynwsqix7lyd";
- type = "gem";
- };
- version = "1.1.2";
- };
- sysexits = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0qjng6pllznmprzx8vb0zg0c86hdrkyjs615q41s9fjpmv2430jr";
- type = "gem";
- };
- version = "1.2.0";
- };
- systemu = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1";
- type = "gem";
- };
- version = "2.6.5";
- };
- temple = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00nxf610nzi4n1i2lkby43nrnarvl89fcl6lg19406msr0k3ycmq";
- type = "gem";
- };
- version = "0.8.0";
- };
- term-ansicolor = {
- dependencies = ["tins"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "079hbagd9mk0839rkajsdrbzkn992gj8ah2n45qd64v25ml27i6d";
- type = "gem";
- };
- version = "1.7.0";
- };
- terminal-table = {
- dependencies = ["unicode-display_width"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
- type = "gem";
- };
- version = "1.8.0";
- };
- thor = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns";
- type = "gem";
- };
- version = "0.19.4";
- };
- thread_safe = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
- type = "gem";
- };
- version = "0.3.6";
- };
- tilt = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
- type = "gem";
- };
- version = "2.0.8";
- };
- timecop = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp";
- type = "gem";
- };
- version = "0.9.1";
- };
- timers = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04zbs9wyzajn7g9xfgg2zqz5kzf0qa7jgh4hgry4pfcxfmlnwdwx";
- type = "gem";
- };
- version = "4.2.0";
- };
- tins = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pqj45n216zrz7yckdbdknlmhh187iqzx8fp76y2h0jrgqjfkxmj";
- type = "gem";
- };
- version = "1.20.2";
- };
- to_regexp = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rgabfhnql6l4fx09mmj5d0vza924iczqf2blmn82l782b6qqi9v";
- type = "gem";
- };
- version = "0.2.1";
- };
- turbo_dev_assets = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08yp7gpishjfj8b7d61hxs677288ycv6yg78a7hfzn631gxczipx";
- type = "gem";
- };
- version = "0.0.2";
- };
- twitter = {
- dependencies = ["addressable" "buftok" "equalizer" "http" "http-form_data" "http_parser.rb" "memoizable" "multipart-post" "naught" "simple_oauth"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0fjyz3viabz3xs5d9aad18zgdbhfwm51jsnzigc8kxk77p1x58n5";
- type = "gem";
- };
- version = "6.2.0";
- };
- twitter-text = {
- dependencies = ["unf"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
- type = "gem";
- };
- version = "1.14.7";
- };
- typhoeus = {
- dependencies = ["ethon"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0cni8b1idcp0dk8kybmxydadhfpaj3lbs99w5kjibv8bsmip2zi5";
- type = "gem";
- };
- version = "1.3.1";
- };
- tzinfo = {
- dependencies = ["thread_safe"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
- type = "gem";
- };
- version = "1.2.5";
- };
- uglifier = {
- dependencies = ["execjs"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1g203kly5wp4qlkc7371skyvyin6iinc8i0p5wrpiqgblqxxgcf1";
- type = "gem";
- };
- version = "4.1.19";
- };
- unf = {
- dependencies = ["unf_ext"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
- type = "gem";
- };
- version = "0.1.4";
- };
- unf_ext = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
- type = "gem";
- };
- version = "0.0.7.5";
- };
- unicode-display_width = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0040bsdpcmvp8w31lqi2s9s4p4h031zv52401qidmh25cgyh4a57";
- type = "gem";
- };
- version = "1.4.0";
- };
- unicorn = {
- dependencies = ["kgio" "raindrops"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1qfhvzs4i6ja1s43j8p1kfbzm10n7a02ngki30a38y5m46a2qrak";
- type = "gem";
- };
- version = "5.4.1";
- };
- unicorn-worker-killer = {
- dependencies = ["get_process_mem" "unicorn"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva";
- type = "gem";
- };
- version = "0.4.4";
- };
- uuid = {
- dependencies = ["macaddr"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1mr405vg4ccnndkyf7pb49gp1fha8i6gj7iwq43nxkak41cwzh5f";
- type = "gem";
- };
- version = "2.3.9";
- };
- valid = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0vxrgik9gxyh5j2w16nz5azjk0cbzmvv883hq9pvxm9anfbbj8d3";
- type = "gem";
- };
- version = "1.2.0";
- };
- validate_email = {
- dependencies = ["activemodel" "mail"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx";
- type = "gem";
- };
- version = "0.1.6";
- };
- validate_url = {
- dependencies = ["activemodel" "addressable"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1df4gch8dizimpbl185vfgw95yb8ffr6zwj6whzbxfil95c3f2qh";
- type = "gem";
- };
- version = "1.0.2";
- };
- versionist = {
- dependencies = ["activesupport" "railties" "yard"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p8wizg6jml7gz1qiqk7d77hy0w5650g812jhgd0zzkwwdmzm38m";
- type = "gem";
- };
- version = "1.7.0";
- };
- warden = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
- type = "gem";
- };
- version = "1.2.8";
- };
- webfinger = {
- dependencies = ["activesupport" "httpclient"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar";
- type = "gem";
- };
- version = "1.1.0";
- };
- webmock = {
- dependencies = ["addressable" "crack" "hashdiff"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib";
- type = "gem";
- };
- version = "3.4.2";
- };
- websocket-driver = {
- dependencies = ["websocket-extensions"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1943442yllhldh9dbp374x2q39cxa49xrm28nb78b7mfbv3y195l";
- type = "gem";
- };
- version = "0.6.5";
- };
- websocket-extensions = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
- type = "gem";
- };
- version = "0.1.3";
- };
- will_paginate = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ihf15yaj8883ddhkxq7q60zrg3zfsvqaf5853gybhcg18zq8bn9";
- type = "gem";
- };
- version = "3.1.6";
- };
- xpath = {
- dependencies = ["nokogiri"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
- type = "gem";
- };
- version = "3.2.0";
- };
- yard = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67";
- type = "gem";
- };
- version = "0.9.16";
- };
-}
diff --git a/pkgs/webapps/diaspora/gemset_ldap.nix b/pkgs/webapps/diaspora/gemset_ldap.nix
deleted file mode 100644
index d7892f8..0000000
--- a/pkgs/webapps/diaspora/gemset_ldap.nix
+++ /dev/null
@@ -1,3056 +0,0 @@
-{
- actioncable = {
- dependencies = ["actionpack" "nio4r" "websocket-driver"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "07r6hnh05db84yr9419mbhyzp20hr8yy9m50jxc2w91ghm2qnrrf";
- type = "gem";
- };
- version = "5.1.6";
- };
- actionmailer = {
- dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1s9xcqfx97q4yva2zc4qzb567mwzhry6v3x3zc318aqhcrz31g7c";
- type = "gem";
- };
- version = "5.1.6";
- };
- actionpack = {
- dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0vz2ms80nqw21c304g3w2vkbs80gadzhi3mcwwym7smxccr37kcd";
- type = "gem";
- };
- version = "5.1.6";
- };
- actionview = {
- dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1kfxlz9v7b47pdyy1whb4zzhvaj8h4sp1ajhbih2ax1hkldyg081";
- type = "gem";
- };
- version = "5.1.6";
- };
- active_model_serializers = {
- dependencies = ["activemodel" "concurrent-ruby"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "19zr5pp84q4ya7mfrcanakjv86lv4wfmbcbbd2xnd4bkyprw5w7z";
- type = "gem";
- };
- version = "0.9.7";
- };
- activejob = {
- dependencies = ["activesupport" "globalid"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "02lssq8ps98mfg20dyhcpd16f9c0v4zzy7gfbb6ksbs06wrrd4d2";
- type = "gem";
- };
- version = "5.1.6";
- };
- activemodel = {
- dependencies = ["activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10f8cpv4sl1w3m1qj8hl6sd2f1n7x91h45qaf57qr894ll22jgby";
- type = "gem";
- };
- version = "5.1.6";
- };
- activerecord = {
- dependencies = ["activemodel" "activesupport" "arel"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1iqkvxzx5bfp8rmlccww0cj1xr6iaxmn3hhbj1dv5j9c8mnm980x";
- type = "gem";
- };
- version = "5.1.6";
- };
- activerecord-import = {
- dependencies = ["activerecord"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1bxpbrcwc9k6khizwdikvfbhw9pcvs4sp3h4grpcww5k7bgpliz6";
- type = "gem";
- };
- version = "0.27.0";
- };
- activesupport = {
- dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08dm0mgmj31ggk7ib66wfagj4bgbr2jfl500bqb22x0szslz5lll";
- type = "gem";
- };
- version = "5.1.6";
- };
- acts-as-taggable-on = {
- dependencies = ["activerecord"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0hl52pjgfzy3acdwnbxfqy08m808vlv9dmsyp03d5x7x0y499kvl";
- type = "gem";
- };
- version = "6.0.0";
- };
- acts_as_api = {
- dependencies = ["activemodel" "activesupport" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06miad13nnfr2gslc203ahsbvj499s9lngxxvfizwp964vglygsc";
- type = "gem";
- };
- version = "1.0.1";
- };
- addressable = {
- dependencies = ["public_suffix"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
- type = "gem";
- };
- version = "2.5.2";
- };
- aes_key_wrap = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0li86k0g812jkzrppb2fvqngvzp09nygywjpn81nx90s01wxqw07";
- type = "gem";
- };
- version = "1.0.1";
- };
- arel = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl";
- type = "gem";
- };
- version = "8.0.0";
- };
- asset_sync = {
- dependencies = ["activemodel" "fog-core" "mime-types" "unf"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0mfz51g8rzk5h5fpdhfkycnm7y4dpfhx46wm7fygna7nd4w9ixdx";
- type = "gem";
- };
- version = "2.5.0";
- };
- ast = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
- type = "gem";
- };
- version = "2.4.0";
- };
- attr_required = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2";
- type = "gem";
- };
- version = "1.0.1";
- };
- autoprefixer-rails = {
- dependencies = ["execjs"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08irrl1mz6skagr1lygq79l34lc0dghgva0v9q7nng76dpiglgj3";
- type = "gem";
- };
- version = "8.6.5";
- };
- backports = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g";
- type = "gem";
- };
- version = "3.11.4";
- };
- bcrypt = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
- type = "gem";
- };
- version = "3.1.12";
- };
- bindata = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kz42nvxnk1j9cj0i8lcnhprcgdqsqska92g6l19ziadydfk2gqy";
- type = "gem";
- };
- version = "2.4.4";
- };
- bootstrap-sass = {
- dependencies = ["autoprefixer-rails" "sass"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1bc9bf6caddqn1rv15b5x56yczmbjzaxzl9lk5zbwrg1bfph4bx9";
- type = "gem";
- };
- version = "3.3.7";
- };
- bootstrap-switch-rails = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zkwc1hfmihnm0n9lkva5zk0cmqpfcpnrwnmaniyvgx7rac2r14l";
- type = "gem";
- };
- version = "3.3.3";
- };
- buftok = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rzsy1vy50v55x9z0nivf23y0r9jkmq6i130xa75pq9i8qrn1mxs";
- type = "gem";
- };
- version = "0.2.0";
- };
- builder = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
- type = "gem";
- };
- version = "3.2.3";
- };
- byebug = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10znc1hjv8n686hhpl08f3m2g6h08a4b83nxblqwy2kqamkxcqf8";
- type = "gem";
- };
- version = "10.0.2";
- };
- capybara = {
- dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10zj8syak12xd1kqywr35bkr2hkdjq18kij54x1ys8c26h6j4d0m";
- type = "gem";
- };
- version = "3.11.1";
- };
- carrierwave = {
- dependencies = ["activemodel" "activesupport" "mime-types"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1k9kla5ncygm97vn33lsrs7ch5zy4qqhhvc8m3khm986yaqh75qs";
- type = "gem";
- };
- version = "1.2.3";
- };
- celluloid = {
- dependencies = ["celluloid-essentials" "celluloid-extras" "celluloid-fsm" "celluloid-pool" "celluloid-supervision" "timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10i29q7kkdlrhf5rg43xygdfm795a02vp28k2ca3nklmqna57qmg";
- type = "gem";
- };
- version = "0.17.3";
- };
- celluloid-essentials = {
- dependencies = ["timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1l4p3p73wjdj07ww124q0db5k1cyzggbndzmcb12xbsf2dnj121k";
- type = "gem";
- };
- version = "0.20.5";
- };
- celluloid-extras = {
- dependencies = ["timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "078agvnsfp78jv343kn5g1cz50147dk0q46blwh5r8lk6whag7ng";
- type = "gem";
- };
- version = "0.20.5";
- };
- celluloid-fsm = {
- dependencies = ["timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pmpi6h4abpkczp46rd6llk1mldpx19i9hll8mkxp3kxin9slivc";
- type = "gem";
- };
- version = "0.20.5";
- };
- celluloid-io = {
- dependencies = ["celluloid" "nio4r" "timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1frcpja7h9vcxsw7w7ff550x54rfx514fpv2n6kawbk1j4zrm314";
- type = "gem";
- };
- version = "0.17.3";
- };
- celluloid-pool = {
- dependencies = ["timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1bfr54ijl95bnhqlabhf5p4ff9n0y2sslc91f49jjn33n2zm755c";
- type = "gem";
- };
- version = "0.20.5";
- };
- celluloid-supervision = {
- dependencies = ["timers"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1b41gg1rsmms0m5mshy6h66y5rydl3nv6x9wf050ixfa1s2c8vzw";
- type = "gem";
- };
- version = "0.20.6";
- };
- chunky_png = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
- type = "gem";
- };
- version = "1.3.10";
- };
- cliver = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
- type = "gem";
- };
- version = "0.3.2";
- };
- coderay = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
- type = "gem";
- };
- version = "1.1.2";
- };
- compass = {
- dependencies = ["chunky_png" "compass-core" "compass-import-once" "rb-fsevent" "rb-inotify" "sass"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lfi83w8z75czr0pf0rmj9hda22082h3cmvczl8r1ma9agf88y2c";
- type = "gem";
- };
- version = "1.0.3";
- };
- compass-core = {
- dependencies = ["multi_json" "sass"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0yaspqwdmzwdcqviclbs3blq7an16pysrfzylz8q1gxmmd6bpj3a";
- type = "gem";
- };
- version = "1.0.3";
- };
- compass-import-once = {
- dependencies = ["sass"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq";
- type = "gem";
- };
- version = "1.0.5";
- };
- compass-rails = {
- dependencies = ["compass" "sass-rails" "sprockets"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "02ydlbl1qb80myjv5xrpwzhmmj6qd80jf5izvpqhq2bikv84j9wr";
- type = "gem";
- };
- version = "3.1.0";
- };
- concurrent-ruby = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18q9skp5pfq4jwbxzmw8q2rn4cpw6mf4561i2hsjcl1nxdag2jvb";
- type = "gem";
- };
- version = "1.1.3";
- };
- configurate = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1m6cppb4jf7liwc3f5dvgn2v2nhp2jq8ixb9papaqz24f4s8dnd1";
- type = "gem";
- };
- version = "0.3.1";
- };
- connection_pool = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
- type = "gem";
- };
- version = "2.2.2";
- };
- coveralls = {
- dependencies = ["json" "simplecov" "term-ansicolor" "thor" "tins"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "022kc16np6w4mv17hq3m9hhw9l8hjl78ld3fzqqx6337vwvwvwcg";
- type = "gem";
- };
- version = "0.8.22";
- };
- crack = {
- dependencies = ["safe_yaml"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
- type = "gem";
- };
- version = "0.4.3";
- };
- crass = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
- type = "gem";
- };
- version = "1.0.4";
- };
- cucumber = {
- dependencies = ["builder" "cucumber-core" "cucumber-expressions" "cucumber-wire" "diff-lcs" "gherkin" "multi_json" "multi_test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1s2brssrpal8hyhcgg974x3xyhpmvpwps5ypd9p8w2lg01l1pp3j";
- type = "gem";
- };
- version = "3.1.2";
- };
- cucumber-api-steps = {
- dependencies = ["cucumber" "jsonpath"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0fij6bgzshda68jp7kac0hs5n6xsmv49g8ynqhy6s3znc9d4qjbw";
- type = "gem";
- };
- version = "0.14.0";
- };
- cucumber-core = {
- dependencies = ["backports" "cucumber-tag_expressions" "gherkin"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c";
- type = "gem";
- };
- version = "3.2.1";
- };
- cucumber-expressions = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw";
- type = "gem";
- };
- version = "6.0.1";
- };
- cucumber-rails = {
- dependencies = ["capybara" "cucumber" "mime-types" "nokogiri" "railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0pmlza6r2601k1i7v3z8gj4apdcq6qa830bzwkj1pnfjzn4z12n7";
- type = "gem";
- };
- version = "1.6.0";
- };
- cucumber-tag_expressions = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc";
- type = "gem";
- };
- version = "1.1.1";
- };
- cucumber-wire = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f";
- type = "gem";
- };
- version = "0.0.1";
- };
- database_cleaner = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "05i0nf2aj70m61y3fspypdkc6d1qgibf5kav05a71b5gjz0k7y5x";
- type = "gem";
- };
- version = "1.7.0";
- };
- devise = {
- dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1vs8nibl568ghm6a7hbw6xgcv8zbm4gykprcxpnzi7bz5d4gvcjx";
- type = "gem";
- };
- version = "4.5.0";
- };
- devise_lastseenable = {
- dependencies = ["devise" "rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1h83h73qjh8fc7lmr089shky8lc3wm4xn653rjdbb0cddflvrx8y";
- type = "gem";
- };
- version = "0.0.6";
- };
- diaspora-prosody-config = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1976ijqjf5jcq1jwr6vi0srjadhbqfa9y3nxyipzcv91pzskl2lp";
- type = "gem";
- };
- version = "0.0.7";
- };
- diaspora_federation = {
- dependencies = ["faraday" "faraday_middleware" "nokogiri" "typhoeus" "valid"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1xxy6ahlhgyr00qkfmmq0h3nqm6gjkr9i6hsqr0nkb3l6qg0m0yc";
- type = "gem";
- };
- version = "0.2.5";
- };
- diaspora_federation-json_schema = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0hfv4cq5wfdg86xmbp5y0h50b11326ymzks1yr9dvr4wa7di00hr";
- type = "gem";
- };
- version = "0.2.5";
- };
- diaspora_federation-rails = {
- dependencies = ["actionpack" "diaspora_federation"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1wrni7d9084v3pqd3sq8j532wx5ym6kmd959bw29bzwxc3zidd9h";
- type = "gem";
- };
- version = "0.2.5";
- };
- diaspora_federation-test = {
- dependencies = ["diaspora_federation" "fabrication" "uuid"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1b09y78pyl9kix8slbybnks2cbq0ac9wml31j2s6qwjixranjsm4";
- type = "gem";
- };
- version = "0.2.5";
- };
- diff-lcs = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
- type = "gem";
- };
- version = "1.3";
- };
- docile = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
- type = "gem";
- };
- version = "1.3.1";
- };
- domain_name = {
- dependencies = ["unf"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
- type = "gem";
- };
- version = "0.5.20180417";
- };
- entypo-rails = {
- dependencies = ["railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "124x0jszg6n0k2lcacd627ndlp1fv7cbgnv4scwy5s3czp0qwip6";
- type = "gem";
- };
- version = "3.0.0";
- };
- equalizer = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
- type = "gem";
- };
- version = "0.0.11";
- };
- erubi = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bws86na9k565raiz0kk61yy5pxxp0fmwyzpibdwjkq0xzx8q6q1";
- type = "gem";
- };
- version = "1.7.1";
- };
- eslintrb = {
- dependencies = ["execjs" "multi_json" "rake"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kx9sbs7pnl436zyczylnqqb1858hffy66fwdqfmcn18q8xdqwkx";
- type = "gem";
- };
- version = "2.1.0";
- };
- et-orbi = {
- dependencies = ["tzinfo"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
- type = "gem";
- };
- version = "1.1.6";
- };
- ethon = {
- dependencies = ["ffi"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0y70szwm2p0b9qfvpqrzjrgm3jz0ig65vlbfr6ppc3z0m1h7kv48";
- type = "gem";
- };
- version = "0.11.0";
- };
- excon = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
- type = "gem";
- };
- version = "0.62.0";
- };
- execjs = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
- type = "gem";
- };
- version = "2.7.0";
- };
- eye = {
- dependencies = ["celluloid" "celluloid-io" "kostya-sigar" "state_machines" "thor"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0gqrrrisy492m6sczq775dyg9sxkl926r8lkr6z33kfb4cnimfzk";
- type = "gem";
- };
- version = "0.10.0";
- };
- fabrication = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0an28kjand4mjbkmnwd9fmgq3y5vf717zpmiijavar3sxqj52zri";
- type = "gem";
- };
- version = "2.20.1";
- };
- factory_girl = {
- dependencies = ["activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0cc60v28r7w1gp34p4amzdnq7cyip6qhffvxywsj3ypilyf8jqla";
- type = "gem";
- };
- version = "4.8.0";
- };
- factory_girl_rails = {
- dependencies = ["factory_girl" "railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0hw8qqp30vm4yf4a36r1r65wk78ihxmas7jg5fyl6fcf705z9fvv";
- type = "gem";
- };
- version = "4.8.0";
- };
- faraday = {
- dependencies = ["multipart-post"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "16hwxc8v0z6gkanckjhx0ffgqmzpc4ywz4dfhxpjlz2mbz8d5m52";
- type = "gem";
- };
- version = "0.15.3";
- };
- faraday-cookie_jar = {
- dependencies = ["faraday" "http-cookie"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1di4gx6446a6zdkrpj679m5k515i53wvb4yxcsqvy8d8zacxiiv6";
- type = "gem";
- };
- version = "0.0.6";
- };
- faraday_middleware = {
- dependencies = ["faraday"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p7icfl28nvl8qqdsngryz1snqic9l8x6bk0dxd7ygn230y0k41d";
- type = "gem";
- };
- version = "0.12.2";
- };
- ffi = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
- type = "gem";
- };
- version = "1.9.25";
- };
- fixture_builder = {
- dependencies = ["activerecord" "activesupport" "hashdiff"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1qlq0nyfhjvz09hm0jankl9bgs9672k31b3lmsfq8p135x3xs627";
- type = "gem";
- };
- version = "0.5.2.rc3";
- };
- fog-aws = {
- dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zprxg0spvkkri1jf40zg3rfr5h2gq6009d7l36lifpvhjn658cs";
- type = "gem";
- };
- version = "3.3.0";
- };
- fog-core = {
- dependencies = ["builder" "excon" "formatador" "mime-types"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fsama04wlxhv537bm4b7rr4zzn0mvisy87m3qzv6f0mhlrq3zp8";
- type = "gem";
- };
- version = "2.1.2";
- };
- fog-json = {
- dependencies = ["fog-core" "multi_json"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
- type = "gem";
- };
- version = "1.2.0";
- };
- fog-xml = {
- dependencies = ["fog-core" "nokogiri"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
- type = "gem";
- };
- version = "0.1.3";
- };
- formatador = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
- type = "gem";
- };
- version = "0.2.5";
- };
- fugit = {
- dependencies = ["et-orbi" "raabro"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
- type = "gem";
- };
- version = "1.1.6";
- };
- fuubar = {
- dependencies = ["rspec-core" "ruby-progressbar"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1sqkr1nh49rlm86l3qyrgsdqavgqii4pnrjn7855z6dfavh3spxr";
- type = "gem";
- };
- version = "2.3.2";
- };
- get_process_mem = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1bvfjdign16r0zwm2rlfrq0sk1licvmlgbnlpnyckniv5r7i080g";
- type = "gem";
- };
- version = "0.2.3";
- };
- gherkin = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s";
- type = "gem";
- };
- version = "5.1.0";
- };
- gitlab = {
- dependencies = ["httparty" "terminal-table"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1nncjmk71ivjxmgkpv100yybry5c7ld6xjgi1b5zsfv4g3mz0v34";
- type = "gem";
- };
- version = "4.7.0";
- };
- globalid = {
- dependencies = ["activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "02smrgdi11kziqi9zhnsy9i6yr2fnxrqlv3lllsvdjki3cd4is38";
- type = "gem";
- };
- version = "0.4.1";
- };
- gon = {
- dependencies = ["actionpack" "multi_json" "request_store"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "07sm7fd94pfscrbs4lyprs0das8s1yn32cw521ch738jaqb388xl";
- type = "gem";
- };
- version = "6.2.1";
- };
- guard = {
- dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
- type = "gem";
- };
- version = "2.15.0";
- };
- guard-compat = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
- type = "gem";
- };
- version = "1.2.1";
- };
- guard-rspec = {
- dependencies = ["guard" "guard-compat" "rspec"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
- type = "gem";
- };
- version = "4.7.3";
- };
- guard-rubocop = {
- dependencies = ["guard" "rubocop"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p97zkzasghl1md13rh57n3s2rr2kqly8w4vfn6vaj89igjpagdp";
- type = "gem";
- };
- version = "1.3.0";
- };
- haml = {
- dependencies = ["temple" "tilt"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac";
- type = "gem";
- };
- version = "5.0.4";
- };
- haml_lint = {
- dependencies = ["haml" "rainbow" "rake" "rubocop" "sysexits"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "125aj0j84nx5gqm42hfx5d8486higlra423ahgfpsdjwbp399rwv";
- type = "gem";
- };
- version = "0.28.0";
- };
- hamlit = {
- dependencies = ["temple" "thor" "tilt"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "14fsc208qsf46cflk23vs2fdw435dk65fwv55zhziciwn96ld8sf";
- type = "gem";
- };
- version = "2.9.1";
- };
- handlebars_assets = {
- dependencies = ["execjs" "sprockets" "tilt"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18pyksz4jb0n28acqxv14ahy8mkc9ldqbbn73gcj28m0l9wjzsca";
- type = "gem";
- };
- version = "0.23.2";
- };
- hashdiff = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
- type = "gem";
- };
- version = "0.3.7";
- };
- hashie = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1hh5lybf8hm7d7xs4xm8hxvm8xqrs2flc8fnwkrclaj746izw6xb";
- type = "gem";
- };
- version = "3.5.7";
- };
- http = {
- dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
- type = "gem";
- };
- version = "3.3.0";
- };
- http-cookie = {
- dependencies = ["domain_name"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
- type = "gem";
- };
- version = "1.0.3";
- };
- http-form_data = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
- type = "gem";
- };
- version = "2.1.1";
- };
- http_accept_language = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
- type = "gem";
- };
- version = "2.1.1";
- };
- "http_parser.rb" = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
- type = "gem";
- };
- version = "0.6.0";
- };
- httparty = {
- dependencies = ["mime-types" "multi_xml"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1xmm7pxmz3pblkdr76dg7qm5s60kpp3yvh46c2i0bn1dm0zgl730";
- type = "gem";
- };
- version = "0.16.3";
- };
- httpclient = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
- type = "gem";
- };
- version = "2.8.3";
- };
- i18n = {
- dependencies = ["concurrent-ruby"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1gcp1m1p6dpasycfz2sj82ci9ggz7lsskz9c9q6gvfwxrl8y9dx7";
- type = "gem";
- };
- version = "1.1.1";
- };
- i18n-inflector = {
- dependencies = ["i18n"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "081jr7z947aqjfmpbfs10w9jxi205jwgk4mgd8jds1b4m4i8mc7g";
- type = "gem";
- };
- version = "2.6.7";
- };
- i18n-inflector-rails = {
- dependencies = ["actionpack" "i18n-inflector" "railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0c04jm657akp5n14syhcwnn3hnsvx7harvg97768bvf3f9a37hyk";
- type = "gem";
- };
- version = "1.0.7";
- };
- ipaddress = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
- type = "gem";
- };
- version = "0.8.3";
- };
- jaro_winkler = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0rr797nqz081bfk30m2apj5h24bg5d1jr1c8p3xwx4hbwsrbclah";
- type = "gem";
- };
- version = "1.5.1";
- };
- jasmine = {
- dependencies = ["jasmine-core" "phantomjs" "rack" "rake"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1xfwf163wi5a9i0vlm564cqi6k30h15wnrwd15ph95jfa5516kv1";
- type = "gem";
- };
- version = "3.3.0";
- };
- jasmine-core = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1b12bjfrxvb8mwjwlfyngykd80lz956glcpfz7rhhw7n75b2rdlv";
- type = "gem";
- };
- version = "3.3.0";
- };
- jasmine-jquery-rails = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0cq5zd4ng5dlza45whd6sa7bzd60rlddk9760271mybdqyd96jlv";
- type = "gem";
- };
- version = "2.0.3";
- };
- jquery-rails = {
- dependencies = ["rails-dom-testing" "railties" "thor"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "17201sb8ddwy4yprizmqabq1kfx3m9c53p0yqngn63m07jjcpnh8";
- type = "gem";
- };
- version = "4.3.3";
- };
- js-routes = {
- dependencies = ["railties" "sprockets-rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "14yx3jrd4sgcwgj8yrrqdwl691mci1hcjqyyvp0v15jbzis1bclm";
- type = "gem";
- };
- version = "1.4.4";
- };
- js_image_paths = {
- dependencies = ["rails" "sprockets"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1d4kq8895i61a338ddk5f2k16l5lvmnkby9cdjwnmm2jddw4q7nf";
- type = "gem";
- };
- version = "0.1.1";
- };
- json = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
- type = "gem";
- };
- version = "2.1.0";
- };
- json-jwt = {
- dependencies = ["activesupport" "aes_key_wrap" "bindata"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "065k7vffdki73f4nz89lxi6wxmcw5dlf593831pgvlbralll6x3r";
- type = "gem";
- };
- version = "1.9.4";
- };
- json-schema = {
- dependencies = ["addressable"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5";
- type = "gem";
- };
- version = "2.8.1";
- };
- json-schema-rspec = {
- dependencies = ["json-schema" "rspec"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ip30yjzyigqqp9jwkrw9x9vrfpnmwi160zmk2vkrwlv9pby0wr9";
- type = "gem";
- };
- version = "0.0.4";
- };
- jsonpath = {
- dependencies = ["multi_json" "to_regexp"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06i41lwpj0dwvbxcpqrad5pjn2gmcv0srv0zw0ap7irwc21ifd7d";
- type = "gem";
- };
- version = "0.9.6";
- };
- jwt = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
- type = "gem";
- };
- version = "2.1.0";
- };
- kgio = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1528pyj1szzzp3pgj05fzjd36qjrxm9yj2x5radc9p1z7vl67y50";
- type = "gem";
- };
- version = "2.11.2";
- };
- kostya-sigar = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0z0pcykhjyrb7kq76jfcyxc1qq23gj5zmgy3miy87v85ydrxiqwb";
- type = "gem";
- };
- version = "2.0.4";
- };
- leaflet-rails = {
- dependencies = ["rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0dy7vhsjj1fhbbqm2s7pw57vgysd31qqi4y0hm91325hmvq75grb";
- type = "gem";
- };
- version = "1.3.1";
- };
- listen = {
- dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
- type = "gem";
- };
- version = "3.1.5";
- };
- little-plugger = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
- type = "gem";
- };
- version = "1.1.4";
- };
- logging = {
- dependencies = ["little-plugger" "multi_json"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06j6iaj89h9jhkx1x3hlswqrfnqds8br05xb1qra69dpvbdmjcwn";
- type = "gem";
- };
- version = "2.2.2";
- };
- logging-rails = {
- dependencies = ["logging"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "022cnj9v177282kadd9ygzjpvlvbq9k5z0xhdbbmgypi05z4i239";
- type = "gem";
- };
- version = "0.6.0";
- };
- loofah = {
- dependencies = ["crass" "nokogiri"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
- type = "gem";
- };
- version = "2.2.3";
- };
- lumberjack = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
- type = "gem";
- };
- version = "1.0.13";
- };
- macaddr = {
- dependencies = ["systemu"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1clii8mvhmh5lmnm95ljnjygyiyhdpja85c5vy487rhxn52scn0b";
- type = "gem";
- };
- version = "1.7.1";
- };
- mail = {
- dependencies = ["mini_mime"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
- type = "gem";
- };
- version = "2.7.1";
- };
- markdown-it-html5-embed = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10n2z6j0whc6makxvcf2jhpwb8xrj4s6vyywijsaaxs0cn490a5c";
- type = "gem";
- };
- version = "1.0.0";
- };
- markerb = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08sm3kafc3086l0a9is2cysk7j2k71mxy6ba295pwwzyvy734y76";
- type = "gem";
- };
- version = "1.1.0";
- };
- memoizable = {
- dependencies = ["thread_safe"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c";
- type = "gem";
- };
- version = "0.4.2";
- };
- method_source = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
- type = "gem";
- };
- version = "0.9.2";
- };
- mime-types = {
- dependencies = ["mime-types-data"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
- type = "gem";
- };
- version = "3.2.2";
- };
- mime-types-data = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
- type = "gem";
- };
- version = "3.2018.0812";
- };
- mini_magick = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0sisx59mr5kydmxmx5vr8spmrxhrjkfqv35zhsqdlyzmp1z5px9p";
- type = "gem";
- };
- version = "4.9.2";
- };
- mini_mime = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
- type = "gem";
- };
- version = "1.0.1";
- };
- mini_portile2 = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
- type = "gem";
- };
- version = "2.3.0";
- };
- minitest = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
- type = "gem";
- };
- version = "5.11.3";
- };
- mobile-fu = {
- dependencies = ["rack-mobile-detect" "rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lxfcsd7dwwcpa1j2jbl382anmv6kksf5q1wqj14gc6jxxjq9s4i";
- type = "gem";
- };
- version = "1.4.0";
- };
- multi_json = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
- type = "gem";
- };
- version = "1.13.1";
- };
- multi_test = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd";
- type = "gem";
- };
- version = "0.1.2";
- };
- multi_xml = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
- type = "gem";
- };
- version = "0.6.0";
- };
- multipart-post = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
- type = "gem";
- };
- version = "2.0.0";
- };
- mysql2 = {
- groups = ["mysql"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1a2kdjgzwh1p2rkcmxaawy6ibi32b04wbdd5d4wr8i342pq76di4";
- type = "gem";
- };
- version = "0.5.2";
- };
- naught = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1wwjx35zgbc0nplp8a866iafk4zsrbhwwz4pav5gydr2wm26nksg";
- type = "gem";
- };
- version = "1.1.0";
- };
- nenv = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
- type = "gem";
- };
- version = "0.3.0";
- };
- net-ldap = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "016igqz81a8zcwqzp5bbhryqmb2skmyf57ij3nb5z8sxwhw22jgh";
- type = "gem";
- };
- version = "0.16.1";
- };
- nio4r = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
- type = "gem";
- };
- version = "2.3.1";
- };
- nokogiri = {
- dependencies = ["mini_portile2"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
- type = "gem";
- };
- version = "1.8.5";
- };
- notiffany = {
- dependencies = ["nenv" "shellany"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
- type = "gem";
- };
- version = "0.1.1";
- };
- oauth = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
- type = "gem";
- };
- version = "0.5.4";
- };
- oauth2 = {
- dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0av6nlb5y2sm6m8fx669ywrqa9858yqaqfqzny75nqp3anag89qh";
- type = "gem";
- };
- version = "1.4.1";
- };
- octokit = {
- dependencies = ["sawyer"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6";
- type = "gem";
- };
- version = "4.13.0";
- };
- omniauth = {
- dependencies = ["hashie" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1msqr4qq7mfdvl3rg89529isrv595hvjpj2gi0say4b8nwqfggmg";
- type = "gem";
- };
- version = "1.8.1";
- };
- omniauth-oauth = {
- dependencies = ["oauth" "omniauth"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
- type = "gem";
- };
- version = "1.1.0";
- };
- omniauth-oauth2 = {
- dependencies = ["oauth2" "omniauth"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kscjf1y0lnggsl4z3w5bwllqshqjlsl5kmcya5haydajdnzvdjr";
- type = "gem";
- };
- version = "1.5.0";
- };
- omniauth-tumblr = {
- dependencies = ["multi_json" "omniauth-oauth"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10ncmfym4l6k6aqp402g7mqxahbggcj5xkpsjxgngs746s82y97w";
- type = "gem";
- };
- version = "1.2";
- };
- omniauth-twitter = {
- dependencies = ["omniauth-oauth" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0r5j65hkpgzhvvbs90id3nfsjgsad6ymzggbm7zlaxvnrmvnrk65";
- type = "gem";
- };
- version = "1.4.0";
- };
- omniauth-wordpress = {
- dependencies = ["omniauth-oauth2"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "008zx4zwrbzyvlgv6hy68k1d05zskiwvcgwvxxbxhbl0mvlmh303";
- type = "gem";
- };
- version = "0.2.2";
- };
- open_graph_reader = {
- dependencies = ["faraday" "nokogiri"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0af4yldyb0d8zglw73s13pyn0g90gs4m5zf7bwy8r4kym9zbvc21";
- type = "gem";
- };
- version = "0.6.2";
- };
- openid_connect = {
- dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1r13bv18nyvw0g1nw3fzffvv2si99zj24w0k5zgawf4q6nn5f7vd";
- type = "gem";
- };
- version = "1.1.6";
- };
- orm_adapter = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
- type = "gem";
- };
- version = "0.5.0";
- };
- parallel = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67";
- type = "gem";
- };
- version = "1.12.1";
- };
- parser = {
- dependencies = ["ast"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zjk0w1kjj3xk8ymy1430aa4gg0k8ckphfj88br6il4pm83f0n1f";
- type = "gem";
- };
- version = "2.5.3.0";
- };
- pg = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb";
- type = "gem";
- };
- version = "1.1.3";
- };
- phantomjs = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0y8pbbyq9dirxb7igkb2s5limz2895qmr41c09fjhx6k6fxcz4mk";
- type = "gem";
- };
- version = "2.1.1.0";
- };
- poltergeist = {
- dependencies = ["capybara" "cliver" "websocket-driver"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0il80p97psmhs6scl0grq031gv7kws4ylvvd6zyr8xv91qadga95";
- type = "gem";
- };
- version = "1.18.1";
- };
- powerpack = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv";
- type = "gem";
- };
- version = "0.1.2";
- };
- pronto = {
- dependencies = ["gitlab" "httparty" "octokit" "rainbow" "rugged" "thor"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "13xbg1pm3kz5zbzxad5qgqnkzkp3ddajj7wxx16aqbfr7rqggvhz";
- type = "gem";
- };
- version = "0.9.5";
- };
- pronto-eslint = {
- dependencies = ["eslintrb" "pronto"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1cxyx6mlcdgv4ykliaizkx9cps68xf7qvy8lzxmv7pcqzkxaq7xc";
- type = "gem";
- };
- version = "0.9.1";
- };
- pronto-haml = {
- dependencies = ["haml_lint" "pronto"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "116iln1whwiqy55f86q33lnnic0awnqm415xvxwnhwlagcbwmnkg";
- type = "gem";
- };
- version = "0.9.0";
- };
- pronto-rubocop = {
- dependencies = ["pronto" "rubocop"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bcm34qlpp02wf69why5lpi5p53h5r4fq36f4b1fwi621fwzlgsy";
- type = "gem";
- };
- version = "0.9.1";
- };
- pronto-scss = {
- dependencies = ["pronto" "scss_lint"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kgaqd6l2w3brdsp5231fpfr6fwajciz2hdr925l1zhh6ni1y2za";
- type = "gem";
- };
- version = "0.9.1";
- };
- pry = {
- dependencies = ["coderay" "method_source"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
- type = "gem";
- };
- version = "0.12.2";
- };
- pry-byebug = {
- dependencies = ["byebug" "pry"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0y2758593i2ij0nhmv0j1pbdfx2cgi52ns6wkij0frgnk2lf650g";
- type = "gem";
- };
- version = "3.6.0";
- };
- public_suffix = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
- type = "gem";
- };
- version = "3.0.3";
- };
- raabro = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
- type = "gem";
- };
- version = "1.1.6";
- };
- rack = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
- type = "gem";
- };
- version = "2.0.6";
- };
- rack-cors = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1j27vy1bmhbqcyzhxg8d07qassmax769xjalfwcwz6qfiq8cf013";
- type = "gem";
- };
- version = "1.0.2";
- };
- rack-google-analytics = {
- dependencies = ["actionpack" "activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "09pv0z5dhjjrlhi9qj5qy48hi66f7iix337qrapg7mvwwz6czcvj";
- type = "gem";
- };
- version = "1.2.0";
- };
- rack-mobile-detect = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bagli6ldhkpd1yym775sxy7w5n4jds6gbcjm3gmcl37vggvm8a5";
- type = "gem";
- };
- version = "0.4.0";
- };
- rack-oauth2 = {
- dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kmxj9hbjhhcs3yyb433s82hkpmzb536m0mwfadjiaisganx1cii";
- type = "gem";
- };
- version = "1.9.3";
- };
- rack-piwik = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0raxrckapqh693lpid0cnx1j1v2i3mz5cyssg7grgrilgrn9318z";
- type = "gem";
- };
- version = "0.3.0";
- };
- rack-protection = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ylx74ravz7nvnyygq0nk3v86qdzrmqxpwpayhppyy50l72rcajq";
- type = "gem";
- };
- version = "2.0.4";
- };
- rack-rewrite = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0milw71dv96wnc6i48vbzypws51dgf415kkp8c4air0mkdhpj838";
- type = "gem";
- };
- version = "1.5.1";
- };
- rack-ssl = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0c21xqkjyl10fngq6dy8082vmn2png8cwkiyzv83ymixq5cx7ygp";
- type = "gem";
- };
- version = "1.4.1";
- };
- rack-test = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
- type = "gem";
- };
- version = "1.1.0";
- };
- rails = {
- dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lb07cbwgm371zyn9i6fyj9q8rmv89lacmyzrfvzxqqx2n3ilc5q";
- type = "gem";
- };
- version = "5.1.6";
- };
- rails-assets-autosize = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0hr72mfprb9678lf7dj9lh801lm7p98nzkrnrz764sy9lmbpzcib";
- type = "gem";
- };
- version = "4.0.2";
- };
- rails-assets-backbone = {
- dependencies = ["rails-assets-underscore"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0zjgwhgfmg1jyyds7zfjp6g4bz8vw56qvhlrpj943wcqpdxm93id";
- type = "gem";
- };
- version = "1.3.3";
- };
- rails-assets-blueimp-gallery = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "18b7xvvkdnd39xlbkyw46i86w3wzj349s8iv5wdiypa5qdcql8mq";
- type = "gem";
- };
- version = "2.33.0";
- };
- rails-assets-bootstrap = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0x4i11132qcmghmqb061iq47yksrr7i0la5hzzdm38dxybh87x5v";
- type = "gem";
- };
- version = "3.3.7";
- };
- rails-assets-bootstrap-markdown = {
- dependencies = ["rails-assets-bootstrap"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1nxirs9wx5jxrjmxjwvsqlf2rsypjn3ajg7fs28c4ib7wwpabwj3";
- type = "gem";
- };
- version = "2.10.0";
- };
- rails-assets-corejs-typeahead = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1p5i6afd156rakrin99c2ryaz3zykx21ir6y10l34jnw03rikcfg";
- type = "gem";
- };
- version = "1.2.1";
- };
- rails-assets-diaspora_jsxc = {
- dependencies = ["rails-assets-emojione" "rails-assets-favico.js" "rails-assets-jquery-colorbox" "rails-assets-jquery-fullscreen-plugin" "rails-assets-jquery.slimscroll" "rails-assets-jquery.ui"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "07vqdj0l8fsj4fd2sschba2jgfbimyfad56009ldzlcvb6ml5nhi";
- type = "gem";
- };
- version = "0.1.5.develop.7";
- };
- rails-assets-emojione = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1j29vbsf6v9ikiqlmnfgzxys4xsa1glvmfky8id5xfyymnjx2c52";
- type = "gem";
- };
- version = "2.0.1";
- };
- "rails-assets-favico.js" = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "19yndhljmqlvarf49h5v71zq0p0ngvspjr2v0m6lac0q9ni7r5bv";
- type = "gem";
- };
- version = "0.3.10";
- };
- rails-assets-fine-uploader = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1vxj78x2vvlchpapxpaawysc9wn8alzdd3gxhwfwy11xv8ka9mdv";
- type = "gem";
- };
- version = "5.13.0";
- };
- rails-assets-highlightjs = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0spmb0gkfs13fmljjv1n53r53q69fhb6r573ndbxnhgb3izqgnqp";
- type = "gem";
- };
- version = "9.12.0";
- };
- rails-assets-jasmine = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1n6yixrl9cgq5kckay75b44p878s1kqi69mhgyw99w8dsq8i2vy5";
- type = "gem";
- };
- version = "3.3.0";
- };
- rails-assets-jasmine-ajax = {
- dependencies = ["rails-assets-jasmine"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0l8z0p75x1yzk1l1ryfvdlvq8yq4w2xngp4icz478axd5jcqx6kg";
- type = "gem";
- };
- version = "3.4.0";
- };
- rails-assets-jquery = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1wcaappk12w300733lrqb571cir9nw35d9q6d2i52wwdvhv2fx2y";
- type = "gem";
- };
- version = "3.3.1";
- };
- rails-assets-jquery-colorbox = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "19ws3r1zfviwnfr9s0jh6iqss50iwqkf4a78zhrk0p3bb4lvmmsp";
- type = "gem";
- };
- version = "1.6.4";
- };
- rails-assets-jquery-fullscreen-plugin = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0ldvq4s15lap9p6w7d1yw6dajn2gh6p75dbkp79p0d8ylzapsd58";
- type = "gem";
- };
- version = "0.5.0";
- };
- rails-assets-jquery-placeholder = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0h17gjazc27pj4cm2ig232ww4d4ppq9bcginwzjss95pl63richi";
- type = "gem";
- };
- version = "2.3.1";
- };
- rails-assets-jquery-textchange = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0rsw3cn9a5njv80zy53339kmrmv60b8fqcrr7bacapbagb2rd4dj";
- type = "gem";
- };
- version = "0.2.3";
- };
- "rails-assets-jquery.are-you-sure" = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0nj04aqh9jpcg57xbjxpm2vn7mkd5clnpma907515a1nxy40bym0";
- type = "gem";
- };
- version = "1.9.0";
- };
- "rails-assets-jquery.slimscroll" = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1rymmd2rxy1vjjj70v88abmdlfs55276rs3rksj300dgirnnj998";
- type = "gem";
- };
- version = "1.3.8";
- };
- "rails-assets-jquery.ui" = {
- dependencies = ["rails-assets-jquery"];
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0xc9kfb29hi441irj49b7aawxkddk1dxzy938rpqv9ylpsj7knaa";
- type = "gem";
- };
- version = "1.11.4";
- };
- rails-assets-markdown-it = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0fxx7ldszsdqr5ry21bnxmv33byz7abpk9lcp100q5cqsjx091r9";
- type = "gem";
- };
- version = "8.4.2";
- };
- rails-assets-markdown-it--markdown-it-for-inline = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0fznv2x7ndadr3wb4dzhh86bpcpwz8f4d8rfhz4sfbqlai40j3jl";
- type = "gem";
- };
- version = "0.1.1";
- };
- rails-assets-markdown-it-diaspora-mention = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0asggm7wgmdll8x94291p2w6icmp2izi914dlh3b7vb7dpjq3jig";
- type = "gem";
- };
- version = "1.2.0";
- };
- rails-assets-markdown-it-hashtag = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0dr8fwaxgkfqm7z4rl4jdym0i1ycqw1sgkxshkd9k0849ry12cdk";
- type = "gem";
- };
- version = "0.4.0";
- };
- rails-assets-markdown-it-sanitizer = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0fkpffh83fc257zkzaia93j4hw2baz90lg10s5yxsxww06q5dn36";
- type = "gem";
- };
- version = "0.4.3";
- };
- rails-assets-markdown-it-sub = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "08hjij5fqvhvg7s27n4g8qqsks974g3kc5k7xl2qmh41k7f4hcrk";
- type = "gem";
- };
- version = "1.0.0";
- };
- rails-assets-markdown-it-sup = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "17nnnvky7zy0yiwwl6dm8ibbkyvvf63xfp3snch4dzmras05lmig";
- type = "gem";
- };
- version = "1.0.0";
- };
- rails-assets-underscore = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "1ccnzj7aqrvngcs915y290pijryqmjygimdwlrykpyj8vwzifdnc";
- type = "gem";
- };
- version = "1.9.1";
- };
- rails-assets-utatti-perfect-scrollbar = {
- platforms = [];
- source = {
- remotes = ["https://rails-assets.org"];
- sha256 = "0m8syfv8p5bnwm8nrba6mpjnhrd29ffwzi6awhiw537jqw42b12v";
- type = "gem";
- };
- version = "1.4.0";
- };
- rails-controller-testing = {
- dependencies = ["actionpack" "actionview" "activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "16kdkk73mhhs73iz3i1i0ryjm84dadiyh817b3nh8acdi490jyhy";
- type = "gem";
- };
- version = "1.0.2";
- };
- rails-dom-testing = {
- dependencies = ["activesupport" "nokogiri"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
- type = "gem";
- };
- version = "2.0.3";
- };
- rails-html-sanitizer = {
- dependencies = ["loofah"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
- type = "gem";
- };
- version = "1.0.4";
- };
- rails-i18n = {
- dependencies = ["i18n" "railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "05lkhc737a9dw0hd5ljmja0yp4cw39r3200s1r0n4bs7z1g3ka7l";
- type = "gem";
- };
- version = "5.1.2";
- };
- rails-timeago = {
- dependencies = ["actionpack" "activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01x1vs9hni9wn8dc4fmyqzkrn651chzsi2mhmk0pxdrfx9md0lxv";
- type = "gem";
- };
- version = "2.16.0";
- };
- railties = {
- dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ycy2gdaj0px1vfaghskvl6qkczwaigrli2zxn54w7zn1z29faj8";
- type = "gem";
- };
- version = "5.1.6";
- };
- rainbow = {
- dependencies = ["rake"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08w2ghc5nv0kcq5b257h7dwjzjz1pqcavajfdx2xjyxqsvh2y34w";
- type = "gem";
- };
- version = "2.2.2";
- };
- raindrops = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1qpbd9jif40c53fz2r0l8khfl016y8s8bkx37ibcaafclbl3xygp";
- type = "gem";
- };
- version = "0.19.0";
- };
- rake = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg";
- type = "gem";
- };
- version = "12.3.1";
- };
- rb-fsevent = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
- type = "gem";
- };
- version = "0.10.3";
- };
- rb-inotify = {
- dependencies = ["ffi"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
- type = "gem";
- };
- version = "0.9.10";
- };
- redcarpet = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7";
- type = "gem";
- };
- version = "3.4.0";
- };
- redis = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0i415x8gi0c5vsiy6ikvx5js6fhc4x80a5lqv8iidy2iymd20irv";
- type = "gem";
- };
- version = "3.3.5";
- };
- regexp_parser = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18g5jyg3blsdrz3mc8d87bms6qqn6gcdh1nvdhvgbjdpk9pw21dq";
- type = "gem";
- };
- version = "1.3.0";
- };
- request_store = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
- type = "gem";
- };
- version = "1.4.1";
- };
- responders = {
- dependencies = ["actionpack" "railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rhdyyvvm26f2l3fgwdp6xasfl2y0whwgy766bhdwz697mf78zfn";
- type = "gem";
- };
- version = "2.4.0";
- };
- rspec = {
- dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
- type = "gem";
- };
- version = "3.8.0";
- };
- rspec-core = {
- dependencies = ["rspec-support"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
- type = "gem";
- };
- version = "3.8.0";
- };
- rspec-expectations = {
- dependencies = ["diff-lcs" "rspec-support"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
- type = "gem";
- };
- version = "3.8.2";
- };
- rspec-json_expectations = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0l3dhvkb95zwyg72wz33azxigc9cisqgg3z16ksns1sx0b93nnbn";
- type = "gem";
- };
- version = "2.1.0";
- };
- rspec-mocks = {
- dependencies = ["diff-lcs" "rspec-support"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
- type = "gem";
- };
- version = "3.8.0";
- };
- rspec-rails = {
- dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0sqj5da2kc937j5jb18jcf0hrmmzwgj7pk62j0q3qndhc2kvx88p";
- type = "gem";
- };
- version = "3.8.1";
- };
- rspec-support = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
- type = "gem";
- };
- version = "3.8.0";
- };
- rubocop = {
- dependencies = ["jaro_winkler" "parallel" "parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ivk049z3mp12nc6v1wn35bsq1g7nz1i2r4xwzqf0v25hm2v7n1i";
- type = "gem";
- };
- version = "0.60.0";
- };
- ruby-oembed = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1kw4aplb3m13z3kchhb79wf87qb3prn1m99s6vl5cyp0xqwyymv0";
- type = "gem";
- };
- version = "0.12.0";
- };
- ruby-progressbar = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk";
- type = "gem";
- };
- version = "1.10.0";
- };
- ruby_dep = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
- type = "gem";
- };
- version = "1.5.0";
- };
- rubyzip = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1n1lb2sdwh9h27y244hxzg1lrxxg2m53pk1vq7p33bna003qkyrj";
- type = "gem";
- };
- version = "1.2.2";
- };
- rugged = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1jv4nw9hvlxp8hhhlllrfcznki82i50fp1sj65zsjllfl2bvz8x6";
- type = "gem";
- };
- version = "0.27.5";
- };
- safe_yaml = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
- type = "gem";
- };
- version = "1.0.4";
- };
- sass = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0kfpcwh8dgw4lc81qglkvjl73689jy3g7196zkxm4fpskg1p5lkw";
- type = "gem";
- };
- version = "3.4.25";
- };
- sass-rails = {
- dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s";
- type = "gem";
- };
- version = "5.0.7";
- };
- sawyer = {
- dependencies = ["addressable" "faraday"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0sv1463r7bqzvx4drqdmd36m7rrv6sf1v3c6vswpnq3k6vdw2dvd";
- type = "gem";
- };
- version = "0.8.1";
- };
- scss_lint = {
- dependencies = ["rake" "sass"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "11rl8kj32p34mqlkhxvlwfrwl8gdl0iha8q9xsrr3sjxjagzv8yp";
- type = "gem";
- };
- version = "0.55.0";
- };
- secure_headers = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "17cxci8jyvlgssix0cy7kbm5m2h7s8ym9caj8nilrbd21jis9pc5";
- type = "gem";
- };
- version = "6.0.0";
- };
- shellany = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
- type = "gem";
- };
- version = "0.0.1";
- };
- shoulda-matchers = {
- dependencies = ["activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a";
- type = "gem";
- };
- version = "3.1.2";
- };
- sidekiq = {
- dependencies = ["connection_pool" "rack-protection" "redis"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zyf9y3rvzizbwh68i2g1lzd40lalrdc4iyjmaa74gnfwsf92i26";
- type = "gem";
- };
- version = "5.2.3";
- };
- sidekiq-cron = {
- dependencies = ["fugit" "sidekiq"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1aliswahmpxn1ib2brn4126gk97ac3zdnwr71mn8vzbr3vdd7fl0";
- type = "gem";
- };
- version = "1.0.4";
- };
- simple_captcha2 = {
- dependencies = ["rails"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0vdjydym8sjpa8c1q0n2hanj3n9vzi4ycdw2p6bbm6qqmm1f3fq3";
- type = "gem";
- };
- version = "0.4.3";
- };
- simple_oauth = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0dw9ii6m7wckml100xhjc6vxpjcry174lbi9jz5v7ibjr3i94y8l";
- type = "gem";
- };
- version = "0.3.1";
- };
- simplecov = {
- dependencies = ["docile" "json" "simplecov-html"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
- type = "gem";
- };
- version = "0.16.1";
- };
- simplecov-html = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
- type = "gem";
- };
- version = "0.10.2";
- };
- sinon-rails = {
- dependencies = ["railties"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1b7996hb8vfky29b0zcql90x8i6vhdg2zy9nfzmhh820gjv3kggb";
- type = "gem";
- };
- version = "1.15.0";
- };
- spring = {
- dependencies = ["activesupport"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "168yz9c1fv21wc5i8q7n43b9nk33ivg3ws1fn6x0afgryz3ssx75";
- type = "gem";
- };
- version = "2.0.2";
- };
- spring-commands-cucumber = {
- dependencies = ["spring"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0mw81gvms2svn4k4pc6ly7smkmf0j9r2xbf0d38vygbyhiwd1c9a";
- type = "gem";
- };
- version = "1.0.1";
- };
- spring-commands-rspec = {
- dependencies = ["spring"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
- type = "gem";
- };
- version = "1.0.4";
- };
- sprockets = {
- dependencies = ["concurrent-ruby" "rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
- type = "gem";
- };
- version = "3.7.2";
- };
- sprockets-rails = {
- dependencies = ["actionpack" "activesupport" "sprockets"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
- type = "gem";
- };
- version = "3.2.1";
- };
- state_machines = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
- type = "gem";
- };
- version = "0.5.0";
- };
- string-direction = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0iyddwmkj425c6xbn5pmlr2yzwcq4snzlan7rky5b1yp2pvf70jj";
- type = "gem";
- };
- version = "1.2.1";
- };
- swd = {
- dependencies = ["activesupport" "attr_required" "httpclient"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1s2vjb6f13za7p1iycl2p73d3p202xa6xny9fjrp8ynwsqix7lyd";
- type = "gem";
- };
- version = "1.1.2";
- };
- sysexits = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0qjng6pllznmprzx8vb0zg0c86hdrkyjs615q41s9fjpmv2430jr";
- type = "gem";
- };
- version = "1.2.0";
- };
- systemu = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1";
- type = "gem";
- };
- version = "2.6.5";
- };
- temple = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00nxf610nzi4n1i2lkby43nrnarvl89fcl6lg19406msr0k3ycmq";
- type = "gem";
- };
- version = "0.8.0";
- };
- term-ansicolor = {
- dependencies = ["tins"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "079hbagd9mk0839rkajsdrbzkn992gj8ah2n45qd64v25ml27i6d";
- type = "gem";
- };
- version = "1.7.0";
- };
- terminal-table = {
- dependencies = ["unicode-display_width"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
- type = "gem";
- };
- version = "1.8.0";
- };
- thor = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns";
- type = "gem";
- };
- version = "0.19.4";
- };
- thread_safe = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
- type = "gem";
- };
- version = "0.3.6";
- };
- tilt = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
- type = "gem";
- };
- version = "2.0.8";
- };
- timecop = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp";
- type = "gem";
- };
- version = "0.9.1";
- };
- timers = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04zbs9wyzajn7g9xfgg2zqz5kzf0qa7jgh4hgry4pfcxfmlnwdwx";
- type = "gem";
- };
- version = "4.2.0";
- };
- tins = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pqj45n216zrz7yckdbdknlmhh187iqzx8fp76y2h0jrgqjfkxmj";
- type = "gem";
- };
- version = "1.20.2";
- };
- to_regexp = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rgabfhnql6l4fx09mmj5d0vza924iczqf2blmn82l782b6qqi9v";
- type = "gem";
- };
- version = "0.2.1";
- };
- turbo_dev_assets = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08yp7gpishjfj8b7d61hxs677288ycv6yg78a7hfzn631gxczipx";
- type = "gem";
- };
- version = "0.0.2";
- };
- twitter = {
- dependencies = ["addressable" "buftok" "equalizer" "http" "http-form_data" "http_parser.rb" "memoizable" "multipart-post" "naught" "simple_oauth"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0fjyz3viabz3xs5d9aad18zgdbhfwm51jsnzigc8kxk77p1x58n5";
- type = "gem";
- };
- version = "6.2.0";
- };
- twitter-text = {
- dependencies = ["unf"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
- type = "gem";
- };
- version = "1.14.7";
- };
- typhoeus = {
- dependencies = ["ethon"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0cni8b1idcp0dk8kybmxydadhfpaj3lbs99w5kjibv8bsmip2zi5";
- type = "gem";
- };
- version = "1.3.1";
- };
- tzinfo = {
- dependencies = ["thread_safe"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
- type = "gem";
- };
- version = "1.2.5";
- };
- uglifier = {
- dependencies = ["execjs"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1g203kly5wp4qlkc7371skyvyin6iinc8i0p5wrpiqgblqxxgcf1";
- type = "gem";
- };
- version = "4.1.19";
- };
- unf = {
- dependencies = ["unf_ext"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
- type = "gem";
- };
- version = "0.1.4";
- };
- unf_ext = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
- type = "gem";
- };
- version = "0.0.7.5";
- };
- unicode-display_width = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0040bsdpcmvp8w31lqi2s9s4p4h031zv52401qidmh25cgyh4a57";
- type = "gem";
- };
- version = "1.4.0";
- };
- unicorn = {
- dependencies = ["kgio" "raindrops"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1qfhvzs4i6ja1s43j8p1kfbzm10n7a02ngki30a38y5m46a2qrak";
- type = "gem";
- };
- version = "5.4.1";
- };
- unicorn-worker-killer = {
- dependencies = ["get_process_mem" "unicorn"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva";
- type = "gem";
- };
- version = "0.4.4";
- };
- uuid = {
- dependencies = ["macaddr"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1mr405vg4ccnndkyf7pb49gp1fha8i6gj7iwq43nxkak41cwzh5f";
- type = "gem";
- };
- version = "2.3.9";
- };
- valid = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0vxrgik9gxyh5j2w16nz5azjk0cbzmvv883hq9pvxm9anfbbj8d3";
- type = "gem";
- };
- version = "1.2.0";
- };
- validate_email = {
- dependencies = ["activemodel" "mail"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx";
- type = "gem";
- };
- version = "0.1.6";
- };
- validate_url = {
- dependencies = ["activemodel" "addressable"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1df4gch8dizimpbl185vfgw95yb8ffr6zwj6whzbxfil95c3f2qh";
- type = "gem";
- };
- version = "1.0.2";
- };
- versionist = {
- dependencies = ["activesupport" "railties" "yard"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p8wizg6jml7gz1qiqk7d77hy0w5650g812jhgd0zzkwwdmzm38m";
- type = "gem";
- };
- version = "1.7.0";
- };
- warden = {
- dependencies = ["rack"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
- type = "gem";
- };
- version = "1.2.8";
- };
- webfinger = {
- dependencies = ["activesupport" "httpclient"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar";
- type = "gem";
- };
- version = "1.1.0";
- };
- webmock = {
- dependencies = ["addressable" "crack" "hashdiff"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib";
- type = "gem";
- };
- version = "3.4.2";
- };
- websocket-driver = {
- dependencies = ["websocket-extensions"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1943442yllhldh9dbp374x2q39cxa49xrm28nb78b7mfbv3y195l";
- type = "gem";
- };
- version = "0.6.5";
- };
- websocket-extensions = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
- type = "gem";
- };
- version = "0.1.3";
- };
- will_paginate = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ihf15yaj8883ddhkxq7q60zrg3zfsvqaf5853gybhcg18zq8bn9";
- type = "gem";
- };
- version = "3.1.6";
- };
- xpath = {
- dependencies = ["nokogiri"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
- type = "gem";
- };
- version = "3.2.0";
- };
- yard = {
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67";
- type = "gem";
- };
- version = "0.9.16";
- };
-}
diff --git a/pkgs/webapps/diaspora/ldap.patch b/pkgs/webapps/diaspora/ldap.patch
deleted file mode 100644
index 3d4f785..0000000
--- a/pkgs/webapps/diaspora/ldap.patch
+++ /dev/null
@@ -1,256 +0,0 @@
-commit 936a14e225037aca4cdeac11c843c7985e636c88
-Author: Ismaël Bouya
-Date: Mon Jul 24 19:58:24 2017 +0200
-
- Add LDAP to diaspora
-
-diff --git a/Gemfile b/Gemfile
-index 414b0138d..2a934e9c9 100644
---- a/Gemfile
-+++ b/Gemfile
-@@ -217,6 +217,9 @@ gem "thor", "0.19.1"
-
- # gem "therubyracer", :platform => :ruby
-
-+# LDAP
-+gem 'net-ldap', '~> 0.16'
-+
- group :production do # we don"t install these on travis to speed up test runs
- # Analytics
-
-diff --git a/Gemfile.lock b/Gemfile.lock
-index 84f8172e4..cdbf19fcd 100644
---- a/Gemfile.lock 2019-01-13 19:55:52.538561762 +0100
-+++ b/Gemfile.lock 2019-01-13 19:58:11.087099067 +0100
-@@ -398,6 +398,7 @@
- mysql2 (0.5.2)
- naught (1.1.0)
- nenv (0.3.0)
-+ net-ldap (0.16.1)
- nio4r (2.3.1)
- nokogiri (1.8.5)
- mini_portile2 (~> 2.3.0)
-@@ -820,6 +821,7 @@
- minitest
- mobile-fu (= 1.4.0)
- mysql2 (= 0.5.2)
-+ net-ldap (~> 0.16)
- nokogiri (= 1.8.5)
- omniauth (= 1.8.1)
- omniauth-tumblr (= 1.2)
-diff --git a/app/models/user.rb b/app/models/user.rb
-index 940a48f25..d1e2beeee 100644
---- a/app/models/user.rb
-+++ b/app/models/user.rb
-@@ -337,6 +337,12 @@ class User < ActiveRecord::Base
- end
-
- def send_confirm_email
-+ if skip_email_confirmation?
-+ self.email = unconfirmed_email
-+ self.unconfirmed_email = nil
-+ save
-+ end
-+
- return if unconfirmed_email.blank?
- Workers::Mail::ConfirmEmail.perform_async(id)
- end
-@@ -554,6 +560,14 @@ class User < ActiveRecord::Base
- end
- end
-
-+ def ldap_user?
-+ AppConfig.ldap.enable? && ldap_dn.present?
-+ end
-+
-+ def skip_email_confirmation?
-+ ldap_user? && AppConfig.ldap.skip_email_confirmation?
-+ end
-+
- private
-
- def clearable_fields
-diff --git a/config/defaults.yml b/config/defaults.yml
-index c046aff07..66e9afa13 100644
---- a/config/defaults.yml
-+++ b/config/defaults.yml
-@@ -202,6 +202,20 @@ defaults:
- scope: tags
- include_user_tags: false
- pod_tags:
-+ ldap:
-+ enable: false
-+ host: localhost
-+ port: 389
-+ only_ldap: true
-+ mail_attribute: mail
-+ skip_email_confirmation: true
-+ use_bind_dn: true
-+ bind_dn: "cn=diaspora,dc=example,dc=com"
-+ bind_pw: "password"
-+ search_base: "dc=example,dc=com"
-+ search_filter: "uid=%{username}"
-+ bind_template: "uid=%{username},dc=example,dc=com"
-+
-
- development:
- environment:
-diff --git a/config/diaspora.yml.example b/config/diaspora.yml.example
-index b2573625d..c357c8651 100644
---- a/config/diaspora.yml.example
-+++ b/config/diaspora.yml.example
-@@ -710,6 +710,36 @@ configuration: ## Section
- ## If scope is 'tags', a comma separated list of tags here can be set.
- ## For example "linux,diaspora", to receive posts related to these tags
- #pod_tags:
-+ ldap:
-+ # Uncomment next line if you want to use LDAP on your instance
-+ enable: true
-+ host: localhost
-+ port: 389
-+ # Use only LDAP authentication (don't try other means)
-+ only_ldap: true
-+ # LDAP attribute to find the user's e-mail. Necessary to create accounts
-+ # for not existing users
-+ mail_attribute: mail
-+ # Skip e-mail confirmation when creating an account via LDAP.
-+ skip_email_confirmation: true
-+ # ----- Using bind_dn and bind_pw
-+ # bind_dn and bind_pw may be used if the diaspora instance
-+ # should be able to connect to LDAP to find and search for users.
-+
-+ use_bind_dn: true
-+ bind_dn: "cn=diaspora,dc=example,dc=com"
-+ bind_pw: "password"
-+ search_base: "dc=example,dc=com"
-+ # This is the filter with which to search for the user. %{username} will
-+ # be replaced by the given login.
-+ search_filter: "uid=%{username}"
-+ #
-+ # ----- Using template
-+ # This setting doesn't require a diaspora LDAP user. Use a template, and
-+ # diaspora will try to login with the templated dn and password
-+ #
-+ # bind_template: "uid=%{username},dc=example,dc=com"
-+
-
- ## Here you can override settings defined above if you need
- ## to have them different in different environments.
-diff --git a/config/initializers/0_ldap_authenticatable.rb b/config/initializers/0_ldap_authenticatable.rb
-new file mode 100644
-index 000000000..49846502f
---- /dev/null
-+++ b/config/initializers/0_ldap_authenticatable.rb
-@@ -0,0 +1,82 @@
-+require 'net/ldap'
-+require 'devise/strategies/authenticatable'
-+
-+module Devise
-+ module Strategies
-+ class LdapAuthenticatable < Authenticatable
-+ def valid?
-+ AppConfig.ldap.enable? && params[:user].present?
-+ end
-+
-+ def authenticate!
-+ ldap = Net::LDAP.new(
-+ host: AppConfig.ldap.host,
-+ port: AppConfig.ldap.port,
-+ encryption: :simple_tls,
-+ )
-+
-+ if AppConfig.ldap.use_bind_dn?
-+ ldap.auth AppConfig.ldap.bind_dn, AppConfig.ldap.bind_pw
-+
-+ if !ldap.bind
-+ return fail(:ldap_configuration_error)
-+ end
-+
-+ search_filter = AppConfig.ldap.search_filter % { username: params[:user][:username] }
-+
-+ result = ldap.search(base: AppConfig.ldap.search_base, filter: search_filter, result_set: true)
-+
-+ if result.count != 1
-+ return login_fail
-+ end
-+
-+ user_dn = result.first.dn
-+ user_email = result.first[AppConfig.ldap.mail_attribute].first
-+ else
-+ user_dn = AppConfig.ldap.bind_template % { username: params[:user][:username] }
-+ end
-+
-+ ldap.auth user_dn, params[:user][:password]
-+
-+ if ldap.bind
-+ user = User.find_by(ldap_dn: user_dn)
-+
-+ # We don't want to trust too much the email attribute from
-+ # LDAP: if the user can edit it himself, he may login as
-+ # anyone
-+ if user.nil?
-+ if !AppConfig.ldap.use_bind_dn?
-+ result = ldap.search(base: user_dn, scope: Net::LDAP::SearchScope_BaseObject, filter: "(objectClass=*)", result_set: true)
-+ user_email = result.first[AppConfig.ldap.mail_attribute].first
-+ end
-+
-+ if user_email.present? && User.find_by(email: user_email).nil?
-+ # Password is used for remember_me token
-+ user = User.build(email: user_email, ldap_dn: user_dn, password: SecureRandom.hex, username: params[:user][:username])
-+ user.save
-+ user.seed_aspects
-+ elsif User.find_by(email: user_email).present?
-+ return fail(:ldap_existing_email)
-+ else
-+ return fail(:ldap_cannot_create_account_without_email)
-+ end
-+ end
-+
-+ success!(user)
-+ else
-+ return login_fail
-+ end
-+ end
-+
-+ def login_fail
-+ if AppConfig.ldap.only_ldap?
-+ return fail(:ldap_invalid_login)
-+ else
-+ return pass
-+ end
-+ end
-+ end
-+ end
-+end
-+
-+Warden::Strategies.add(:ldap_authenticatable, Devise::Strategies::LdapAuthenticatable)
-diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
-index 3698e2373..14e88063e 100644
---- a/config/initializers/devise.rb
-+++ b/config/initializers/devise.rb
-@@ -250,10 +250,9 @@ Devise.setup do |config|
- # If you want to use other strategies, that are not supported by Devise, or
- # change the failure app, you can configure them inside the config.warden block.
- #
-- # config.warden do |manager|
-- # manager.intercept_401 = false
-- # manager.default_strategies(:scope => :user).unshift :some_external_strategy
-- # end
-+ config.warden do |manager|
-+ manager.default_strategies(scope: :user).unshift :ldap_authenticatable
-+ end
-
- # ==> Mountable engine configurations
- # When using Devise inside an engine, let's call it `MyEngine`, and this engine
-diff --git a/db/migrate/20170724182100_add_ldap_dn_to_users.rb b/db/migrate/20170724182100_add_ldap_dn_to_users.rb
-new file mode 100644
-index 000000000..f5cc84d11
---- /dev/null
-+++ b/db/migrate/20170724182100_add_ldap_dn_to_users.rb
-@@ -0,0 +1,6 @@
-+class AddLdapDnToUsers < ActiveRecord::Migration
-+ def change
-+ add_column :users, :ldap_dn, :text, null: true, default: nil
-+ add_index :users, ['ldap_dn'], :length => { "ldap_dn" => 191 }
-+ end
-+end
diff --git a/pkgs/webapps/dokuwiki/default.nix b/pkgs/webapps/dokuwiki/default.nix
deleted file mode 100644
index 874f0d8..0000000
--- a/pkgs/webapps/dokuwiki/default.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ varDir ? "/var/lib/dokuwiki", preload ? "", lib, callPackage, stdenv, mylibs, writeText }:
-let
- preloadFile = plugins: let preloads = [preload]
- ++ builtins.concatMap (p: lib.optional (lib.hasAttr "preload" p) (p.preload p)) plugins;
- in writeText "preload.php" (''
-
-+
-
diff --git a/pkgs/webapps/mantisbt_2/bugnote_add.php.diff b/pkgs/webapps/mantisbt_2/bugnote_add.php.diff
deleted file mode 100644
index 4509f0a..0000000
--- a/pkgs/webapps/mantisbt_2/bugnote_add.php.diff
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/bugnote_add.php 2018-02-10 21:29:27.000000000 +0100
-+++ b/bugnote_add.php 2018-03-03 15:13:12.439919511 +0100
-@@ -44,6 +44,17 @@
-
- $t_query = array( 'issue_id' => $f_bug_id );
-
-+# begin captcha check for anon user
-+if ( current_user_is_anonymous() && get_gd_version() > 0 ) {
-+ $f_captcha = gpc_get_string( 'captcha', '' );
-+ $f_captcha = utf8_strtolower( trim( $f_captcha ) );
-+
-+ $t_securimage = new Securimage();
-+ if( $t_securimage->check( $f_captcha ) == false ) {
-+ trigger_error( ERROR_SIGNUP_NOT_MATCHING_CAPTCHA, ERROR );
-+ }
-+}
-+
- if( count( $f_files ) > 0 && is_blank( $f_text ) && helper_duration_to_minutes( $f_duration ) == 0 ) {
- $t_payload = array(
- 'files' => helper_array_transpose( $f_files )
diff --git a/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff b/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff
deleted file mode 100644
index a8589c7..0000000
--- a/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff
+++ /dev/null
@@ -1,52 +0,0 @@
---- a/bugnote_add_inc.php 2018-02-10 21:29:27.000000000 +0100
-+++ b/bugnote_add_inc.php 2018-03-03 15:14:27.332428557 +0100
-@@ -119,6 +119,49 @@
-
-
-
-+ 0 ) {
-+ $t_securimage_path = 'vendor/dapphp/securimage';
-+ $t_securimage_show = $t_securimage_path . '/securimage_show.php';
-+ $t_securimage_play = $t_securimage_path . '/securimage_play.swf?'
-+ . http_build_query( array(
-+ 'audio_file' => $t_securimage_path . '/securimage_play.php',
-+ 'bgColor1=' => '#fff',
-+ 'bgColor2=' => '#fff',
-+ 'iconColor=' => '#777',
-+ 'borderWidth=' => 1,
-+ 'borderColor=' => '#000',
-+ ) );
-+?>
-+
-+ CAPTCHA
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
- $t_changeset ) {
-+ event_signal( 'EVENT_BUG_ACTION', array('RESOLVE', $t_bug_id) );
-+ }
- }
-
- /**
diff --git a/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix b/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix
deleted file mode 100644
index dc6c7de..0000000
--- a/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ stdenv, fetchFromGitHub }:
-stdenv.mkDerivation rec {
- version = "v2.2.0";
- name = "mantisbt-plugin-source-integration-${version}";
- src = fetchFromGitHub {
- owner = "mantisbt-plugins";
- repo = "source-integration";
- rev = "44fc9e2e770aff4f40f56833f26a86ce0e2deb76";
- sha256 = "0gcm6kqqijnv303sk59zn27adwx5vkr545mwzyaq2nrpxnkwdy5b";
- };
- patches = [
- ./Source.API.php.diff
- ];
- installPhase = ''
- mkdir $out
- cp -a Source* $out/
- '';
- passthru = {
- selector = "Source*";
- };
-}
diff --git a/pkgs/webapps/mastodon/default.nix b/pkgs/webapps/mastodon/default.nix
deleted file mode 100644
index ce015c5..0000000
--- a/pkgs/webapps/mastodon/default.nix
+++ /dev/null
@@ -1,92 +0,0 @@
-{ varDir ? "/var/lib/mastodon", mylibs,
- stdenv, writeText, runCommand,
- ruby_2_6, bundlerEnv, defaultGemConfig,
- jq, protobuf, protobufc, pkgconfig, libidn, pam, nodejs, yarn, yarn2nix-moretea }:
-let
- info = mylibs.fetchedGithub ./mastodon.json // {
- src = runCommand "mastodon-patched" {
- source = (mylibs.fetchedGithub ./mastodon.json).src;
- } ''
- cp -a $source $out
- chmod -R u+w $out
- sed -i -e "/fuubar/s/2.4.0/2.4.1/" $out/Gemfile.lock
- sed -i -e "s/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9#4255dc41fa7df9c3a02c1595f058e248bc37b784/" $out/yarn.lock
- '';
- };
- gems = bundlerEnv {
- name = "mastodon-env";
- ruby = ruby_2_6;
- gemset = ./gemset.nix;
- gemdir = info.src;
- groups = [ "default" "production" "test" "development" ];
- gemConfig = defaultGemConfig // {
- redis-rack = attrs: {
- preBuild = ''
- sed -i 's!s\.files.*!!' redis-rack.gemspec
- '';
- };
- tzinfo = attrs: {
- preBuild = ''
- sed -i 's!s\.files.*!!' tzinfo.gemspec
- '';
- };
- cld3 = attrs: {
- buildInputs = [ protobuf protobufc pkgconfig ];
- };
- idn-ruby = attrs: {
- buildInputs = [ libidn ];
- };
- rpam2 = attrs: {
- buildInputs = [ pam ];
- };
- };
- };
- yarnModules = let
- packagejson = runCommand "package.json" { buildInputs = [ jq ]; } ''
- cat ${info.src}/package.json | jq -r '.version = "${info.version}"' > $out
- '';
- in
- yarn2nix-moretea.mkYarnModules rec {
- name = "mastodon-yarn";
- pname = name;
- version = info.version;
- packageJSON = packagejson;
- yarnLock = "${info.src}/yarn.lock";
- yarnNix = ./yarn-packages.nix;
- pkgConfig = {
- uws = {
- postInstall = ''
- npx node-gyp rebuild > build_log.txt 2>&1 || true
- '';
- };
- };
- };
- mastodon_with_yarn = stdenv.mkDerivation (info // rec {
- installPhase = ''
- cp -a . $out
- cp -a ${yarnModules}/node_modules $out
- '';
- buildInputs = [ yarnModules ];
- });
-in
-stdenv.mkDerivation {
- name = "mastodon";
- inherit mastodon_with_yarn;
- builder = writeText "build_mastodon" ''
- source $stdenv/setup
- set -a
- SECRET_KEY_BASE=Dummy
- OTP_SECRET=Dummy
- set +a
- cp -a $mastodon_with_yarn $out
- cd $out
- chmod u+rwX . public
- chmod -R u+rwX config/ node_modules/
- sed -i -e 's@^end$@ config.action_mailer.sendmail_settings = { location: ENV.fetch("SENDMAIL_LOCATION", "/usr/sbin/sendmail") }\nend@' config/environments/production.rb
- RAILS_ENV=production ${gems}/bin/rails assets:precompile
- rm -rf tmp/cache
- ln -sf ${varDir}/tmp/cache tmp
- '';
- buildInputs = [ gems gems.ruby nodejs yarn ];
- passthru = { inherit gems varDir; };
-}
diff --git a/pkgs/webapps/mastodon/gemset.nix b/pkgs/webapps/mastodon/gemset.nix
deleted file mode 100644
index 74fa5b3..0000000
--- a/pkgs/webapps/mastodon/gemset.nix
+++ /dev/null
@@ -1,2816 +0,0 @@
-{
- actioncable = {
- dependencies = ["actionpack" "nio4r" "websocket-driver"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04wd9rf8sglrqc8jz49apqcxbi51gdj7l1apf5qr4i86iddk6pkm";
- type = "gem";
- };
- version = "5.2.3";
- };
- actionmailer = {
- dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15laym06zcm2021qdhlyr6y9jn1marw436i89hcxqg14a8zvyvwa";
- type = "gem";
- };
- version = "5.2.3";
- };
- actionpack = {
- dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1s2iay17i2k0xx36cmnpbrmr5w6x70jk7fq1d8w70xcdw5chm0w1";
- type = "gem";
- };
- version = "5.2.3";
- };
- actionview = {
- dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1v49rgf8305grqf6gq7qa47qhamr369igyy0giycz60x86afyr4h";
- type = "gem";
- };
- version = "5.2.3";
- };
- active_model_serializers = {
- dependencies = ["actionpack" "activemodel" "case_transform" "jsonapi-renderer"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00fldcifg5zyx866njpjhwlxjxvb32pakf5q3pwnw3ms905s70kd";
- type = "gem";
- };
- version = "0.10.9";
- };
- active_record_query_trace = {
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "16fwv2h3h3hh8v6wgrpv13yxgg8mswsld0d8z6q1y5z9vd8vncc3";
- type = "gem";
- };
- version = "1.6.2";
- };
- activejob = {
- dependencies = ["activesupport" "globalid"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "17vizibxbsli5yppgrvmw13wj7a9xy19s5nqxf1k23bbk2s5b87s";
- type = "gem";
- };
- version = "5.2.3";
- };
- activemodel = {
- dependencies = ["activesupport"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0mghh9di8011ara9h1r5a216yzk1vjm9r3p0gdvdi8j1zmkl6k6h";
- type = "gem";
- };
- version = "5.2.3";
- };
- activerecord = {
- dependencies = ["activemodel" "activesupport" "arel"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0d6036f592803iyvp6bw98p3sg638mia5dbw19lvachx6jgzfvpw";
- type = "gem";
- };
- version = "5.2.3";
- };
- activestorage = {
- dependencies = ["actionpack" "activerecord" "marcel"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04is6ipjqw1f337i8pm8w5bd99rpygqfd0fzzxkr7jd308ggmsjk";
- type = "gem";
- };
- version = "5.2.3";
- };
- activesupport = {
- dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "110vp4frgkw3mpzlmshg2f2ig09cknls2w68ym1r1s39d01v0mi8";
- type = "gem";
- };
- version = "5.2.3";
- };
- addressable = {
- dependencies = ["public_suffix"];
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bcm2hchn897xjhqj9zzsxf3n9xhddymj4lsclz508f4vw3av46l";
- type = "gem";
- };
- version = "2.6.0";
- };
- airbrussh = {
- dependencies = ["sshkit"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0yp1sl5n94ksxpwmaajflbdls45s81hw4spgz01h19xs2zrvv8wl";
- type = "gem";
- };
- version = "1.3.0";
- };
- annotate = {
- dependencies = ["activerecord" "rake"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1k3ls7z32gz6yx6y372r5a7sm4nkbyrc4nkqyqzgayfkgpjzh0wk";
- type = "gem";
- };
- version = "2.7.5";
- };
- arel = {
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0";
- type = "gem";
- };
- version = "9.0.0";
- };
- ast = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
- type = "gem";
- };
- version = "2.4.0";
- };
- attr_encrypted = {
- dependencies = ["encryptor"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ncv2az1zlj33bsllr6q1qdvbw42gv91lxq0ryclbv8l8xh841jg";
- type = "gem";
- };
- version = "3.1.0";
- };
- av = {
- dependencies = ["cocaine"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1swakpybf6g0nzfdn6q4s9c97ysc3i4ffk84dw8v2321fpvc8gqq";
- type = "gem";
- };
- version = "0.9.0";
- };
- aws-eventstream = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "100g77a5ixg4p5zwq77f28n2pdkk0y481f7v83qrlmnj22318qq6";
- type = "gem";
- };
- version = "1.0.3";
- };
- aws-partitions = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0f72sad43nm7qqcb6bmracqv4qjdijg1jd6yabad6jaszw2hncx2";
- type = "gem";
- };
- version = "1.175.0";
- };
- aws-sdk-core = {
- dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rgvjvg58qh8b5nppp27qfayh0709bhhbqdpqvcr4ccs8qanln07";
- type = "gem";
- };
- version = "3.55.0";
- };
- aws-sdk-kms = {
- dependencies = ["aws-sdk-core" "aws-sigv4"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1lkdhk75fj67n7wh61p13fga6n15s2lfvh1sfgdhaj99kmv44lyv";
- type = "gem";
- };
- version = "1.21.0";
- };
- aws-sdk-s3 = {
- dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06vmp89n5gljx7rs57yjm6my8f3b14ddb24g95pnwsd86im7plp4";
- type = "gem";
- };
- version = "1.42.0";
- };
- aws-sigv4 = {
- dependencies = ["aws-eventstream"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1dfc8i5cxjwlvi4b665lbpbwvks8a6wfy3vfmwr3pjdmxwdmc2cs";
- type = "gem";
- };
- version = "1.1.0";
- };
- bcrypt = {
- groups = ["default" "pam_authentication"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
- type = "gem";
- };
- version = "3.1.12";
- };
- benchmark-ips = {
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1w59c4qnwkjqwn7zyp9hshslbshna77vknmz43h0va5lxisd6ai2";
- type = "gem";
- };
- version = "2.7.2";
- };
- better_errors = {
- dependencies = ["coderay" "erubi" "rack"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1mq43k4szfgcdanhdwacyp7yvldl76m9arhdj9n0x25dmbdzp2yn";
- type = "gem";
- };
- version = "2.5.1";
- };
- binding_of_caller = {
- dependencies = ["debug_inspector"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g";
- type = "gem";
- };
- version = "0.8.0";
- };
- blurhash = {
- dependencies = ["ffi"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1n137f1dg3cwl8dwmss61kgi21n0vg6nnkd7vymxssd1vzl4r3fs";
- type = "gem";
- };
- version = "0.1.3";
- };
- bootsnap = {
- dependencies = ["msgpack"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1jcc0x0l3jqap8r8l1j994ljh93c8hcppm59mjzpa0hdvprh23av";
- type = "gem";
- };
- version = "1.4.4";
- };
- brakeman = {
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0vqnhlswvrg5fpxszfkjmla85gdlvgspz0whlli730ydx648mi68";
- type = "gem";
- };
- version = "4.5.1";
- };
- browser = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0sdx0ny34i6vqxdsc7sy9g0nafdbrw8kvvb5xh9m18x1bzpqk92f";
- type = "gem";
- };
- version = "2.5.3";
- };
- builder = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
- type = "gem";
- };
- version = "3.2.3";
- };
- bullet = {
- dependencies = ["activesupport" "uniform_notifier"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0i00v399i0g8wba5kw32qhx15bygih8fcr59c9qvy2mpwcqaspv5";
- type = "gem";
- };
- version = "6.0.0";
- };
- bundler-audit = {
- dependencies = ["thor"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0pm22xpn3xyymsainixnrk8v3l3xi9bzwkjkspx00cfzp84xvxbq";
- type = "gem";
- };
- version = "0.6.1";
- };
- byebug = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1vk10jinfp345s2cb4ba7d0jcxj3phbgvab0by4a3ln2d376mkj4";
- type = "gem";
- };
- version = "11.0.0";
- };
- capistrano = {
- dependencies = ["airbrussh" "i18n" "rake" "sshkit"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p1hj8hpmplxl41y6phsvkw2k8x3yxmkngs8yl8gkr7c1ma870p4";
- type = "gem";
- };
- version = "3.11.0";
- };
- capistrano-bundler = {
- dependencies = ["capistrano" "sshkit"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p00rw2886v77kfjnh0mslyrv4lij5fa9niflz1lhynzlivgrmdr";
- type = "gem";
- };
- version = "1.3.0";
- };
- capistrano-rails = {
- dependencies = ["capistrano" "capistrano-bundler"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "19j82kiarrph1ilw2xfhfj62z0b53w0gph7613b21iccb2gn3dqy";
- type = "gem";
- };
- version = "1.4.0";
- };
- capistrano-rbenv = {
- dependencies = ["capistrano" "sshkit"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "182dmsliny87b74m9mxi7farmp03ycqh30yf58b2kcx7m2js2s92";
- type = "gem";
- };
- version = "2.1.4";
- };
- capistrano-yarn = {
- dependencies = ["capistrano"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zdg2s061vl5b8114n909mrjb2hc1qx0i4wqx9nacsrcjgyp07l9";
- type = "gem";
- };
- version = "2.0.2";
- };
- capybara = {
- dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
- groups = ["test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0zg182fa19w0n19v6l72ly2rsyd4x5jvph2bfrm1fjba6wwxn20h";
- type = "gem";
- };
- version = "3.24.0";
- };
- case_transform = {
- dependencies = ["activesupport"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0fzyws6spn5arqf6q604dh9mrj84a36k5hsc8z7jgcpfvhc49bg2";
- type = "gem";
- };
- version = "0.2";
- };
- charlock_holmes = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1nf1l31n10yaark2rrg5qzyzcx9w80681449s3j09qmnipsl8rl5";
- type = "gem";
- };
- version = "0.7.6";
- };
- chewy = {
- dependencies = ["activesupport" "elasticsearch" "elasticsearch-dsl"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0m1n98fww2is9v4h73qnxjzs0l9ixx2szby5rip26g9l7mjwmm7v";
- type = "gem";
- };
- version = "5.0.0";
- };
- chunky_png = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
- type = "gem";
- };
- version = "1.3.10";
- };
- cld3 = {
- dependencies = ["ffi"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06p4jgrr0zixqnflmg5dcrbmhlnmll85j7vxkrjmnng293cwvzgw";
- type = "gem";
- };
- version = "3.2.4";
- };
- climate_control = {
- groups = ["test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0q11v0iabvr6rif0d025xh078ili5frrihlj0m04zfg7lgvagxji";
- type = "gem";
- };
- version = "0.2.0";
- };
- cocaine = {
- dependencies = ["climate_control"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01kk5xd7lspbkdvn6nyj0y51zhvia3z6r4nalbdcqw5fbsywwi7d";
- type = "gem";
- };
- version = "0.5.8";
- };
- coderay = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
- type = "gem";
- };
- version = "1.1.2";
- };
- concurrent-ruby = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1x07r23s7836cpp5z9yrlbpljcxpax14yw4fy4bnp6crhr6x24an";
- type = "gem";
- };
- version = "1.1.5";
- };
- connection_pool = {
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
- type = "gem";
- };
- version = "2.2.2";
- };
- crack = {
- dependencies = ["safe_yaml"];
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
- type = "gem";
- };
- version = "0.4.3";
- };
- crass = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
- type = "gem";
- };
- version = "1.0.4";
- };
- css_parser = {
- dependencies = ["addressable"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0gwvf8mc8gnz4aizfijplv3594998h2j44ydakpzsdmkivs07v61";
- type = "gem";
- };
- version = "1.6.0";
- };
- debug_inspector = {
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0vxr0xa1mfbkfcrn71n7c4f2dj7la5hvphn904vh20j3x4j5lrx0";
- type = "gem";
- };
- version = "0.0.3";
- };
- derailed_benchmarks = {
- dependencies = ["benchmark-ips" "get_process_mem" "heapy" "memory_profiler" "rack" "rake" "thor"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1c9djg1r2w461h97zmmdsdgnsrxqm4qfyp7gry9qxbav9skrplb8";
- type = "gem";
- };
- version = "1.3.5";
- };
- devise = {
- dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
- groups = ["default" "pam_authentication"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04b2p61mqfb6ln8s2lhmvnkd45wjjinykbn9svmhs54kacrrjkcf";
- type = "gem";
- };
- version = "4.6.2";
- };
- devise-two-factor = {
- dependencies = ["activesupport" "attr_encrypted" "devise" "railties" "rotp"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1b61s5y1ch205lgf3xv8hcvyi27ddd0d4qbbcpnnakhn2bx16lmc";
- type = "gem";
- };
- version = "3.0.3";
- };
- devise_pam_authenticatable2 = {
- dependencies = ["devise" "rpam2"];
- groups = ["pam_authentication"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "13ipl52pkhc6vxp8ca31viwv01237bi2bfk3b1fixq1x46nf87p2";
- type = "gem";
- };
- version = "9.2.0";
- };
- diff-lcs = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
- type = "gem";
- };
- version = "1.3";
- };
- docile = {
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0yyh4lr03q2vafzsfqy1xax7vr8zn7mbddz3ax3vnlm5fg0px6pn";
- type = "gem";
- };
- version = "1.3.0";
- };
- domain_name = {
- dependencies = ["unf"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
- type = "gem";
- };
- version = "0.5.20180417";
- };
- doorkeeper = {
- dependencies = ["railties"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0zz92d57v1gcvbch9s9dw33x7mklgp1m5h2bicnzcc329rsia5gz";
- type = "gem";
- };
- version = "5.1.0";
- };
- dotenv = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "13cis6bf06hmz744xrsl163p6gb78xcm8g8q4pcabsy5ywyv6kag";
- type = "gem";
- };
- version = "2.7.2";
- };
- dotenv-rails = {
- dependencies = ["dotenv" "railties"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ih7nx7byiaws3w4vsb82fcfkgw4z14y8rclhnxmpghj0kn4871s";
- type = "gem";
- };
- version = "2.7.2";
- };
- elasticsearch = {
- dependencies = ["elasticsearch-api" "elasticsearch-transport"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0a08ynvxz5clfm2ndqpgjrv4aiga9m2y1ab34s3qkihdfdzdzhj8";
- type = "gem";
- };
- version = "6.0.2";
- };
- elasticsearch-api = {
- dependencies = ["multi_json"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1vkahknqn85vvwr1gzh8jf3pvdial0c0d524icg8x06vibqgzd5h";
- type = "gem";
- };
- version = "6.0.2";
- };
- elasticsearch-dsl = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1mwn6hvkki560p7sfc841q15zzgldsk9lzm2mlvc2bra7x1yk2q8";
- type = "gem";
- };
- version = "0.1.5";
- };
- elasticsearch-transport = {
- dependencies = ["faraday" "multi_json"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0gpwbw70qisx681j1bw8xq6shg5kdxmcdzg6425af0b5881jg7iy";
- type = "gem";
- };
- version = "6.0.2";
- };
- encryptor = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0s8rvfl0vn8w7k1sgkc234060jh468s3zd45xa64p1jdmfa3zwmb";
- type = "gem";
- };
- version = "3.0.0";
- };
- equatable = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1sjm9zjakyixyvsqziikdrsqfzis6j3fq23crgjkp6fwkfgndj7x";
- type = "gem";
- };
- version = "0.5.0";
- };
- erubi = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1";
- type = "gem";
- };
- version = "1.8.0";
- };
- et-orbi = {
- dependencies = ["tzinfo"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
- type = "gem";
- };
- version = "1.1.6";
- };
- excon = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
- type = "gem";
- };
- version = "0.62.0";
- };
- fabrication = {
- groups = ["development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "107jd1vwyg890xv9lvnyfnrx5pwqk38cx880m4pg7i98902y5796";
- type = "gem";
- };
- version = "2.20.2";
- };
- faker = {
- dependencies = ["i18n"];
- groups = ["test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1vslyqmk9gjvp1ahyfqmwy1jcyv75rp88hxwpy7cdk2lpdb1jp3l";
- type = "gem";
- };
- version = "1.9.3";
- };
- faraday = {
- dependencies = ["multipart-post"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1dv1vcxxyw4vy0r2diiml0r8zqk1csrksfxv8nkrw61xlf2daaaa";
- type = "gem";
- };
- version = "0.15.0";
- };
- fast_blank = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "16s1ilyvwzmkcgmklbrn0c2pch5n02vf921njx0bld4crgdr6z56";
- type = "gem";
- };
- version = "1.0.0";
- };
- fastimage = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1iy9jm13r2r4yz41xaivhxs8mvqn57fjwihxvazbip002mq6rxfz";
- type = "gem";
- };
- version = "2.1.5";
- };
- ffi = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p";
- type = "gem";
- };
- version = "1.10.0";
- };
- fog-core = {
- dependencies = ["builder" "excon" "formatador" "mime-types"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1agd6xgzk0rxrsjdpn94v4hy89s0nm2cs4zg2p880w2dan9xgrak";
- type = "gem";
- };
- version = "2.1.0";
- };
- fog-json = {
- dependencies = ["fog-core" "multi_json"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
- type = "gem";
- };
- version = "1.2.0";
- };
- fog-openstack = {
- dependencies = ["fog-core" "fog-json" "ipaddress"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0aphjrvmchmqbyxqq82yj0qngyvkmwdci9iqs8722fi23bk83gdl";
- type = "gem";
- };
- version = "0.3.7";
- };
- formatador = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
- type = "gem";
- };
- version = "0.2.5";
- };
- fugit = {
- dependencies = ["et-orbi" "raabro"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
- type = "gem";
- };
- version = "1.1.6";
- };
- fuubar = {
- dependencies = ["rspec-core" "ruby-progressbar"];
- groups = ["development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "169nyc9yqdv8rjfc6g56d1arr0vrcbw4rn02m27g5v0n6405jp85";
- type = "gem";
- };
- version = "2.4.1";
- };
- get_process_mem = {
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1bvfjdign16r0zwm2rlfrq0sk1licvmlgbnlpnyckniv5r7i080g";
- type = "gem";
- };
- version = "0.2.3";
- };
- globalid = {
- dependencies = ["activesupport"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1";
- type = "gem";
- };
- version = "0.4.2";
- };
- goldfinger = {
- dependencies = ["addressable" "http" "nokogiri" "oj"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0n142035jhyqwczi52zjr07c8kygp9b9f158miaby3z5hygzjyzh";
- type = "gem";
- };
- version = "2.1.0";
- };
- hamlit = {
- dependencies = ["temple" "thor" "tilt"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "17qn9w4100v9mkd4i8qbzs1d5ambdsqq0y1j6hhxbcldbqcznbvx";
- type = "gem";
- };
- version = "2.9.3";
- };
- hamlit-rails = {
- dependencies = ["actionpack" "activesupport" "hamlit" "railties"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0v75yd6x0nwky83smd9hw5ym9h0pi32jrzbnvq55pzj0rc95gg2p";
- type = "gem";
- };
- version = "0.2.3";
- };
- hamster = {
- dependencies = ["concurrent-ruby"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar";
- type = "gem";
- };
- version = "3.0.0";
- };
- hashdiff = {
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ncwxv7jbm3jj9phv6dd514463bkjwggxk10n2z100wf4cjcicrk";
- type = "gem";
- };
- version = "0.4.0";
- };
- hashie = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh";
- type = "gem";
- };
- version = "3.6.0";
- };
- heapy = {
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1r9f38fpgjgaxskkwvsliijj6vfmgsff9pnranvvvzkdl67hk1hw";
- type = "gem";
- };
- version = "0.1.4";
- };
- highline = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc";
- type = "gem";
- };
- version = "2.0.1";
- };
- hiredis = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04jj8k7lxqxw24sp0jiravigdkgsyrpprxpxm71ba93x1wr2w1bz";
- type = "gem";
- };
- version = "0.6.3";
- };
- hkdf = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04fixg0a51n4vy0j6c1hvisa2yl33m3jrrpxpb5sq6j511vjriil";
- type = "gem";
- };
- version = "0.3.0";
- };
- htmlentities = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj";
- type = "gem";
- };
- version = "4.3.4";
- };
- http = {
- dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
- type = "gem";
- };
- version = "3.3.0";
- };
- http-cookie = {
- dependencies = ["domain_name"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
- type = "gem";
- };
- version = "1.0.3";
- };
- http-form_data = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
- type = "gem";
- };
- version = "2.1.1";
- };
- http_accept_language = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
- type = "gem";
- };
- version = "2.1.1";
- };
- "http_parser.rb" = {
- groups = ["default"];
- platforms = [];
- source = {
- fetchSubmodules = true;
- rev = "54b17ba8c7d8d20a16dfc65d1775241833219cf2";
- sha256 = "16ihplh821kjbck9kjvqr780qsx9wi9vyc6kpmydj44r2pq76v59";
- type = "git";
- url = "https://github.com/tmm1/http_parser.rb";
- };
- version = "0.6.1";
- };
- httplog = {
- dependencies = ["rack" "rainbow"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1s7g48hbzxabnf8i9gyw7q3710wnmni2lpqznnvpi8s4z7k58jdp";
- type = "gem";
- };
- version = "1.3.1";
- };
- i18n = {
- dependencies = ["concurrent-ruby"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1hfxnlyr618s25xpafw9mypa82qppjccbh292c4l3bj36az7f6wl";
- type = "gem";
- };
- version = "1.6.0";
- };
- i18n-tasks = {
- dependencies = ["activesupport" "ast" "erubi" "highline" "i18n" "parser" "rails-i18n" "rainbow" "terminal-table"];
- groups = ["development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "11h0chj0jpdfxpaglkr98l4qcwwpb8glh3dxar3inq9ccmsrdzaf";
- type = "gem";
- };
- version = "0.9.29";
- };
- idn-ruby = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr";
- type = "gem";
- };
- version = "0.1.0";
- };
- ipaddress = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
- type = "gem";
- };
- version = "0.8.3";
- };
- iso-639 = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "10k1gpkkbxbasgjzh4hd32ygxzjb5312rphipm46ryxkpx556zzz";
- type = "gem";
- };
- version = "0.2.8";
- };
- jaro_winkler = {
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zz27z88qznix4r65gd9h56gl177snlfpgv10b0s69vi8qpl909l";
- type = "gem";
- };
- version = "1.5.2";
- };
- jmespath = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf";
- type = "gem";
- };
- version = "1.4.0";
- };
- json = {
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
- type = "gem";
- };
- version = "2.1.0";
- };
- json-ld = {
- dependencies = ["multi_json" "rdf"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1yk4gnxzwlif9d0dy7csdb9ix60h69alk139aaip6304nx2yhdsk";
- type = "gem";
- };
- version = "3.0.2";
- };
- json-ld-preloaded = {
- dependencies = ["json-ld" "multi_json" "rdf"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1c3yh5ayxvz33znbmzinigc5wivicib7nnykqjf00j2f9qag18pv";
- type = "gem";
- };
- version = "3.0.2";
- };
- jsonapi-renderer = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00ysmcv3nrccyimi334ida4axlfgir6cc2ryjxrf4xb97m1bfk5j";
- type = "gem";
- };
- version = "0.2.0";
- };
- jwt = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
- type = "gem";
- };
- version = "2.1.0";
- };
- kaminari = {
- dependencies = ["activesupport" "kaminari-actionview" "kaminari-activerecord" "kaminari-core"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1j27y5phifwpggspglmg8pmlf6n4jblxwziix9am42661c770jlm";
- type = "gem";
- };
- version = "1.1.1";
- };
- kaminari-actionview = {
- dependencies = ["actionview" "kaminari-core"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1386wshpy1ygbris0s7rv7lyzbs0v8dfqkzdwsrsgm9fd1ira640";
- type = "gem";
- };
- version = "1.1.1";
- };
- kaminari-activerecord = {
- dependencies = ["activerecord" "kaminari-core"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0q31ik5648xi2hpy61knnjd0m7rvs17i93gzwcbh3ccj1y24gv2x";
- type = "gem";
- };
- version = "1.1.1";
- };
- kaminari-core = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1cfjrhvidvgdwp9ffsm9d4c2s18k2zp3gnya3f41qb3fc6bc2q2w";
- type = "gem";
- };
- version = "1.1.1";
- };
- launchy = {
- dependencies = ["addressable"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2";
- type = "gem";
- };
- version = "2.4.3";
- };
- letter_opener = {
- dependencies = ["launchy"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "09a7kgsmr10a0hrc9bwxglgqvppjxij9w8bxx91mnvh0ivaw0nq9";
- type = "gem";
- };
- version = "1.7.0";
- };
- letter_opener_web = {
- dependencies = ["actionmailer" "letter_opener" "railties"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "17qhwrkncrrp1bi2f7fbkm5lpnkdsiwy8jcvgr2wa97ck8y4x2bb";
- type = "gem";
- };
- version = "1.3.4";
- };
- link_header = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm";
- type = "gem";
- };
- version = "0.0.8";
- };
- lograge = {
- dependencies = ["actionpack" "activesupport" "railties" "request_store"];
- groups = ["production"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1vrjm4yqn5l6q5gsl72fmk95fl6j9z1a05gzbrwmsm3gp1a1bgac";
- type = "gem";
- };
- version = "0.11.2";
- };
- loofah = {
- dependencies = ["crass" "nokogiri"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
- type = "gem";
- };
- version = "2.2.3";
- };
- mail = {
- dependencies = ["mini_mime"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
- type = "gem";
- };
- version = "2.7.1";
- };
- makara = {
- dependencies = ["activerecord"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "01n90s1jcc05dc9a70k3c3aa4gc9j49k9iv56n2k4jm949dacms6";
- type = "gem";
- };
- version = "0.4.1";
- };
- marcel = {
- dependencies = ["mimemagic"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx";
- type = "gem";
- };
- version = "0.3.3";
- };
- mario-redis-lock = {
- dependencies = ["redis"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1v9wdjcjqzpns2migxp4a5b4w82mipi0fwihbqz3q2qj2qm7wc17";
- type = "gem";
- };
- version = "1.2.1";
- };
- memory_profiler = {
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1xki7jrbzylsmk1brjibmhifb0x70skr55pdq4rvxcyrlnrrvyxz";
- type = "gem";
- };
- version = "0.9.13";
- };
- method_source = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
- type = "gem";
- };
- version = "0.9.2";
- };
- microformats = {
- dependencies = ["json" "nokogiri"];
- groups = ["test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "12wj9lydba2dz5pqd6ngklwnzhsg63kl3yhi9zm8h9hjg6dsw3nb";
- type = "gem";
- };
- version = "4.1.0";
- };
- mime-types = {
- dependencies = ["mime-types-data"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
- type = "gem";
- };
- version = "3.2.2";
- };
- mime-types-data = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
- type = "gem";
- };
- version = "3.2018.0812";
- };
- mimemagic = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw";
- type = "gem";
- };
- version = "0.3.3";
- };
- mini_mime = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
- type = "gem";
- };
- version = "1.0.1";
- };
- mini_portile2 = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
- type = "gem";
- };
- version = "2.4.0";
- };
- minitest = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
- type = "gem";
- };
- version = "5.11.3";
- };
- msgpack = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1w38hilm3dk42dwk8ygiq49bl4in7y80hfqr63hk54mj4gmzi6ch";
- type = "gem";
- };
- version = "1.2.10";
- };
- multi_json = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
- type = "gem";
- };
- version = "1.13.1";
- };
- multipart-post = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
- type = "gem";
- };
- version = "2.0.0";
- };
- necromancer = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "112dvp7fz2xmbn4njzjsgqf1psnxiybj4yk6qbd843hyapn7i1hm";
- type = "gem";
- };
- version = "0.5.0";
- };
- net-ldap = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "016igqz81a8zcwqzp5bbhryqmb2skmyf57ij3nb5z8sxwhw22jgh";
- type = "gem";
- };
- version = "0.16.1";
- };
- net-scp = {
- dependencies = ["net-ssh"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0b0jqrcsp4bbi4n4mzyf70cp2ysyp6x07j8k8cqgxnvb4i3a134j";
- type = "gem";
- };
- version = "1.2.1";
- };
- net-ssh = {
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0qfanf71yv8w7yl9l9wqcy68i2x1ghvnf8m581yy4pl0anfdhqw8";
- type = "gem";
- };
- version = "5.0.2";
- };
- nio4r = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
- type = "gem";
- };
- version = "2.3.1";
- };
- nokogiri = {
- dependencies = ["mini_portile2"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "02bjydih0j515szfv9mls195cvpyidh6ixm7dwbl3s2sbaxxk5s4";
- type = "gem";
- };
- version = "1.10.3";
- };
- nokogumbo = {
- dependencies = ["nokogiri"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1qr7r2ysbp8b5q78yr8l5qpaxfqdw1i2yz6nsrbavdki8mqjgj24";
- type = "gem";
- };
- version = "2.0.0";
- };
- nsa = {
- dependencies = ["activesupport" "concurrent-ruby" "sidekiq" "statsd-ruby"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1i1bhmvs49yv70pgl41lx1lr8x6whg52szb8ic1jb6wmmxr2ylcz";
- type = "gem";
- };
- version = "0.2.7";
- };
- oj = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0vd1270cg11nicr6d7ziizbphkp6bn5h55xp73gbnr5n7j11xy8a";
- type = "gem";
- };
- version = "3.7.12";
- };
- omniauth = {
- dependencies = ["hashie" "rack"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p16h1rp8by05k8gfw17xjhgwp60dk8qmj1xalv1n23kmxfsxb1x";
- type = "gem";
- };
- version = "1.9.0";
- };
- omniauth-cas = {
- dependencies = ["addressable" "nokogiri" "omniauth"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1nnk7cr45aj7hj19zpky58yysvjg8mn5f45sj9knpn5f9kgld7p4";
- type = "gem";
- };
- version = "1.1.1";
- };
- omniauth-saml = {
- dependencies = ["omniauth" "ruby-saml"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pg3pw4yjd9w1rn3lkycllrvd767pydbhldgdcqbbcck01asfcfz";
- type = "gem";
- };
- version = "1.10.1";
- };
- orm_adapter = {
- groups = ["default" "pam_authentication"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
- type = "gem";
- };
- version = "0.5.0";
- };
- ostatus2 = {
- dependencies = ["addressable" "http" "nokogiri"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0fj27nr38g5y52s755pmg5zifwc6n88bw2zmkc22kg4vrhs64k19";
- type = "gem";
- };
- version = "2.0.3";
- };
- ox = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "03w4s8pa9j6rk6vb7vwicdr0c3k03ngcf1s8gp1q8qwyrgwspc4r";
- type = "gem";
- };
- version = "2.11.0";
- };
- paperclip = {
- dependencies = ["activemodel" "activesupport" "mime-types" "mimemagic" "terrapin"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "04mlw7aqj20ry0fy92gxnxg99hy5xczff7rhywfzz4mqlhc2wgg7";
- type = "gem";
- };
- version = "6.0.0";
- };
- paperclip-av-transcoder = {
- dependencies = ["av" "paperclip"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1gcnp3fpdb5lqilcij4yqga6397nb7zyyf9lzxnqpbp7cvc18lhf";
- type = "gem";
- };
- version = "0.6.4";
- };
- parallel = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1x1gzgjrdlkm1aw0hfpyphsxcx90qgs3y4gmp9km3dvf4hc4qm8r";
- type = "gem";
- };
- version = "1.17.0";
- };
- parallel_tests = {
- dependencies = ["parallel"];
- groups = ["test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rxp2v34z1w107hks3892v04pnzq5kj85xplks53z6kamn7p1knx";
- type = "gem";
- };
- version = "2.29.0";
- };
- parser = {
- dependencies = ["ast"];
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pnks149x0fzgqiw53qlmvcd8bi746cxdw03sjljby5s97p1fskn";
- type = "gem";
- };
- version = "2.6.3.0";
- };
- pastel = {
- dependencies = ["equatable" "tty-color"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1yf30d9kzpm96gw9kwbv31p0qigwfykn8qdis5950plnzgc1vlp1";
- type = "gem";
- };
- version = "0.7.2";
- };
- pg = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy";
- type = "gem";
- };
- version = "1.1.4";
- };
- pghero = {
- dependencies = ["activerecord"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0phn9xayg6kgpgyzbpcknwkdv6qqzb21556hb4ikkln8sx711cq0";
- type = "gem";
- };
- version = "2.2.1";
- };
- pkg-config = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1s56ym0chq3fycl29vqabcalqdcf7y2f25pmihjwqgbmrmzdyvr1";
- type = "gem";
- };
- version = "1.3.7";
- };
- posix-spawn = {
- groups = ["default"];
- platforms = [];
- source = {
- fetchSubmodules = false;
- rev = "58465d2e213991f8afb13b984854a49fcdcc980c";
- sha256 = "158m86k54i5cxzasrzp6q0cpvf6d4v91pjcd6kb0cvslfki1drn2";
- type = "git";
- url = "https://github.com/rtomayko/posix-spawn";
- };
- version = "0.3.13";
- };
- premailer = {
- dependencies = ["addressable" "css_parser" "htmlentities"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1xrhmialxn5vlp1nmf40a4db9gji4h2wbzd7f43sz64z8lvrjj6h";
- type = "gem";
- };
- version = "1.11.1";
- };
- premailer-rails = {
- dependencies = ["actionmailer" "premailer"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1avh2bkhabicf1zxla8z6ig5192h3vdzli4d2y9wmxfwgh549lmx";
- type = "gem";
- };
- version = "1.10.2";
- };
- private_address_check = {
- groups = ["production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "05phz0vscfh9chv90yc9091pifw3cpwkh76flnhrmvja1q3na4cy";
- type = "gem";
- };
- version = "0.5.0";
- };
- pry = {
- dependencies = ["coderay" "method_source"];
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
- type = "gem";
- };
- version = "0.12.2";
- };
- pry-byebug = {
- dependencies = ["byebug" "pry"];
- groups = ["development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1aqz4gz8z44k6svpvcsfrqbigcpjd2kwvfm77yq3v8yzkhjrx0zi";
- type = "gem";
- };
- version = "3.7.0";
- };
- pry-rails = {
- dependencies = ["pry"];
- groups = ["development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1cf4ii53w2hdh7fn8vhqpzkymmchjbwij4l3m7s6fsxvb9bn51j6";
- type = "gem";
- };
- version = "0.3.9";
- };
- public_suffix = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1c7c5xxkx91hwj4572hbnyvxmydb90q69wlpr2l0dxrmwx2p365l";
- type = "gem";
- };
- version = "3.1.0";
- };
- puma = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pkrbvak6rlf147qpd4zss031qrwwh53g8s6017037iwg0436kv3";
- type = "gem";
- };
- version = "3.12.1";
- };
- pundit = {
- dependencies = ["activesupport"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1rqnll033ya64qvknbmnq076q9mxaibvcd7q70jhkpjda1xi4703";
- type = "gem";
- };
- version = "2.0.1";
- };
- raabro = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
- type = "gem";
- };
- version = "1.1.6";
- };
- rack = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0z90vflxbgjy2n84r7mbyax3i2vyvvrxxrf86ljzn5rw65jgnn2i";
- type = "gem";
- };
- version = "2.0.7";
- };
- rack-attack = {
- dependencies = ["rack"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1hbg2imjfs305iv6wglwn7jscksblxbsh92kf6qlkv97bwq63rfi";
- type = "gem";
- };
- version = "6.0.0";
- };
- rack-cors = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1dmg0f7zdmcn321fr05g568slzf8cmqgccavyhvx7c37ir040k4l";
- type = "gem";
- };
- version = "1.0.3";
- };
- rack-protection = {
- dependencies = ["rack"];
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk";
- type = "gem";
- };
- version = "2.0.5";
- };
- rack-proxy = {
- dependencies = ["rack"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1v40xd3xhzhbdqfynd03gn88j1pga2zhrv58xs9fl4hzrlbp096s";
- type = "gem";
- };
- version = "0.6.5";
- };
- rack-test = {
- dependencies = ["rack"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
- type = "gem";
- };
- version = "1.1.0";
- };
- rails = {
- dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p7cszi3n9ksxchxnccmz61pd1i3rjg4813dsdinsm8xm5k1pdgr";
- type = "gem";
- };
- version = "5.2.3";
- };
- rails-controller-testing = {
- dependencies = ["actionpack" "actionview" "activesupport"];
- groups = ["test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1m1rklj6pvzi4fydxcmcv4q0xd7913hhhw1hw530nfz1wkl7vjlf";
- type = "gem";
- };
- version = "1.0.4";
- };
- rails-dom-testing = {
- dependencies = ["activesupport" "nokogiri"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
- type = "gem";
- };
- version = "2.0.3";
- };
- rails-html-sanitizer = {
- dependencies = ["loofah"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
- type = "gem";
- };
- version = "1.0.4";
- };
- rails-i18n = {
- dependencies = ["i18n" "railties"];
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "02kdlm7jgwvwnnc1amy8md2vl0f2jkfr6rr36vybclr9qm4fb80f";
- type = "gem";
- };
- version = "5.1.3";
- };
- rails-settings-cached = {
- dependencies = ["rails"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0wyhyls0aqb1iw7mnaldg39w3mnbi3anmpbvb52rjwkpj2mchhnc";
- type = "gem";
- };
- version = "0.6.6";
- };
- railties = {
- dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1gn9fwb5wm08fbj7zpilqgblfl315l5b7pg4jsvxlizvrzg8h8q4";
- type = "gem";
- };
- version = "5.2.3";
- };
- rainbow = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
- type = "gem";
- };
- version = "3.0.0";
- };
- rake = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1sy5a7nh6xjdc9yhcw31jji7ssrf9v5806hn95gbrzr998a2ydjn";
- type = "gem";
- };
- version = "12.3.2";
- };
- rdf = {
- dependencies = ["hamster" "link_header"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1ylgsspdj2g0af0pgfi1ry50x8ng5069223238vg8kz0p7b24q79";
- type = "gem";
- };
- version = "3.0.9";
- };
- rdf-normalize = {
- dependencies = ["rdf"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0h8qk3x5frqbgb4gj9ga75ddls47x8qhghscgz82gfq76m4r45g0";
- type = "gem";
- };
- version = "0.3.3";
- };
- redis = {
- groups = ["default" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1mymdx7s5sr4mablklaipz679ckczsiigswm1g2v5mc93yj5amw3";
- type = "gem";
- };
- version = "4.1.2";
- };
- redis-actionpack = {
- dependencies = ["actionpack" "redis-rack" "redis-store"];
- groups = ["default" "production"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "15k41gz7nygd4yydk2yd25gghya1j7q6zifk4mdrra6bwnwjbm63";
- type = "gem";
- };
- version = "5.0.2";
- };
- redis-activesupport = {
- dependencies = ["activesupport" "redis-store"];
- groups = ["default" "production"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0rq5dhrzc1l8c7f5gx9r7mvnsk5206dfwih3yv5si5rf42nx2ay5";
- type = "gem";
- };
- version = "5.0.4";
- };
- redis-namespace = {
- dependencies = ["redis"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0r7daagrjjribn098dxwbv9zivrbq2rsffbkj2ccxyn9lmjjbgah";
- type = "gem";
- };
- version = "1.6.0";
- };
- redis-rack = {
- dependencies = ["rack" "redis-store"];
- groups = ["default" "production"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0px0wv8zripc6lrn3k0k61j6nlxda145q8sz50yvnig17wlk36gb";
- type = "gem";
- };
- version = "2.0.4";
- };
- redis-rails = {
- dependencies = ["redis-actionpack" "redis-activesupport" "redis-store"];
- groups = ["production"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0hjvkyaw5hgz7v6fgwdk8pb966z44h1gv8jarmb0gwhkqmjnsh40";
- type = "gem";
- };
- version = "5.0.2";
- };
- redis-store = {
- dependencies = ["redis"];
- groups = ["default" "production"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0cpg4fmqcyl8mm77l852xsidp8384a7s1mgbpki999swvq97svi4";
- type = "gem";
- };
- version = "1.5.0";
- };
- regexp_parser = {
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0dsgjb3kszk6a82s6gl0h6a8vncjrxmcbk0r4mcxcdcad2b7vb2d";
- type = "gem";
- };
- version = "1.5.1";
- };
- request_store = {
- dependencies = ["rack"];
- groups = ["default" "production"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
- type = "gem";
- };
- version = "1.4.1";
- };
- responders = {
- dependencies = ["actionpack" "railties"];
- groups = ["default" "pam_authentication"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18lqbiyc7234vd6iwxia5yvvzg6bdvdwl2nm4a5y7ia5fxjl3kqm";
- type = "gem";
- };
- version = "2.4.1";
- };
- rotp = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1w8d6svhq3y9y952r8cqirxvdx12zlkb7zxjb44bcbidb2sisy4d";
- type = "gem";
- };
- version = "2.1.2";
- };
- rpam2 = {
- groups = ["default" "pam_authentication"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1zvli3s4z1hf2l7gyfickm5i3afjrnycc3ihbiax6ji6arpbyf33";
- type = "gem";
- };
- version = "4.0.2";
- };
- rqrcode = {
- dependencies = ["chunky_png"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0h1pnnydgs032psakvg3l779w3ghbn08ajhhhw19hpmnfhrs8k0a";
- type = "gem";
- };
- version = "0.10.1";
- };
- rspec-core = {
- dependencies = ["rspec-support"];
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
- type = "gem";
- };
- version = "3.8.0";
- };
- rspec-expectations = {
- dependencies = ["diff-lcs" "rspec-support"];
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
- type = "gem";
- };
- version = "3.8.2";
- };
- rspec-mocks = {
- dependencies = ["diff-lcs" "rspec-support"];
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
- type = "gem";
- };
- version = "3.8.0";
- };
- rspec-rails = {
- dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
- groups = ["development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1pf6n9l4sw1arlax1bdbm1znsvl8cgna2n6k6yk1bi8vz2n73ls1";
- type = "gem";
- };
- version = "3.8.2";
- };
- rspec-sidekiq = {
- dependencies = ["rspec-core" "sidekiq"];
- groups = ["test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0y7pbqrbc8rjszc45vg4vz9qbn8aymgcc4ribrhvm76wrfz3ksfq";
- type = "gem";
- };
- version = "3.0.3";
- };
- rspec-support = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
- type = "gem";
- };
- version = "3.8.0";
- };
- rubocop = {
- dependencies = ["jaro_winkler" "parallel" "parser" "rainbow" "ruby-progressbar" "unicode-display_width"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0mjyrf1dmf58i40izs8rp2j4mqnyd4qpah9svmkwhs33ckxsjh6b";
- type = "gem";
- };
- version = "0.71.0";
- };
- rubocop-rails = {
- dependencies = ["rack" "rubocop"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "133kf7zc03dgvday8p9m53kz4cqbp4i6w53ahqkfp88n3v5ji0ss";
- type = "gem";
- };
- version = "2.0.1";
- };
- ruby-progressbar = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf";
- type = "gem";
- };
- version = "1.10.1";
- };
- ruby-saml = {
- dependencies = ["nokogiri"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "12f3mmyds4y8f7535p79xzx0wnp7rj02h1fp2x3j2hy5vrkmz2k4";
- type = "gem";
- };
- version = "1.9.0";
- };
- rufus-scheduler = {
- dependencies = ["fugit"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "074w41a88343cbv8ydkpl3firhvh3kbh8ppldhdmpvv2g569m32i";
- type = "gem";
- };
- version = "3.5.2";
- };
- safe_yaml = {
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56";
- type = "gem";
- };
- version = "1.0.5";
- };
- sanitize = {
- dependencies = ["crass" "nokogiri" "nokogumbo"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0rsb2gvqdh41miq7xjckidmgnjh3slvfqbp1hh4s6xfhc32r8g3s";
- type = "gem";
- };
- version = "5.0.0";
- };
- sidekiq = {
- dependencies = ["connection_pool" "rack" "rack-protection" "redis"];
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "131zv8i341bkacxx7n1id2cmblkbs379farnibqg8c7bycd1iajq";
- type = "gem";
- };
- version = "5.2.7";
- };
- sidekiq-bulk = {
- dependencies = ["sidekiq"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08nyxzmgf742irafy3l4fj09d4s5pyvsh0dzlh8y4hl51rgkh4xv";
- type = "gem";
- };
- version = "0.2.0";
- };
- sidekiq-scheduler = {
- dependencies = ["redis" "rufus-scheduler" "sidekiq" "tilt"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1n38p1ig8rx4ndqxcsc2gyzbaaax6r16b1xkn9mgcwwfx8qd5dbw";
- type = "gem";
- };
- version = "3.0.0";
- };
- sidekiq-unique-jobs = {
- dependencies = ["concurrent-ruby" "sidekiq" "thor"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "14b6hiz41zhnn8mq2fyg8axdw6kzfqaybiyqqniprjgxm88md6xf";
- type = "gem";
- };
- version = "6.0.13";
- };
- simple-navigation = {
- dependencies = ["activesupport"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08a2s18an3br3xj5j86r33q0hrkai0y157xg67h1khdskb08yylk";
- type = "gem";
- };
- version = "4.0.5";
- };
- simple_form = {
- dependencies = ["actionpack" "activemodel"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1221bf6glwinknrnp3pa2676ayg1yxyfa6l6lbajc72950v5mzm6";
- type = "gem";
- };
- version = "4.1.0";
- };
- simplecov = {
- dependencies = ["docile" "json" "simplecov-html"];
- groups = ["test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
- type = "gem";
- };
- version = "0.16.1";
- };
- simplecov-html = {
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
- type = "gem";
- };
- version = "0.10.2";
- };
- sprockets = {
- dependencies = ["concurrent-ruby" "rack"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
- type = "gem";
- };
- version = "3.7.2";
- };
- sprockets-rails = {
- dependencies = ["actionpack" "activesupport" "sprockets"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
- type = "gem";
- };
- version = "3.2.1";
- };
- sshkit = {
- dependencies = ["net-scp" "net-ssh"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1982pcckxy811gm6z9h8brkds13mrgrx8sgmdz8dq5rg1h91y0yw";
- type = "gem";
- };
- version = "1.17.0";
- };
- stackprof = {
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1v7mkl4ng2is5h0glivhcjjkkj2shq1qzx9sg9shw9nn8xvg7i4w";
- type = "gem";
- };
- version = "0.2.12";
- };
- statsd-ruby = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0djig5dnqjgww6wrw3f1mvnnjllznahlchvk4lvs4wx9qjsqpysr";
- type = "gem";
- };
- version = "1.4.0";
- };
- stoplight = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1c55ar2chyivz8n6xkhyq36hgpb0b7cfqfjrcyyv9sjiyrbqyhic";
- type = "gem";
- };
- version = "2.1.3";
- };
- streamio-ffmpeg = {
- dependencies = ["multi_json"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1nnxizc0371vwh0k6gqjj1b7fjszydpqfz549n6qn2q1pza3894z";
- type = "gem";
- };
- version = "3.0.2";
- };
- strong_migrations = {
- dependencies = ["activerecord"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0767m9qm0k2xqp4z3cyy5mh3639cbfp0b43b6kk6w85zyi6w4dpq";
- type = "gem";
- };
- version = "0.4.0";
- };
- temple = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "158d7ygbwcifqnvrph219p7m78yjdjazhykv5darbkms7bxm5y09";
- type = "gem";
- };
- version = "0.8.1";
- };
- terminal-table = {
- dependencies = ["unicode-display_width"];
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
- type = "gem";
- };
- version = "1.8.0";
- };
- terrapin = {
- dependencies = ["climate_control"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0p18f05r0c5s70571gqig3z2ym74wx79s6rd45sprp207bqskzn9";
- type = "gem";
- };
- version = "0.6.0";
- };
- thor = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29";
- type = "gem";
- };
- version = "0.20.3";
- };
- thread_safe = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
- type = "gem";
- };
- version = "0.3.6";
- };
- tilt = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz";
- type = "gem";
- };
- version = "2.0.9";
- };
- tty-color = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0zz5xa6xbrj69h334d8nx7z732fz80s1a0b02b53mim95p80s7bk";
- type = "gem";
- };
- version = "0.4.3";
- };
- tty-command = {
- dependencies = ["pastel"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1d1fghdvnlc8m5i36h7gswn21232k2f9z5ls73fhs9p5ryfs4vz7";
- type = "gem";
- };
- version = "0.8.2";
- };
- tty-cursor = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0prcxdy6qhqba4cv7hsy503b3bjciqk3j3hhzvcbij1kj2gh31c9";
- type = "gem";
- };
- version = "0.7.0";
- };
- tty-prompt = {
- dependencies = ["necromancer" "pastel" "tty-reader"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0mz1v299m6nx6fvlj5jv6h5pvrrwa9pr7c2j5sap3gdab99x6irk";
- type = "gem";
- };
- version = "0.19.0";
- };
- tty-reader = {
- dependencies = ["tty-cursor" "tty-screen" "wisper"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "028b7ig858av4xwvvbzd96x52myn1a42b2abczjjwvhz6b1j94bn";
- type = "gem";
- };
- version = "0.6.0";
- };
- tty-screen = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1143g05fs28ssgimaph6sdnsndd1wrpax9kjypvd2ripa1adm4kx";
- type = "gem";
- };
- version = "0.7.0";
- };
- twitter-text = {
- dependencies = ["unf"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
- type = "gem";
- };
- version = "1.14.7";
- };
- tzinfo = {
- dependencies = ["thread_safe"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
- type = "gem";
- };
- version = "1.2.5";
- };
- tzinfo-data = {
- dependencies = ["tzinfo"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1105fp27d527k7rrq1yx1ikbzf1sra046ndayxikkjvay9ql61jz";
- type = "gem";
- };
- version = "1.2019.1";
- };
- unf = {
- dependencies = ["unf_ext"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
- type = "gem";
- };
- version = "0.1.4";
- };
- unf_ext = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
- type = "gem";
- };
- version = "0.0.7.5";
- };
- unicode-display_width = {
- groups = ["default" "development" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w";
- type = "gem";
- };
- version = "1.6.0";
- };
- uniform_notifier = {
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0mb0pq99zm17qnz2czmad5b3z0ivzkf6493afj3n550kd56z18s3";
- type = "gem";
- };
- version = "1.12.1";
- };
- warden = {
- dependencies = ["rack"];
- groups = ["default" "pam_authentication"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
- type = "gem";
- };
- version = "1.2.8";
- };
- webmock = {
- dependencies = ["addressable" "crack" "hashdiff"];
- groups = ["test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0anvrh9si2myf1k8p0rxh8pvmv6ldxd5gmk24ss3kvybmjqrcpwv";
- type = "gem";
- };
- version = "3.6.0";
- };
- webpacker = {
- dependencies = ["activesupport" "rack-proxy" "railties"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "08jd55y3kihsacgp4l0gvb64m9xixc7dpzjnyr40d6dy98bppz9y";
- type = "gem";
- };
- version = "4.0.7";
- };
- webpush = {
- dependencies = ["hkdf" "jwt"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0gi7aircw2bizk08pihr9srncjy9x9iy0ymp1qgchni639k1k05s";
- type = "gem";
- };
- version = "0.3.8";
- };
- websocket-driver = {
- dependencies = ["websocket-extensions"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "1551k3fs3kkb3ghqfj3n5lps0ikb9pyrdnzmvgfdxy8574n4g1dn";
- type = "gem";
- };
- version = "0.7.0";
- };
- websocket-extensions = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
- type = "gem";
- };
- version = "0.1.3";
- };
- wisper = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0ar2wn3pxnffyzcmf67y67b8lnhgn9zayqhqp26jwqa3d73j71kd";
- type = "gem";
- };
- version = "2.0.0";
- };
- xpath = {
- dependencies = ["nokogiri"];
- groups = ["default" "test"];
- platforms = [];
- source = {
- remotes = ["https://rubygems.org"];
- sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
- type = "gem";
- };
- version = "3.2.0";
- };
-}
diff --git a/pkgs/webapps/mastodon/mastodon.json b/pkgs/webapps/mastodon/mastodon.json
deleted file mode 100644
index a0a6cfd..0000000
--- a/pkgs/webapps/mastodon/mastodon.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "v2.9.4",
- "meta": {
- "name": "mastodon",
- "url": "https://github.com/tootsuite/mastodon",
- "branch": "refs/tags/v2.9.4"
- },
- "github": {
- "owner": "tootsuite",
- "repo": "mastodon",
- "rev": "9bace2dd88d127d396794375c8fcb2132619a799",
- "sha256": "1x9pai1q73lsq1i685w7z4v3w478iyij65mar13k4hq9zdz9d2b0",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/mastodon/yarn-packages.nix b/pkgs/webapps/mastodon/yarn-packages.nix
deleted file mode 100644
index cca2efb..0000000
--- a/pkgs/webapps/mastodon/yarn-packages.nix
+++ /dev/null
@@ -1,12344 +0,0 @@
-{fetchurl, linkFarm}: rec {
- offline_cache = linkFarm "offline" packages;
- packages = [
-
- {
- name = "_babel_code_frame___code_frame_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_code_frame___code_frame_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz";
- sha1 = "06e2ab19bdb535385559aabb5ba59729482800f8";
- };
- }
-
- {
- name = "_babel_core___core_7.3.4.tgz";
- path = fetchurl {
- name = "_babel_core___core_7.3.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz";
- sha1 = "921a5a13746c21e32445bf0798680e9d11a6530b";
- };
- }
-
- {
- name = "_babel_core___core_7.4.5.tgz";
- path = fetchurl {
- name = "_babel_core___core_7.4.5.tgz";
- url = "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz";
- sha1 = "081f97e8ffca65a9b4b0fdc7e274e703f000c06a";
- };
- }
-
- {
- name = "_babel_generator___generator_7.3.4.tgz";
- path = fetchurl {
- name = "_babel_generator___generator_7.3.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz";
- sha1 = "9aa48c1989257877a9d971296e5b73bfe72e446e";
- };
- }
-
- {
- name = "_babel_generator___generator_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_generator___generator_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz";
- sha1 = "174a215eb843fc392c7edcaabeaa873de6e8f041";
- };
- }
-
- {
- name = "_babel_helper_annotate_as_pure___helper_annotate_as_pure_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_helper_annotate_as_pure___helper_annotate_as_pure_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz";
- sha1 = "323d39dd0b50e10c7c06ca7d7638e6864d8c5c32";
- };
- }
-
- {
- name = "_babel_helper_builder_binary_assignment_operator_visitor___helper_builder_binary_assignment_operator_visitor_7.1.0.tgz";
- path = fetchurl {
- name = "_babel_helper_builder_binary_assignment_operator_visitor___helper_builder_binary_assignment_operator_visitor_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz";
- sha1 = "6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f";
- };
- }
-
- {
- name = "_babel_helper_builder_react_jsx___helper_builder_react_jsx_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_helper_builder_react_jsx___helper_builder_react_jsx_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz";
- sha1 = "fa154cb53eb918cf2a9a7ce928e29eb649c5acdb";
- };
- }
-
- {
- name = "_babel_helper_call_delegate___helper_call_delegate_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_helper_call_delegate___helper_call_delegate_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz";
- sha1 = "87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43";
- };
- }
-
- {
- name = "_babel_helper_create_class_features_plugin___helper_create_class_features_plugin_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_helper_create_class_features_plugin___helper_create_class_features_plugin_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz";
- sha1 = "fc3d690af6554cc9efc607364a82d48f58736dba";
- };
- }
-
- {
- name = "_babel_helper_define_map___helper_define_map_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_helper_define_map___helper_define_map_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz";
- sha1 = "6969d1f570b46bdc900d1eba8e5d59c48ba2c12a";
- };
- }
-
- {
- name = "_babel_helper_explode_assignable_expression___helper_explode_assignable_expression_7.1.0.tgz";
- path = fetchurl {
- name = "_babel_helper_explode_assignable_expression___helper_explode_assignable_expression_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz";
- sha1 = "537fa13f6f1674df745b0c00ec8fe4e99681c8f6";
- };
- }
-
- {
- name = "_babel_helper_function_name___helper_function_name_7.1.0.tgz";
- path = fetchurl {
- name = "_babel_helper_function_name___helper_function_name_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz";
- sha1 = "a0ceb01685f73355d4360c1247f582bfafc8ff53";
- };
- }
-
- {
- name = "_babel_helper_get_function_arity___helper_get_function_arity_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_helper_get_function_arity___helper_get_function_arity_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz";
- sha1 = "83572d4320e2a4657263734113c42868b64e49c3";
- };
- }
-
- {
- name = "_babel_helper_hoist_variables___helper_hoist_variables_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_helper_hoist_variables___helper_hoist_variables_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz";
- sha1 = "0298b5f25c8c09c53102d52ac4a98f773eb2850a";
- };
- }
-
- {
- name = "_babel_helper_member_expression_to_functions___helper_member_expression_to_functions_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_helper_member_expression_to_functions___helper_member_expression_to_functions_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz";
- sha1 = "8cd14b0a0df7ff00f009e7d7a436945f47c7a16f";
- };
- }
-
- {
- name = "_babel_helper_module_imports___helper_module_imports_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_helper_module_imports___helper_module_imports_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz";
- sha1 = "96081b7111e486da4d2cd971ad1a4fe216cc2e3d";
- };
- }
-
- {
- name = "_babel_helper_module_transforms___helper_module_transforms_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_helper_module_transforms___helper_module_transforms_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz";
- sha1 = "96115ea42a2f139e619e98ed46df6019b94414b8";
- };
- }
-
- {
- name = "_babel_helper_optimise_call_expression___helper_optimise_call_expression_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_helper_optimise_call_expression___helper_optimise_call_expression_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz";
- sha1 = "a2920c5702b073c15de51106200aa8cad20497d5";
- };
- }
-
- {
- name = "_babel_helper_plugin_utils___helper_plugin_utils_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_helper_plugin_utils___helper_plugin_utils_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz";
- sha1 = "bbb3fbee98661c569034237cc03967ba99b4f250";
- };
- }
-
- {
- name = "_babel_helper_regex___helper_regex_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_helper_regex___helper_regex_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz";
- sha1 = "a47e02bc91fb259d2e6727c2a30013e3ac13c4a2";
- };
- }
-
- {
- name = "_babel_helper_remap_async_to_generator___helper_remap_async_to_generator_7.1.0.tgz";
- path = fetchurl {
- name = "_babel_helper_remap_async_to_generator___helper_remap_async_to_generator_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz";
- sha1 = "361d80821b6f38da75bd3f0785ece20a88c5fe7f";
- };
- }
-
- {
- name = "_babel_helper_replace_supers___helper_replace_supers_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_helper_replace_supers___helper_replace_supers_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz";
- sha1 = "aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27";
- };
- }
-
- {
- name = "_babel_helper_simple_access___helper_simple_access_7.1.0.tgz";
- path = fetchurl {
- name = "_babel_helper_simple_access___helper_simple_access_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz";
- sha1 = "65eeb954c8c245beaa4e859da6188f39d71e585c";
- };
- }
-
- {
- name = "_babel_helper_split_export_declaration___helper_split_export_declaration_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_helper_split_export_declaration___helper_split_export_declaration_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz";
- sha1 = "ff94894a340be78f53f06af038b205c49d993677";
- };
- }
-
- {
- name = "_babel_helper_wrap_function___helper_wrap_function_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_helper_wrap_function___helper_wrap_function_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz";
- sha1 = "c4e0012445769e2815b55296ead43a958549f6fa";
- };
- }
-
- {
- name = "_babel_helpers___helpers_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_helpers___helpers_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz";
- sha1 = "8335f3140f3144270dc63c4732a4f8b0a50b7a21";
- };
- }
-
- {
- name = "_babel_helpers___helpers_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_helpers___helpers_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz";
- sha1 = "868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5";
- };
- }
-
- {
- name = "_babel_highlight___highlight_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_highlight___highlight_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz";
- sha1 = "f710c38c8d458e6dd9a201afb637fcb781ce99e4";
- };
- }
-
- {
- name = "_babel_parser___parser_7.2.3.tgz";
- path = fetchurl {
- name = "_babel_parser___parser_7.2.3.tgz";
- url = "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz";
- sha1 = "32f5df65744b70888d17872ec106b02434ba1489";
- };
- }
-
- {
- name = "_babel_parser___parser_7.3.4.tgz";
- path = fetchurl {
- name = "_babel_parser___parser_7.3.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz";
- sha1 = "a43357e4bbf4b92a437fb9e465c192848287f27c";
- };
- }
-
- {
- name = "_babel_parser___parser_7.4.5.tgz";
- path = fetchurl {
- name = "_babel_parser___parser_7.4.5.tgz";
- url = "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz";
- sha1 = "04af8d5d5a2b044a2a1bffacc1e5e6673544e872";
- };
- }
-
- {
- name = "_babel_plugin_proposal_async_generator_functions___plugin_proposal_async_generator_functions_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_proposal_async_generator_functions___plugin_proposal_async_generator_functions_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz";
- sha1 = "b289b306669dce4ad20b0252889a15768c9d417e";
- };
- }
-
- {
- name = "_babel_plugin_proposal_class_properties___plugin_proposal_class_properties_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_proposal_class_properties___plugin_proposal_class_properties_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz";
- sha1 = "93a6486eed86d53452ab9bab35e368e9461198ce";
- };
- }
-
- {
- name = "_babel_plugin_proposal_decorators___plugin_proposal_decorators_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_proposal_decorators___plugin_proposal_decorators_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz";
- sha1 = "de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0";
- };
- }
-
- {
- name = "_babel_plugin_proposal_json_strings___plugin_proposal_json_strings_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_proposal_json_strings___plugin_proposal_json_strings_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz";
- sha1 = "568ecc446c6148ae6b267f02551130891e29f317";
- };
- }
-
- {
- name = "_babel_plugin_proposal_object_rest_spread___plugin_proposal_object_rest_spread_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_proposal_object_rest_spread___plugin_proposal_object_rest_spread_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz";
- sha1 = "1ef173fcf24b3e2df92a678f027673b55e7e3005";
- };
- }
-
- {
- name = "_babel_plugin_proposal_optional_catch_binding___plugin_proposal_optional_catch_binding_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_proposal_optional_catch_binding___plugin_proposal_optional_catch_binding_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz";
- sha1 = "135d81edb68a081e55e56ec48541ece8065c38f5";
- };
- }
-
- {
- name = "_babel_plugin_proposal_unicode_property_regex___plugin_proposal_unicode_property_regex_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_proposal_unicode_property_regex___plugin_proposal_unicode_property_regex_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz";
- sha1 = "501ffd9826c0b91da22690720722ac7cb1ca9c78";
- };
- }
-
- {
- name = "_babel_plugin_syntax_async_generators___plugin_syntax_async_generators_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_syntax_async_generators___plugin_syntax_async_generators_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz";
- sha1 = "69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f";
- };
- }
-
- {
- name = "_babel_plugin_syntax_decorators___plugin_syntax_decorators_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_syntax_decorators___plugin_syntax_decorators_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz";
- sha1 = "c50b1b957dcc69e4b1127b65e1c33eef61570c1b";
- };
- }
-
- {
- name = "_babel_plugin_syntax_dynamic_import___plugin_syntax_dynamic_import_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_syntax_dynamic_import___plugin_syntax_dynamic_import_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz";
- sha1 = "69c159ffaf4998122161ad8ebc5e6d1f55df8612";
- };
- }
-
- {
- name = "_babel_plugin_syntax_json_strings___plugin_syntax_json_strings_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_syntax_json_strings___plugin_syntax_json_strings_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz";
- sha1 = "72bd13f6ffe1d25938129d2a186b11fd62951470";
- };
- }
-
- {
- name = "_babel_plugin_syntax_jsx___plugin_syntax_jsx_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_syntax_jsx___plugin_syntax_jsx_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz";
- sha1 = "0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7";
- };
- }
-
- {
- name = "_babel_plugin_syntax_object_rest_spread___plugin_syntax_object_rest_spread_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_syntax_object_rest_spread___plugin_syntax_object_rest_spread_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz";
- sha1 = "3b7a3e733510c57e820b9142a6579ac8b0dfad2e";
- };
- }
-
- {
- name = "_babel_plugin_syntax_optional_catch_binding___plugin_syntax_optional_catch_binding_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_syntax_optional_catch_binding___plugin_syntax_optional_catch_binding_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz";
- sha1 = "a94013d6eda8908dfe6a477e7f9eda85656ecf5c";
- };
- }
-
- {
- name = "_babel_plugin_transform_arrow_functions___plugin_transform_arrow_functions_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_arrow_functions___plugin_transform_arrow_functions_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz";
- sha1 = "9aeafbe4d6ffc6563bf8f8372091628f00779550";
- };
- }
-
- {
- name = "_babel_plugin_transform_async_to_generator___plugin_transform_async_to_generator_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_async_to_generator___plugin_transform_async_to_generator_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz";
- sha1 = "a3f1d01f2f21cadab20b33a82133116f14fb5894";
- };
- }
-
- {
- name = "_babel_plugin_transform_block_scoped_functions___plugin_transform_block_scoped_functions_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_block_scoped_functions___plugin_transform_block_scoped_functions_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz";
- sha1 = "5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190";
- };
- }
-
- {
- name = "_babel_plugin_transform_block_scoping___plugin_transform_block_scoping_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_block_scoping___plugin_transform_block_scoping_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz";
- sha1 = "c13279fabf6b916661531841a23c4b7dae29646d";
- };
- }
-
- {
- name = "_babel_plugin_transform_classes___plugin_transform_classes_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_classes___plugin_transform_classes_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz";
- sha1 = "0ce4094cdafd709721076d3b9c38ad31ca715eb6";
- };
- }
-
- {
- name = "_babel_plugin_transform_computed_properties___plugin_transform_computed_properties_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_computed_properties___plugin_transform_computed_properties_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz";
- sha1 = "83a7df6a658865b1c8f641d510c6f3af220216da";
- };
- }
-
- {
- name = "_babel_plugin_transform_destructuring___plugin_transform_destructuring_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_destructuring___plugin_transform_destructuring_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz";
- sha1 = "9d964717829cc9e4b601fc82a26a71a4d8faf20f";
- };
- }
-
- {
- name = "_babel_plugin_transform_dotall_regex___plugin_transform_dotall_regex_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_dotall_regex___plugin_transform_dotall_regex_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz";
- sha1 = "361a148bc951444312c69446d76ed1ea8e4450c3";
- };
- }
-
- {
- name = "_babel_plugin_transform_duplicate_keys___plugin_transform_duplicate_keys_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_duplicate_keys___plugin_transform_duplicate_keys_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz";
- sha1 = "d952c4930f312a4dbfff18f0b2914e60c35530b3";
- };
- }
-
- {
- name = "_babel_plugin_transform_exponentiation_operator___plugin_transform_exponentiation_operator_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_exponentiation_operator___plugin_transform_exponentiation_operator_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz";
- sha1 = "a63868289e5b4007f7054d46491af51435766008";
- };
- }
-
- {
- name = "_babel_plugin_transform_for_of___plugin_transform_for_of_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_for_of___plugin_transform_for_of_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz";
- sha1 = "0267fc735e24c808ba173866c6c4d1440fc3c556";
- };
- }
-
- {
- name = "_babel_plugin_transform_function_name___plugin_transform_function_name_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_function_name___plugin_transform_function_name_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz";
- sha1 = "e1436116abb0610c2259094848754ac5230922ad";
- };
- }
-
- {
- name = "_babel_plugin_transform_literals___plugin_transform_literals_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_literals___plugin_transform_literals_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz";
- sha1 = "690353e81f9267dad4fd8cfd77eafa86aba53ea1";
- };
- }
-
- {
- name = "_babel_plugin_transform_member_expression_literals___plugin_transform_member_expression_literals_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_member_expression_literals___plugin_transform_member_expression_literals_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz";
- sha1 = "fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d";
- };
- }
-
- {
- name = "_babel_plugin_transform_modules_amd___plugin_transform_modules_amd_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_modules_amd___plugin_transform_modules_amd_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz";
- sha1 = "82a9bce45b95441f617a24011dc89d12da7f4ee6";
- };
- }
-
- {
- name = "_babel_plugin_transform_modules_commonjs___plugin_transform_modules_commonjs_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_modules_commonjs___plugin_transform_modules_commonjs_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz";
- sha1 = "0bef4713d30f1d78c2e59b3d6db40e60192cac1e";
- };
- }
-
- {
- name = "_babel_plugin_transform_modules_systemjs___plugin_transform_modules_systemjs_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_modules_systemjs___plugin_transform_modules_systemjs_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz";
- sha1 = "dc83c5665b07d6c2a7b224c00ac63659ea36a405";
- };
- }
-
- {
- name = "_babel_plugin_transform_modules_umd___plugin_transform_modules_umd_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_modules_umd___plugin_transform_modules_umd_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz";
- sha1 = "7678ce75169f0877b8eb2235538c074268dd01ae";
- };
- }
-
- {
- name = "_babel_plugin_transform_named_capturing_groups_regex___plugin_transform_named_capturing_groups_regex_7.4.5.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_named_capturing_groups_regex___plugin_transform_named_capturing_groups_regex_7.4.5.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz";
- sha1 = "9d269fd28a370258199b4294736813a60bbdd106";
- };
- }
-
- {
- name = "_babel_plugin_transform_new_target___plugin_transform_new_target_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_new_target___plugin_transform_new_target_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz";
- sha1 = "18d120438b0cc9ee95a47f2c72bc9768fbed60a5";
- };
- }
-
- {
- name = "_babel_plugin_transform_object_super___plugin_transform_object_super_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_object_super___plugin_transform_object_super_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz";
- sha1 = "b35d4c10f56bab5d650047dad0f1d8e8814b6598";
- };
- }
-
- {
- name = "_babel_plugin_transform_parameters___plugin_transform_parameters_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_parameters___plugin_transform_parameters_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz";
- sha1 = "7556cf03f318bd2719fe4c922d2d808be5571e16";
- };
- }
-
- {
- name = "_babel_plugin_transform_property_literals___plugin_transform_property_literals_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_property_literals___plugin_transform_property_literals_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz";
- sha1 = "03e33f653f5b25c4eb572c98b9485055b389e905";
- };
- }
-
- {
- name = "_babel_plugin_transform_react_display_name___plugin_transform_react_display_name_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_react_display_name___plugin_transform_react_display_name_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz";
- sha1 = "ebfaed87834ce8dc4279609a4f0c324c156e3eb0";
- };
- }
-
- {
- name = "_babel_plugin_transform_react_inline_elements___plugin_transform_react_inline_elements_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_react_inline_elements___plugin_transform_react_inline_elements_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.2.0.tgz";
- sha1 = "3e36e7c47f1c21f52b2b0090d5cd83ceb19a4770";
- };
- }
-
- {
- name = "_babel_plugin_transform_react_jsx_self___plugin_transform_react_jsx_self_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_react_jsx_self___plugin_transform_react_jsx_self_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz";
- sha1 = "461e21ad9478f1031dd5e276108d027f1b5240ba";
- };
- }
-
- {
- name = "_babel_plugin_transform_react_jsx_source___plugin_transform_react_jsx_source_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_react_jsx_source___plugin_transform_react_jsx_source_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz";
- sha1 = "20c8c60f0140f5dd3cd63418d452801cf3f7180f";
- };
- }
-
- {
- name = "_babel_plugin_transform_react_jsx___plugin_transform_react_jsx_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_react_jsx___plugin_transform_react_jsx_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.2.0.tgz";
- sha1 = "ca36b6561c4d3b45524f8efb6f0fbc9a0d1d622f";
- };
- }
-
- {
- name = "_babel_plugin_transform_regenerator___plugin_transform_regenerator_7.4.5.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_regenerator___plugin_transform_regenerator_7.4.5.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz";
- sha1 = "629dc82512c55cee01341fb27bdfcb210354680f";
- };
- }
-
- {
- name = "_babel_plugin_transform_reserved_words___plugin_transform_reserved_words_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_reserved_words___plugin_transform_reserved_words_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz";
- sha1 = "4792af87c998a49367597d07fedf02636d2e1634";
- };
- }
-
- {
- name = "_babel_plugin_transform_runtime___plugin_transform_runtime_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_runtime___plugin_transform_runtime_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz";
- sha1 = "a50f5d16e9c3a4ac18a1a9f9803c107c380bce08";
- };
- }
-
- {
- name = "_babel_plugin_transform_shorthand_properties___plugin_transform_shorthand_properties_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_shorthand_properties___plugin_transform_shorthand_properties_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz";
- sha1 = "6333aee2f8d6ee7e28615457298934a3b46198f0";
- };
- }
-
- {
- name = "_babel_plugin_transform_spread___plugin_transform_spread_7.2.2.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_spread___plugin_transform_spread_7.2.2.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz";
- sha1 = "3103a9abe22f742b6d406ecd3cd49b774919b406";
- };
- }
-
- {
- name = "_babel_plugin_transform_sticky_regex___plugin_transform_sticky_regex_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_sticky_regex___plugin_transform_sticky_regex_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz";
- sha1 = "a1e454b5995560a9c1e0d537dfc15061fd2687e1";
- };
- }
-
- {
- name = "_babel_plugin_transform_template_literals___plugin_transform_template_literals_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_template_literals___plugin_transform_template_literals_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz";
- sha1 = "9d28fea7bbce637fb7612a0750989d8321d4bcb0";
- };
- }
-
- {
- name = "_babel_plugin_transform_typeof_symbol___plugin_transform_typeof_symbol_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_typeof_symbol___plugin_transform_typeof_symbol_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz";
- sha1 = "117d2bcec2fbf64b4b59d1f9819894682d29f2b2";
- };
- }
-
- {
- name = "_babel_plugin_transform_unicode_regex___plugin_transform_unicode_regex_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_plugin_transform_unicode_regex___plugin_transform_unicode_regex_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz";
- sha1 = "ab4634bb4f14d36728bf5978322b35587787970f";
- };
- }
-
- {
- name = "_babel_preset_env___preset_env_7.4.5.tgz";
- path = fetchurl {
- name = "_babel_preset_env___preset_env_7.4.5.tgz";
- url = "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz";
- sha1 = "2fad7f62983d5af563b5f3139242755884998a58";
- };
- }
-
- {
- name = "_babel_preset_react___preset_react_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_preset_react___preset_react_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz";
- sha1 = "e86b4b3d99433c7b3e9e91747e2653958bc6b3c0";
- };
- }
-
- {
- name = "_babel_runtime___runtime_7.0.0.tgz";
- path = fetchurl {
- name = "_babel_runtime___runtime_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz";
- sha1 = "adeb78fedfc855aa05bc041640f3f6f98e85424c";
- };
- }
-
- {
- name = "_babel_runtime___runtime_7.2.0.tgz";
- path = fetchurl {
- name = "_babel_runtime___runtime_7.2.0.tgz";
- url = "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz";
- sha1 = "b03e42eeddf5898e00646e4c840fa07ba8dcad7f";
- };
- }
-
- {
- name = "_babel_runtime___runtime_7.4.5.tgz";
- path = fetchurl {
- name = "_babel_runtime___runtime_7.4.5.tgz";
- url = "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz";
- sha1 = "582bb531f5f9dc67d2fcb682979894f75e253f12";
- };
- }
-
- {
- name = "_babel_template___template_7.2.2.tgz";
- path = fetchurl {
- name = "_babel_template___template_7.2.2.tgz";
- url = "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz";
- sha1 = "005b3fdf0ed96e88041330379e0da9a708eb2907";
- };
- }
-
- {
- name = "_babel_template___template_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_template___template_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz";
- sha1 = "f4b88d1225689a08f5bc3a17483545be9e4ed237";
- };
- }
-
- {
- name = "_babel_traverse___traverse_7.2.3.tgz";
- path = fetchurl {
- name = "_babel_traverse___traverse_7.2.3.tgz";
- url = "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz";
- sha1 = "7ff50cefa9c7c0bd2d81231fdac122f3957748d8";
- };
- }
-
- {
- name = "_babel_traverse___traverse_7.4.5.tgz";
- path = fetchurl {
- name = "_babel_traverse___traverse_7.4.5.tgz";
- url = "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz";
- sha1 = "4e92d1728fd2f1897dafdd321efbff92156c3216";
- };
- }
-
- {
- name = "_babel_traverse___traverse_7.3.4.tgz";
- path = fetchurl {
- name = "_babel_traverse___traverse_7.3.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz";
- sha1 = "1330aab72234f8dea091b08c4f8b9d05c7119e06";
- };
- }
-
- {
- name = "_babel_types___types_7.4.4.tgz";
- path = fetchurl {
- name = "_babel_types___types_7.4.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz";
- sha1 = "8db9e9a629bb7c29370009b4b779ed93fe57d5f0";
- };
- }
-
- {
- name = "_babel_types___types_7.2.2.tgz";
- path = fetchurl {
- name = "_babel_types___types_7.2.2.tgz";
- url = "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz";
- sha1 = "44e10fc24e33af524488b716cdaee5360ea8ed1e";
- };
- }
-
- {
- name = "_babel_types___types_7.3.4.tgz";
- path = fetchurl {
- name = "_babel_types___types_7.3.4.tgz";
- url = "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz";
- sha1 = "bf482eaeaffb367a28abbf9357a94963235d90ed";
- };
- }
-
- {
- name = "_clusterws_cws___cws_0.14.0.tgz";
- path = fetchurl {
- name = "_clusterws_cws___cws_0.14.0.tgz";
- url = "https://registry.yarnpkg.com/@clusterws/cws/-/cws-0.14.0.tgz";
- sha1 = "242824b6884454001340222a836db6f6c5e62bfb";
- };
- }
-
- {
- name = "_cnakazawa_watch___watch_1.0.3.tgz";
- path = fetchurl {
- name = "_cnakazawa_watch___watch_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz";
- sha1 = "099139eaec7ebf07a27c1786a3ff64f39464d2ef";
- };
- }
-
- {
- name = "_emotion_babel_utils___babel_utils_0.6.10.tgz";
- path = fetchurl {
- name = "_emotion_babel_utils___babel_utils_0.6.10.tgz";
- url = "https://registry.yarnpkg.com/@emotion/babel-utils/-/babel-utils-0.6.10.tgz";
- sha1 = "83dbf3dfa933fae9fc566e54fbb45f14674c6ccc";
- };
- }
-
- {
- name = "_emotion_hash___hash_0.6.6.tgz";
- path = fetchurl {
- name = "_emotion_hash___hash_0.6.6.tgz";
- url = "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.6.6.tgz";
- sha1 = "62266c5f0eac6941fece302abad69f2ee7e25e44";
- };
- }
-
- {
- name = "_emotion_memoize___memoize_0.6.6.tgz";
- path = fetchurl {
- name = "_emotion_memoize___memoize_0.6.6.tgz";
- url = "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.6.6.tgz";
- sha1 = "004b98298d04c7ca3b4f50ca2035d4f60d2eed1b";
- };
- }
-
- {
- name = "_emotion_serialize___serialize_0.9.1.tgz";
- path = fetchurl {
- name = "_emotion_serialize___serialize_0.9.1.tgz";
- url = "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.9.1.tgz";
- sha1 = "a494982a6920730dba6303eb018220a2b629c145";
- };
- }
-
- {
- name = "_emotion_stylis___stylis_0.7.1.tgz";
- path = fetchurl {
- name = "_emotion_stylis___stylis_0.7.1.tgz";
- url = "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.7.1.tgz";
- sha1 = "50f63225e712d99e2b2b39c19c70fff023793ca5";
- };
- }
-
- {
- name = "_emotion_unitless___unitless_0.6.7.tgz";
- path = fetchurl {
- name = "_emotion_unitless___unitless_0.6.7.tgz";
- url = "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.6.7.tgz";
- sha1 = "53e9f1892f725b194d5e6a1684a7b394df592397";
- };
- }
-
- {
- name = "_emotion_utils___utils_0.8.2.tgz";
- path = fetchurl {
- name = "_emotion_utils___utils_0.8.2.tgz";
- url = "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.8.2.tgz";
- sha1 = "576ff7fb1230185b619a75d258cbc98f0867a8dc";
- };
- }
-
- {
- name = "_jest_console___console_24.7.1.tgz";
- path = fetchurl {
- name = "_jest_console___console_24.7.1.tgz";
- url = "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz";
- sha1 = "32a9e42535a97aedfe037e725bd67e954b459545";
- };
- }
-
- {
- name = "_jest_core___core_24.8.0.tgz";
- path = fetchurl {
- name = "_jest_core___core_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz";
- sha1 = "fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b";
- };
- }
-
- {
- name = "_jest_environment___environment_24.8.0.tgz";
- path = fetchurl {
- name = "_jest_environment___environment_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz";
- sha1 = "0342261383c776bdd652168f68065ef144af0eac";
- };
- }
-
- {
- name = "_jest_fake_timers___fake_timers_24.8.0.tgz";
- path = fetchurl {
- name = "_jest_fake_timers___fake_timers_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz";
- sha1 = "2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1";
- };
- }
-
- {
- name = "_jest_reporters___reporters_24.8.0.tgz";
- path = fetchurl {
- name = "_jest_reporters___reporters_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz";
- sha1 = "075169cd029bddec54b8f2c0fc489fd0b9e05729";
- };
- }
-
- {
- name = "_jest_source_map___source_map_24.3.0.tgz";
- path = fetchurl {
- name = "_jest_source_map___source_map_24.3.0.tgz";
- url = "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz";
- sha1 = "563be3aa4d224caf65ff77edc95cd1ca4da67f28";
- };
- }
-
- {
- name = "_jest_test_result___test_result_24.8.0.tgz";
- path = fetchurl {
- name = "_jest_test_result___test_result_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz";
- sha1 = "7675d0aaf9d2484caa65e048d9b467d160f8e9d3";
- };
- }
-
- {
- name = "_jest_test_sequencer___test_sequencer_24.8.0.tgz";
- path = fetchurl {
- name = "_jest_test_sequencer___test_sequencer_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz";
- sha1 = "2f993bcf6ef5eb4e65e8233a95a3320248cf994b";
- };
- }
-
- {
- name = "_jest_transform___transform_24.8.0.tgz";
- path = fetchurl {
- name = "_jest_transform___transform_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz";
- sha1 = "628fb99dce4f9d254c6fd9341e3eea262e06fef5";
- };
- }
-
- {
- name = "_jest_types___types_24.8.0.tgz";
- path = fetchurl {
- name = "_jest_types___types_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz";
- sha1 = "f31e25948c58f0abd8c845ae26fcea1491dea7ad";
- };
- }
-
- {
- name = "_types_babel__core___babel__core_7.1.0.tgz";
- path = fetchurl {
- name = "_types_babel__core___babel__core_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.0.tgz";
- sha1 = "710f2487dda4dcfd010ca6abb2b4dc7394365c51";
- };
- }
-
- {
- name = "_types_babel__generator___babel__generator_7.0.2.tgz";
- path = fetchurl {
- name = "_types_babel__generator___babel__generator_7.0.2.tgz";
- url = "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz";
- sha1 = "d2112a6b21fad600d7674274293c85dce0cb47fc";
- };
- }
-
- {
- name = "_types_babel__template___babel__template_7.0.2.tgz";
- path = fetchurl {
- name = "_types_babel__template___babel__template_7.0.2.tgz";
- url = "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz";
- sha1 = "4ff63d6b52eddac1de7b975a5223ed32ecea9307";
- };
- }
-
- {
- name = "_types_babel__traverse___babel__traverse_7.0.6.tgz";
- path = fetchurl {
- name = "_types_babel__traverse___babel__traverse_7.0.6.tgz";
- url = "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz";
- sha1 = "328dd1a8fc4cfe3c8458be9477b219ea158fd7b2";
- };
- }
-
- {
- name = "_types_events___events_3.0.0.tgz";
- path = fetchurl {
- name = "_types_events___events_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz";
- sha1 = "2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7";
- };
- }
-
- {
- name = "_types_glob___glob_7.1.1.tgz";
- path = fetchurl {
- name = "_types_glob___glob_7.1.1.tgz";
- url = "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz";
- sha1 = "aa59a1c6e3fbc421e07ccd31a944c30eba521575";
- };
- }
-
- {
- name = "_types_istanbul_lib_coverage___istanbul_lib_coverage_2.0.1.tgz";
- path = fetchurl {
- name = "_types_istanbul_lib_coverage___istanbul_lib_coverage_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz";
- sha1 = "42995b446db9a48a11a07ec083499a860e9138ff";
- };
- }
-
- {
- name = "_types_istanbul_lib_report___istanbul_lib_report_1.1.1.tgz";
- path = fetchurl {
- name = "_types_istanbul_lib_report___istanbul_lib_report_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz";
- sha1 = "e5471e7fa33c61358dd38426189c037a58433b8c";
- };
- }
-
- {
- name = "_types_istanbul_reports___istanbul_reports_1.1.1.tgz";
- path = fetchurl {
- name = "_types_istanbul_reports___istanbul_reports_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz";
- sha1 = "7a8cbf6a406f36c8add871625b278eaf0b0d255a";
- };
- }
-
- {
- name = "_types_minimatch___minimatch_3.0.3.tgz";
- path = fetchurl {
- name = "_types_minimatch___minimatch_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz";
- sha1 = "3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d";
- };
- }
-
- {
- name = "_types_node___node_10.12.18.tgz";
- path = fetchurl {
- name = "_types_node___node_10.12.18.tgz";
- url = "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz";
- sha1 = "1d3ca764718915584fcd9f6344621b7672665c67";
- };
- }
-
- {
- name = "_types_q___q_1.5.1.tgz";
- path = fetchurl {
- name = "_types_q___q_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz";
- sha1 = "48fd98c1561fe718b61733daed46ff115b496e18";
- };
- }
-
- {
- name = "_types_react___react_16.4.6.tgz";
- path = fetchurl {
- name = "_types_react___react_16.4.6.tgz";
- url = "https://registry.yarnpkg.com/@types/react/-/react-16.4.6.tgz";
- sha1 = "5024957c6bcef4f02823accf5974faba2e54fada";
- };
- }
-
- {
- name = "_types_stack_utils___stack_utils_1.0.1.tgz";
- path = fetchurl {
- name = "_types_stack_utils___stack_utils_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz";
- sha1 = "0a851d3bd96498fa25c33ab7278ed3bd65f06c3e";
- };
- }
-
- {
- name = "_types_yargs___yargs_12.0.9.tgz";
- path = fetchurl {
- name = "_types_yargs___yargs_12.0.9.tgz";
- url = "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.9.tgz";
- sha1 = "693e76a52f61a2f1e7fb48c0eef167b95ea4ffd0";
- };
- }
-
- {
- name = "_webassemblyjs_ast___ast_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_ast___ast_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz";
- sha1 = "51b1c5fe6576a34953bf4b253df9f0d490d9e359";
- };
- }
-
- {
- name = "_webassemblyjs_floating_point_hex_parser___floating_point_hex_parser_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_floating_point_hex_parser___floating_point_hex_parser_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz";
- sha1 = "1ba926a2923613edce496fd5b02e8ce8a5f49721";
- };
- }
-
- {
- name = "_webassemblyjs_helper_api_error___helper_api_error_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_helper_api_error___helper_api_error_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz";
- sha1 = "c49dad22f645227c5edb610bdb9697f1aab721f7";
- };
- }
-
- {
- name = "_webassemblyjs_helper_buffer___helper_buffer_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_helper_buffer___helper_buffer_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz";
- sha1 = "fea93e429863dd5e4338555f42292385a653f204";
- };
- }
-
- {
- name = "_webassemblyjs_helper_code_frame___helper_code_frame_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_helper_code_frame___helper_code_frame_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz";
- sha1 = "9a740ff48e3faa3022b1dff54423df9aa293c25e";
- };
- }
-
- {
- name = "_webassemblyjs_helper_fsm___helper_fsm_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_helper_fsm___helper_fsm_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz";
- sha1 = "ba0b7d3b3f7e4733da6059c9332275d860702452";
- };
- }
-
- {
- name = "_webassemblyjs_helper_module_context___helper_module_context_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_helper_module_context___helper_module_context_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz";
- sha1 = "def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245";
- };
- }
-
- {
- name = "_webassemblyjs_helper_wasm_bytecode___helper_wasm_bytecode_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_helper_wasm_bytecode___helper_wasm_bytecode_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz";
- sha1 = "537a750eddf5c1e932f3744206551c91c1b93e61";
- };
- }
-
- {
- name = "_webassemblyjs_helper_wasm_section___helper_wasm_section_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_helper_wasm_section___helper_wasm_section_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz";
- sha1 = "74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf";
- };
- }
-
- {
- name = "_webassemblyjs_ieee754___ieee754_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_ieee754___ieee754_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz";
- sha1 = "712329dbef240f36bf57bd2f7b8fb9bf4154421e";
- };
- }
-
- {
- name = "_webassemblyjs_leb128___leb128_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_leb128___leb128_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz";
- sha1 = "044edeb34ea679f3e04cd4fd9824d5e35767ae10";
- };
- }
-
- {
- name = "_webassemblyjs_utf8___utf8_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_utf8___utf8_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz";
- sha1 = "a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc";
- };
- }
-
- {
- name = "_webassemblyjs_wasm_edit___wasm_edit_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_wasm_edit___wasm_edit_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz";
- sha1 = "962da12aa5acc1c131c81c4232991c82ce56e01a";
- };
- }
-
- {
- name = "_webassemblyjs_wasm_gen___wasm_gen_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_wasm_gen___wasm_gen_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz";
- sha1 = "54840766c2c1002eb64ed1abe720aded714f98bc";
- };
- }
-
- {
- name = "_webassemblyjs_wasm_opt___wasm_opt_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_wasm_opt___wasm_opt_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz";
- sha1 = "b24d9f6ba50394af1349f510afa8ffcb8a63d264";
- };
- }
-
- {
- name = "_webassemblyjs_wasm_parser___wasm_parser_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_wasm_parser___wasm_parser_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz";
- sha1 = "21576f0ec88b91427357b8536383668ef7c66b8d";
- };
- }
-
- {
- name = "_webassemblyjs_wast_parser___wast_parser_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_wast_parser___wast_parser_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz";
- sha1 = "e10eecd542d0e7bd394f6827c49f3df6d4eefb8c";
- };
- }
-
- {
- name = "_webassemblyjs_wast_printer___wast_printer_1.8.5.tgz";
- path = fetchurl {
- name = "_webassemblyjs_wast_printer___wast_printer_1.8.5.tgz";
- url = "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz";
- sha1 = "114bbc481fd10ca0e23b3560fa812748b0bae5bc";
- };
- }
-
- {
- name = "_xtuc_ieee754___ieee754_1.2.0.tgz";
- path = fetchurl {
- name = "_xtuc_ieee754___ieee754_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz";
- sha1 = "eef014a3145ae477a1cbc00cd1e552336dceb790";
- };
- }
-
- {
- name = "_xtuc_long___long_4.2.2.tgz";
- path = fetchurl {
- name = "_xtuc_long___long_4.2.2.tgz";
- url = "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz";
- sha1 = "d291c6a4e97989b5c61d9acf396ae4fe133a718d";
- };
- }
-
- {
- name = "abab___abab_2.0.0.tgz";
- path = fetchurl {
- name = "abab___abab_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz";
- sha1 = "aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f";
- };
- }
-
- {
- name = "abbrev___abbrev_1.1.1.tgz";
- path = fetchurl {
- name = "abbrev___abbrev_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz";
- sha1 = "f8f2c887ad10bf67f634f005b6987fed3179aac8";
- };
- }
-
- {
- name = "accepts___accepts_1.3.7.tgz";
- path = fetchurl {
- name = "accepts___accepts_1.3.7.tgz";
- url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz";
- sha1 = "531bc726517a3b2b41f850021c6cc15eaab507cd";
- };
- }
-
- {
- name = "acorn_dynamic_import___acorn_dynamic_import_4.0.0.tgz";
- path = fetchurl {
- name = "acorn_dynamic_import___acorn_dynamic_import_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz";
- sha1 = "482210140582a36b83c3e342e1cfebcaa9240948";
- };
- }
-
- {
- name = "acorn_globals___acorn_globals_4.3.0.tgz";
- path = fetchurl {
- name = "acorn_globals___acorn_globals_4.3.0.tgz";
- url = "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz";
- sha1 = "e3b6f8da3c1552a95ae627571f7dd6923bb54103";
- };
- }
-
- {
- name = "acorn_jsx___acorn_jsx_3.0.1.tgz";
- path = fetchurl {
- name = "acorn_jsx___acorn_jsx_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
- sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
- };
- }
-
- {
- name = "acorn_jsx___acorn_jsx_5.0.1.tgz";
- path = fetchurl {
- name = "acorn_jsx___acorn_jsx_5.0.1.tgz";
- url = "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz";
- sha1 = "32a064fd925429216a09b141102bfdd185fae40e";
- };
- }
-
- {
- name = "acorn_walk___acorn_walk_6.1.1.tgz";
- path = fetchurl {
- name = "acorn_walk___acorn_walk_6.1.1.tgz";
- url = "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz";
- sha1 = "d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913";
- };
- }
-
- {
- name = "acorn___acorn_3.3.0.tgz";
- path = fetchurl {
- name = "acorn___acorn_3.3.0.tgz";
- url = "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz";
- sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
- };
- }
-
- {
- name = "acorn___acorn_5.7.3.tgz";
- path = fetchurl {
- name = "acorn___acorn_5.7.3.tgz";
- url = "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz";
- sha1 = "67aa231bf8812974b85235a96771eb6bd07ea279";
- };
- }
-
- {
- name = "acorn___acorn_6.1.1.tgz";
- path = fetchurl {
- name = "acorn___acorn_6.1.1.tgz";
- url = "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz";
- sha1 = "7d25ae05bb8ad1f9b699108e1094ecd7884adc1f";
- };
- }
-
- {
- name = "airbnb_prop_types___airbnb_prop_types_2.13.2.tgz";
- path = fetchurl {
- name = "airbnb_prop_types___airbnb_prop_types_2.13.2.tgz";
- url = "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.13.2.tgz";
- sha1 = "43147a5062dd2a4a5600e748a47b64004cc5f7fc";
- };
- }
-
- {
- name = "ajv_errors___ajv_errors_1.0.1.tgz";
- path = fetchurl {
- name = "ajv_errors___ajv_errors_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz";
- sha1 = "f35986aceb91afadec4102fbd85014950cefa64d";
- };
- }
-
- {
- name = "ajv_keywords___ajv_keywords_1.5.1.tgz";
- path = fetchurl {
- name = "ajv_keywords___ajv_keywords_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz";
- sha1 = "314dd0a4b3368fad3dfcdc54ede6171b886daf3c";
- };
- }
-
- {
- name = "ajv_keywords___ajv_keywords_3.2.0.tgz";
- path = fetchurl {
- name = "ajv_keywords___ajv_keywords_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz";
- sha1 = "e86b819c602cf8821ad637413698f1dec021847a";
- };
- }
-
- {
- name = "ajv___ajv_4.11.8.tgz";
- path = fetchurl {
- name = "ajv___ajv_4.11.8.tgz";
- url = "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz";
- sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
- };
- }
-
- {
- name = "ajv___ajv_6.6.2.tgz";
- path = fetchurl {
- name = "ajv___ajv_6.6.2.tgz";
- url = "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz";
- sha1 = "caceccf474bf3fc3ce3b147443711a24063cc30d";
- };
- }
-
- {
- name = "alphanum_sort___alphanum_sort_1.0.2.tgz";
- path = fetchurl {
- name = "alphanum_sort___alphanum_sort_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz";
- sha1 = "97a1119649b211ad33691d9f9f486a8ec9fbe0a3";
- };
- }
-
- {
- name = "ansi_colors___ansi_colors_3.2.3.tgz";
- path = fetchurl {
- name = "ansi_colors___ansi_colors_3.2.3.tgz";
- url = "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz";
- sha1 = "57d35b8686e851e2cc04c403f1c00203976a1813";
- };
- }
-
- {
- name = "ansi_escapes___ansi_escapes_1.4.0.tgz";
- path = fetchurl {
- name = "ansi_escapes___ansi_escapes_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz";
- sha1 = "d3a8a83b319aa67793662b13e761c7911422306e";
- };
- }
-
- {
- name = "ansi_escapes___ansi_escapes_3.1.0.tgz";
- path = fetchurl {
- name = "ansi_escapes___ansi_escapes_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz";
- sha1 = "f73207bb81207d75fd6c83f125af26eea378ca30";
- };
- }
-
- {
- name = "ansi_html___ansi_html_0.0.7.tgz";
- path = fetchurl {
- name = "ansi_html___ansi_html_0.0.7.tgz";
- url = "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz";
- sha1 = "813584021962a9e9e6fd039f940d12f56ca7859e";
- };
- }
-
- {
- name = "ansi_regex___ansi_regex_2.1.1.tgz";
- path = fetchurl {
- name = "ansi_regex___ansi_regex_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
- sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
- };
- }
-
- {
- name = "ansi_regex___ansi_regex_3.0.0.tgz";
- path = fetchurl {
- name = "ansi_regex___ansi_regex_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
- sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
- };
- }
-
- {
- name = "ansi_regex___ansi_regex_4.0.0.tgz";
- path = fetchurl {
- name = "ansi_regex___ansi_regex_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz";
- sha1 = "70de791edf021404c3fd615aa89118ae0432e5a9";
- };
- }
-
- {
- name = "ansi_styles___ansi_styles_2.2.1.tgz";
- path = fetchurl {
- name = "ansi_styles___ansi_styles_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz";
- sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
- };
- }
-
- {
- name = "ansi_styles___ansi_styles_3.2.1.tgz";
- path = fetchurl {
- name = "ansi_styles___ansi_styles_3.2.1.tgz";
- url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz";
- sha1 = "41fbb20243e50b12be0f04b8dedbf07520ce841d";
- };
- }
-
- {
- name = "anymatch___anymatch_2.0.0.tgz";
- path = fetchurl {
- name = "anymatch___anymatch_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz";
- sha1 = "bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb";
- };
- }
-
- {
- name = "aproba___aproba_1.2.0.tgz";
- path = fetchurl {
- name = "aproba___aproba_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
- sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
- };
- }
-
- {
- name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
- path = fetchurl {
- name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
- url = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
- sha1 = "4b35c2944f062a8bfcda66410760350fe9ddfc21";
- };
- }
-
- {
- name = "argparse___argparse_1.0.10.tgz";
- path = fetchurl {
- name = "argparse___argparse_1.0.10.tgz";
- url = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz";
- sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911";
- };
- }
-
- {
- name = "aria_query___aria_query_3.0.0.tgz";
- path = fetchurl {
- name = "aria_query___aria_query_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz";
- sha1 = "65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc";
- };
- }
-
- {
- name = "arr_diff___arr_diff_4.0.0.tgz";
- path = fetchurl {
- name = "arr_diff___arr_diff_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz";
- sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
- };
- }
-
- {
- name = "arr_flatten___arr_flatten_1.1.0.tgz";
- path = fetchurl {
- name = "arr_flatten___arr_flatten_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz";
- sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1";
- };
- }
-
- {
- name = "arr_union___arr_union_3.1.0.tgz";
- path = fetchurl {
- name = "arr_union___arr_union_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz";
- sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
- };
- }
-
- {
- name = "array_equal___array_equal_1.0.0.tgz";
- path = fetchurl {
- name = "array_equal___array_equal_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz";
- sha1 = "8c2a5ef2472fd9ea742b04c77a75093ba2757c93";
- };
- }
-
- {
- name = "array_filter___array_filter_1.0.0.tgz";
- path = fetchurl {
- name = "array_filter___array_filter_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz";
- sha1 = "baf79e62e6ef4c2a4c0b831232daffec251f9d83";
- };
- }
-
- {
- name = "array_flatten___array_flatten_1.1.1.tgz";
- path = fetchurl {
- name = "array_flatten___array_flatten_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz";
- sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
- };
- }
-
- {
- name = "array_flatten___array_flatten_2.1.2.tgz";
- path = fetchurl {
- name = "array_flatten___array_flatten_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz";
- sha1 = "24ef80a28c1a893617e2149b0c6d0d788293b099";
- };
- }
-
- {
- name = "array_includes___array_includes_3.0.3.tgz";
- path = fetchurl {
- name = "array_includes___array_includes_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz";
- sha1 = "184b48f62d92d7452bb31b323165c7f8bd02266d";
- };
- }
-
- {
- name = "array_union___array_union_1.0.2.tgz";
- path = fetchurl {
- name = "array_union___array_union_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz";
- sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
- };
- }
-
- {
- name = "array_uniq___array_uniq_1.0.3.tgz";
- path = fetchurl {
- name = "array_uniq___array_uniq_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz";
- sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
- };
- }
-
- {
- name = "array_unique___array_unique_0.3.2.tgz";
- path = fetchurl {
- name = "array_unique___array_unique_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz";
- sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
- };
- }
-
- {
- name = "array.prototype.find___array.prototype.find_2.1.0.tgz";
- path = fetchurl {
- name = "array.prototype.find___array.prototype.find_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.0.tgz";
- sha1 = "630f2eaf70a39e608ac3573e45cf8ccd0ede9ad7";
- };
- }
-
- {
- name = "array.prototype.flat___array.prototype.flat_1.2.1.tgz";
- path = fetchurl {
- name = "array.prototype.flat___array.prototype.flat_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz";
- sha1 = "812db8f02cad24d3fab65dd67eabe3b8903494a4";
- };
- }
-
- {
- name = "arrify___arrify_1.0.1.tgz";
- path = fetchurl {
- name = "arrify___arrify_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz";
- sha1 = "898508da2226f380df904728456849c1501a4b0d";
- };
- }
-
- {
- name = "asap___asap_2.0.6.tgz";
- path = fetchurl {
- name = "asap___asap_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz";
- sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
- };
- }
-
- {
- name = "asn1.js___asn1.js_4.10.1.tgz";
- path = fetchurl {
- name = "asn1.js___asn1.js_4.10.1.tgz";
- url = "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz";
- sha1 = "b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0";
- };
- }
-
- {
- name = "asn1___asn1_0.2.4.tgz";
- path = fetchurl {
- name = "asn1___asn1_0.2.4.tgz";
- url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
- sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
- };
- }
-
- {
- name = "assert_plus___assert_plus_1.0.0.tgz";
- path = fetchurl {
- name = "assert_plus___assert_plus_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
- sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
- };
- }
-
- {
- name = "assert___assert_1.4.1.tgz";
- path = fetchurl {
- name = "assert___assert_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz";
- sha1 = "99912d591836b5a6f5b345c0f07eefc08fc65d91";
- };
- }
-
- {
- name = "assign_symbols___assign_symbols_1.0.0.tgz";
- path = fetchurl {
- name = "assign_symbols___assign_symbols_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz";
- sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
- };
- }
-
- {
- name = "ast_types_flow___ast_types_flow_0.0.7.tgz";
- path = fetchurl {
- name = "ast_types_flow___ast_types_flow_0.0.7.tgz";
- url = "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz";
- sha1 = "f70b735c6bca1a5c9c22d982c3e39e7feba3bdad";
- };
- }
-
- {
- name = "astral_regex___astral_regex_1.0.0.tgz";
- path = fetchurl {
- name = "astral_regex___astral_regex_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz";
- sha1 = "6c8c3fb827dd43ee3918f27b82782ab7658a6fd9";
- };
- }
-
- {
- name = "async_each___async_each_1.0.3.tgz";
- path = fetchurl {
- name = "async_each___async_each_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz";
- sha1 = "b727dbf87d7651602f06f4d4ac387f47d91b0cbf";
- };
- }
-
- {
- name = "async_limiter___async_limiter_1.0.0.tgz";
- path = fetchurl {
- name = "async_limiter___async_limiter_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz";
- sha1 = "78faed8c3d074ab81f22b4e985d79e8738f720f8";
- };
- }
-
- {
- name = "async___async_1.5.2.tgz";
- path = fetchurl {
- name = "async___async_1.5.2.tgz";
- url = "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz";
- sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
- };
- }
-
- {
- name = "async___async_2.6.1.tgz";
- path = fetchurl {
- name = "async___async_2.6.1.tgz";
- url = "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz";
- sha1 = "b245a23ca71930044ec53fa46aa00a3e87c6a610";
- };
- }
-
- {
- name = "asynckit___asynckit_0.4.0.tgz";
- path = fetchurl {
- name = "asynckit___asynckit_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
- sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
- };
- }
-
- {
- name = "atob___atob_2.1.2.tgz";
- path = fetchurl {
- name = "atob___atob_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz";
- sha1 = "6d9517eb9e030d2436666651e86bd9f6f13533c9";
- };
- }
-
- {
- name = "autoprefixer___autoprefixer_9.6.0.tgz";
- path = fetchurl {
- name = "autoprefixer___autoprefixer_9.6.0.tgz";
- url = "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.0.tgz";
- sha1 = "0111c6bde2ad20c6f17995a33fad7cf6854b4c87";
- };
- }
-
- {
- name = "aws_sign2___aws_sign2_0.7.0.tgz";
- path = fetchurl {
- name = "aws_sign2___aws_sign2_0.7.0.tgz";
- url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
- sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
- };
- }
-
- {
- name = "aws4___aws4_1.8.0.tgz";
- path = fetchurl {
- name = "aws4___aws4_1.8.0.tgz";
- url = "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz";
- sha1 = "f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f";
- };
- }
-
- {
- name = "axios___axios_0.19.0.tgz";
- path = fetchurl {
- name = "axios___axios_0.19.0.tgz";
- url = "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz";
- sha1 = "8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8";
- };
- }
-
- {
- name = "axobject_query___axobject_query_2.0.2.tgz";
- path = fetchurl {
- name = "axobject_query___axobject_query_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz";
- sha1 = "ea187abe5b9002b377f925d8bf7d1c561adf38f9";
- };
- }
-
- {
- name = "babel_eslint___babel_eslint_10.0.1.tgz";
- path = fetchurl {
- name = "babel_eslint___babel_eslint_10.0.1.tgz";
- url = "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz";
- sha1 = "919681dc099614cd7d31d45c8908695092a1faed";
- };
- }
-
- {
- name = "babel_jest___babel_jest_24.8.0.tgz";
- path = fetchurl {
- name = "babel_jest___babel_jest_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz";
- sha1 = "5c15ff2b28e20b0f45df43fe6b7f2aae93dba589";
- };
- }
-
- {
- name = "babel_loader___babel_loader_8.0.5.tgz";
- path = fetchurl {
- name = "babel_loader___babel_loader_8.0.5.tgz";
- url = "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz";
- sha1 = "225322d7509c2157655840bba52e46b6c2f2fe33";
- };
- }
-
- {
- name = "babel_plugin_emotion___babel_plugin_emotion_9.2.11.tgz";
- path = fetchurl {
- name = "babel_plugin_emotion___babel_plugin_emotion_9.2.11.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-9.2.11.tgz";
- sha1 = "319c005a9ee1d15bb447f59fe504c35fd5807728";
- };
- }
-
- {
- name = "babel_plugin_istanbul___babel_plugin_istanbul_5.1.1.tgz";
- path = fetchurl {
- name = "babel_plugin_istanbul___babel_plugin_istanbul_5.1.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz";
- sha1 = "7981590f1956d75d67630ba46f0c22493588c893";
- };
- }
-
- {
- name = "babel_plugin_jest_hoist___babel_plugin_jest_hoist_24.6.0.tgz";
- path = fetchurl {
- name = "babel_plugin_jest_hoist___babel_plugin_jest_hoist_24.6.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz";
- sha1 = "f7f7f7ad150ee96d7a5e8e2c5da8319579e78019";
- };
- }
-
- {
- name = "babel_plugin_lodash___babel_plugin_lodash_3.3.4.tgz";
- path = fetchurl {
- name = "babel_plugin_lodash___babel_plugin_lodash_3.3.4.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz";
- sha1 = "4f6844358a1340baed182adbeffa8df9967bc196";
- };
- }
-
- {
- name = "babel_plugin_macros___babel_plugin_macros_2.5.1.tgz";
- path = fetchurl {
- name = "babel_plugin_macros___babel_plugin_macros_2.5.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.5.1.tgz";
- sha1 = "4a119ac2c2e19b458c259b9accd7ee34fd57ec6f";
- };
- }
-
- {
- name = "babel_plugin_macros___babel_plugin_macros_2.4.3.tgz";
- path = fetchurl {
- name = "babel_plugin_macros___babel_plugin_macros_2.4.3.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.3.tgz";
- sha1 = "870345aa538d85f04b4614fea5922b55c45dd551";
- };
- }
-
- {
- name = "babel_plugin_preval___babel_plugin_preval_3.0.1.tgz";
- path = fetchurl {
- name = "babel_plugin_preval___babel_plugin_preval_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-3.0.1.tgz";
- sha1 = "a26f9690114a864a54a5cbdf865496ebf541a9c3";
- };
- }
-
- {
- name = "babel_plugin_react_intl___babel_plugin_react_intl_3.1.3.tgz";
- path = fetchurl {
- name = "babel_plugin_react_intl___babel_plugin_react_intl_3.1.3.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-3.1.3.tgz";
- sha1 = "2a28cd43cbba1ed092c7e3376bf8f02b0f72acb8";
- };
- }
-
- {
- name = "babel_plugin_syntax_jsx___babel_plugin_syntax_jsx_6.18.0.tgz";
- path = fetchurl {
- name = "babel_plugin_syntax_jsx___babel_plugin_syntax_jsx_6.18.0.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz";
- sha1 = "0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946";
- };
- }
-
- {
- name = "babel_plugin_transform_react_remove_prop_types___babel_plugin_transform_react_remove_prop_types_0.4.24.tgz";
- path = fetchurl {
- name = "babel_plugin_transform_react_remove_prop_types___babel_plugin_transform_react_remove_prop_types_0.4.24.tgz";
- url = "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz";
- sha1 = "f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a";
- };
- }
-
- {
- name = "babel_preset_jest___babel_preset_jest_24.6.0.tgz";
- path = fetchurl {
- name = "babel_preset_jest___babel_preset_jest_24.6.0.tgz";
- url = "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz";
- sha1 = "66f06136eefce87797539c0d63f1769cc3915984";
- };
- }
-
- {
- name = "babel_runtime___babel_runtime_6.26.0.tgz";
- path = fetchurl {
- name = "babel_runtime___babel_runtime_6.26.0.tgz";
- url = "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz";
- sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
- };
- }
-
- {
- name = "backoff___backoff_2.5.0.tgz";
- path = fetchurl {
- name = "backoff___backoff_2.5.0.tgz";
- url = "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz";
- sha1 = "f616eda9d3e4b66b8ca7fca79f695722c5f8e26f";
- };
- }
-
- {
- name = "balanced_match___balanced_match_1.0.0.tgz";
- path = fetchurl {
- name = "balanced_match___balanced_match_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
- sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
- };
- }
-
- {
- name = "base64_js___base64_js_1.3.0.tgz";
- path = fetchurl {
- name = "base64_js___base64_js_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz";
- sha1 = "cab1e6118f051095e58b5281aea8c1cd22bfc0e3";
- };
- }
-
- {
- name = "base___base_0.11.2.tgz";
- path = fetchurl {
- name = "base___base_0.11.2.tgz";
- url = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz";
- sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f";
- };
- }
-
- {
- name = "batch___batch_0.6.1.tgz";
- path = fetchurl {
- name = "batch___batch_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz";
- sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
- };
- }
-
- {
- name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
- path = fetchurl {
- name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
- sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
- };
- }
-
- {
- name = "bfj___bfj_6.1.1.tgz";
- path = fetchurl {
- name = "bfj___bfj_6.1.1.tgz";
- url = "https://registry.yarnpkg.com/bfj/-/bfj-6.1.1.tgz";
- sha1 = "05a3b7784fbd72cfa3c22e56002ef99336516c48";
- };
- }
-
- {
- name = "big.js___big.js_3.2.0.tgz";
- path = fetchurl {
- name = "big.js___big.js_3.2.0.tgz";
- url = "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz";
- sha1 = "a5fc298b81b9e0dca2e458824784b65c52ba588e";
- };
- }
-
- {
- name = "big.js___big.js_5.2.2.tgz";
- path = fetchurl {
- name = "big.js___big.js_5.2.2.tgz";
- url = "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz";
- sha1 = "65f0af382f578bcdc742bd9c281e9cb2d7768328";
- };
- }
-
- {
- name = "binary_extensions___binary_extensions_1.12.0.tgz";
- path = fetchurl {
- name = "binary_extensions___binary_extensions_1.12.0.tgz";
- url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz";
- sha1 = "c2d780f53d45bba8317a8902d4ceeaf3a6385b14";
- };
- }
-
- {
- name = "bluebird___bluebird_3.5.3.tgz";
- path = fetchurl {
- name = "bluebird___bluebird_3.5.3.tgz";
- url = "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz";
- sha1 = "7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7";
- };
- }
-
- {
- name = "blurhash___blurhash_1.0.0.tgz";
- path = fetchurl {
- name = "blurhash___blurhash_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/blurhash/-/blurhash-1.0.0.tgz";
- sha1 = "9087bc5cc4d482f1305059d7410df4133adcab2e";
- };
- }
-
- {
- name = "bn.js___bn.js_4.11.8.tgz";
- path = fetchurl {
- name = "bn.js___bn.js_4.11.8.tgz";
- url = "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz";
- sha1 = "2cde09eb5ee341f484746bb0309b3253b1b1442f";
- };
- }
-
- {
- name = "body_parser___body_parser_1.19.0.tgz";
- path = fetchurl {
- name = "body_parser___body_parser_1.19.0.tgz";
- url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz";
- sha1 = "96b2709e57c9c4e09a6fd66a8fd979844f69f08a";
- };
- }
-
- {
- name = "bonjour___bonjour_3.5.0.tgz";
- path = fetchurl {
- name = "bonjour___bonjour_3.5.0.tgz";
- url = "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz";
- sha1 = "8e890a183d8ee9a2393b3844c691a42bcf7bc9f5";
- };
- }
-
- {
- name = "boolbase___boolbase_1.0.0.tgz";
- path = fetchurl {
- name = "boolbase___boolbase_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz";
- sha1 = "68dff5fbe60c51eb37725ea9e3ed310dcc1e776e";
- };
- }
-
- {
- name = "brace_expansion___brace_expansion_1.1.11.tgz";
- path = fetchurl {
- name = "brace_expansion___brace_expansion_1.1.11.tgz";
- url = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz";
- sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd";
- };
- }
-
- {
- name = "braces___braces_2.3.2.tgz";
- path = fetchurl {
- name = "braces___braces_2.3.2.tgz";
- url = "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz";
- sha1 = "5979fd3f14cd531565e5fa2df1abfff1dfaee729";
- };
- }
-
- {
- name = "bricks.js___bricks.js_1.8.0.tgz";
- path = fetchurl {
- name = "bricks.js___bricks.js_1.8.0.tgz";
- url = "https://registry.yarnpkg.com/bricks.js/-/bricks.js-1.8.0.tgz";
- sha1 = "8fdeb3c0226af251f4d5727a7df7f9ac0092b4b2";
- };
- }
-
- {
- name = "brorand___brorand_1.1.0.tgz";
- path = fetchurl {
- name = "brorand___brorand_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz";
- sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f";
- };
- }
-
- {
- name = "browser_process_hrtime___browser_process_hrtime_0.1.3.tgz";
- path = fetchurl {
- name = "browser_process_hrtime___browser_process_hrtime_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz";
- sha1 = "616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4";
- };
- }
-
- {
- name = "browser_resolve___browser_resolve_1.11.3.tgz";
- path = fetchurl {
- name = "browser_resolve___browser_resolve_1.11.3.tgz";
- url = "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz";
- sha1 = "9b7cbb3d0f510e4cb86bdbd796124d28b5890af6";
- };
- }
-
- {
- name = "browserify_aes___browserify_aes_1.2.0.tgz";
- path = fetchurl {
- name = "browserify_aes___browserify_aes_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz";
- sha1 = "326734642f403dabc3003209853bb70ad428ef48";
- };
- }
-
- {
- name = "browserify_cipher___browserify_cipher_1.0.1.tgz";
- path = fetchurl {
- name = "browserify_cipher___browserify_cipher_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz";
- sha1 = "8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0";
- };
- }
-
- {
- name = "browserify_des___browserify_des_1.0.2.tgz";
- path = fetchurl {
- name = "browserify_des___browserify_des_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz";
- sha1 = "3af4f1f59839403572f1c66204375f7a7f703e9c";
- };
- }
-
- {
- name = "browserify_rsa___browserify_rsa_4.0.1.tgz";
- path = fetchurl {
- name = "browserify_rsa___browserify_rsa_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz";
- sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524";
- };
- }
-
- {
- name = "browserify_sign___browserify_sign_4.0.4.tgz";
- path = fetchurl {
- name = "browserify_sign___browserify_sign_4.0.4.tgz";
- url = "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz";
- sha1 = "aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298";
- };
- }
-
- {
- name = "browserify_zlib___browserify_zlib_0.2.0.tgz";
- path = fetchurl {
- name = "browserify_zlib___browserify_zlib_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
- sha1 = "2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f";
- };
- }
-
- {
- name = "browserslist___browserslist_4.6.2.tgz";
- path = fetchurl {
- name = "browserslist___browserslist_4.6.2.tgz";
- url = "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.2.tgz";
- sha1 = "574c665950915c2ac73a4594b8537a9eba26203f";
- };
- }
-
- {
- name = "bser___bser_2.0.0.tgz";
- path = fetchurl {
- name = "bser___bser_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz";
- sha1 = "9ac78d3ed5d915804fd87acb158bc797147a1719";
- };
- }
-
- {
- name = "buffer_from___buffer_from_1.1.1.tgz";
- path = fetchurl {
- name = "buffer_from___buffer_from_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz";
- sha1 = "32713bc028f75c02fdb710d7c7bcec1f2c6070ef";
- };
- }
-
- {
- name = "buffer_indexof___buffer_indexof_1.1.1.tgz";
- path = fetchurl {
- name = "buffer_indexof___buffer_indexof_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz";
- sha1 = "52fabcc6a606d1a00302802648ef68f639da268c";
- };
- }
-
- {
- name = "buffer_writer___buffer_writer_1.0.1.tgz";
- path = fetchurl {
- name = "buffer_writer___buffer_writer_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-1.0.1.tgz";
- sha1 = "22a936901e3029afcd7547eb4487ceb697a3bf08";
- };
- }
-
- {
- name = "buffer_xor___buffer_xor_1.0.3.tgz";
- path = fetchurl {
- name = "buffer_xor___buffer_xor_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz";
- sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9";
- };
- }
-
- {
- name = "buffer___buffer_4.9.1.tgz";
- path = fetchurl {
- name = "buffer___buffer_4.9.1.tgz";
- url = "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz";
- sha1 = "6d1bb601b07a4efced97094132093027c95bc298";
- };
- }
-
- {
- name = "builtin_modules___builtin_modules_1.1.1.tgz";
- path = fetchurl {
- name = "builtin_modules___builtin_modules_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz";
- sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
- };
- }
-
- {
- name = "builtin_status_codes___builtin_status_codes_3.0.0.tgz";
- path = fetchurl {
- name = "builtin_status_codes___builtin_status_codes_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
- sha1 = "85982878e21b98e1c66425e03d0174788f569ee8";
- };
- }
-
- {
- name = "bytes___bytes_3.0.0.tgz";
- path = fetchurl {
- name = "bytes___bytes_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz";
- sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
- };
- }
-
- {
- name = "bytes___bytes_3.1.0.tgz";
- path = fetchurl {
- name = "bytes___bytes_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz";
- sha1 = "f6cf7933a360e0588fa9fde85651cdc7f805d1f6";
- };
- }
-
- {
- name = "cacache___cacache_11.3.2.tgz";
- path = fetchurl {
- name = "cacache___cacache_11.3.2.tgz";
- url = "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz";
- sha1 = "2d81e308e3d258ca38125b676b98b2ac9ce69bfa";
- };
- }
-
- {
- name = "cache_base___cache_base_1.0.1.tgz";
- path = fetchurl {
- name = "cache_base___cache_base_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz";
- sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2";
- };
- }
-
- {
- name = "caller_callsite___caller_callsite_2.0.0.tgz";
- path = fetchurl {
- name = "caller_callsite___caller_callsite_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz";
- sha1 = "847e0fce0a223750a9a027c54b33731ad3154134";
- };
- }
-
- {
- name = "caller_path___caller_path_0.1.0.tgz";
- path = fetchurl {
- name = "caller_path___caller_path_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz";
- sha1 = "94085ef63581ecd3daa92444a8fe94e82577751f";
- };
- }
-
- {
- name = "caller_path___caller_path_2.0.0.tgz";
- path = fetchurl {
- name = "caller_path___caller_path_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz";
- sha1 = "468f83044e369ab2010fac5f06ceee15bb2cb1f4";
- };
- }
-
- {
- name = "callsites___callsites_0.2.0.tgz";
- path = fetchurl {
- name = "callsites___callsites_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz";
- sha1 = "afab96262910a7f33c19a5775825c69f34e350ca";
- };
- }
-
- {
- name = "callsites___callsites_2.0.0.tgz";
- path = fetchurl {
- name = "callsites___callsites_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz";
- sha1 = "06eb84f00eea413da86affefacbffb36093b3c50";
- };
- }
-
- {
- name = "callsites___callsites_3.0.0.tgz";
- path = fetchurl {
- name = "callsites___callsites_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz";
- sha1 = "fb7eb569b72ad7a45812f93fd9430a3e410b3dd3";
- };
- }
-
- {
- name = "camelcase___camelcase_5.0.0.tgz";
- path = fetchurl {
- name = "camelcase___camelcase_5.0.0.tgz";
- url = "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz";
- sha1 = "03295527d58bd3cd4aa75363f35b2e8d97be2f42";
- };
- }
-
- {
- name = "camelcase___camelcase_5.2.0.tgz";
- path = fetchurl {
- name = "camelcase___camelcase_5.2.0.tgz";
- url = "https://registry.yarnpkg.com/camelcase/-/camelcase-5.2.0.tgz";
- sha1 = "e7522abda5ed94cc0489e1b8466610e88404cf45";
- };
- }
-
- {
- name = "caniuse_api___caniuse_api_3.0.0.tgz";
- path = fetchurl {
- name = "caniuse_api___caniuse_api_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz";
- sha1 = "5e4d90e2274961d46291997df599e3ed008ee4c0";
- };
- }
-
- {
- name = "caniuse_lite___caniuse_lite_1.0.30000974.tgz";
- path = fetchurl {
- name = "caniuse_lite___caniuse_lite_1.0.30000974.tgz";
- url = "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz";
- sha1 = "b7afe14ee004e97ce6dc73e3f878290a12928ad8";
- };
- }
-
- {
- name = "capture_exit___capture_exit_1.2.0.tgz";
- path = fetchurl {
- name = "capture_exit___capture_exit_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz";
- sha1 = "1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f";
- };
- }
-
- {
- name = "caseless___caseless_0.12.0.tgz";
- path = fetchurl {
- name = "caseless___caseless_0.12.0.tgz";
- url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
- sha1 = "1b681c21ff84033c826543090689420d187151dc";
- };
- }
-
- {
- name = "chalk___chalk_1.1.3.tgz";
- path = fetchurl {
- name = "chalk___chalk_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz";
- sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
- };
- }
-
- {
- name = "chalk___chalk_2.4.2.tgz";
- path = fetchurl {
- name = "chalk___chalk_2.4.2.tgz";
- url = "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz";
- sha1 = "cd42541677a54333cf541a49108c1432b44c9424";
- };
- }
-
- {
- name = "chardet___chardet_0.7.0.tgz";
- path = fetchurl {
- name = "chardet___chardet_0.7.0.tgz";
- url = "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz";
- sha1 = "90094849f0937f2eedc2425d0d28a9e5f0cbad9e";
- };
- }
-
- {
- name = "check_types___check_types_7.4.0.tgz";
- path = fetchurl {
- name = "check_types___check_types_7.4.0.tgz";
- url = "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz";
- sha1 = "0378ec1b9616ec71f774931a3c6516fad8c152f4";
- };
- }
-
- {
- name = "cheerio___cheerio_1.0.0_rc.2.tgz";
- path = fetchurl {
- name = "cheerio___cheerio_1.0.0_rc.2.tgz";
- url = "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz";
- sha1 = "4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db";
- };
- }
-
- {
- name = "chokidar___chokidar_2.1.6.tgz";
- path = fetchurl {
- name = "chokidar___chokidar_2.1.6.tgz";
- url = "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz";
- sha1 = "b6cad653a929e244ce8a834244164d241fa954c5";
- };
- }
-
- {
- name = "chownr___chownr_1.1.1.tgz";
- path = fetchurl {
- name = "chownr___chownr_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz";
- sha1 = "54726b8b8fff4df053c42187e801fb4412df1494";
- };
- }
-
- {
- name = "chrome_trace_event___chrome_trace_event_1.0.0.tgz";
- path = fetchurl {
- name = "chrome_trace_event___chrome_trace_event_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz";
- sha1 = "45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48";
- };
- }
-
- {
- name = "ci_info___ci_info_2.0.0.tgz";
- path = fetchurl {
- name = "ci_info___ci_info_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz";
- sha1 = "67a9e964be31a51e15e5010d58e6f12834002f46";
- };
- }
-
- {
- name = "cipher_base___cipher_base_1.0.4.tgz";
- path = fetchurl {
- name = "cipher_base___cipher_base_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz";
- sha1 = "8760e4ecc272f4c363532f926d874aae2c1397de";
- };
- }
-
- {
- name = "circular_json___circular_json_0.3.3.tgz";
- path = fetchurl {
- name = "circular_json___circular_json_0.3.3.tgz";
- url = "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz";
- sha1 = "815c99ea84f6809529d2f45791bdf82711352d66";
- };
- }
-
- {
- name = "class_utils___class_utils_0.3.6.tgz";
- path = fetchurl {
- name = "class_utils___class_utils_0.3.6.tgz";
- url = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz";
- sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463";
- };
- }
-
- {
- name = "classnames___classnames_2.2.6.tgz";
- path = fetchurl {
- name = "classnames___classnames_2.2.6.tgz";
- url = "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz";
- sha1 = "43935bffdd291f326dad0a205309b38d00f650ce";
- };
- }
-
- {
- name = "cli_cursor___cli_cursor_1.0.2.tgz";
- path = fetchurl {
- name = "cli_cursor___cli_cursor_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz";
- sha1 = "64da3f7d56a54412e59794bd62dc35295e8f2987";
- };
- }
-
- {
- name = "cli_cursor___cli_cursor_2.1.0.tgz";
- path = fetchurl {
- name = "cli_cursor___cli_cursor_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz";
- sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5";
- };
- }
-
- {
- name = "cli_width___cli_width_2.2.0.tgz";
- path = fetchurl {
- name = "cli_width___cli_width_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz";
- sha1 = "ff19ede8a9a5e579324147b0c11f0fbcbabed639";
- };
- }
-
- {
- name = "cliui___cliui_4.1.0.tgz";
- path = fetchurl {
- name = "cliui___cliui_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz";
- sha1 = "348422dbe82d800b3022eef4f6ac10bf2e4d1b49";
- };
- }
-
- {
- name = "clone_deep___clone_deep_2.0.2.tgz";
- path = fetchurl {
- name = "clone_deep___clone_deep_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz";
- sha1 = "00db3a1e173656730d1188c3d6aced6d7ea97713";
- };
- }
-
- {
- name = "co___co_4.6.0.tgz";
- path = fetchurl {
- name = "co___co_4.6.0.tgz";
- url = "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz";
- sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
- };
- }
-
- {
- name = "coa___coa_2.0.2.tgz";
- path = fetchurl {
- name = "coa___coa_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz";
- sha1 = "43f6c21151b4ef2bf57187db0d73de229e3e7ec3";
- };
- }
-
- {
- name = "code_point_at___code_point_at_1.1.0.tgz";
- path = fetchurl {
- name = "code_point_at___code_point_at_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz";
- sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
- };
- }
-
- {
- name = "collection_visit___collection_visit_1.0.0.tgz";
- path = fetchurl {
- name = "collection_visit___collection_visit_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz";
- sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
- };
- }
-
- {
- name = "color_convert___color_convert_1.9.3.tgz";
- path = fetchurl {
- name = "color_convert___color_convert_1.9.3.tgz";
- url = "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz";
- sha1 = "bb71850690e1f136567de629d2d5471deda4c1e8";
- };
- }
-
- {
- name = "color_name___color_name_1.1.3.tgz";
- path = fetchurl {
- name = "color_name___color_name_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz";
- sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
- };
- }
-
- {
- name = "color_name___color_name_1.1.4.tgz";
- path = fetchurl {
- name = "color_name___color_name_1.1.4.tgz";
- url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz";
- sha1 = "c2a09a87acbde69543de6f63fa3995c826c536a2";
- };
- }
-
- {
- name = "color_string___color_string_1.5.3.tgz";
- path = fetchurl {
- name = "color_string___color_string_1.5.3.tgz";
- url = "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz";
- sha1 = "c9bbc5f01b58b5492f3d6857459cb6590ce204cc";
- };
- }
-
- {
- name = "color___color_3.1.0.tgz";
- path = fetchurl {
- name = "color___color_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz";
- sha1 = "d8e9fb096732875774c84bf922815df0308d0ffc";
- };
- }
-
- {
- name = "colors___colors_1.1.2.tgz";
- path = fetchurl {
- name = "colors___colors_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz";
- sha1 = "168a4701756b6a7f51a12ce0c97bfa28c084ed63";
- };
- }
-
- {
- name = "combined_stream___combined_stream_1.0.7.tgz";
- path = fetchurl {
- name = "combined_stream___combined_stream_1.0.7.tgz";
- url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz";
- sha1 = "2d1d24317afb8abe95d6d2c0b07b57813539d828";
- };
- }
-
- {
- name = "commander___commander_2.20.0.tgz";
- path = fetchurl {
- name = "commander___commander_2.20.0.tgz";
- url = "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz";
- sha1 = "d58bb2b5c1ee8f87b0d340027e9e94e222c5a422";
- };
- }
-
- {
- name = "commander___commander_2.17.1.tgz";
- path = fetchurl {
- name = "commander___commander_2.17.1.tgz";
- url = "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz";
- sha1 = "bd77ab7de6de94205ceacc72f1716d29f20a77bf";
- };
- }
-
- {
- name = "commondir___commondir_1.0.1.tgz";
- path = fetchurl {
- name = "commondir___commondir_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz";
- sha1 = "ddd800da0c66127393cca5950ea968a3aaf1253b";
- };
- }
-
- {
- name = "component_emitter___component_emitter_1.2.1.tgz";
- path = fetchurl {
- name = "component_emitter___component_emitter_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz";
- sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
- };
- }
-
- {
- name = "compressible___compressible_2.0.17.tgz";
- path = fetchurl {
- name = "compressible___compressible_2.0.17.tgz";
- url = "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz";
- sha1 = "6e8c108a16ad58384a977f3a482ca20bff2f38c1";
- };
- }
-
- {
- name = "compression_webpack_plugin___compression_webpack_plugin_2.0.0.tgz";
- path = fetchurl {
- name = "compression_webpack_plugin___compression_webpack_plugin_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-2.0.0.tgz";
- sha1 = "46476350c1eb27f783dccc79ac2f709baa2cffbc";
- };
- }
-
- {
- name = "compression___compression_1.7.4.tgz";
- path = fetchurl {
- name = "compression___compression_1.7.4.tgz";
- url = "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz";
- sha1 = "95523eff170ca57c29a0ca41e6fe131f41e5bb8f";
- };
- }
-
- {
- name = "concat_map___concat_map_0.0.1.tgz";
- path = fetchurl {
- name = "concat_map___concat_map_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
- sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
- };
- }
-
- {
- name = "concat_stream___concat_stream_1.6.2.tgz";
- path = fetchurl {
- name = "concat_stream___concat_stream_1.6.2.tgz";
- url = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz";
- sha1 = "904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34";
- };
- }
-
- {
- name = "connect_history_api_fallback___connect_history_api_fallback_1.6.0.tgz";
- path = fetchurl {
- name = "connect_history_api_fallback___connect_history_api_fallback_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz";
- sha1 = "8b32089359308d111115d81cad3fceab888f97bc";
- };
- }
-
- {
- name = "console_browserify___console_browserify_1.1.0.tgz";
- path = fetchurl {
- name = "console_browserify___console_browserify_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz";
- sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
- };
- }
-
- {
- name = "console_control_strings___console_control_strings_1.1.0.tgz";
- path = fetchurl {
- name = "console_control_strings___console_control_strings_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz";
- sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
- };
- }
-
- {
- name = "constants_browserify___constants_browserify_1.0.0.tgz";
- path = fetchurl {
- name = "constants_browserify___constants_browserify_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz";
- sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
- };
- }
-
- {
- name = "contains_path___contains_path_0.1.0.tgz";
- path = fetchurl {
- name = "contains_path___contains_path_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz";
- sha1 = "fe8cf184ff6670b6baef01a9d4861a5cbec4120a";
- };
- }
-
- {
- name = "content_disposition___content_disposition_0.5.3.tgz";
- path = fetchurl {
- name = "content_disposition___content_disposition_0.5.3.tgz";
- url = "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz";
- sha1 = "e130caf7e7279087c5616c2007d0485698984fbd";
- };
- }
-
- {
- name = "content_type___content_type_1.0.4.tgz";
- path = fetchurl {
- name = "content_type___content_type_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
- sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
- };
- }
-
- {
- name = "convert_source_map___convert_source_map_1.6.0.tgz";
- path = fetchurl {
- name = "convert_source_map___convert_source_map_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz";
- sha1 = "51b537a8c43e0f04dec1993bffcdd504e758ac20";
- };
- }
-
- {
- name = "cookie_signature___cookie_signature_1.0.6.tgz";
- path = fetchurl {
- name = "cookie_signature___cookie_signature_1.0.6.tgz";
- url = "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz";
- sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
- };
- }
-
- {
- name = "cookie___cookie_0.4.0.tgz";
- path = fetchurl {
- name = "cookie___cookie_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz";
- sha1 = "beb437e7022b3b6d49019d088665303ebe9c14ba";
- };
- }
-
- {
- name = "copy_concurrently___copy_concurrently_1.0.5.tgz";
- path = fetchurl {
- name = "copy_concurrently___copy_concurrently_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz";
- sha1 = "92297398cae34937fcafd6ec8139c18051f0b5e0";
- };
- }
-
- {
- name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
- path = fetchurl {
- name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
- sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
- };
- }
-
- {
- name = "core_js_compat___core_js_compat_3.1.3.tgz";
- path = fetchurl {
- name = "core_js_compat___core_js_compat_3.1.3.tgz";
- url = "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.3.tgz";
- sha1 = "0cc3ba4c7f62928c2837e1cffbe8dc78b4f1ae14";
- };
- }
-
- {
- name = "core_js_pure___core_js_pure_3.1.3.tgz";
- path = fetchurl {
- name = "core_js_pure___core_js_pure_3.1.3.tgz";
- url = "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.3.tgz";
- sha1 = "4c90752d5b9471f641514f3728f51c1e0783d0b5";
- };
- }
-
- {
- name = "core_js___core_js_1.2.7.tgz";
- path = fetchurl {
- name = "core_js___core_js_1.2.7.tgz";
- url = "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz";
- sha1 = "652294c14651db28fa93bd2d5ff2983a4f08c636";
- };
- }
-
- {
- name = "core_js___core_js_2.6.1.tgz";
- path = fetchurl {
- name = "core_js___core_js_2.6.1.tgz";
- url = "https://registry.yarnpkg.com/core-js/-/core-js-2.6.1.tgz";
- sha1 = "87416ae817de957a3f249b3b5ca475d4aaed6042";
- };
- }
-
- {
- name = "core_util_is___core_util_is_1.0.2.tgz";
- path = fetchurl {
- name = "core_util_is___core_util_is_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
- sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
- };
- }
-
- {
- name = "cosmiconfig___cosmiconfig_4.0.0.tgz";
- path = fetchurl {
- name = "cosmiconfig___cosmiconfig_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz";
- sha1 = "760391549580bbd2df1e562bc177b13c290972dc";
- };
- }
-
- {
- name = "cosmiconfig___cosmiconfig_5.0.7.tgz";
- path = fetchurl {
- name = "cosmiconfig___cosmiconfig_5.0.7.tgz";
- url = "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz";
- sha1 = "39826b292ee0d78eda137dfa3173bd1c21a43b04";
- };
- }
-
- {
- name = "cosmiconfig___cosmiconfig_5.2.1.tgz";
- path = fetchurl {
- name = "cosmiconfig___cosmiconfig_5.2.1.tgz";
- url = "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz";
- sha1 = "040f726809c591e77a17c0a3626ca45b4f168b1a";
- };
- }
-
- {
- name = "create_ecdh___create_ecdh_4.0.3.tgz";
- path = fetchurl {
- name = "create_ecdh___create_ecdh_4.0.3.tgz";
- url = "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz";
- sha1 = "c9111b6f33045c4697f144787f9254cdc77c45ff";
- };
- }
-
- {
- name = "create_emotion___create_emotion_9.2.12.tgz";
- path = fetchurl {
- name = "create_emotion___create_emotion_9.2.12.tgz";
- url = "https://registry.yarnpkg.com/create-emotion/-/create-emotion-9.2.12.tgz";
- sha1 = "0fc8e7f92c4f8bb924b0fef6781f66b1d07cb26f";
- };
- }
-
- {
- name = "create_hash___create_hash_1.2.0.tgz";
- path = fetchurl {
- name = "create_hash___create_hash_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz";
- sha1 = "889078af11a63756bcfb59bd221996be3a9ef196";
- };
- }
-
- {
- name = "create_hmac___create_hmac_1.1.7.tgz";
- path = fetchurl {
- name = "create_hmac___create_hmac_1.1.7.tgz";
- url = "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz";
- sha1 = "69170c78b3ab957147b2b8b04572e47ead2243ff";
- };
- }
-
- {
- name = "cross_env___cross_env_5.2.0.tgz";
- path = fetchurl {
- name = "cross_env___cross_env_5.2.0.tgz";
- url = "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz";
- sha1 = "6ecd4c015d5773e614039ee529076669b9d126f2";
- };
- }
-
- {
- name = "cross_spawn___cross_spawn_6.0.5.tgz";
- path = fetchurl {
- name = "cross_spawn___cross_spawn_6.0.5.tgz";
- url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz";
- sha1 = "4a5ec7c64dfae22c3a14124dbacdee846d80cbc4";
- };
- }
-
- {
- name = "crypto_browserify___crypto_browserify_3.12.0.tgz";
- path = fetchurl {
- name = "crypto_browserify___crypto_browserify_3.12.0.tgz";
- url = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
- sha1 = "396cf9f3137f03e4b8e532c58f698254e00f80ec";
- };
- }
-
- {
- name = "css_color_names___css_color_names_0.0.4.tgz";
- path = fetchurl {
- name = "css_color_names___css_color_names_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz";
- sha1 = "808adc2e79cf84738069b646cb20ec27beb629e0";
- };
- }
-
- {
- name = "css_declaration_sorter___css_declaration_sorter_4.0.1.tgz";
- path = fetchurl {
- name = "css_declaration_sorter___css_declaration_sorter_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz";
- sha1 = "c198940f63a76d7e36c1e71018b001721054cb22";
- };
- }
-
- {
- name = "css_font_size_keywords___css_font_size_keywords_1.0.0.tgz";
- path = fetchurl {
- name = "css_font_size_keywords___css_font_size_keywords_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz";
- sha1 = "854875ace9aca6a8d2ee0d345a44aae9bb6db6cb";
- };
- }
-
- {
- name = "css_font_stretch_keywords___css_font_stretch_keywords_1.0.1.tgz";
- path = fetchurl {
- name = "css_font_stretch_keywords___css_font_stretch_keywords_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz";
- sha1 = "50cee9b9ba031fb5c952d4723139f1e107b54b10";
- };
- }
-
- {
- name = "css_font_style_keywords___css_font_style_keywords_1.0.1.tgz";
- path = fetchurl {
- name = "css_font_style_keywords___css_font_style_keywords_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz";
- sha1 = "5c3532813f63b4a1de954d13cea86ab4333409e4";
- };
- }
-
- {
- name = "css_font_weight_keywords___css_font_weight_keywords_1.0.0.tgz";
- path = fetchurl {
- name = "css_font_weight_keywords___css_font_weight_keywords_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz";
- sha1 = "9bc04671ac85bc724b574ef5d3ac96b0d604fd97";
- };
- }
-
- {
- name = "css_global_keywords___css_global_keywords_1.0.1.tgz";
- path = fetchurl {
- name = "css_global_keywords___css_global_keywords_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/css-global-keywords/-/css-global-keywords-1.0.1.tgz";
- sha1 = "72a9aea72796d019b1d2a3252de4e5aaa37e4a69";
- };
- }
-
- {
- name = "css_list_helpers___css_list_helpers_1.0.1.tgz";
- path = fetchurl {
- name = "css_list_helpers___css_list_helpers_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/css-list-helpers/-/css-list-helpers-1.0.1.tgz";
- sha1 = "fff57192202db83240c41686f919e449a7024f7d";
- };
- }
-
- {
- name = "css_loader___css_loader_2.1.1.tgz";
- path = fetchurl {
- name = "css_loader___css_loader_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz";
- sha1 = "d8254f72e412bb2238bb44dd674ffbef497333ea";
- };
- }
-
- {
- name = "css_select_base_adapter___css_select_base_adapter_0.1.1.tgz";
- path = fetchurl {
- name = "css_select_base_adapter___css_select_base_adapter_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz";
- sha1 = "3b2ff4972cc362ab88561507a95408a1432135d7";
- };
- }
-
- {
- name = "css_select___css_select_2.0.2.tgz";
- path = fetchurl {
- name = "css_select___css_select_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz";
- sha1 = "ab4386cec9e1f668855564b17c3733b43b2a5ede";
- };
- }
-
- {
- name = "css_select___css_select_1.2.0.tgz";
- path = fetchurl {
- name = "css_select___css_select_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz";
- sha1 = "2b3a110539c5355f1cd8d314623e870b121ec858";
- };
- }
-
- {
- name = "css_system_font_keywords___css_system_font_keywords_1.0.0.tgz";
- path = fetchurl {
- name = "css_system_font_keywords___css_system_font_keywords_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz";
- sha1 = "85c6f086aba4eb32c571a3086affc434b84823ed";
- };
- }
-
- {
- name = "css_tree___css_tree_1.0.0_alpha.28.tgz";
- path = fetchurl {
- name = "css_tree___css_tree_1.0.0_alpha.28.tgz";
- url = "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz";
- sha1 = "8e8968190d886c9477bc8d61e96f61af3f7ffa7f";
- };
- }
-
- {
- name = "css_tree___css_tree_1.0.0_alpha.29.tgz";
- path = fetchurl {
- name = "css_tree___css_tree_1.0.0_alpha.29.tgz";
- url = "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz";
- sha1 = "3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39";
- };
- }
-
- {
- name = "css_unit_converter___css_unit_converter_1.1.1.tgz";
- path = fetchurl {
- name = "css_unit_converter___css_unit_converter_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz";
- sha1 = "d9b9281adcfd8ced935bdbaba83786897f64e996";
- };
- }
-
- {
- name = "css_url_regex___css_url_regex_1.1.0.tgz";
- path = fetchurl {
- name = "css_url_regex___css_url_regex_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz";
- sha1 = "83834230cc9f74c457de59eebd1543feeb83b7ec";
- };
- }
-
- {
- name = "css_what___css_what_2.1.2.tgz";
- path = fetchurl {
- name = "css_what___css_what_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz";
- sha1 = "c0876d9d0480927d7d4920dcd72af3595649554d";
- };
- }
-
- {
- name = "cssesc___cssesc_2.0.0.tgz";
- path = fetchurl {
- name = "cssesc___cssesc_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz";
- sha1 = "3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703";
- };
- }
-
- {
- name = "cssesc___cssesc_3.0.0.tgz";
- path = fetchurl {
- name = "cssesc___cssesc_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz";
- sha1 = "37741919903b868565e1c09ea747445cd18983ee";
- };
- }
-
- {
- name = "cssnano_preset_default___cssnano_preset_default_4.0.7.tgz";
- path = fetchurl {
- name = "cssnano_preset_default___cssnano_preset_default_4.0.7.tgz";
- url = "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz";
- sha1 = "51ec662ccfca0f88b396dcd9679cdb931be17f76";
- };
- }
-
- {
- name = "cssnano_util_get_arguments___cssnano_util_get_arguments_4.0.0.tgz";
- path = fetchurl {
- name = "cssnano_util_get_arguments___cssnano_util_get_arguments_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz";
- sha1 = "ed3a08299f21d75741b20f3b81f194ed49cc150f";
- };
- }
-
- {
- name = "cssnano_util_get_match___cssnano_util_get_match_4.0.0.tgz";
- path = fetchurl {
- name = "cssnano_util_get_match___cssnano_util_get_match_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz";
- sha1 = "c0e4ca07f5386bb17ec5e52250b4f5961365156d";
- };
- }
-
- {
- name = "cssnano_util_raw_cache___cssnano_util_raw_cache_4.0.1.tgz";
- path = fetchurl {
- name = "cssnano_util_raw_cache___cssnano_util_raw_cache_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz";
- sha1 = "b26d5fd5f72a11dfe7a7846fb4c67260f96bf282";
- };
- }
-
- {
- name = "cssnano_util_same_parent___cssnano_util_same_parent_4.0.1.tgz";
- path = fetchurl {
- name = "cssnano_util_same_parent___cssnano_util_same_parent_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz";
- sha1 = "574082fb2859d2db433855835d9a8456ea18bbf3";
- };
- }
-
- {
- name = "cssnano___cssnano_4.1.10.tgz";
- path = fetchurl {
- name = "cssnano___cssnano_4.1.10.tgz";
- url = "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz";
- sha1 = "0ac41f0b13d13d465487e111b778d42da631b8b2";
- };
- }
-
- {
- name = "csso___csso_3.5.1.tgz";
- path = fetchurl {
- name = "csso___csso_3.5.1.tgz";
- url = "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz";
- sha1 = "7b9eb8be61628973c1b261e169d2f024008e758b";
- };
- }
-
- {
- name = "cssom___cssom_0.3.4.tgz";
- path = fetchurl {
- name = "cssom___cssom_0.3.4.tgz";
- url = "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz";
- sha1 = "8cd52e8a3acfd68d3aed38ee0a640177d2f9d797";
- };
- }
-
- {
- name = "cssstyle___cssstyle_1.1.1.tgz";
- path = fetchurl {
- name = "cssstyle___cssstyle_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz";
- sha1 = "18b038a9c44d65f7a8e428a653b9f6fe42faf5fb";
- };
- }
-
- {
- name = "csstype___csstype_2.6.0.tgz";
- path = fetchurl {
- name = "csstype___csstype_2.6.0.tgz";
- url = "https://registry.yarnpkg.com/csstype/-/csstype-2.6.0.tgz";
- sha1 = "6cf7b2fa7fc32aab3d746802c244d4eda71371a2";
- };
- }
-
- {
- name = "csstype___csstype_2.6.5.tgz";
- path = fetchurl {
- name = "csstype___csstype_2.6.5.tgz";
- url = "https://registry.yarnpkg.com/csstype/-/csstype-2.6.5.tgz";
- sha1 = "1cd1dff742ebf4d7c991470ae71e12bb6751e034";
- };
- }
-
- {
- name = "cyclist___cyclist_0.2.2.tgz";
- path = fetchurl {
- name = "cyclist___cyclist_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz";
- sha1 = "1b33792e11e914a2fd6d6ed6447464444e5fa640";
- };
- }
-
- {
- name = "d___d_1.0.0.tgz";
- path = fetchurl {
- name = "d___d_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz";
- sha1 = "754bb5bfe55451da69a58b94d45f4c5b0462d58f";
- };
- }
-
- {
- name = "damerau_levenshtein___damerau_levenshtein_1.0.4.tgz";
- path = fetchurl {
- name = "damerau_levenshtein___damerau_levenshtein_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz";
- sha1 = "03191c432cb6eea168bb77f3a55ffdccb8978514";
- };
- }
-
- {
- name = "dashdash___dashdash_1.14.1.tgz";
- path = fetchurl {
- name = "dashdash___dashdash_1.14.1.tgz";
- url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
- sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
- };
- }
-
- {
- name = "data_urls___data_urls_1.1.0.tgz";
- path = fetchurl {
- name = "data_urls___data_urls_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz";
- sha1 = "15ee0582baa5e22bb59c77140da8f9c76963bbfe";
- };
- }
-
- {
- name = "date_now___date_now_0.1.4.tgz";
- path = fetchurl {
- name = "date_now___date_now_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz";
- sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
- };
- }
-
- {
- name = "debug___debug_2.6.9.tgz";
- path = fetchurl {
- name = "debug___debug_2.6.9.tgz";
- url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
- sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
- };
- }
-
- {
- name = "debug___debug_3.1.0.tgz";
- path = fetchurl {
- name = "debug___debug_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz";
- sha1 = "5bb5a0672628b64149566ba16819e61518c67261";
- };
- }
-
- {
- name = "debug___debug_3.2.6.tgz";
- path = fetchurl {
- name = "debug___debug_3.2.6.tgz";
- url = "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz";
- sha1 = "e83d17de16d8a7efb7717edbe5fb10135eee629b";
- };
- }
-
- {
- name = "debug___debug_4.1.1.tgz";
- path = fetchurl {
- name = "debug___debug_4.1.1.tgz";
- url = "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz";
- sha1 = "3b72260255109c6b589cee050f1d516139664791";
- };
- }
-
- {
- name = "decamelize___decamelize_1.2.0.tgz";
- path = fetchurl {
- name = "decamelize___decamelize_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
- sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
- };
- }
-
- {
- name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
- path = fetchurl {
- name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
- sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
- };
- }
-
- {
- name = "deep_equal___deep_equal_1.0.1.tgz";
- path = fetchurl {
- name = "deep_equal___deep_equal_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz";
- sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5";
- };
- }
-
- {
- name = "deep_extend___deep_extend_0.5.1.tgz";
- path = fetchurl {
- name = "deep_extend___deep_extend_0.5.1.tgz";
- url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz";
- sha1 = "b894a9dd90d3023fbf1c55a394fb858eb2066f1f";
- };
- }
-
- {
- name = "deep_extend___deep_extend_0.6.0.tgz";
- path = fetchurl {
- name = "deep_extend___deep_extend_0.6.0.tgz";
- url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz";
- sha1 = "c4fa7c95404a17a9c3e8ca7e1537312b736330ac";
- };
- }
-
- {
- name = "deep_is___deep_is_0.1.3.tgz";
- path = fetchurl {
- name = "deep_is___deep_is_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz";
- sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
- };
- }
-
- {
- name = "default_gateway___default_gateway_4.2.0.tgz";
- path = fetchurl {
- name = "default_gateway___default_gateway_4.2.0.tgz";
- url = "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz";
- sha1 = "167104c7500c2115f6dd69b0a536bb8ed720552b";
- };
- }
-
- {
- name = "define_properties___define_properties_1.1.3.tgz";
- path = fetchurl {
- name = "define_properties___define_properties_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz";
- sha1 = "cf88da6cbee26fe6db7094f61d870cbd84cee9f1";
- };
- }
-
- {
- name = "define_property___define_property_0.2.5.tgz";
- path = fetchurl {
- name = "define_property___define_property_0.2.5.tgz";
- url = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz";
- sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
- };
- }
-
- {
- name = "define_property___define_property_1.0.0.tgz";
- path = fetchurl {
- name = "define_property___define_property_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz";
- sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
- };
- }
-
- {
- name = "define_property___define_property_2.0.2.tgz";
- path = fetchurl {
- name = "define_property___define_property_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz";
- sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d";
- };
- }
-
- {
- name = "del___del_4.1.1.tgz";
- path = fetchurl {
- name = "del___del_4.1.1.tgz";
- url = "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz";
- sha1 = "9e8f117222ea44a31ff3a156c049b99052a9f0b4";
- };
- }
-
- {
- name = "delayed_stream___delayed_stream_1.0.0.tgz";
- path = fetchurl {
- name = "delayed_stream___delayed_stream_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
- sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
- };
- }
-
- {
- name = "delegates___delegates_1.0.0.tgz";
- path = fetchurl {
- name = "delegates___delegates_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz";
- sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
- };
- }
-
- {
- name = "depd___depd_1.1.2.tgz";
- path = fetchurl {
- name = "depd___depd_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
- sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
- };
- }
-
- {
- name = "des.js___des.js_1.0.0.tgz";
- path = fetchurl {
- name = "des.js___des.js_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz";
- sha1 = "c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc";
- };
- }
-
- {
- name = "destroy___destroy_1.0.4.tgz";
- path = fetchurl {
- name = "destroy___destroy_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
- sha1 = "978857442c44749e4206613e37946205826abd80";
- };
- }
-
- {
- name = "detect_file___detect_file_1.0.0.tgz";
- path = fetchurl {
- name = "detect_file___detect_file_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz";
- sha1 = "f0d66d03672a825cb1b73bdb3fe62310c8e552b7";
- };
- }
-
- {
- name = "detect_libc___detect_libc_1.0.3.tgz";
- path = fetchurl {
- name = "detect_libc___detect_libc_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz";
- sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
- };
- }
-
- {
- name = "detect_newline___detect_newline_2.1.0.tgz";
- path = fetchurl {
- name = "detect_newline___detect_newline_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz";
- sha1 = "f41f1c10be4b00e87b5f13da680759f2c5bfd3e2";
- };
- }
-
- {
- name = "detect_node___detect_node_2.0.4.tgz";
- path = fetchurl {
- name = "detect_node___detect_node_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz";
- sha1 = "014ee8f8f669c5c58023da64b8179c083a28c46c";
- };
- }
-
- {
- name = "detect_passive_events___detect_passive_events_1.0.4.tgz";
- path = fetchurl {
- name = "detect_passive_events___detect_passive_events_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/detect-passive-events/-/detect-passive-events-1.0.4.tgz";
- sha1 = "6ed477e6e5bceb79079735dcd357789d37f9a91a";
- };
- }
-
- {
- name = "diff_sequences___diff_sequences_24.3.0.tgz";
- path = fetchurl {
- name = "diff_sequences___diff_sequences_24.3.0.tgz";
- url = "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz";
- sha1 = "0f20e8a1df1abddaf4d9c226680952e64118b975";
- };
- }
-
- {
- name = "diffie_hellman___diffie_hellman_5.0.3.tgz";
- path = fetchurl {
- name = "diffie_hellman___diffie_hellman_5.0.3.tgz";
- url = "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz";
- sha1 = "40e8ee98f55a2149607146921c63e1ae5f3d2875";
- };
- }
-
- {
- name = "discontinuous_range___discontinuous_range_1.0.0.tgz";
- path = fetchurl {
- name = "discontinuous_range___discontinuous_range_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz";
- sha1 = "e38331f0844bba49b9a9cb71c771585aab1bc65a";
- };
- }
-
- {
- name = "dns_equal___dns_equal_1.0.0.tgz";
- path = fetchurl {
- name = "dns_equal___dns_equal_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz";
- sha1 = "b39e7f1da6eb0a75ba9c17324b34753c47e0654d";
- };
- }
-
- {
- name = "dns_packet___dns_packet_1.3.1.tgz";
- path = fetchurl {
- name = "dns_packet___dns_packet_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz";
- sha1 = "12aa426981075be500b910eedcd0b47dd7deda5a";
- };
- }
-
- {
- name = "dns_txt___dns_txt_2.0.2.tgz";
- path = fetchurl {
- name = "dns_txt___dns_txt_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz";
- sha1 = "b91d806f5d27188e4ab3e7d107d881a1cc4642b6";
- };
- }
-
- {
- name = "doctrine___doctrine_1.5.0.tgz";
- path = fetchurl {
- name = "doctrine___doctrine_1.5.0.tgz";
- url = "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz";
- sha1 = "379dce730f6166f76cefa4e6707a159b02c5a6fa";
- };
- }
-
- {
- name = "doctrine___doctrine_2.1.0.tgz";
- path = fetchurl {
- name = "doctrine___doctrine_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz";
- sha1 = "5cd01fc101621b42c4cd7f5d1a66243716d3f39d";
- };
- }
-
- {
- name = "dom_helpers___dom_helpers_3.4.0.tgz";
- path = fetchurl {
- name = "dom_helpers___dom_helpers_3.4.0.tgz";
- url = "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz";
- sha1 = "e9b369700f959f62ecde5a6babde4bccd9169af8";
- };
- }
-
- {
- name = "dom_serializer___dom_serializer_0.1.0.tgz";
- path = fetchurl {
- name = "dom_serializer___dom_serializer_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz";
- sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
- };
- }
-
- {
- name = "domain_browser___domain_browser_1.2.0.tgz";
- path = fetchurl {
- name = "domain_browser___domain_browser_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz";
- sha1 = "3d31f50191a6749dd1375a7f522e823d42e54eda";
- };
- }
-
- {
- name = "domelementtype___domelementtype_1.3.1.tgz";
- path = fetchurl {
- name = "domelementtype___domelementtype_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz";
- sha1 = "d048c44b37b0d10a7f2a3d5fee3f4333d790481f";
- };
- }
-
- {
- name = "domelementtype___domelementtype_1.1.3.tgz";
- path = fetchurl {
- name = "domelementtype___domelementtype_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz";
- sha1 = "bd28773e2642881aec51544924299c5cd822185b";
- };
- }
-
- {
- name = "domexception___domexception_1.0.1.tgz";
- path = fetchurl {
- name = "domexception___domexception_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz";
- sha1 = "937442644ca6a31261ef36e3ec677fe805582c90";
- };
- }
-
- {
- name = "domhandler___domhandler_2.4.2.tgz";
- path = fetchurl {
- name = "domhandler___domhandler_2.4.2.tgz";
- url = "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz";
- sha1 = "8805097e933d65e85546f726d60f5eb88b44f803";
- };
- }
-
- {
- name = "domutils___domutils_1.5.1.tgz";
- path = fetchurl {
- name = "domutils___domutils_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz";
- sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
- };
- }
-
- {
- name = "domutils___domutils_1.7.0.tgz";
- path = fetchurl {
- name = "domutils___domutils_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz";
- sha1 = "56ea341e834e06e6748af7a1cb25da67ea9f8c2a";
- };
- }
-
- {
- name = "dot_prop___dot_prop_4.2.0.tgz";
- path = fetchurl {
- name = "dot_prop___dot_prop_4.2.0.tgz";
- url = "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz";
- sha1 = "1f19e0c2e1aa0e32797c49799f2837ac6af69c57";
- };
- }
-
- {
- name = "dotenv___dotenv_8.0.0.tgz";
- path = fetchurl {
- name = "dotenv___dotenv_8.0.0.tgz";
- url = "https://registry.yarnpkg.com/dotenv/-/dotenv-8.0.0.tgz";
- sha1 = "ed310c165b4e8a97bb745b0a9d99c31bda566440";
- };
- }
-
- {
- name = "double_ended_queue___double_ended_queue_2.1.0_0.tgz";
- path = fetchurl {
- name = "double_ended_queue___double_ended_queue_2.1.0_0.tgz";
- url = "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz";
- sha1 = "103d3527fd31528f40188130c841efdd78264e5c";
- };
- }
-
- {
- name = "duplexer___duplexer_0.1.1.tgz";
- path = fetchurl {
- name = "duplexer___duplexer_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz";
- sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1";
- };
- }
-
- {
- name = "duplexify___duplexify_3.6.1.tgz";
- path = fetchurl {
- name = "duplexify___duplexify_3.6.1.tgz";
- url = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz";
- sha1 = "b1a7a29c4abfd639585efaecce80d666b1e34125";
- };
- }
-
- {
- name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
- path = fetchurl {
- name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
- sha1 = "3a83a904e54353287874c564b7549386849a98c9";
- };
- }
-
- {
- name = "ee_first___ee_first_1.1.1.tgz";
- path = fetchurl {
- name = "ee_first___ee_first_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
- sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
- };
- }
-
- {
- name = "ejs___ejs_2.6.1.tgz";
- path = fetchurl {
- name = "ejs___ejs_2.6.1.tgz";
- url = "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz";
- sha1 = "498ec0d495655abc6f23cd61868d926464071aa0";
- };
- }
-
- {
- name = "electron_to_chromium___electron_to_chromium_1.3.163.tgz";
- path = fetchurl {
- name = "electron_to_chromium___electron_to_chromium_1.3.163.tgz";
- url = "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.163.tgz";
- sha1 = "7fc3d637f5d8fa4ca4a052cad0de7675bd98b911";
- };
- }
-
- {
- name = "elliptic___elliptic_6.4.1.tgz";
- path = fetchurl {
- name = "elliptic___elliptic_6.4.1.tgz";
- url = "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz";
- sha1 = "c2d0b7776911b86722c632c3c06c60f2f819939a";
- };
- }
-
- {
- name = "https___codeload.github.com_Gargron_emoji_mart_tar.gz_ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9";
- path = fetchurl {
- name = "https___codeload.github.com_Gargron_emoji_mart_tar.gz_ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9";
- url = "https://codeload.github.com/Gargron/emoji-mart/tar.gz/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9";
- sha1 = "4255dc41fa7df9c3a02c1595f058e248bc37b784";
- };
- }
-
- {
- name = "emoji_regex___emoji_regex_7.0.3.tgz";
- path = fetchurl {
- name = "emoji_regex___emoji_regex_7.0.3.tgz";
- url = "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz";
- sha1 = "933a04052860c85e83c122479c4748a8e4c72156";
- };
- }
-
- {
- name = "emojis_list___emojis_list_2.1.0.tgz";
- path = fetchurl {
- name = "emojis_list___emojis_list_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz";
- sha1 = "4daa4d9db00f9819880c79fa457ae5b09a1fd389";
- };
- }
-
- {
- name = "emotion___emotion_9.2.12.tgz";
- path = fetchurl {
- name = "emotion___emotion_9.2.12.tgz";
- url = "https://registry.yarnpkg.com/emotion/-/emotion-9.2.12.tgz";
- sha1 = "53925aaa005614e65c6e43db8243c843574d1ea9";
- };
- }
-
- {
- name = "encodeurl___encodeurl_1.0.2.tgz";
- path = fetchurl {
- name = "encodeurl___encodeurl_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
- sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
- };
- }
-
- {
- name = "encoding___encoding_0.1.12.tgz";
- path = fetchurl {
- name = "encoding___encoding_0.1.12.tgz";
- url = "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz";
- sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
- };
- }
-
- {
- name = "end_of_stream___end_of_stream_1.4.1.tgz";
- path = fetchurl {
- name = "end_of_stream___end_of_stream_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz";
- sha1 = "ed29634d19baba463b6ce6b80a37213eab71ec43";
- };
- }
-
- {
- name = "enhanced_resolve___enhanced_resolve_4.1.0.tgz";
- path = fetchurl {
- name = "enhanced_resolve___enhanced_resolve_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz";
- sha1 = "41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f";
- };
- }
-
- {
- name = "entities___entities_1.1.2.tgz";
- path = fetchurl {
- name = "entities___entities_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz";
- sha1 = "bdfa735299664dfafd34529ed4f8522a275fea56";
- };
- }
-
- {
- name = "enzyme_adapter_react_16___enzyme_adapter_react_16_1.14.0.tgz";
- path = fetchurl {
- name = "enzyme_adapter_react_16___enzyme_adapter_react_16_1.14.0.tgz";
- url = "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.14.0.tgz";
- sha1 = "204722b769172bcf096cb250d33e6795c1f1858f";
- };
- }
-
- {
- name = "enzyme_adapter_utils___enzyme_adapter_utils_1.12.0.tgz";
- path = fetchurl {
- name = "enzyme_adapter_utils___enzyme_adapter_utils_1.12.0.tgz";
- url = "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.12.0.tgz";
- sha1 = "96e3730d76b872f593e54ce1c51fa3a451422d93";
- };
- }
-
- {
- name = "enzyme___enzyme_3.10.0.tgz";
- path = fetchurl {
- name = "enzyme___enzyme_3.10.0.tgz";
- url = "https://registry.yarnpkg.com/enzyme/-/enzyme-3.10.0.tgz";
- sha1 = "7218e347c4a7746e133f8e964aada4a3523452f6";
- };
- }
-
- {
- name = "errno___errno_0.1.7.tgz";
- path = fetchurl {
- name = "errno___errno_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz";
- sha1 = "4684d71779ad39af177e3f007996f7c67c852618";
- };
- }
-
- {
- name = "error_ex___error_ex_1.3.2.tgz";
- path = fetchurl {
- name = "error_ex___error_ex_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz";
- sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf";
- };
- }
-
- {
- name = "es_abstract___es_abstract_1.12.0.tgz";
- path = fetchurl {
- name = "es_abstract___es_abstract_1.12.0.tgz";
- url = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz";
- sha1 = "9dbbdd27c6856f0001421ca18782d786bf8a6165";
- };
- }
-
- {
- name = "es_abstract___es_abstract_1.13.0.tgz";
- path = fetchurl {
- name = "es_abstract___es_abstract_1.13.0.tgz";
- url = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz";
- sha1 = "ac86145fdd5099d8dd49558ccba2eaf9b88e24e9";
- };
- }
-
- {
- name = "es_to_primitive___es_to_primitive_1.2.0.tgz";
- path = fetchurl {
- name = "es_to_primitive___es_to_primitive_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz";
- sha1 = "edf72478033456e8dda8ef09e00ad9650707f377";
- };
- }
-
- {
- name = "es5_ext___es5_ext_0.10.50.tgz";
- path = fetchurl {
- name = "es5_ext___es5_ext_0.10.50.tgz";
- url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz";
- sha1 = "6d0e23a0abdb27018e5ac4fd09b412bc5517a778";
- };
- }
-
- {
- name = "es5_ext___es5_ext_0.10.46.tgz";
- path = fetchurl {
- name = "es5_ext___es5_ext_0.10.46.tgz";
- url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz";
- sha1 = "efd99f67c5a7ec789baa3daa7f79870388f7f572";
- };
- }
-
- {
- name = "es6_iterator___es6_iterator_2.0.3.tgz";
- path = fetchurl {
- name = "es6_iterator___es6_iterator_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz";
- sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
- };
- }
-
- {
- name = "es6_map___es6_map_0.1.5.tgz";
- path = fetchurl {
- name = "es6_map___es6_map_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz";
- sha1 = "9136e0503dcc06a301690f0bb14ff4e364e949f0";
- };
- }
-
- {
- name = "es6_set___es6_set_0.1.5.tgz";
- path = fetchurl {
- name = "es6_set___es6_set_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz";
- sha1 = "d2b3ec5d4d800ced818db538d28974db0a73ccb1";
- };
- }
-
- {
- name = "es6_symbol___es6_symbol_3.1.1.tgz";
- path = fetchurl {
- name = "es6_symbol___es6_symbol_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz";
- sha1 = "bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77";
- };
- }
-
- {
- name = "es6_weak_map___es6_weak_map_2.0.2.tgz";
- path = fetchurl {
- name = "es6_weak_map___es6_weak_map_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz";
- sha1 = "5e3ab32251ffd1538a1f8e5ffa1357772f92d96f";
- };
- }
-
- {
- name = "escape_html___escape_html_1.0.3.tgz";
- path = fetchurl {
- name = "escape_html___escape_html_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
- sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
- };
- }
-
- {
- name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
- path = fetchurl {
- name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
- sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
- };
- }
-
- {
- name = "escodegen___escodegen_1.11.0.tgz";
- path = fetchurl {
- name = "escodegen___escodegen_1.11.0.tgz";
- url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz";
- sha1 = "b27a9389481d5bfd5bec76f7bb1eb3f8f4556589";
- };
- }
-
- {
- name = "escope___escope_3.6.0.tgz";
- path = fetchurl {
- name = "escope___escope_3.6.0.tgz";
- url = "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz";
- sha1 = "e01975e812781a163a6dadfdd80398dc64c889c3";
- };
- }
-
- {
- name = "eslint_import_resolver_node___eslint_import_resolver_node_0.3.2.tgz";
- path = fetchurl {
- name = "eslint_import_resolver_node___eslint_import_resolver_node_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz";
- sha1 = "58f15fb839b8d0576ca980413476aab2472db66a";
- };
- }
-
- {
- name = "eslint_module_utils___eslint_module_utils_2.4.0.tgz";
- path = fetchurl {
- name = "eslint_module_utils___eslint_module_utils_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz";
- sha1 = "8b93499e9b00eab80ccb6614e69f03678e84e09a";
- };
- }
-
- {
- name = "eslint_plugin_import___eslint_plugin_import_2.17.3.tgz";
- path = fetchurl {
- name = "eslint_plugin_import___eslint_plugin_import_2.17.3.tgz";
- url = "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz";
- sha1 = "00548b4434c18faebaba04b24ae6198f280de189";
- };
- }
-
- {
- name = "eslint_plugin_jsx_a11y___eslint_plugin_jsx_a11y_6.2.1.tgz";
- path = fetchurl {
- name = "eslint_plugin_jsx_a11y___eslint_plugin_jsx_a11y_6.2.1.tgz";
- url = "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz";
- sha1 = "4ebba9f339b600ff415ae4166e3e2e008831cf0c";
- };
- }
-
- {
- name = "eslint_plugin_promise___eslint_plugin_promise_4.1.1.tgz";
- path = fetchurl {
- name = "eslint_plugin_promise___eslint_plugin_promise_4.1.1.tgz";
- url = "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz";
- sha1 = "1e08cb68b5b2cd8839f8d5864c796f56d82746db";
- };
- }
-
- {
- name = "eslint_plugin_react___eslint_plugin_react_7.12.1.tgz";
- path = fetchurl {
- name = "eslint_plugin_react___eslint_plugin_react_7.12.1.tgz";
- url = "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.1.tgz";
- sha1 = "b9c4639f72469ff317ac31e3bd630d22d0dbf8f4";
- };
- }
-
- {
- name = "eslint_scope___eslint_scope_3.7.1.tgz";
- path = fetchurl {
- name = "eslint_scope___eslint_scope_3.7.1.tgz";
- url = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz";
- sha1 = "3d63c3edfda02e06e01a452ad88caacc7cdcb6e8";
- };
- }
-
- {
- name = "eslint_scope___eslint_scope_4.0.0.tgz";
- path = fetchurl {
- name = "eslint_scope___eslint_scope_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz";
- sha1 = "50bf3071e9338bcdc43331794a0cb533f0136172";
- };
- }
-
- {
- name = "eslint_utils___eslint_utils_1.3.1.tgz";
- path = fetchurl {
- name = "eslint_utils___eslint_utils_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz";
- sha1 = "9a851ba89ee7c460346f97cf8939c7298827e512";
- };
- }
-
- {
- name = "eslint_visitor_keys___eslint_visitor_keys_1.0.0.tgz";
- path = fetchurl {
- name = "eslint_visitor_keys___eslint_visitor_keys_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz";
- sha1 = "3f3180fb2e291017716acb4c9d6d5b5c34a6a81d";
- };
- }
-
- {
- name = "eslint___eslint_2.13.1.tgz";
- path = fetchurl {
- name = "eslint___eslint_2.13.1.tgz";
- url = "https://registry.yarnpkg.com/eslint/-/eslint-2.13.1.tgz";
- sha1 = "e4cc8fa0f009fb829aaae23855a29360be1f6c11";
- };
- }
-
- {
- name = "eslint___eslint_5.11.1.tgz";
- path = fetchurl {
- name = "eslint___eslint_5.11.1.tgz";
- url = "https://registry.yarnpkg.com/eslint/-/eslint-5.11.1.tgz";
- sha1 = "8deda83db9f354bf9d3f53f9677af7e0e13eadda";
- };
- }
-
- {
- name = "espree___espree_3.5.4.tgz";
- path = fetchurl {
- name = "espree___espree_3.5.4.tgz";
- url = "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz";
- sha1 = "b0f447187c8a8bed944b815a660bddf5deb5d1a7";
- };
- }
-
- {
- name = "espree___espree_5.0.0.tgz";
- path = fetchurl {
- name = "espree___espree_5.0.0.tgz";
- url = "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz";
- sha1 = "fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c";
- };
- }
-
- {
- name = "esprima___esprima_3.1.3.tgz";
- path = fetchurl {
- name = "esprima___esprima_3.1.3.tgz";
- url = "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz";
- sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
- };
- }
-
- {
- name = "esprima___esprima_4.0.1.tgz";
- path = fetchurl {
- name = "esprima___esprima_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz";
- sha1 = "13b04cdb3e6c5d19df91ab6987a8695619b0aa71";
- };
- }
-
- {
- name = "esquery___esquery_1.0.1.tgz";
- path = fetchurl {
- name = "esquery___esquery_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz";
- sha1 = "406c51658b1f5991a5f9b62b1dc25b00e3e5c708";
- };
- }
-
- {
- name = "esrecurse___esrecurse_4.2.1.tgz";
- path = fetchurl {
- name = "esrecurse___esrecurse_4.2.1.tgz";
- url = "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz";
- sha1 = "007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf";
- };
- }
-
- {
- name = "estraverse___estraverse_4.2.0.tgz";
- path = fetchurl {
- name = "estraverse___estraverse_4.2.0.tgz";
- url = "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz";
- sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
- };
- }
-
- {
- name = "esutils___esutils_2.0.2.tgz";
- path = fetchurl {
- name = "esutils___esutils_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz";
- sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
- };
- }
-
- {
- name = "etag___etag_1.8.1.tgz";
- path = fetchurl {
- name = "etag___etag_1.8.1.tgz";
- url = "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz";
- sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
- };
- }
-
- {
- name = "event_emitter___event_emitter_0.3.5.tgz";
- path = fetchurl {
- name = "event_emitter___event_emitter_0.3.5.tgz";
- url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz";
- sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39";
- };
- }
-
- {
- name = "eventemitter3___eventemitter3_3.1.0.tgz";
- path = fetchurl {
- name = "eventemitter3___eventemitter3_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz";
- sha1 = "090b4d6cdbd645ed10bf750d4b5407942d7ba163";
- };
- }
-
- {
- name = "events___events_1.1.1.tgz";
- path = fetchurl {
- name = "events___events_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz";
- sha1 = "9ebdb7635ad099c70dcc4c2a1f5004288e8bd924";
- };
- }
-
- {
- name = "eventsource___eventsource_1.0.7.tgz";
- path = fetchurl {
- name = "eventsource___eventsource_1.0.7.tgz";
- url = "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz";
- sha1 = "8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0";
- };
- }
-
- {
- name = "evp_bytestokey___evp_bytestokey_1.0.3.tgz";
- path = fetchurl {
- name = "evp_bytestokey___evp_bytestokey_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
- sha1 = "7fcbdb198dc71959432efe13842684e0525acb02";
- };
- }
-
- {
- name = "exec_sh___exec_sh_0.3.2.tgz";
- path = fetchurl {
- name = "exec_sh___exec_sh_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz";
- sha1 = "6738de2eb7c8e671d0366aea0b0db8c6f7d7391b";
- };
- }
-
- {
- name = "execa___execa_1.0.0.tgz";
- path = fetchurl {
- name = "execa___execa_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz";
- sha1 = "c6236a5bb4df6d6f15e88e7f017798216749ddd8";
- };
- }
-
- {
- name = "exif_js___exif_js_2.3.0.tgz";
- path = fetchurl {
- name = "exif_js___exif_js_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/exif-js/-/exif-js-2.3.0.tgz";
- sha1 = "9d10819bf571f873813e7640241255ab9ce1a814";
- };
- }
-
- {
- name = "exit_hook___exit_hook_1.1.1.tgz";
- path = fetchurl {
- name = "exit_hook___exit_hook_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz";
- sha1 = "f05ca233b48c05d54fff07765df8507e95c02ff8";
- };
- }
-
- {
- name = "exit___exit_0.1.2.tgz";
- path = fetchurl {
- name = "exit___exit_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz";
- sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c";
- };
- }
-
- {
- name = "expand_brackets___expand_brackets_2.1.4.tgz";
- path = fetchurl {
- name = "expand_brackets___expand_brackets_2.1.4.tgz";
- url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz";
- sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
- };
- }
-
- {
- name = "expand_tilde___expand_tilde_2.0.2.tgz";
- path = fetchurl {
- name = "expand_tilde___expand_tilde_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz";
- sha1 = "97e801aa052df02454de46b02bf621642cdc8502";
- };
- }
-
- {
- name = "expect___expect_24.8.0.tgz";
- path = fetchurl {
- name = "expect___expect_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz";
- sha1 = "471f8ec256b7b6129ca2524b2a62f030df38718d";
- };
- }
-
- {
- name = "express___express_4.17.1.tgz";
- path = fetchurl {
- name = "express___express_4.17.1.tgz";
- url = "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz";
- sha1 = "4491fc38605cf51f8629d39c2b5d026f98a4c134";
- };
- }
-
- {
- name = "extend_shallow___extend_shallow_2.0.1.tgz";
- path = fetchurl {
- name = "extend_shallow___extend_shallow_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz";
- sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
- };
- }
-
- {
- name = "extend_shallow___extend_shallow_3.0.2.tgz";
- path = fetchurl {
- name = "extend_shallow___extend_shallow_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz";
- sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
- };
- }
-
- {
- name = "extend___extend_3.0.2.tgz";
- path = fetchurl {
- name = "extend___extend_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
- sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
- };
- }
-
- {
- name = "external_editor___external_editor_3.0.3.tgz";
- path = fetchurl {
- name = "external_editor___external_editor_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz";
- sha1 = "5866db29a97826dbe4bf3afd24070ead9ea43a27";
- };
- }
-
- {
- name = "extglob___extglob_2.0.4.tgz";
- path = fetchurl {
- name = "extglob___extglob_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz";
- sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543";
- };
- }
-
- {
- name = "extsprintf___extsprintf_1.3.0.tgz";
- path = fetchurl {
- name = "extsprintf___extsprintf_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
- sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
- };
- }
-
- {
- name = "extsprintf___extsprintf_1.4.0.tgz";
- path = fetchurl {
- name = "extsprintf___extsprintf_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
- sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
- };
- }
-
- {
- name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz";
- path = fetchurl {
- name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz";
- sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
- };
- }
-
- {
- name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
- path = fetchurl {
- name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
- sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
- };
- }
-
- {
- name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
- path = fetchurl {
- name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
- sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
- };
- }
-
- {
- name = "faye_websocket___faye_websocket_0.10.0.tgz";
- path = fetchurl {
- name = "faye_websocket___faye_websocket_0.10.0.tgz";
- url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz";
- sha1 = "4e492f8d04dfb6f89003507f6edbf2d501e7c6f4";
- };
- }
-
- {
- name = "faye_websocket___faye_websocket_0.11.1.tgz";
- path = fetchurl {
- name = "faye_websocket___faye_websocket_0.11.1.tgz";
- url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz";
- sha1 = "f0efe18c4f56e4f40afc7e06c719fd5ee6188f38";
- };
- }
-
- {
- name = "fb_watchman___fb_watchman_2.0.0.tgz";
- path = fetchurl {
- name = "fb_watchman___fb_watchman_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz";
- sha1 = "54e9abf7dfa2f26cd9b1636c588c1afc05de5d58";
- };
- }
-
- {
- name = "fbjs___fbjs_0.8.17.tgz";
- path = fetchurl {
- name = "fbjs___fbjs_0.8.17.tgz";
- url = "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz";
- sha1 = "c4d598ead6949112653d6588b01a5cdcd9f90fdd";
- };
- }
-
- {
- name = "figgy_pudding___figgy_pudding_3.5.1.tgz";
- path = fetchurl {
- name = "figgy_pudding___figgy_pudding_3.5.1.tgz";
- url = "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz";
- sha1 = "862470112901c727a0e495a80744bd5baa1d6790";
- };
- }
-
- {
- name = "figures___figures_1.7.0.tgz";
- path = fetchurl {
- name = "figures___figures_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz";
- sha1 = "cbe1e3affcf1cd44b80cadfed28dc793a9701d2e";
- };
- }
-
- {
- name = "figures___figures_2.0.0.tgz";
- path = fetchurl {
- name = "figures___figures_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz";
- sha1 = "3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962";
- };
- }
-
- {
- name = "file_entry_cache___file_entry_cache_1.3.1.tgz";
- path = fetchurl {
- name = "file_entry_cache___file_entry_cache_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz";
- sha1 = "44c61ea607ae4be9c1402f41f44270cbfe334ff8";
- };
- }
-
- {
- name = "file_entry_cache___file_entry_cache_2.0.0.tgz";
- path = fetchurl {
- name = "file_entry_cache___file_entry_cache_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz";
- sha1 = "c392990c3e684783d838b8c84a45d8a048458361";
- };
- }
-
- {
- name = "file_loader___file_loader_4.0.0.tgz";
- path = fetchurl {
- name = "file_loader___file_loader_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/file-loader/-/file-loader-4.0.0.tgz";
- sha1 = "c3570783fefb6e1bc0978a856f4bf5825b966c2a";
- };
- }
-
- {
- name = "filesize___filesize_3.6.1.tgz";
- path = fetchurl {
- name = "filesize___filesize_3.6.1.tgz";
- url = "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz";
- sha1 = "090bb3ee01b6f801a8a8be99d31710b3422bb317";
- };
- }
-
- {
- name = "fill_range___fill_range_4.0.0.tgz";
- path = fetchurl {
- name = "fill_range___fill_range_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz";
- sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
- };
- }
-
- {
- name = "finalhandler___finalhandler_1.1.2.tgz";
- path = fetchurl {
- name = "finalhandler___finalhandler_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz";
- sha1 = "b7e7d000ffd11938d0fdb053506f6ebabe9f587d";
- };
- }
-
- {
- name = "find_cache_dir___find_cache_dir_2.0.0.tgz";
- path = fetchurl {
- name = "find_cache_dir___find_cache_dir_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz";
- sha1 = "4c1faed59f45184530fb9d7fa123a4d04a98472d";
- };
- }
-
- {
- name = "find_root___find_root_1.1.0.tgz";
- path = fetchurl {
- name = "find_root___find_root_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz";
- sha1 = "abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4";
- };
- }
-
- {
- name = "find_up___find_up_2.1.0.tgz";
- path = fetchurl {
- name = "find_up___find_up_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz";
- sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
- };
- }
-
- {
- name = "find_up___find_up_3.0.0.tgz";
- path = fetchurl {
- name = "find_up___find_up_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz";
- sha1 = "49169f1d7993430646da61ecc5ae355c21c97b73";
- };
- }
-
- {
- name = "findup_sync___findup_sync_2.0.0.tgz";
- path = fetchurl {
- name = "findup_sync___findup_sync_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz";
- sha1 = "9326b1488c22d1a6088650a86901b2d9a90a2cbc";
- };
- }
-
- {
- name = "flat_cache___flat_cache_1.3.4.tgz";
- path = fetchurl {
- name = "flat_cache___flat_cache_1.3.4.tgz";
- url = "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz";
- sha1 = "2c2ef77525cc2929007dfffa1dd314aa9c9dee6f";
- };
- }
-
- {
- name = "flush_write_stream___flush_write_stream_1.0.3.tgz";
- path = fetchurl {
- name = "flush_write_stream___flush_write_stream_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz";
- sha1 = "c5d586ef38af6097650b49bc41b55fabb19f35bd";
- };
- }
-
- {
- name = "follow_redirects___follow_redirects_1.5.10.tgz";
- path = fetchurl {
- name = "follow_redirects___follow_redirects_1.5.10.tgz";
- url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz";
- sha1 = "7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a";
- };
- }
-
- {
- name = "follow_redirects___follow_redirects_1.6.0.tgz";
- path = fetchurl {
- name = "follow_redirects___follow_redirects_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.0.tgz";
- sha1 = "d12452c031e8c67eb6637d861bfc7a8090167933";
- };
- }
-
- {
- name = "font_awesome___font_awesome_4.7.0.tgz";
- path = fetchurl {
- name = "font_awesome___font_awesome_4.7.0.tgz";
- url = "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz";
- sha1 = "8fa8cf0411a1a31afd07b06d2902bb9fc815a133";
- };
- }
-
- {
- name = "for_in___for_in_0.1.8.tgz";
- path = fetchurl {
- name = "for_in___for_in_0.1.8.tgz";
- url = "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz";
- sha1 = "d8773908e31256109952b1fdb9b3fa867d2775e1";
- };
- }
-
- {
- name = "for_in___for_in_1.0.2.tgz";
- path = fetchurl {
- name = "for_in___for_in_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz";
- sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
- };
- }
-
- {
- name = "for_own___for_own_1.0.0.tgz";
- path = fetchurl {
- name = "for_own___for_own_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz";
- sha1 = "c63332f415cedc4b04dbfe70cf836494c53cb44b";
- };
- }
-
- {
- name = "forever_agent___forever_agent_0.6.1.tgz";
- path = fetchurl {
- name = "forever_agent___forever_agent_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
- sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
- };
- }
-
- {
- name = "form_data___form_data_2.3.3.tgz";
- path = fetchurl {
- name = "form_data___form_data_2.3.3.tgz";
- url = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz";
- sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
- };
- }
-
- {
- name = "forwarded___forwarded_0.1.2.tgz";
- path = fetchurl {
- name = "forwarded___forwarded_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz";
- sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
- };
- }
-
- {
- name = "fragment_cache___fragment_cache_0.2.1.tgz";
- path = fetchurl {
- name = "fragment_cache___fragment_cache_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz";
- sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
- };
- }
-
- {
- name = "fresh___fresh_0.5.2.tgz";
- path = fetchurl {
- name = "fresh___fresh_0.5.2.tgz";
- url = "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz";
- sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
- };
- }
-
- {
- name = "from2___from2_2.3.0.tgz";
- path = fetchurl {
- name = "from2___from2_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz";
- sha1 = "8bfb5502bde4a4d36cfdeea007fcca21d7e382af";
- };
- }
-
- {
- name = "front_matter___front_matter_2.1.2.tgz";
- path = fetchurl {
- name = "front_matter___front_matter_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz";
- sha1 = "f75983b9f2f413be658c93dfd7bd8ce4078f5cdb";
- };
- }
-
- {
- name = "fs_extra___fs_extra_3.0.1.tgz";
- path = fetchurl {
- name = "fs_extra___fs_extra_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz";
- sha1 = "3794f378c58b342ea7dbbb23095109c4b3b62291";
- };
- }
-
- {
- name = "fs_extra___fs_extra_8.0.1.tgz";
- path = fetchurl {
- name = "fs_extra___fs_extra_8.0.1.tgz";
- url = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.0.1.tgz";
- sha1 = "90294081f978b1f182f347a440a209154344285b";
- };
- }
-
- {
- name = "fs_minipass___fs_minipass_1.2.5.tgz";
- path = fetchurl {
- name = "fs_minipass___fs_minipass_1.2.5.tgz";
- url = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz";
- sha1 = "06c277218454ec288df77ada54a03b8702aacb9d";
- };
- }
-
- {
- name = "fs_write_stream_atomic___fs_write_stream_atomic_1.0.10.tgz";
- path = fetchurl {
- name = "fs_write_stream_atomic___fs_write_stream_atomic_1.0.10.tgz";
- url = "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz";
- sha1 = "b47df53493ef911df75731e70a9ded0189db40c9";
- };
- }
-
- {
- name = "fs.realpath___fs.realpath_1.0.0.tgz";
- path = fetchurl {
- name = "fs.realpath___fs.realpath_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
- sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
- };
- }
-
- {
- name = "fsevents___fsevents_1.2.9.tgz";
- path = fetchurl {
- name = "fsevents___fsevents_1.2.9.tgz";
- url = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz";
- sha1 = "3f5ed66583ccd6f400b5a00db6f7e861363e388f";
- };
- }
-
- {
- name = "function_bind___function_bind_1.1.1.tgz";
- path = fetchurl {
- name = "function_bind___function_bind_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
- sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
- };
- }
-
- {
- name = "function.prototype.name___function.prototype.name_1.1.0.tgz";
- path = fetchurl {
- name = "function.prototype.name___function.prototype.name_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz";
- sha1 = "8bd763cc0af860a859cc5d49384d74b932cd2327";
- };
- }
-
- {
- name = "functional_red_black_tree___functional_red_black_tree_1.0.1.tgz";
- path = fetchurl {
- name = "functional_red_black_tree___functional_red_black_tree_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz";
- sha1 = "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327";
- };
- }
-
- {
- name = "gauge___gauge_2.7.4.tgz";
- path = fetchurl {
- name = "gauge___gauge_2.7.4.tgz";
- url = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz";
- sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
- };
- }
-
- {
- name = "generate_function___generate_function_2.3.1.tgz";
- path = fetchurl {
- name = "generate_function___generate_function_2.3.1.tgz";
- url = "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz";
- sha1 = "f069617690c10c868e73b8465746764f97c3479f";
- };
- }
-
- {
- name = "generate_object_property___generate_object_property_1.2.0.tgz";
- path = fetchurl {
- name = "generate_object_property___generate_object_property_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz";
- sha1 = "9c0e1c40308ce804f4783618b937fa88f99d50d0";
- };
- }
-
- {
- name = "generic_pool___generic_pool_2.4.3.tgz";
- path = fetchurl {
- name = "generic_pool___generic_pool_2.4.3.tgz";
- url = "https://registry.yarnpkg.com/generic-pool/-/generic-pool-2.4.3.tgz";
- sha1 = "780c36f69dfad05a5a045dd37be7adca11a4f6ff";
- };
- }
-
- {
- name = "get_caller_file___get_caller_file_1.0.3.tgz";
- path = fetchurl {
- name = "get_caller_file___get_caller_file_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz";
- sha1 = "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a";
- };
- }
-
- {
- name = "get_stream___get_stream_4.1.0.tgz";
- path = fetchurl {
- name = "get_stream___get_stream_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz";
- sha1 = "c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5";
- };
- }
-
- {
- name = "get_value___get_value_2.0.6.tgz";
- path = fetchurl {
- name = "get_value___get_value_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz";
- sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
- };
- }
-
- {
- name = "getpass___getpass_0.1.7.tgz";
- path = fetchurl {
- name = "getpass___getpass_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
- sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
- };
- }
-
- {
- name = "glob_parent___glob_parent_3.1.0.tgz";
- path = fetchurl {
- name = "glob_parent___glob_parent_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz";
- sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae";
- };
- }
-
- {
- name = "glob___glob_7.1.4.tgz";
- path = fetchurl {
- name = "glob___glob_7.1.4.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz";
- sha1 = "aa608a2f6c577ad357e1ae5a5c26d9a8d1969255";
- };
- }
-
- {
- name = "glob___glob_7.1.3.tgz";
- path = fetchurl {
- name = "glob___glob_7.1.3.tgz";
- url = "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz";
- sha1 = "3960832d3f1574108342dafd3a67b332c0969df1";
- };
- }
-
- {
- name = "global_modules___global_modules_1.0.0.tgz";
- path = fetchurl {
- name = "global_modules___global_modules_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz";
- sha1 = "6d770f0eb523ac78164d72b5e71a8877265cc3ea";
- };
- }
-
- {
- name = "global_prefix___global_prefix_1.0.2.tgz";
- path = fetchurl {
- name = "global_prefix___global_prefix_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz";
- sha1 = "dbf743c6c14992593c655568cb66ed32c0122ebe";
- };
- }
-
- {
- name = "globals___globals_11.12.0.tgz";
- path = fetchurl {
- name = "globals___globals_11.12.0.tgz";
- url = "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz";
- sha1 = "ab8795338868a0babd8525758018c2a7eb95c42e";
- };
- }
-
- {
- name = "globals___globals_11.9.0.tgz";
- path = fetchurl {
- name = "globals___globals_11.9.0.tgz";
- url = "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz";
- sha1 = "bde236808e987f290768a93d065060d78e6ab249";
- };
- }
-
- {
- name = "globals___globals_9.18.0.tgz";
- path = fetchurl {
- name = "globals___globals_9.18.0.tgz";
- url = "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz";
- sha1 = "aa3896b3e69b487f17e31ed2143d69a8e30c2d8a";
- };
- }
-
- {
- name = "globby___globby_6.1.0.tgz";
- path = fetchurl {
- name = "globby___globby_6.1.0.tgz";
- url = "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz";
- sha1 = "f5a6d70e8395e21c858fb0489d64df02424d506c";
- };
- }
-
- {
- name = "globule___globule_1.2.1.tgz";
- path = fetchurl {
- name = "globule___globule_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz";
- sha1 = "5dffb1b191f22d20797a9369b49eab4e9839696d";
- };
- }
-
- {
- name = "gonzales_pe_sl___gonzales_pe_sl_4.2.3.tgz";
- path = fetchurl {
- name = "gonzales_pe_sl___gonzales_pe_sl_4.2.3.tgz";
- url = "https://registry.yarnpkg.com/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz";
- sha1 = "6a868bc380645f141feeb042c6f97fcc71b59fe6";
- };
- }
-
- {
- name = "graceful_fs___graceful_fs_4.1.15.tgz";
- path = fetchurl {
- name = "graceful_fs___graceful_fs_4.1.15.tgz";
- url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz";
- sha1 = "ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00";
- };
- }
-
- {
- name = "growly___growly_1.3.0.tgz";
- path = fetchurl {
- name = "growly___growly_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz";
- sha1 = "f10748cbe76af964b7c96c93c6bcc28af120c081";
- };
- }
-
- {
- name = "gzip_size___gzip_size_5.0.0.tgz";
- path = fetchurl {
- name = "gzip_size___gzip_size_5.0.0.tgz";
- url = "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz";
- sha1 = "a55ecd99222f4c48fd8c01c625ce3b349d0a0e80";
- };
- }
-
- {
- name = "handle_thing___handle_thing_2.0.0.tgz";
- path = fetchurl {
- name = "handle_thing___handle_thing_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz";
- sha1 = "0e039695ff50c93fc288557d696f3c1dc6776754";
- };
- }
-
- {
- name = "handlebars___handlebars_4.1.0.tgz";
- path = fetchurl {
- name = "handlebars___handlebars_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz";
- sha1 = "0d6a6f34ff1f63cecec8423aa4169827bf787c3a";
- };
- }
-
- {
- name = "har_schema___har_schema_2.0.0.tgz";
- path = fetchurl {
- name = "har_schema___har_schema_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
- sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
- };
- }
-
- {
- name = "har_validator___har_validator_5.1.3.tgz";
- path = fetchurl {
- name = "har_validator___har_validator_5.1.3.tgz";
- url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz";
- sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
- };
- }
-
- {
- name = "has_ansi___has_ansi_2.0.0.tgz";
- path = fetchurl {
- name = "has_ansi___has_ansi_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz";
- sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
- };
- }
-
- {
- name = "has_flag___has_flag_1.0.0.tgz";
- path = fetchurl {
- name = "has_flag___has_flag_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz";
- sha1 = "9d9e793165ce017a00f00418c43f942a7b1d11fa";
- };
- }
-
- {
- name = "has_flag___has_flag_3.0.0.tgz";
- path = fetchurl {
- name = "has_flag___has_flag_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz";
- sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
- };
- }
-
- {
- name = "has_symbols___has_symbols_1.0.0.tgz";
- path = fetchurl {
- name = "has_symbols___has_symbols_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz";
- sha1 = "ba1a8f1af2a0fc39650f5c850367704122063b44";
- };
- }
-
- {
- name = "has_unicode___has_unicode_2.0.1.tgz";
- path = fetchurl {
- name = "has_unicode___has_unicode_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz";
- sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
- };
- }
-
- {
- name = "has_value___has_value_0.3.1.tgz";
- path = fetchurl {
- name = "has_value___has_value_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz";
- sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
- };
- }
-
- {
- name = "has_value___has_value_1.0.0.tgz";
- path = fetchurl {
- name = "has_value___has_value_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz";
- sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
- };
- }
-
- {
- name = "has_values___has_values_0.1.4.tgz";
- path = fetchurl {
- name = "has_values___has_values_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz";
- sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
- };
- }
-
- {
- name = "has_values___has_values_1.0.0.tgz";
- path = fetchurl {
- name = "has_values___has_values_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz";
- sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
- };
- }
-
- {
- name = "has___has_1.0.3.tgz";
- path = fetchurl {
- name = "has___has_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
- sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
- };
- }
-
- {
- name = "hash_base___hash_base_3.0.4.tgz";
- path = fetchurl {
- name = "hash_base___hash_base_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz";
- sha1 = "5fc8686847ecd73499403319a6b0a3f3f6ae4918";
- };
- }
-
- {
- name = "hash.js___hash.js_1.1.7.tgz";
- path = fetchurl {
- name = "hash.js___hash.js_1.1.7.tgz";
- url = "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz";
- sha1 = "0babca538e8d4ee4a0f8988d68866537a003cf42";
- };
- }
-
- {
- name = "hex_color_regex___hex_color_regex_1.1.0.tgz";
- path = fetchurl {
- name = "hex_color_regex___hex_color_regex_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz";
- sha1 = "4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e";
- };
- }
-
- {
- name = "history___history_4.7.2.tgz";
- path = fetchurl {
- name = "history___history_4.7.2.tgz";
- url = "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz";
- sha1 = "22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b";
- };
- }
-
- {
- name = "hmac_drbg___hmac_drbg_1.0.1.tgz";
- path = fetchurl {
- name = "hmac_drbg___hmac_drbg_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
- sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1";
- };
- }
-
- {
- name = "hoist_non_react_statics___hoist_non_react_statics_2.5.5.tgz";
- path = fetchurl {
- name = "hoist_non_react_statics___hoist_non_react_statics_2.5.5.tgz";
- url = "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz";
- sha1 = "c5903cf409c0dfd908f388e619d86b9c1174cb47";
- };
- }
-
- {
- name = "hoist_non_react_statics___hoist_non_react_statics_3.3.0.tgz";
- path = fetchurl {
- name = "hoist_non_react_statics___hoist_non_react_statics_3.3.0.tgz";
- url = "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz";
- sha1 = "b09178f0122184fb95acf525daaecb4d8f45958b";
- };
- }
-
- {
- name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz";
- path = fetchurl {
- name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz";
- sha1 = "743298cef4e5af3e194161fbadcc2151d3a058e8";
- };
- }
-
- {
- name = "hoopy___hoopy_0.1.4.tgz";
- path = fetchurl {
- name = "hoopy___hoopy_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz";
- sha1 = "609207d661100033a9a9402ad3dea677381c1b1d";
- };
- }
-
- {
- name = "hosted_git_info___hosted_git_info_2.7.1.tgz";
- path = fetchurl {
- name = "hosted_git_info___hosted_git_info_2.7.1.tgz";
- url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz";
- sha1 = "97f236977bd6e125408930ff6de3eec6281ec047";
- };
- }
-
- {
- name = "hpack.js___hpack.js_2.1.6.tgz";
- path = fetchurl {
- name = "hpack.js___hpack.js_2.1.6.tgz";
- url = "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz";
- sha1 = "87774c0949e513f42e84575b3c45681fade2a0b2";
- };
- }
-
- {
- name = "hsl_regex___hsl_regex_1.0.0.tgz";
- path = fetchurl {
- name = "hsl_regex___hsl_regex_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz";
- sha1 = "d49330c789ed819e276a4c0d272dffa30b18fe6e";
- };
- }
-
- {
- name = "hsla_regex___hsla_regex_1.0.0.tgz";
- path = fetchurl {
- name = "hsla_regex___hsla_regex_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz";
- sha1 = "c1ce7a3168c8c6614033a4b5f7877f3b225f9c38";
- };
- }
-
- {
- name = "html_comment_regex___html_comment_regex_1.1.2.tgz";
- path = fetchurl {
- name = "html_comment_regex___html_comment_regex_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz";
- sha1 = "97d4688aeb5c81886a364faa0cad1dda14d433a7";
- };
- }
-
- {
- name = "html_element_map___html_element_map_1.0.1.tgz";
- path = fetchurl {
- name = "html_element_map___html_element_map_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.0.1.tgz";
- sha1 = "3c4fcb4874ebddfe4283b51c8994e7713782b592";
- };
- }
-
- {
- name = "html_encoding_sniffer___html_encoding_sniffer_1.0.2.tgz";
- path = fetchurl {
- name = "html_encoding_sniffer___html_encoding_sniffer_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz";
- sha1 = "e70d84b94da53aa375e11fe3a351be6642ca46f8";
- };
- }
-
- {
- name = "html_entities___html_entities_1.2.1.tgz";
- path = fetchurl {
- name = "html_entities___html_entities_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz";
- sha1 = "0df29351f0721163515dfb9e5543e5f6eed5162f";
- };
- }
-
- {
- name = "htmlparser2___htmlparser2_3.10.0.tgz";
- path = fetchurl {
- name = "htmlparser2___htmlparser2_3.10.0.tgz";
- url = "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz";
- sha1 = "5f5e422dcf6119c0d983ed36260ce9ded0bee464";
- };
- }
-
- {
- name = "http_deceiver___http_deceiver_1.2.7.tgz";
- path = fetchurl {
- name = "http_deceiver___http_deceiver_1.2.7.tgz";
- url = "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz";
- sha1 = "fa7168944ab9a519d337cb0bec7284dc3e723d87";
- };
- }
-
- {
- name = "http_errors___http_errors_1.7.2.tgz";
- path = fetchurl {
- name = "http_errors___http_errors_1.7.2.tgz";
- url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz";
- sha1 = "4f5029cf13239f31036e5b2e55292bcfbcc85c8f";
- };
- }
-
- {
- name = "http_errors___http_errors_1.6.3.tgz";
- path = fetchurl {
- name = "http_errors___http_errors_1.6.3.tgz";
- url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz";
- sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
- };
- }
-
- {
- name = "http_link_header___http_link_header_1.0.2.tgz";
- path = fetchurl {
- name = "http_link_header___http_link_header_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/http-link-header/-/http-link-header-1.0.2.tgz";
- sha1 = "bea50f02e1c7996021f1013b428c63f77e0f4e11";
- };
- }
-
- {
- name = "http_parser_js___http_parser_js_0.5.0.tgz";
- path = fetchurl {
- name = "http_parser_js___http_parser_js_0.5.0.tgz";
- url = "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz";
- sha1 = "d65edbede84349d0dc30320815a15d39cc3cbbd8";
- };
- }
-
- {
- name = "http_proxy_middleware___http_proxy_middleware_0.19.1.tgz";
- path = fetchurl {
- name = "http_proxy_middleware___http_proxy_middleware_0.19.1.tgz";
- url = "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz";
- sha1 = "183c7dc4aa1479150306498c210cdaf96080a43a";
- };
- }
-
- {
- name = "http_proxy___http_proxy_1.17.0.tgz";
- path = fetchurl {
- name = "http_proxy___http_proxy_1.17.0.tgz";
- url = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz";
- sha1 = "7ad38494658f84605e2f6db4436df410f4e5be9a";
- };
- }
-
- {
- name = "http_signature___http_signature_1.2.0.tgz";
- path = fetchurl {
- name = "http_signature___http_signature_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
- sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
- };
- }
-
- {
- name = "https_browserify___https_browserify_1.0.0.tgz";
- path = fetchurl {
- name = "https_browserify___https_browserify_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz";
- sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73";
- };
- }
-
- {
- name = "iconv_lite___iconv_lite_0.4.24.tgz";
- path = fetchurl {
- name = "iconv_lite___iconv_lite_0.4.24.tgz";
- url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz";
- sha1 = "2022b4b25fbddc21d2f524974a474aafe733908b";
- };
- }
-
- {
- name = "icss_replace_symbols___icss_replace_symbols_1.1.0.tgz";
- path = fetchurl {
- name = "icss_replace_symbols___icss_replace_symbols_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz";
- sha1 = "06ea6f83679a7749e386cfe1fe812ae5db223ded";
- };
- }
-
- {
- name = "icss_utils___icss_utils_4.1.0.tgz";
- path = fetchurl {
- name = "icss_utils___icss_utils_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.0.tgz";
- sha1 = "339dbbffb9f8729a243b701e1c29d4cc58c52f0e";
- };
- }
-
- {
- name = "ieee754___ieee754_1.1.12.tgz";
- path = fetchurl {
- name = "ieee754___ieee754_1.1.12.tgz";
- url = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz";
- sha1 = "50bf24e5b9c8bb98af4964c941cdb0918da7b60b";
- };
- }
-
- {
- name = "iferr___iferr_0.1.5.tgz";
- path = fetchurl {
- name = "iferr___iferr_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz";
- sha1 = "c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501";
- };
- }
-
- {
- name = "ignore_walk___ignore_walk_3.0.1.tgz";
- path = fetchurl {
- name = "ignore_walk___ignore_walk_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz";
- sha1 = "a83e62e7d272ac0e3b551aaa82831a19b69f82f8";
- };
- }
-
- {
- name = "ignore___ignore_3.3.10.tgz";
- path = fetchurl {
- name = "ignore___ignore_3.3.10.tgz";
- url = "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz";
- sha1 = "0a97fb876986e8081c631160f8f9f389157f0043";
- };
- }
-
- {
- name = "ignore___ignore_4.0.6.tgz";
- path = fetchurl {
- name = "ignore___ignore_4.0.6.tgz";
- url = "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz";
- sha1 = "750e3db5862087b4737ebac8207ffd1ef27b25fc";
- };
- }
-
- {
- name = "immutable___immutable_3.8.2.tgz";
- path = fetchurl {
- name = "immutable___immutable_3.8.2.tgz";
- url = "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz";
- sha1 = "c2439951455bb39913daf281376f1530e104adf3";
- };
- }
-
- {
- name = "import_cwd___import_cwd_2.1.0.tgz";
- path = fetchurl {
- name = "import_cwd___import_cwd_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz";
- sha1 = "aa6cf36e722761285cb371ec6519f53e2435b0a9";
- };
- }
-
- {
- name = "import_fresh___import_fresh_2.0.0.tgz";
- path = fetchurl {
- name = "import_fresh___import_fresh_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz";
- sha1 = "d81355c15612d386c61f9ddd3922d4304822a546";
- };
- }
-
- {
- name = "import_from___import_from_2.1.0.tgz";
- path = fetchurl {
- name = "import_from___import_from_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz";
- sha1 = "335db7f2a7affd53aaa471d4b8021dee36b7f3b1";
- };
- }
-
- {
- name = "import_local___import_local_2.0.0.tgz";
- path = fetchurl {
- name = "import_local___import_local_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz";
- sha1 = "55070be38a5993cf18ef6db7e961f5bee5c5a09d";
- };
- }
-
- {
- name = "imports_loader___imports_loader_0.8.0.tgz";
- path = fetchurl {
- name = "imports_loader___imports_loader_0.8.0.tgz";
- url = "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.8.0.tgz";
- sha1 = "030ea51b8ca05977c40a3abfd9b4088fe0be9a69";
- };
- }
-
- {
- name = "imurmurhash___imurmurhash_0.1.4.tgz";
- path = fetchurl {
- name = "imurmurhash___imurmurhash_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz";
- sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
- };
- }
-
- {
- name = "indexes_of___indexes_of_1.0.1.tgz";
- path = fetchurl {
- name = "indexes_of___indexes_of_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz";
- sha1 = "f30f716c8e2bd346c7b67d3df3915566a7c05607";
- };
- }
-
- {
- name = "indexof___indexof_0.0.1.tgz";
- path = fetchurl {
- name = "indexof___indexof_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz";
- sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
- };
- }
-
- {
- name = "inflight___inflight_1.0.6.tgz";
- path = fetchurl {
- name = "inflight___inflight_1.0.6.tgz";
- url = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
- sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
- };
- }
-
- {
- name = "inherits___inherits_2.0.3.tgz";
- path = fetchurl {
- name = "inherits___inherits_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
- sha1 = "633c2c83e3da42a502f52466022480f4208261de";
- };
- }
-
- {
- name = "inherits___inherits_2.0.1.tgz";
- path = fetchurl {
- name = "inherits___inherits_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz";
- sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
- };
- }
-
- {
- name = "ini___ini_1.3.5.tgz";
- path = fetchurl {
- name = "ini___ini_1.3.5.tgz";
- url = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz";
- sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927";
- };
- }
-
- {
- name = "inquirer___inquirer_0.12.0.tgz";
- path = fetchurl {
- name = "inquirer___inquirer_0.12.0.tgz";
- url = "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz";
- sha1 = "1ef2bfd63504df0bc75785fff8c2c41df12f077e";
- };
- }
-
- {
- name = "inquirer___inquirer_6.2.1.tgz";
- path = fetchurl {
- name = "inquirer___inquirer_6.2.1.tgz";
- url = "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz";
- sha1 = "9943fc4882161bdb0b0c9276769c75b32dbfcd52";
- };
- }
-
- {
- name = "internal_ip___internal_ip_4.3.0.tgz";
- path = fetchurl {
- name = "internal_ip___internal_ip_4.3.0.tgz";
- url = "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz";
- sha1 = "845452baad9d2ca3b69c635a137acb9a0dad0907";
- };
- }
-
- {
- name = "interpret___interpret_1.2.0.tgz";
- path = fetchurl {
- name = "interpret___interpret_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz";
- sha1 = "d5061a6224be58e8083985f5014d844359576296";
- };
- }
-
- {
- name = "intersection_observer___intersection_observer_0.7.0.tgz";
- path = fetchurl {
- name = "intersection_observer___intersection_observer_0.7.0.tgz";
- url = "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.7.0.tgz";
- sha1 = "ee16bee978db53516ead2f0a8154b09b400bbdc9";
- };
- }
-
- {
- name = "intl_format_cache___intl_format_cache_2.1.0.tgz";
- path = fetchurl {
- name = "intl_format_cache___intl_format_cache_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.1.0.tgz";
- sha1 = "04a369fecbfad6da6005bae1f14333332dcf9316";
- };
- }
-
- {
- name = "intl_messageformat_parser___intl_messageformat_parser_1.4.0.tgz";
- path = fetchurl {
- name = "intl_messageformat_parser___intl_messageformat_parser_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz";
- sha1 = "b43d45a97468cadbe44331d74bb1e8dea44fc075";
- };
- }
-
- {
- name = "intl_messageformat_parser___intl_messageformat_parser_1.6.5.tgz";
- path = fetchurl {
- name = "intl_messageformat_parser___intl_messageformat_parser_1.6.5.tgz";
- url = "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.6.5.tgz";
- sha1 = "40f5fc19855f203389a3fc926cc3c88d7a573496";
- };
- }
-
- {
- name = "intl_messageformat___intl_messageformat_2.2.0.tgz";
- path = fetchurl {
- name = "intl_messageformat___intl_messageformat_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-2.2.0.tgz";
- sha1 = "345bcd46de630b7683330c2e52177ff5eab484fc";
- };
- }
-
- {
- name = "intl_relativeformat___intl_relativeformat_2.2.0.tgz";
- path = fetchurl {
- name = "intl_relativeformat___intl_relativeformat_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/intl-relativeformat/-/intl-relativeformat-2.2.0.tgz";
- sha1 = "6aca95d019ec8d30b6c5653b6629f9983ea5b6c5";
- };
- }
-
- {
- name = "intl___intl_1.2.5.tgz";
- path = fetchurl {
- name = "intl___intl_1.2.5.tgz";
- url = "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz";
- sha1 = "82244a2190c4e419f8371f5aa34daa3420e2abde";
- };
- }
-
- {
- name = "invariant___invariant_2.2.4.tgz";
- path = fetchurl {
- name = "invariant___invariant_2.2.4.tgz";
- url = "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz";
- sha1 = "610f3c92c9359ce1db616e538008d23ff35158e6";
- };
- }
-
- {
- name = "invert_kv___invert_kv_2.0.0.tgz";
- path = fetchurl {
- name = "invert_kv___invert_kv_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz";
- sha1 = "7393f5afa59ec9ff5f67a27620d11c226e3eec02";
- };
- }
-
- {
- name = "ip_regex___ip_regex_2.1.0.tgz";
- path = fetchurl {
- name = "ip_regex___ip_regex_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz";
- sha1 = "fa78bf5d2e6913c911ce9f819ee5146bb6d844e9";
- };
- }
-
- {
- name = "ip___ip_1.1.5.tgz";
- path = fetchurl {
- name = "ip___ip_1.1.5.tgz";
- url = "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz";
- sha1 = "bdded70114290828c0a039e72ef25f5aaec4354a";
- };
- }
-
- {
- name = "ipaddr.js___ipaddr.js_1.9.0.tgz";
- path = fetchurl {
- name = "ipaddr.js___ipaddr.js_1.9.0.tgz";
- url = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz";
- sha1 = "37df74e430a0e47550fe54a2defe30d8acd95f65";
- };
- }
-
- {
- name = "is_absolute_url___is_absolute_url_2.1.0.tgz";
- path = fetchurl {
- name = "is_absolute_url___is_absolute_url_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz";
- sha1 = "50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6";
- };
- }
-
- {
- name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
- path = fetchurl {
- name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
- url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
- sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
- };
- }
-
- {
- name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
- path = fetchurl {
- name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
- sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656";
- };
- }
-
- {
- name = "is_arrayish___is_arrayish_0.2.1.tgz";
- path = fetchurl {
- name = "is_arrayish___is_arrayish_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
- sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
- };
- }
-
- {
- name = "is_arrayish___is_arrayish_0.3.2.tgz";
- path = fetchurl {
- name = "is_arrayish___is_arrayish_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz";
- sha1 = "4574a2ae56f7ab206896fb431eaeed066fdf8f03";
- };
- }
-
- {
- name = "is_binary_path___is_binary_path_1.0.1.tgz";
- path = fetchurl {
- name = "is_binary_path___is_binary_path_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz";
- sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
- };
- }
-
- {
- name = "is_boolean_object___is_boolean_object_1.0.0.tgz";
- path = fetchurl {
- name = "is_boolean_object___is_boolean_object_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz";
- sha1 = "98f8b28030684219a95f375cfbd88ce3405dff93";
- };
- }
-
- {
- name = "is_buffer___is_buffer_1.1.6.tgz";
- path = fetchurl {
- name = "is_buffer___is_buffer_1.1.6.tgz";
- url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
- sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
- };
- }
-
- {
- name = "is_buffer___is_buffer_2.0.3.tgz";
- path = fetchurl {
- name = "is_buffer___is_buffer_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz";
- sha1 = "4ecf3fcf749cbd1e472689e109ac66261a25e725";
- };
- }
-
- {
- name = "is_builtin_module___is_builtin_module_1.0.0.tgz";
- path = fetchurl {
- name = "is_builtin_module___is_builtin_module_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
- sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
- };
- }
-
- {
- name = "is_callable___is_callable_1.1.4.tgz";
- path = fetchurl {
- name = "is_callable___is_callable_1.1.4.tgz";
- url = "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz";
- sha1 = "1e1adf219e1eeb684d691f9d6a05ff0d30a24d75";
- };
- }
-
- {
- name = "is_ci___is_ci_2.0.0.tgz";
- path = fetchurl {
- name = "is_ci___is_ci_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz";
- sha1 = "6bc6334181810e04b5c22b3d589fdca55026404c";
- };
- }
-
- {
- name = "is_color_stop___is_color_stop_1.1.0.tgz";
- path = fetchurl {
- name = "is_color_stop___is_color_stop_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz";
- sha1 = "cfff471aee4dd5c9e158598fbe12967b5cdad345";
- };
- }
-
- {
- name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
- path = fetchurl {
- name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
- url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
- sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
- };
- }
-
- {
- name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
- path = fetchurl {
- name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
- sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7";
- };
- }
-
- {
- name = "is_date_object___is_date_object_1.0.1.tgz";
- path = fetchurl {
- name = "is_date_object___is_date_object_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz";
- sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
- };
- }
-
- {
- name = "is_descriptor___is_descriptor_0.1.6.tgz";
- path = fetchurl {
- name = "is_descriptor___is_descriptor_0.1.6.tgz";
- url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz";
- sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca";
- };
- }
-
- {
- name = "is_descriptor___is_descriptor_1.0.2.tgz";
- path = fetchurl {
- name = "is_descriptor___is_descriptor_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz";
- sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec";
- };
- }
-
- {
- name = "is_directory___is_directory_0.3.1.tgz";
- path = fetchurl {
- name = "is_directory___is_directory_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz";
- sha1 = "61339b6f2475fc772fd9c9d83f5c8575dc154ae1";
- };
- }
-
- {
- name = "is_extendable___is_extendable_0.1.1.tgz";
- path = fetchurl {
- name = "is_extendable___is_extendable_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz";
- sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
- };
- }
-
- {
- name = "is_extendable___is_extendable_1.0.1.tgz";
- path = fetchurl {
- name = "is_extendable___is_extendable_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz";
- sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4";
- };
- }
-
- {
- name = "is_extglob___is_extglob_2.1.1.tgz";
- path = fetchurl {
- name = "is_extglob___is_extglob_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz";
- sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
- };
- }
-
- {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
- path = fetchurl {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
- sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
- };
- }
-
- {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
- path = fetchurl {
- name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
- sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
- };
- }
-
- {
- name = "is_generator_fn___is_generator_fn_2.0.0.tgz";
- path = fetchurl {
- name = "is_generator_fn___is_generator_fn_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz";
- sha1 = "038c31b774709641bda678b1f06a4e3227c10b3e";
- };
- }
-
- {
- name = "is_glob___is_glob_3.1.0.tgz";
- path = fetchurl {
- name = "is_glob___is_glob_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz";
- sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
- };
- }
-
- {
- name = "is_glob___is_glob_4.0.0.tgz";
- path = fetchurl {
- name = "is_glob___is_glob_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz";
- sha1 = "9521c76845cc2610a85203ddf080a958c2ffabc0";
- };
- }
-
- {
- name = "is_my_ip_valid___is_my_ip_valid_1.0.0.tgz";
- path = fetchurl {
- name = "is_my_ip_valid___is_my_ip_valid_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz";
- sha1 = "7b351b8e8edd4d3995d4d066680e664d94696824";
- };
- }
-
- {
- name = "is_my_json_valid___is_my_json_valid_2.20.0.tgz";
- path = fetchurl {
- name = "is_my_json_valid___is_my_json_valid_2.20.0.tgz";
- url = "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz";
- sha1 = "1345a6fca3e8daefc10d0fa77067f54cedafd59a";
- };
- }
-
- {
- name = "is_nan___is_nan_1.2.1.tgz";
- path = fetchurl {
- name = "is_nan___is_nan_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz";
- sha1 = "9faf65b6fb6db24b7f5c0628475ea71f988401e2";
- };
- }
-
- {
- name = "is_number_object___is_number_object_1.0.3.tgz";
- path = fetchurl {
- name = "is_number_object___is_number_object_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz";
- sha1 = "f265ab89a9f445034ef6aff15a8f00b00f551799";
- };
- }
-
- {
- name = "is_number___is_number_3.0.0.tgz";
- path = fetchurl {
- name = "is_number___is_number_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz";
- sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
- };
- }
-
- {
- name = "is_obj___is_obj_1.0.1.tgz";
- path = fetchurl {
- name = "is_obj___is_obj_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz";
- sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f";
- };
- }
-
- {
- name = "is_path_cwd___is_path_cwd_2.1.0.tgz";
- path = fetchurl {
- name = "is_path_cwd___is_path_cwd_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz";
- sha1 = "2e0c7e463ff5b7a0eb60852d851a6809347a124c";
- };
- }
-
- {
- name = "is_path_in_cwd___is_path_in_cwd_2.1.0.tgz";
- path = fetchurl {
- name = "is_path_in_cwd___is_path_in_cwd_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz";
- sha1 = "bfe2dca26c69f397265a4009963602935a053acb";
- };
- }
-
- {
- name = "is_path_inside___is_path_inside_2.1.0.tgz";
- path = fetchurl {
- name = "is_path_inside___is_path_inside_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz";
- sha1 = "7c9810587d659a40d27bcdb4d5616eab059494b2";
- };
- }
-
- {
- name = "is_plain_object___is_plain_object_2.0.4.tgz";
- path = fetchurl {
- name = "is_plain_object___is_plain_object_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz";
- sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677";
- };
- }
-
- {
- name = "is_promise___is_promise_2.1.0.tgz";
- path = fetchurl {
- name = "is_promise___is_promise_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz";
- sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
- };
- }
-
- {
- name = "is_property___is_property_1.0.2.tgz";
- path = fetchurl {
- name = "is_property___is_property_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz";
- sha1 = "57fe1c4e48474edd65b09911f26b1cd4095dda84";
- };
- }
-
- {
- name = "is_regex___is_regex_1.0.4.tgz";
- path = fetchurl {
- name = "is_regex___is_regex_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz";
- sha1 = "5517489b547091b0930e095654ced25ee97e9491";
- };
- }
-
- {
- name = "is_resolvable___is_resolvable_1.1.0.tgz";
- path = fetchurl {
- name = "is_resolvable___is_resolvable_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz";
- sha1 = "fb18f87ce1feb925169c9a407c19318a3206ed88";
- };
- }
-
- {
- name = "is_stream___is_stream_1.1.0.tgz";
- path = fetchurl {
- name = "is_stream___is_stream_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
- sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
- };
- }
-
- {
- name = "is_string___is_string_1.0.4.tgz";
- path = fetchurl {
- name = "is_string___is_string_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz";
- sha1 = "cc3a9b69857d621e963725a24caeec873b826e64";
- };
- }
-
- {
- name = "is_subset___is_subset_0.1.1.tgz";
- path = fetchurl {
- name = "is_subset___is_subset_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz";
- sha1 = "8a59117d932de1de00f245fcdd39ce43f1e939a6";
- };
- }
-
- {
- name = "is_svg___is_svg_3.0.0.tgz";
- path = fetchurl {
- name = "is_svg___is_svg_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz";
- sha1 = "9321dbd29c212e5ca99c4fa9794c714bcafa2f75";
- };
- }
-
- {
- name = "is_symbol___is_symbol_1.0.2.tgz";
- path = fetchurl {
- name = "is_symbol___is_symbol_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz";
- sha1 = "a055f6ae57192caee329e7a860118b497a950f38";
- };
- }
-
- {
- name = "is_typedarray___is_typedarray_1.0.0.tgz";
- path = fetchurl {
- name = "is_typedarray___is_typedarray_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
- sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
- };
- }
-
- {
- name = "is_windows___is_windows_1.0.2.tgz";
- path = fetchurl {
- name = "is_windows___is_windows_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz";
- sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d";
- };
- }
-
- {
- name = "is_wsl___is_wsl_1.1.0.tgz";
- path = fetchurl {
- name = "is_wsl___is_wsl_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz";
- sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d";
- };
- }
-
- {
- name = "isarray___isarray_0.0.1.tgz";
- path = fetchurl {
- name = "isarray___isarray_0.0.1.tgz";
- url = "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz";
- sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
- };
- }
-
- {
- name = "isarray___isarray_1.0.0.tgz";
- path = fetchurl {
- name = "isarray___isarray_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
- sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
- };
- }
-
- {
- name = "isexe___isexe_2.0.0.tgz";
- path = fetchurl {
- name = "isexe___isexe_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
- sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
- };
- }
-
- {
- name = "isobject___isobject_2.1.0.tgz";
- path = fetchurl {
- name = "isobject___isobject_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz";
- sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
- };
- }
-
- {
- name = "isobject___isobject_3.0.1.tgz";
- path = fetchurl {
- name = "isobject___isobject_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz";
- sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
- };
- }
-
- {
- name = "isomorphic_fetch___isomorphic_fetch_2.2.1.tgz";
- path = fetchurl {
- name = "isomorphic_fetch___isomorphic_fetch_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz";
- sha1 = "611ae1acf14f5e81f729507472819fe9733558a9";
- };
- }
-
- {
- name = "isstream___isstream_0.1.2.tgz";
- path = fetchurl {
- name = "isstream___isstream_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
- sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
- };
- }
-
- {
- name = "istanbul_lib_coverage___istanbul_lib_coverage_2.0.3.tgz";
- path = fetchurl {
- name = "istanbul_lib_coverage___istanbul_lib_coverage_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz";
- sha1 = "0b891e5ad42312c2b9488554f603795f9a2211ba";
- };
- }
-
- {
- name = "istanbul_lib_instrument___istanbul_lib_instrument_3.1.0.tgz";
- path = fetchurl {
- name = "istanbul_lib_instrument___istanbul_lib_instrument_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz";
- sha1 = "a2b5484a7d445f1f311e93190813fa56dfb62971";
- };
- }
-
- {
- name = "istanbul_lib_report___istanbul_lib_report_2.0.4.tgz";
- path = fetchurl {
- name = "istanbul_lib_report___istanbul_lib_report_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz";
- sha1 = "bfd324ee0c04f59119cb4f07dab157d09f24d7e4";
- };
- }
-
- {
- name = "istanbul_lib_source_maps___istanbul_lib_source_maps_3.0.2.tgz";
- path = fetchurl {
- name = "istanbul_lib_source_maps___istanbul_lib_source_maps_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz";
- sha1 = "f1e817229a9146e8424a28e5d69ba220fda34156";
- };
- }
-
- {
- name = "istanbul_reports___istanbul_reports_2.1.1.tgz";
- path = fetchurl {
- name = "istanbul_reports___istanbul_reports_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.1.1.tgz";
- sha1 = "72ef16b4ecb9a4a7bd0e2001e00f95d1eec8afa9";
- };
- }
-
- {
- name = "jest_changed_files___jest_changed_files_24.8.0.tgz";
- path = fetchurl {
- name = "jest_changed_files___jest_changed_files_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz";
- sha1 = "7e7eb21cf687587a85e50f3d249d1327e15b157b";
- };
- }
-
- {
- name = "jest_cli___jest_cli_24.8.0.tgz";
- path = fetchurl {
- name = "jest_cli___jest_cli_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz";
- sha1 = "b075ac914492ed114fa338ade7362a301693e989";
- };
- }
-
- {
- name = "jest_config___jest_config_24.8.0.tgz";
- path = fetchurl {
- name = "jest_config___jest_config_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz";
- sha1 = "77db3d265a6f726294687cbbccc36f8a76ee0f4f";
- };
- }
-
- {
- name = "jest_diff___jest_diff_24.8.0.tgz";
- path = fetchurl {
- name = "jest_diff___jest_diff_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz";
- sha1 = "146435e7d1e3ffdf293d53ff97e193f1d1546172";
- };
- }
-
- {
- name = "jest_docblock___jest_docblock_24.3.0.tgz";
- path = fetchurl {
- name = "jest_docblock___jest_docblock_24.3.0.tgz";
- url = "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz";
- sha1 = "b9c32dac70f72e4464520d2ba4aec02ab14db5dd";
- };
- }
-
- {
- name = "jest_each___jest_each_24.8.0.tgz";
- path = fetchurl {
- name = "jest_each___jest_each_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz";
- sha1 = "a05fd2bf94ddc0b1da66c6d13ec2457f35e52775";
- };
- }
-
- {
- name = "jest_environment_jsdom___jest_environment_jsdom_24.8.0.tgz";
- path = fetchurl {
- name = "jest_environment_jsdom___jest_environment_jsdom_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz";
- sha1 = "300f6949a146cabe1c9357ad9e9ecf9f43f38857";
- };
- }
-
- {
- name = "jest_environment_node___jest_environment_node_24.8.0.tgz";
- path = fetchurl {
- name = "jest_environment_node___jest_environment_node_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz";
- sha1 = "d3f726ba8bc53087a60e7a84ca08883a4c892231";
- };
- }
-
- {
- name = "jest_get_type___jest_get_type_24.8.0.tgz";
- path = fetchurl {
- name = "jest_get_type___jest_get_type_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz";
- sha1 = "a7440de30b651f5a70ea3ed7ff073a32dfe646fc";
- };
- }
-
- {
- name = "jest_haste_map___jest_haste_map_24.8.0.tgz";
- path = fetchurl {
- name = "jest_haste_map___jest_haste_map_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.0.tgz";
- sha1 = "51794182d877b3ddfd6e6d23920e3fe72f305800";
- };
- }
-
- {
- name = "jest_jasmine2___jest_jasmine2_24.8.0.tgz";
- path = fetchurl {
- name = "jest_jasmine2___jest_jasmine2_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz";
- sha1 = "a9c7e14c83dd77d8b15e820549ce8987cc8cd898";
- };
- }
-
- {
- name = "jest_leak_detector___jest_leak_detector_24.8.0.tgz";
- path = fetchurl {
- name = "jest_leak_detector___jest_leak_detector_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz";
- sha1 = "c0086384e1f650c2d8348095df769f29b48e6980";
- };
- }
-
- {
- name = "jest_matcher_utils___jest_matcher_utils_24.8.0.tgz";
- path = fetchurl {
- name = "jest_matcher_utils___jest_matcher_utils_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz";
- sha1 = "2bce42204c9af12bde46f83dc839efe8be832495";
- };
- }
-
- {
- name = "jest_message_util___jest_message_util_24.8.0.tgz";
- path = fetchurl {
- name = "jest_message_util___jest_message_util_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz";
- sha1 = "0d6891e72a4beacc0292b638685df42e28d6218b";
- };
- }
-
- {
- name = "jest_mock___jest_mock_24.8.0.tgz";
- path = fetchurl {
- name = "jest_mock___jest_mock_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz";
- sha1 = "2f9d14d37699e863f1febf4e4d5a33b7fdbbde56";
- };
- }
-
- {
- name = "jest_pnp_resolver___jest_pnp_resolver_1.2.1.tgz";
- path = fetchurl {
- name = "jest_pnp_resolver___jest_pnp_resolver_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz";
- sha1 = "ecdae604c077a7fbc70defb6d517c3c1c898923a";
- };
- }
-
- {
- name = "jest_regex_util___jest_regex_util_24.3.0.tgz";
- path = fetchurl {
- name = "jest_regex_util___jest_regex_util_24.3.0.tgz";
- url = "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz";
- sha1 = "d5a65f60be1ae3e310d5214a0307581995227b36";
- };
- }
-
- {
- name = "jest_resolve_dependencies___jest_resolve_dependencies_24.8.0.tgz";
- path = fetchurl {
- name = "jest_resolve_dependencies___jest_resolve_dependencies_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz";
- sha1 = "19eec3241f2045d3f990dba331d0d7526acff8e0";
- };
- }
-
- {
- name = "jest_resolve___jest_resolve_24.8.0.tgz";
- path = fetchurl {
- name = "jest_resolve___jest_resolve_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz";
- sha1 = "84b8e5408c1f6a11539793e2b5feb1b6e722439f";
- };
- }
-
- {
- name = "jest_runner___jest_runner_24.8.0.tgz";
- path = fetchurl {
- name = "jest_runner___jest_runner_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz";
- sha1 = "4f9ae07b767db27b740d7deffad0cf67ccb4c5bb";
- };
- }
-
- {
- name = "jest_runtime___jest_runtime_24.8.0.tgz";
- path = fetchurl {
- name = "jest_runtime___jest_runtime_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz";
- sha1 = "05f94d5b05c21f6dc54e427cd2e4980923350620";
- };
- }
-
- {
- name = "jest_serializer___jest_serializer_24.4.0.tgz";
- path = fetchurl {
- name = "jest_serializer___jest_serializer_24.4.0.tgz";
- url = "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz";
- sha1 = "f70c5918c8ea9235ccb1276d232e459080588db3";
- };
- }
-
- {
- name = "jest_snapshot___jest_snapshot_24.8.0.tgz";
- path = fetchurl {
- name = "jest_snapshot___jest_snapshot_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz";
- sha1 = "3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6";
- };
- }
-
- {
- name = "jest_util___jest_util_24.8.0.tgz";
- path = fetchurl {
- name = "jest_util___jest_util_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz";
- sha1 = "41f0e945da11df44cc76d64ffb915d0716f46cd1";
- };
- }
-
- {
- name = "jest_validate___jest_validate_24.8.0.tgz";
- path = fetchurl {
- name = "jest_validate___jest_validate_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz";
- sha1 = "624c41533e6dfe356ffadc6e2423a35c2d3b4849";
- };
- }
-
- {
- name = "jest_watcher___jest_watcher_24.8.0.tgz";
- path = fetchurl {
- name = "jest_watcher___jest_watcher_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz";
- sha1 = "58d49915ceddd2de85e238f6213cef1c93715de4";
- };
- }
-
- {
- name = "jest_worker___jest_worker_24.6.0.tgz";
- path = fetchurl {
- name = "jest_worker___jest_worker_24.6.0.tgz";
- url = "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz";
- sha1 = "7f81ceae34b7cde0c9827a6980c35b7cdc0161b3";
- };
- }
-
- {
- name = "jest___jest_24.8.0.tgz";
- path = fetchurl {
- name = "jest___jest_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz";
- sha1 = "d5dff1984d0d1002196e9b7f12f75af1b2809081";
- };
- }
-
- {
- name = "js_base64___js_base64_2.5.0.tgz";
- path = fetchurl {
- name = "js_base64___js_base64_2.5.0.tgz";
- url = "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.0.tgz";
- sha1 = "42255ba183ab67ce59a0dee640afdc00ab5ae93e";
- };
- }
-
- {
- name = "js_levenshtein___js_levenshtein_1.1.6.tgz";
- path = fetchurl {
- name = "js_levenshtein___js_levenshtein_1.1.6.tgz";
- url = "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz";
- sha1 = "c6cee58eb3550372df8deb85fad5ce66ce01d59d";
- };
- }
-
- {
- name = "js_string_escape___js_string_escape_1.0.1.tgz";
- path = fetchurl {
- name = "js_string_escape___js_string_escape_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz";
- sha1 = "e2625badbc0d67c7533e9edc1068c587ae4137ef";
- };
- }
-
- {
- name = "js_tokens___js_tokens_4.0.0.tgz";
- path = fetchurl {
- name = "js_tokens___js_tokens_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz";
- sha1 = "19203fb59991df98e3a287050d4647cdeaf32499";
- };
- }
-
- {
- name = "js_yaml___js_yaml_3.13.1.tgz";
- path = fetchurl {
- name = "js_yaml___js_yaml_3.13.1.tgz";
- url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz";
- sha1 = "aff151b30bfdfa8e49e05da22e7415e9dfa37847";
- };
- }
-
- {
- name = "jsbn___jsbn_0.1.1.tgz";
- path = fetchurl {
- name = "jsbn___jsbn_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
- sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
- };
- }
-
- {
- name = "jsdom___jsdom_11.12.0.tgz";
- path = fetchurl {
- name = "jsdom___jsdom_11.12.0.tgz";
- url = "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz";
- sha1 = "1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8";
- };
- }
-
- {
- name = "jsesc___jsesc_2.5.2.tgz";
- path = fetchurl {
- name = "jsesc___jsesc_2.5.2.tgz";
- url = "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz";
- sha1 = "80564d2e483dacf6e8ef209650a67df3f0c283a4";
- };
- }
-
- {
- name = "jsesc___jsesc_0.5.0.tgz";
- path = fetchurl {
- name = "jsesc___jsesc_0.5.0.tgz";
- url = "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz";
- sha1 = "e7dee66e35d6fc16f710fe91d5cf69f70f08911d";
- };
- }
-
- {
- name = "json_parse_better_errors___json_parse_better_errors_1.0.2.tgz";
- path = fetchurl {
- name = "json_parse_better_errors___json_parse_better_errors_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
- sha1 = "bb867cfb3450e69107c131d1c514bab3dc8bcaa9";
- };
- }
-
- {
- name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
- path = fetchurl {
- name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
- url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
- sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
- };
- }
-
- {
- name = "json_schema___json_schema_0.2.3.tgz";
- path = fetchurl {
- name = "json_schema___json_schema_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
- sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
- };
- }
-
- {
- name = "json_stable_stringify_without_jsonify___json_stable_stringify_without_jsonify_1.0.1.tgz";
- path = fetchurl {
- name = "json_stable_stringify_without_jsonify___json_stable_stringify_without_jsonify_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz";
- sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
- };
- }
-
- {
- name = "json_stable_stringify___json_stable_stringify_1.0.1.tgz";
- path = fetchurl {
- name = "json_stable_stringify___json_stable_stringify_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
- sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
- };
- }
-
- {
- name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
- path = fetchurl {
- name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
- url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
- sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
- };
- }
-
- {
- name = "json3___json3_3.3.2.tgz";
- path = fetchurl {
- name = "json3___json3_3.3.2.tgz";
- url = "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz";
- sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
- };
- }
-
- {
- name = "json5___json5_0.5.1.tgz";
- path = fetchurl {
- name = "json5___json5_0.5.1.tgz";
- url = "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz";
- sha1 = "1eade7acc012034ad84e2396767ead9fa5495821";
- };
- }
-
- {
- name = "json5___json5_1.0.1.tgz";
- path = fetchurl {
- name = "json5___json5_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz";
- sha1 = "779fb0018604fa854eacbf6252180d83543e3dbe";
- };
- }
-
- {
- name = "json5___json5_2.1.0.tgz";
- path = fetchurl {
- name = "json5___json5_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz";
- sha1 = "e7a0c62c48285c628d20a10b85c89bb807c32850";
- };
- }
-
- {
- name = "jsonfile___jsonfile_3.0.1.tgz";
- path = fetchurl {
- name = "jsonfile___jsonfile_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz";
- sha1 = "a5ecc6f65f53f662c4415c7675a0331d0992ec66";
- };
- }
-
- {
- name = "jsonfile___jsonfile_4.0.0.tgz";
- path = fetchurl {
- name = "jsonfile___jsonfile_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz";
- sha1 = "8771aae0799b64076b76640fca058f9c10e33ecb";
- };
- }
-
- {
- name = "jsonify___jsonify_0.0.0.tgz";
- path = fetchurl {
- name = "jsonify___jsonify_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz";
- sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
- };
- }
-
- {
- name = "jsonpointer___jsonpointer_4.0.1.tgz";
- path = fetchurl {
- name = "jsonpointer___jsonpointer_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz";
- sha1 = "4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9";
- };
- }
-
- {
- name = "jsprim___jsprim_1.4.1.tgz";
- path = fetchurl {
- name = "jsprim___jsprim_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
- sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
- };
- }
-
- {
- name = "jsx_ast_utils___jsx_ast_utils_2.0.1.tgz";
- path = fetchurl {
- name = "jsx_ast_utils___jsx_ast_utils_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz";
- sha1 = "e801b1b39985e20fffc87b40e3748080e2dcac7f";
- };
- }
-
- {
- name = "keycode___keycode_2.2.0.tgz";
- path = fetchurl {
- name = "keycode___keycode_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz";
- sha1 = "3d0af56dc7b8b8e5cba8d0a97f107204eec22b04";
- };
- }
-
- {
- name = "killable___killable_1.0.1.tgz";
- path = fetchurl {
- name = "killable___killable_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz";
- sha1 = "4c8ce441187a061c7474fb87ca08e2a638194892";
- };
- }
-
- {
- name = "kind_of___kind_of_3.2.2.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_3.2.2.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz";
- sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
- };
- }
-
- {
- name = "kind_of___kind_of_4.0.0.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz";
- sha1 = "20813df3d712928b207378691a45066fae72dd57";
- };
- }
-
- {
- name = "kind_of___kind_of_5.1.0.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_5.1.0.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz";
- sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d";
- };
- }
-
- {
- name = "kind_of___kind_of_6.0.2.tgz";
- path = fetchurl {
- name = "kind_of___kind_of_6.0.2.tgz";
- url = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz";
- sha1 = "01146b36a6218e64e58f3a8d66de5d7fc6f6d051";
- };
- }
-
- {
- name = "kleur___kleur_3.0.2.tgz";
- path = fetchurl {
- name = "kleur___kleur_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/kleur/-/kleur-3.0.2.tgz";
- sha1 = "83c7ec858a41098b613d5998a7b653962b504f68";
- };
- }
-
- {
- name = "knot.js___knot.js_1.1.5.tgz";
- path = fetchurl {
- name = "knot.js___knot.js_1.1.5.tgz";
- url = "https://registry.yarnpkg.com/knot.js/-/knot.js-1.1.5.tgz";
- sha1 = "28e72522f703f50fe98812fde224dd72728fef5d";
- };
- }
-
- {
- name = "known_css_properties___known_css_properties_0.3.0.tgz";
- path = fetchurl {
- name = "known_css_properties___known_css_properties_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz";
- sha1 = "a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4";
- };
- }
-
- {
- name = "lcid___lcid_2.0.0.tgz";
- path = fetchurl {
- name = "lcid___lcid_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz";
- sha1 = "6ef5d2df60e52f82eb228a4c373e8d1f397253cf";
- };
- }
-
- {
- name = "left_pad___left_pad_1.3.0.tgz";
- path = fetchurl {
- name = "left_pad___left_pad_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz";
- sha1 = "5b8a3a7765dfe001261dde915589e782f8c94d1e";
- };
- }
-
- {
- name = "leven___leven_2.1.0.tgz";
- path = fetchurl {
- name = "leven___leven_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz";
- sha1 = "c2e7a9f772094dee9d34202ae8acce4687875580";
- };
- }
-
- {
- name = "levn___levn_0.3.0.tgz";
- path = fetchurl {
- name = "levn___levn_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz";
- sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
- };
- }
-
- {
- name = "load_json_file___load_json_file_2.0.0.tgz";
- path = fetchurl {
- name = "load_json_file___load_json_file_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz";
- sha1 = "7947e42149af80d696cbf797bcaabcfe1fe29ca8";
- };
- }
-
- {
- name = "load_json_file___load_json_file_4.0.0.tgz";
- path = fetchurl {
- name = "load_json_file___load_json_file_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz";
- sha1 = "2f5f45ab91e33216234fd53adab668eb4ec0993b";
- };
- }
-
- {
- name = "loader_runner___loader_runner_2.3.1.tgz";
- path = fetchurl {
- name = "loader_runner___loader_runner_2.3.1.tgz";
- url = "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz";
- sha1 = "026f12fe7c3115992896ac02ba022ba92971b979";
- };
- }
-
- {
- name = "loader_utils___loader_utils_0.2.17.tgz";
- path = fetchurl {
- name = "loader_utils___loader_utils_0.2.17.tgz";
- url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz";
- sha1 = "f86e6374d43205a6e6c60e9196f17c0299bfb348";
- };
- }
-
- {
- name = "loader_utils___loader_utils_1.2.3.tgz";
- path = fetchurl {
- name = "loader_utils___loader_utils_1.2.3.tgz";
- url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz";
- sha1 = "1ff5dc6911c9f0a062531a4c04b609406108c2c7";
- };
- }
-
- {
- name = "locate_path___locate_path_2.0.0.tgz";
- path = fetchurl {
- name = "locate_path___locate_path_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz";
- sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
- };
- }
-
- {
- name = "locate_path___locate_path_3.0.0.tgz";
- path = fetchurl {
- name = "locate_path___locate_path_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz";
- sha1 = "dbec3b3ab759758071b58fe59fc41871af21400e";
- };
- }
-
- {
- name = "lodash.capitalize___lodash.capitalize_4.2.1.tgz";
- path = fetchurl {
- name = "lodash.capitalize___lodash.capitalize_4.2.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz";
- sha1 = "f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9";
- };
- }
-
- {
- name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
- path = fetchurl {
- name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
- sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
- };
- }
-
- {
- name = "lodash.escape___lodash.escape_4.0.1.tgz";
- path = fetchurl {
- name = "lodash.escape___lodash.escape_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz";
- sha1 = "c9044690c21e04294beaa517712fded1fa88de98";
- };
- }
-
- {
- name = "lodash.flattendeep___lodash.flattendeep_4.4.0.tgz";
- path = fetchurl {
- name = "lodash.flattendeep___lodash.flattendeep_4.4.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz";
- sha1 = "fb030917f86a3134e5bc9bec0d69e0013ddfedb2";
- };
- }
-
- {
- name = "lodash.get___lodash.get_4.4.2.tgz";
- path = fetchurl {
- name = "lodash.get___lodash.get_4.4.2.tgz";
- url = "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz";
- sha1 = "2d177f652fa31e939b4438d5341499dfa3825e99";
- };
- }
-
- {
- name = "lodash.has___lodash.has_4.5.2.tgz";
- path = fetchurl {
- name = "lodash.has___lodash.has_4.5.2.tgz";
- url = "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz";
- sha1 = "d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862";
- };
- }
-
- {
- name = "lodash.isboolean___lodash.isboolean_3.0.3.tgz";
- path = fetchurl {
- name = "lodash.isboolean___lodash.isboolean_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz";
- sha1 = "6c2e171db2a257cd96802fd43b01b20d5f5870f6";
- };
- }
-
- {
- name = "lodash.isequal___lodash.isequal_4.5.0.tgz";
- path = fetchurl {
- name = "lodash.isequal___lodash.isequal_4.5.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz";
- sha1 = "415c4478f2bcc30120c22ce10ed3226f7d3e18e0";
- };
- }
-
- {
- name = "lodash.isobject___lodash.isobject_3.0.2.tgz";
- path = fetchurl {
- name = "lodash.isobject___lodash.isobject_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz";
- sha1 = "3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d";
- };
- }
-
- {
- name = "lodash.kebabcase___lodash.kebabcase_4.1.1.tgz";
- path = fetchurl {
- name = "lodash.kebabcase___lodash.kebabcase_4.1.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz";
- sha1 = "8489b1cb0d29ff88195cceca448ff6d6cc295c36";
- };
- }
-
- {
- name = "lodash.memoize___lodash.memoize_4.1.2.tgz";
- path = fetchurl {
- name = "lodash.memoize___lodash.memoize_4.1.2.tgz";
- url = "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz";
- sha1 = "bcc6c49a42a2840ed997f323eada5ecd182e0bfe";
- };
- }
-
- {
- name = "lodash.sortby___lodash.sortby_4.7.0.tgz";
- path = fetchurl {
- name = "lodash.sortby___lodash.sortby_4.7.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz";
- sha1 = "edd14c824e2cc9c1e0b0a1b42bb5210516a42438";
- };
- }
-
- {
- name = "lodash.tail___lodash.tail_4.1.1.tgz";
- path = fetchurl {
- name = "lodash.tail___lodash.tail_4.1.1.tgz";
- url = "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz";
- sha1 = "d2333a36d9e7717c8ad2f7cacafec7c32b444664";
- };
- }
-
- {
- name = "lodash.uniq___lodash.uniq_4.5.0.tgz";
- path = fetchurl {
- name = "lodash.uniq___lodash.uniq_4.5.0.tgz";
- url = "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz";
- sha1 = "d0225373aeb652adc1bc82e4945339a842754773";
- };
- }
-
- {
- name = "lodash___lodash_4.17.11.tgz";
- path = fetchurl {
- name = "lodash___lodash_4.17.11.tgz";
- url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz";
- sha1 = "b39ea6229ef607ecd89e2c8df12536891cac9b8d";
- };
- }
-
- {
- name = "loglevel___loglevel_1.6.2.tgz";
- path = fetchurl {
- name = "loglevel___loglevel_1.6.2.tgz";
- url = "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.2.tgz";
- sha1 = "668c77948a03dbd22502a3513ace1f62a80cc372";
- };
- }
-
- {
- name = "loose_envify___loose_envify_1.4.0.tgz";
- path = fetchurl {
- name = "loose_envify___loose_envify_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz";
- sha1 = "71ee51fa7be4caec1a63839f7e682d8132d30caf";
- };
- }
-
- {
- name = "lru_cache___lru_cache_5.1.1.tgz";
- path = fetchurl {
- name = "lru_cache___lru_cache_5.1.1.tgz";
- url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz";
- sha1 = "1da27e6710271947695daf6848e847f01d84b920";
- };
- }
-
- {
- name = "make_dir___make_dir_1.3.0.tgz";
- path = fetchurl {
- name = "make_dir___make_dir_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz";
- sha1 = "79c1033b80515bd6d24ec9933e860ca75ee27f0c";
- };
- }
-
- {
- name = "makeerror___makeerror_1.0.11.tgz";
- path = fetchurl {
- name = "makeerror___makeerror_1.0.11.tgz";
- url = "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz";
- sha1 = "e01a5c9109f2af79660e4e8b9587790184f5a96c";
- };
- }
-
- {
- name = "mamacro___mamacro_0.0.3.tgz";
- path = fetchurl {
- name = "mamacro___mamacro_0.0.3.tgz";
- url = "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz";
- sha1 = "ad2c9576197c9f1abf308d0787865bd975a3f3e4";
- };
- }
-
- {
- name = "map_age_cleaner___map_age_cleaner_0.1.3.tgz";
- path = fetchurl {
- name = "map_age_cleaner___map_age_cleaner_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz";
- sha1 = "7d583a7306434c055fe474b0f45078e6e1b4b92a";
- };
- }
-
- {
- name = "map_cache___map_cache_0.2.2.tgz";
- path = fetchurl {
- name = "map_cache___map_cache_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz";
- sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
- };
- }
-
- {
- name = "map_visit___map_visit_1.0.0.tgz";
- path = fetchurl {
- name = "map_visit___map_visit_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz";
- sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
- };
- }
-
- {
- name = "mark_loader___mark_loader_0.1.6.tgz";
- path = fetchurl {
- name = "mark_loader___mark_loader_0.1.6.tgz";
- url = "https://registry.yarnpkg.com/mark-loader/-/mark-loader-0.1.6.tgz";
- sha1 = "0abb477dca7421d70e20128ff6489f5cae8676d5";
- };
- }
-
- {
- name = "marky___marky_1.2.1.tgz";
- path = fetchurl {
- name = "marky___marky_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/marky/-/marky-1.2.1.tgz";
- sha1 = "a3fcf82ffd357756b8b8affec9fdbf3a30dc1b02";
- };
- }
-
- {
- name = "md5.js___md5.js_1.3.5.tgz";
- path = fetchurl {
- name = "md5.js___md5.js_1.3.5.tgz";
- url = "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz";
- sha1 = "b5d07b8e3216e3e27cd728d72f70d1e6a342005f";
- };
- }
-
- {
- name = "mdn_data___mdn_data_1.1.4.tgz";
- path = fetchurl {
- name = "mdn_data___mdn_data_1.1.4.tgz";
- url = "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz";
- sha1 = "50b5d4ffc4575276573c4eedb8780812a8419f01";
- };
- }
-
- {
- name = "media_typer___media_typer_0.3.0.tgz";
- path = fetchurl {
- name = "media_typer___media_typer_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
- sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
- };
- }
-
- {
- name = "mem___mem_4.0.0.tgz";
- path = fetchurl {
- name = "mem___mem_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz";
- sha1 = "6437690d9471678f6cc83659c00cbafcd6b0cdaf";
- };
- }
-
- {
- name = "memoize_one___memoize_one_5.0.4.tgz";
- path = fetchurl {
- name = "memoize_one___memoize_one_5.0.4.tgz";
- url = "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.4.tgz";
- sha1 = "005928aced5c43d890a4dfab18ca908b0ec92cbc";
- };
- }
-
- {
- name = "memory_fs___memory_fs_0.4.1.tgz";
- path = fetchurl {
- name = "memory_fs___memory_fs_0.4.1.tgz";
- url = "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz";
- sha1 = "3a9a20b8462523e447cfbc7e8bb80ed667bfc552";
- };
- }
-
- {
- name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
- path = fetchurl {
- name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
- sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
- };
- }
-
- {
- name = "merge_stream___merge_stream_1.0.1.tgz";
- path = fetchurl {
- name = "merge_stream___merge_stream_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz";
- sha1 = "4041202d508a342ba00174008df0c251b8c135e1";
- };
- }
-
- {
- name = "merge___merge_1.2.1.tgz";
- path = fetchurl {
- name = "merge___merge_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz";
- sha1 = "38bebf80c3220a8a487b6fcfb3941bb11720c145";
- };
- }
-
- {
- name = "methods___methods_1.1.2.tgz";
- path = fetchurl {
- name = "methods___methods_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz";
- sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
- };
- }
-
- {
- name = "micromatch___micromatch_3.1.10.tgz";
- path = fetchurl {
- name = "micromatch___micromatch_3.1.10.tgz";
- url = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz";
- sha1 = "70859bc95c9840952f359a068a3fc49f9ecfac23";
- };
- }
-
- {
- name = "miller_rabin___miller_rabin_4.0.1.tgz";
- path = fetchurl {
- name = "miller_rabin___miller_rabin_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz";
- sha1 = "f080351c865b0dc562a8462966daa53543c78a4d";
- };
- }
-
- {
- name = "mime_db___mime_db_1.40.0.tgz";
- path = fetchurl {
- name = "mime_db___mime_db_1.40.0.tgz";
- url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz";
- sha1 = "a65057e998db090f732a68f6c276d387d4126c32";
- };
- }
-
- {
- name = "mime_db___mime_db_1.37.0.tgz";
- path = fetchurl {
- name = "mime_db___mime_db_1.37.0.tgz";
- url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz";
- sha1 = "0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8";
- };
- }
-
- {
- name = "mime_types___mime_types_2.1.21.tgz";
- path = fetchurl {
- name = "mime_types___mime_types_2.1.21.tgz";
- url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz";
- sha1 = "28995aa1ecb770742fe6ae7e58f9181c744b3f96";
- };
- }
-
- {
- name = "mime_types___mime_types_2.1.24.tgz";
- path = fetchurl {
- name = "mime_types___mime_types_2.1.24.tgz";
- url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz";
- sha1 = "b6f8d0b3e951efb77dedeca194cff6d16f676f81";
- };
- }
-
- {
- name = "mime___mime_1.6.0.tgz";
- path = fetchurl {
- name = "mime___mime_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
- sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
- };
- }
-
- {
- name = "mime___mime_2.4.3.tgz";
- path = fetchurl {
- name = "mime___mime_2.4.3.tgz";
- url = "https://registry.yarnpkg.com/mime/-/mime-2.4.3.tgz";
- sha1 = "229687331e86f68924e6cb59e1cdd937f18275fe";
- };
- }
-
- {
- name = "mimic_fn___mimic_fn_1.2.0.tgz";
- path = fetchurl {
- name = "mimic_fn___mimic_fn_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz";
- sha1 = "820c86a39334640e99516928bd03fca88057d022";
- };
- }
-
- {
- name = "mini_css_extract_plugin___mini_css_extract_plugin_0.5.0.tgz";
- path = fetchurl {
- name = "mini_css_extract_plugin___mini_css_extract_plugin_0.5.0.tgz";
- url = "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz";
- sha1 = "ac0059b02b9692515a637115b0cc9fed3a35c7b0";
- };
- }
-
- {
- name = "minimalistic_assert___minimalistic_assert_1.0.1.tgz";
- path = fetchurl {
- name = "minimalistic_assert___minimalistic_assert_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
- sha1 = "2e194de044626d4a10e7f7fbc00ce73e83e4d5c7";
- };
- }
-
- {
- name = "minimalistic_crypto_utils___minimalistic_crypto_utils_1.0.1.tgz";
- path = fetchurl {
- name = "minimalistic_crypto_utils___minimalistic_crypto_utils_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
- sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a";
- };
- }
-
- {
- name = "minimatch___minimatch_3.0.4.tgz";
- path = fetchurl {
- name = "minimatch___minimatch_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
- sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
- };
- }
-
- {
- name = "minimist___minimist_0.0.8.tgz";
- path = fetchurl {
- name = "minimist___minimist_0.0.8.tgz";
- url = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz";
- sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
- };
- }
-
- {
- name = "minimist___minimist_1.1.3.tgz";
- path = fetchurl {
- name = "minimist___minimist_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz";
- sha1 = "3bedfd91a92d39016fcfaa1c681e8faa1a1efda8";
- };
- }
-
- {
- name = "minimist___minimist_1.2.0.tgz";
- path = fetchurl {
- name = "minimist___minimist_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz";
- sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
- };
- }
-
- {
- name = "minimist___minimist_0.0.10.tgz";
- path = fetchurl {
- name = "minimist___minimist_0.0.10.tgz";
- url = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz";
- sha1 = "de3f98543dbf96082be48ad1a0c7cda836301dcf";
- };
- }
-
- {
- name = "minipass___minipass_2.3.5.tgz";
- path = fetchurl {
- name = "minipass___minipass_2.3.5.tgz";
- url = "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz";
- sha1 = "cacebe492022497f656b0f0f51e2682a9ed2d848";
- };
- }
-
- {
- name = "minizlib___minizlib_1.2.1.tgz";
- path = fetchurl {
- name = "minizlib___minizlib_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz";
- sha1 = "dd27ea6136243c7c880684e8672bb3a45fd9b614";
- };
- }
-
- {
- name = "mississippi___mississippi_3.0.0.tgz";
- path = fetchurl {
- name = "mississippi___mississippi_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz";
- sha1 = "ea0a3291f97e0b5e8776b363d5f0a12d94c67022";
- };
- }
-
- {
- name = "mixin_deep___mixin_deep_1.3.1.tgz";
- path = fetchurl {
- name = "mixin_deep___mixin_deep_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz";
- sha1 = "a49e7268dce1a0d9698e45326c5626df3543d0fe";
- };
- }
-
- {
- name = "mixin_object___mixin_object_2.0.1.tgz";
- path = fetchurl {
- name = "mixin_object___mixin_object_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz";
- sha1 = "4fb949441dab182540f1fe035ba60e1947a5e57e";
- };
- }
-
- {
- name = "mkdirp___mkdirp_0.5.1.tgz";
- path = fetchurl {
- name = "mkdirp___mkdirp_0.5.1.tgz";
- url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz";
- sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
- };
- }
-
- {
- name = "moo___moo_0.4.3.tgz";
- path = fetchurl {
- name = "moo___moo_0.4.3.tgz";
- url = "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz";
- sha1 = "3f847a26f31cf625a956a87f2b10fbc013bfd10e";
- };
- }
-
- {
- name = "mousetrap___mousetrap_1.6.2.tgz";
- path = fetchurl {
- name = "mousetrap___mousetrap_1.6.2.tgz";
- url = "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.2.tgz";
- sha1 = "caadd9cf886db0986fb2fee59a82f6bd37527587";
- };
- }
-
- {
- name = "move_concurrently___move_concurrently_1.0.1.tgz";
- path = fetchurl {
- name = "move_concurrently___move_concurrently_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz";
- sha1 = "be2c005fda32e0b29af1f05d7c4b33214c701f92";
- };
- }
-
- {
- name = "ms___ms_2.0.0.tgz";
- path = fetchurl {
- name = "ms___ms_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
- sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
- };
- }
-
- {
- name = "ms___ms_2.1.1.tgz";
- path = fetchurl {
- name = "ms___ms_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz";
- sha1 = "30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a";
- };
- }
-
- {
- name = "multicast_dns_service_types___multicast_dns_service_types_1.1.0.tgz";
- path = fetchurl {
- name = "multicast_dns_service_types___multicast_dns_service_types_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz";
- sha1 = "899f11d9686e5e05cb91b35d5f0e63b773cfc901";
- };
- }
-
- {
- name = "multicast_dns___multicast_dns_6.2.3.tgz";
- path = fetchurl {
- name = "multicast_dns___multicast_dns_6.2.3.tgz";
- url = "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz";
- sha1 = "a0ec7bd9055c4282f790c3c82f4e28db3b31b229";
- };
- }
-
- {
- name = "mute_stream___mute_stream_0.0.5.tgz";
- path = fetchurl {
- name = "mute_stream___mute_stream_0.0.5.tgz";
- url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz";
- sha1 = "8fbfabb0a98a253d3184331f9e8deb7372fac6c0";
- };
- }
-
- {
- name = "mute_stream___mute_stream_0.0.7.tgz";
- path = fetchurl {
- name = "mute_stream___mute_stream_0.0.7.tgz";
- url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz";
- sha1 = "3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab";
- };
- }
-
- {
- name = "nan___nan_2.14.0.tgz";
- path = fetchurl {
- name = "nan___nan_2.14.0.tgz";
- url = "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz";
- sha1 = "7818f722027b2459a86f0295d434d1fc2336c52c";
- };
- }
-
- {
- name = "nanomatch___nanomatch_1.2.13.tgz";
- path = fetchurl {
- name = "nanomatch___nanomatch_1.2.13.tgz";
- url = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz";
- sha1 = "b87a8aa4fc0de8fe6be88895b38983ff265bd119";
- };
- }
-
- {
- name = "natural_compare___natural_compare_1.4.0.tgz";
- path = fetchurl {
- name = "natural_compare___natural_compare_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz";
- sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
- };
- }
-
- {
- name = "nearley___nearley_2.16.0.tgz";
- path = fetchurl {
- name = "nearley___nearley_2.16.0.tgz";
- url = "https://registry.yarnpkg.com/nearley/-/nearley-2.16.0.tgz";
- sha1 = "77c297d041941d268290ec84b739d0ee297e83a7";
- };
- }
-
- {
- name = "needle___needle_2.2.4.tgz";
- path = fetchurl {
- name = "needle___needle_2.2.4.tgz";
- url = "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz";
- sha1 = "51931bff82533b1928b7d1d69e01f1b00ffd2a4e";
- };
- }
-
- {
- name = "negotiator___negotiator_0.6.2.tgz";
- path = fetchurl {
- name = "negotiator___negotiator_0.6.2.tgz";
- url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz";
- sha1 = "feacf7ccf525a77ae9634436a64883ffeca346fb";
- };
- }
-
- {
- name = "neo_async___neo_async_2.6.0.tgz";
- path = fetchurl {
- name = "neo_async___neo_async_2.6.0.tgz";
- url = "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz";
- sha1 = "b9d15e4d71c6762908654b5183ed38b753340835";
- };
- }
-
- {
- name = "next_tick___next_tick_1.0.0.tgz";
- path = fetchurl {
- name = "next_tick___next_tick_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz";
- sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c";
- };
- }
-
- {
- name = "nice_try___nice_try_1.0.5.tgz";
- path = fetchurl {
- name = "nice_try___nice_try_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz";
- sha1 = "a3378a7696ce7d223e88fc9b764bd7ef1089e366";
- };
- }
-
- {
- name = "node_fetch___node_fetch_1.7.3.tgz";
- path = fetchurl {
- name = "node_fetch___node_fetch_1.7.3.tgz";
- url = "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz";
- sha1 = "980f6f72d85211a5347c6b2bc18c5b84c3eb47ef";
- };
- }
-
- {
- name = "node_forge___node_forge_0.7.5.tgz";
- path = fetchurl {
- name = "node_forge___node_forge_0.7.5.tgz";
- url = "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz";
- sha1 = "6c152c345ce11c52f465c2abd957e8639cd674df";
- };
- }
-
- {
- name = "node_int64___node_int64_0.4.0.tgz";
- path = fetchurl {
- name = "node_int64___node_int64_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz";
- sha1 = "87a9065cdb355d3182d8f94ce11188b825c68a3b";
- };
- }
-
- {
- name = "node_libs_browser___node_libs_browser_2.1.0.tgz";
- path = fetchurl {
- name = "node_libs_browser___node_libs_browser_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz";
- sha1 = "5f94263d404f6e44767d726901fff05478d600df";
- };
- }
-
- {
- name = "node_modules_regexp___node_modules_regexp_1.0.0.tgz";
- path = fetchurl {
- name = "node_modules_regexp___node_modules_regexp_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz";
- sha1 = "8d9dbe28964a4ac5712e9131642107c71e90ec40";
- };
- }
-
- {
- name = "node_notifier___node_notifier_5.3.0.tgz";
- path = fetchurl {
- name = "node_notifier___node_notifier_5.3.0.tgz";
- url = "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz";
- sha1 = "c77a4a7b84038733d5fb351aafd8a268bfe19a01";
- };
- }
-
- {
- name = "node_pre_gyp___node_pre_gyp_0.12.0.tgz";
- path = fetchurl {
- name = "node_pre_gyp___node_pre_gyp_0.12.0.tgz";
- url = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz";
- sha1 = "39ba4bb1439da030295f899e3b520b7785766149";
- };
- }
-
- {
- name = "node_releases___node_releases_1.1.23.tgz";
- path = fetchurl {
- name = "node_releases___node_releases_1.1.23.tgz";
- url = "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.23.tgz";
- sha1 = "de7409f72de044a2fa59c097f436ba89c39997f0";
- };
- }
-
- {
- name = "nopt___nopt_4.0.1.tgz";
- path = fetchurl {
- name = "nopt___nopt_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz";
- sha1 = "d0d4685afd5415193c8c7505602d0d17cd64474d";
- };
- }
-
- {
- name = "nopt___nopt_1.0.10.tgz";
- path = fetchurl {
- name = "nopt___nopt_1.0.10.tgz";
- url = "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz";
- sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
- };
- }
-
- {
- name = "normalize_package_data___normalize_package_data_2.4.0.tgz";
- path = fetchurl {
- name = "normalize_package_data___normalize_package_data_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
- sha1 = "12f95a307d58352075a04907b84ac8be98ac012f";
- };
- }
-
- {
- name = "normalize_path___normalize_path_2.1.1.tgz";
- path = fetchurl {
- name = "normalize_path___normalize_path_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz";
- sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
- };
- }
-
- {
- name = "normalize_path___normalize_path_3.0.0.tgz";
- path = fetchurl {
- name = "normalize_path___normalize_path_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz";
- sha1 = "0dcd69ff23a1c9b11fd0978316644a0388216a65";
- };
- }
-
- {
- name = "normalize_range___normalize_range_0.1.2.tgz";
- path = fetchurl {
- name = "normalize_range___normalize_range_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz";
- sha1 = "2d10c06bdfd312ea9777695a4d28439456b75942";
- };
- }
-
- {
- name = "normalize_url___normalize_url_3.3.0.tgz";
- path = fetchurl {
- name = "normalize_url___normalize_url_3.3.0.tgz";
- url = "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz";
- sha1 = "b2e1c4dc4f7c6d57743df733a4f5978d18650559";
- };
- }
-
- {
- name = "npm_bundled___npm_bundled_1.0.5.tgz";
- path = fetchurl {
- name = "npm_bundled___npm_bundled_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz";
- sha1 = "3c1732b7ba936b3a10325aef616467c0ccbcc979";
- };
- }
-
- {
- name = "npm_packlist___npm_packlist_1.1.12.tgz";
- path = fetchurl {
- name = "npm_packlist___npm_packlist_1.1.12.tgz";
- url = "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz";
- sha1 = "22bde2ebc12e72ca482abd67afc51eb49377243a";
- };
- }
-
- {
- name = "npm_run_path___npm_run_path_2.0.2.tgz";
- path = fetchurl {
- name = "npm_run_path___npm_run_path_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz";
- sha1 = "35a9232dfa35d7067b4cb2ddf2357b1871536c5f";
- };
- }
-
- {
- name = "npmlog___npmlog_4.1.2.tgz";
- path = fetchurl {
- name = "npmlog___npmlog_4.1.2.tgz";
- url = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz";
- sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
- };
- }
-
- {
- name = "nth_check___nth_check_1.0.2.tgz";
- path = fetchurl {
- name = "nth_check___nth_check_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz";
- sha1 = "b2bd295c37e3dd58a3bf0700376663ba4d9cf05c";
- };
- }
-
- {
- name = "num2fraction___num2fraction_1.2.2.tgz";
- path = fetchurl {
- name = "num2fraction___num2fraction_1.2.2.tgz";
- url = "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz";
- sha1 = "6f682b6a027a4e9ddfa4564cd2589d1d4e669ede";
- };
- }
-
- {
- name = "number_is_nan___number_is_nan_1.0.1.tgz";
- path = fetchurl {
- name = "number_is_nan___number_is_nan_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz";
- sha1 = "097b602b53422a522c1afb8790318336941a011d";
- };
- }
-
- {
- name = "nwsapi___nwsapi_2.0.9.tgz";
- path = fetchurl {
- name = "nwsapi___nwsapi_2.0.9.tgz";
- url = "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz";
- sha1 = "77ac0cdfdcad52b6a1151a84e73254edc33ed016";
- };
- }
-
- {
- name = "oauth_sign___oauth_sign_0.9.0.tgz";
- path = fetchurl {
- name = "oauth_sign___oauth_sign_0.9.0.tgz";
- url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
- sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
- };
- }
-
- {
- name = "object_assign___object_assign_4.1.0.tgz";
- path = fetchurl {
- name = "object_assign___object_assign_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz";
- sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
- };
- }
-
- {
- name = "object_assign___object_assign_4.1.1.tgz";
- path = fetchurl {
- name = "object_assign___object_assign_4.1.1.tgz";
- url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
- sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
- };
- }
-
- {
- name = "object_copy___object_copy_0.1.0.tgz";
- path = fetchurl {
- name = "object_copy___object_copy_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz";
- sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
- };
- }
-
- {
- name = "object_fit_images___object_fit_images_3.2.4.tgz";
- path = fetchurl {
- name = "object_fit_images___object_fit_images_3.2.4.tgz";
- url = "https://registry.yarnpkg.com/object-fit-images/-/object-fit-images-3.2.4.tgz";
- sha1 = "6c299d38fdf207746e5d2d46c2877f6f25d15b52";
- };
- }
-
- {
- name = "object_inspect___object_inspect_1.6.0.tgz";
- path = fetchurl {
- name = "object_inspect___object_inspect_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz";
- sha1 = "c70b6cbf72f274aab4c34c0c82f5167bf82cf15b";
- };
- }
-
- {
- name = "object_is___object_is_1.0.1.tgz";
- path = fetchurl {
- name = "object_is___object_is_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz";
- sha1 = "0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6";
- };
- }
-
- {
- name = "object_keys___object_keys_1.0.12.tgz";
- path = fetchurl {
- name = "object_keys___object_keys_1.0.12.tgz";
- url = "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz";
- sha1 = "09c53855377575310cca62f55bb334abff7b3ed2";
- };
- }
-
- {
- name = "object_visit___object_visit_1.0.1.tgz";
- path = fetchurl {
- name = "object_visit___object_visit_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz";
- sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
- };
- }
-
- {
- name = "object.assign___object.assign_4.1.0.tgz";
- path = fetchurl {
- name = "object.assign___object.assign_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz";
- sha1 = "968bf1100d7956bb3ca086f006f846b3bc4008da";
- };
- }
-
- {
- name = "object.entries___object.entries_1.1.0.tgz";
- path = fetchurl {
- name = "object.entries___object.entries_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz";
- sha1 = "2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519";
- };
- }
-
- {
- name = "object.fromentries___object.fromentries_2.0.0.tgz";
- path = fetchurl {
- name = "object.fromentries___object.fromentries_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz";
- sha1 = "49a543d92151f8277b3ac9600f1e930b189d30ab";
- };
- }
-
- {
- name = "object.getownpropertydescriptors___object.getownpropertydescriptors_2.0.3.tgz";
- path = fetchurl {
- name = "object.getownpropertydescriptors___object.getownpropertydescriptors_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz";
- sha1 = "8758c846f5b407adab0f236e0986f14b051caa16";
- };
- }
-
- {
- name = "object.pick___object.pick_1.3.0.tgz";
- path = fetchurl {
- name = "object.pick___object.pick_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz";
- sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
- };
- }
-
- {
- name = "object.values___object.values_1.1.0.tgz";
- path = fetchurl {
- name = "object.values___object.values_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz";
- sha1 = "bf6810ef5da3e5325790eaaa2be213ea84624da9";
- };
- }
-
- {
- name = "obuf___obuf_1.1.2.tgz";
- path = fetchurl {
- name = "obuf___obuf_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz";
- sha1 = "09bea3343d41859ebd446292d11c9d4db619084e";
- };
- }
-
- {
- name = "offline_plugin___offline_plugin_5.0.7.tgz";
- path = fetchurl {
- name = "offline_plugin___offline_plugin_5.0.7.tgz";
- url = "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.7.tgz";
- sha1 = "26936ad1a7699f4d67e0a095a258972a4ccf1788";
- };
- }
-
- {
- name = "on_finished___on_finished_2.3.0.tgz";
- path = fetchurl {
- name = "on_finished___on_finished_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
- sha1 = "20f1336481b083cd75337992a16971aa2d906947";
- };
- }
-
- {
- name = "on_headers___on_headers_1.0.2.tgz";
- path = fetchurl {
- name = "on_headers___on_headers_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz";
- sha1 = "772b0ae6aaa525c399e489adfad90c403eb3c28f";
- };
- }
-
- {
- name = "once___once_1.4.0.tgz";
- path = fetchurl {
- name = "once___once_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
- sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
- };
- }
-
- {
- name = "onetime___onetime_1.1.0.tgz";
- path = fetchurl {
- name = "onetime___onetime_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz";
- sha1 = "a1f7838f8314c516f05ecefcbc4ccfe04b4ed789";
- };
- }
-
- {
- name = "onetime___onetime_2.0.1.tgz";
- path = fetchurl {
- name = "onetime___onetime_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz";
- sha1 = "067428230fd67443b2794b22bba528b6867962d4";
- };
- }
-
- {
- name = "opener___opener_1.5.1.tgz";
- path = fetchurl {
- name = "opener___opener_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz";
- sha1 = "6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed";
- };
- }
-
- {
- name = "opn___opn_5.5.0.tgz";
- path = fetchurl {
- name = "opn___opn_5.5.0.tgz";
- url = "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz";
- sha1 = "fc7164fab56d235904c51c3b27da6758ca3b9bfc";
- };
- }
-
- {
- name = "optimist___optimist_0.6.1.tgz";
- path = fetchurl {
- name = "optimist___optimist_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz";
- sha1 = "da3ea74686fa21a19a111c326e90eb15a0196686";
- };
- }
-
- {
- name = "optionator___optionator_0.8.2.tgz";
- path = fetchurl {
- name = "optionator___optionator_0.8.2.tgz";
- url = "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz";
- sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
- };
- }
-
- {
- name = "original___original_1.0.2.tgz";
- path = fetchurl {
- name = "original___original_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz";
- sha1 = "e442a61cffe1c5fd20a65f3261c26663b303f25f";
- };
- }
-
- {
- name = "os_browserify___os_browserify_0.3.0.tgz";
- path = fetchurl {
- name = "os_browserify___os_browserify_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz";
- sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27";
- };
- }
-
- {
- name = "os_homedir___os_homedir_1.0.2.tgz";
- path = fetchurl {
- name = "os_homedir___os_homedir_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz";
- sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
- };
- }
-
- {
- name = "os_locale___os_locale_3.1.0.tgz";
- path = fetchurl {
- name = "os_locale___os_locale_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz";
- sha1 = "a802a6ee17f24c10483ab9935719cef4ed16bf1a";
- };
- }
-
- {
- name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
- path = fetchurl {
- name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
- sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
- };
- }
-
- {
- name = "osenv___osenv_0.1.5.tgz";
- path = fetchurl {
- name = "osenv___osenv_0.1.5.tgz";
- url = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz";
- sha1 = "85cdfafaeb28e8677f416e287592b5f3f49ea410";
- };
- }
-
- {
- name = "p_defer___p_defer_1.0.0.tgz";
- path = fetchurl {
- name = "p_defer___p_defer_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz";
- sha1 = "9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c";
- };
- }
-
- {
- name = "p_each_series___p_each_series_1.0.0.tgz";
- path = fetchurl {
- name = "p_each_series___p_each_series_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz";
- sha1 = "930f3d12dd1f50e7434457a22cd6f04ac6ad7f71";
- };
- }
-
- {
- name = "p_finally___p_finally_1.0.0.tgz";
- path = fetchurl {
- name = "p_finally___p_finally_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz";
- sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
- };
- }
-
- {
- name = "p_is_promise___p_is_promise_1.1.0.tgz";
- path = fetchurl {
- name = "p_is_promise___p_is_promise_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz";
- sha1 = "9c9456989e9f6588017b0434d56097675c3da05e";
- };
- }
-
- {
- name = "p_limit___p_limit_1.3.0.tgz";
- path = fetchurl {
- name = "p_limit___p_limit_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz";
- sha1 = "b86bd5f0c25690911c7590fcbfc2010d54b3ccb8";
- };
- }
-
- {
- name = "p_limit___p_limit_2.1.0.tgz";
- path = fetchurl {
- name = "p_limit___p_limit_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz";
- sha1 = "1d5a0d20fb12707c758a655f6bbc4386b5930d68";
- };
- }
-
- {
- name = "p_locate___p_locate_2.0.0.tgz";
- path = fetchurl {
- name = "p_locate___p_locate_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz";
- sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
- };
- }
-
- {
- name = "p_locate___p_locate_3.0.0.tgz";
- path = fetchurl {
- name = "p_locate___p_locate_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz";
- sha1 = "322d69a05c0264b25997d9f40cd8a891ab0064a4";
- };
- }
-
- {
- name = "p_map___p_map_2.1.0.tgz";
- path = fetchurl {
- name = "p_map___p_map_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz";
- sha1 = "310928feef9c9ecc65b68b17693018a665cea175";
- };
- }
-
- {
- name = "p_reduce___p_reduce_1.0.0.tgz";
- path = fetchurl {
- name = "p_reduce___p_reduce_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz";
- sha1 = "18c2b0dd936a4690a529f8231f58a0fdb6a47dfa";
- };
- }
-
- {
- name = "p_try___p_try_1.0.0.tgz";
- path = fetchurl {
- name = "p_try___p_try_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz";
- sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
- };
- }
-
- {
- name = "p_try___p_try_2.0.0.tgz";
- path = fetchurl {
- name = "p_try___p_try_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz";
- sha1 = "85080bb87c64688fa47996fe8f7dfbe8211760b1";
- };
- }
-
- {
- name = "packet_reader___packet_reader_0.3.1.tgz";
- path = fetchurl {
- name = "packet_reader___packet_reader_0.3.1.tgz";
- url = "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.3.1.tgz";
- sha1 = "cd62e60af8d7fea8a705ec4ff990871c46871f27";
- };
- }
-
- {
- name = "pako___pako_1.0.7.tgz";
- path = fetchurl {
- name = "pako___pako_1.0.7.tgz";
- url = "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz";
- sha1 = "2473439021b57f1516c82f58be7275ad8ef1bb27";
- };
- }
-
- {
- name = "parallel_transform___parallel_transform_1.1.0.tgz";
- path = fetchurl {
- name = "parallel_transform___parallel_transform_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz";
- sha1 = "d410f065b05da23081fcd10f28854c29bda33b06";
- };
- }
-
- {
- name = "parse_asn1___parse_asn1_5.1.1.tgz";
- path = fetchurl {
- name = "parse_asn1___parse_asn1_5.1.1.tgz";
- url = "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz";
- sha1 = "f6bf293818332bd0dab54efb16087724745e6ca8";
- };
- }
-
- {
- name = "parse_css_font___parse_css_font_2.0.2.tgz";
- path = fetchurl {
- name = "parse_css_font___parse_css_font_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/parse-css-font/-/parse-css-font-2.0.2.tgz";
- sha1 = "7b60b060705a25a9b90b7f0ed493e5823248a652";
- };
- }
-
- {
- name = "parse_json___parse_json_2.2.0.tgz";
- path = fetchurl {
- name = "parse_json___parse_json_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz";
- sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
- };
- }
-
- {
- name = "parse_json___parse_json_4.0.0.tgz";
- path = fetchurl {
- name = "parse_json___parse_json_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz";
- sha1 = "be35f5425be1f7f6c747184f98a788cb99477ee0";
- };
- }
-
- {
- name = "parse_passwd___parse_passwd_1.0.0.tgz";
- path = fetchurl {
- name = "parse_passwd___parse_passwd_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz";
- sha1 = "6d5b934a456993b23d37f40a382d6f1666a8e5c6";
- };
- }
-
- {
- name = "parse5___parse5_4.0.0.tgz";
- path = fetchurl {
- name = "parse5___parse5_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz";
- sha1 = "6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608";
- };
- }
-
- {
- name = "parse5___parse5_3.0.3.tgz";
- path = fetchurl {
- name = "parse5___parse5_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz";
- sha1 = "042f792ffdd36851551cf4e9e066b3874ab45b5c";
- };
- }
-
- {
- name = "parseurl___parseurl_1.3.3.tgz";
- path = fetchurl {
- name = "parseurl___parseurl_1.3.3.tgz";
- url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz";
- sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4";
- };
- }
-
- {
- name = "pascalcase___pascalcase_0.1.1.tgz";
- path = fetchurl {
- name = "pascalcase___pascalcase_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz";
- sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
- };
- }
-
- {
- name = "path_browserify___path_browserify_0.0.0.tgz";
- path = fetchurl {
- name = "path_browserify___path_browserify_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz";
- sha1 = "a0b870729aae214005b7d5032ec2cbbb0fb4451a";
- };
- }
-
- {
- name = "path_complete_extname___path_complete_extname_1.0.0.tgz";
- path = fetchurl {
- name = "path_complete_extname___path_complete_extname_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-1.0.0.tgz";
- sha1 = "f889985dc91000c815515c0bfed06c5acda0752b";
- };
- }
-
- {
- name = "path_dirname___path_dirname_1.0.2.tgz";
- path = fetchurl {
- name = "path_dirname___path_dirname_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz";
- sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
- };
- }
-
- {
- name = "path_exists___path_exists_3.0.0.tgz";
- path = fetchurl {
- name = "path_exists___path_exists_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz";
- sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
- };
- }
-
- {
- name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
- path = fetchurl {
- name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
- sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
- };
- }
-
- {
- name = "path_is_inside___path_is_inside_1.0.2.tgz";
- path = fetchurl {
- name = "path_is_inside___path_is_inside_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz";
- sha1 = "365417dede44430d1c11af61027facf074bdfc53";
- };
- }
-
- {
- name = "path_key___path_key_2.0.1.tgz";
- path = fetchurl {
- name = "path_key___path_key_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz";
- sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
- };
- }
-
- {
- name = "path_parse___path_parse_1.0.6.tgz";
- path = fetchurl {
- name = "path_parse___path_parse_1.0.6.tgz";
- url = "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz";
- sha1 = "d62dbb5679405d72c4737ec58600e9ddcf06d24c";
- };
- }
-
- {
- name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
- path = fetchurl {
- name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
- url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
- sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
- };
- }
-
- {
- name = "path_to_regexp___path_to_regexp_1.7.0.tgz";
- path = fetchurl {
- name = "path_to_regexp___path_to_regexp_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz";
- sha1 = "59fde0f435badacba103a84e9d3bc64e96b9937d";
- };
- }
-
- {
- name = "path_type___path_type_2.0.0.tgz";
- path = fetchurl {
- name = "path_type___path_type_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz";
- sha1 = "f012ccb8415b7096fc2daa1054c3d72389594c73";
- };
- }
-
- {
- name = "path_type___path_type_3.0.0.tgz";
- path = fetchurl {
- name = "path_type___path_type_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz";
- sha1 = "cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f";
- };
- }
-
- {
- name = "pbkdf2___pbkdf2_3.0.17.tgz";
- path = fetchurl {
- name = "pbkdf2___pbkdf2_3.0.17.tgz";
- url = "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz";
- sha1 = "976c206530617b14ebb32114239f7b09336e93a6";
- };
- }
-
- {
- name = "performance_now___performance_now_0.2.0.tgz";
- path = fetchurl {
- name = "performance_now___performance_now_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz";
- sha1 = "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5";
- };
- }
-
- {
- name = "performance_now___performance_now_2.1.0.tgz";
- path = fetchurl {
- name = "performance_now___performance_now_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
- sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
- };
- }
-
- {
- name = "pg_connection_string___pg_connection_string_0.1.3.tgz";
- path = fetchurl {
- name = "pg_connection_string___pg_connection_string_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz";
- sha1 = "da1847b20940e42ee1492beaf65d49d91b245df7";
- };
- }
-
- {
- name = "pg_int8___pg_int8_1.0.1.tgz";
- path = fetchurl {
- name = "pg_int8___pg_int8_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz";
- sha1 = "943bd463bf5b71b4170115f80f8efc9a0c0eb78c";
- };
- }
-
- {
- name = "pg_pool___pg_pool_1.8.0.tgz";
- path = fetchurl {
- name = "pg_pool___pg_pool_1.8.0.tgz";
- url = "https://registry.yarnpkg.com/pg-pool/-/pg-pool-1.8.0.tgz";
- sha1 = "f7ec73824c37a03f076f51bfdf70e340147c4f37";
- };
- }
-
- {
- name = "pg_types___pg_types_1.13.0.tgz";
- path = fetchurl {
- name = "pg_types___pg_types_1.13.0.tgz";
- url = "https://registry.yarnpkg.com/pg-types/-/pg-types-1.13.0.tgz";
- sha1 = "75f490b8a8abf75f1386ef5ec4455ecf6b345c63";
- };
- }
-
- {
- name = "pg___pg_6.4.2.tgz";
- path = fetchurl {
- name = "pg___pg_6.4.2.tgz";
- url = "https://registry.yarnpkg.com/pg/-/pg-6.4.2.tgz";
- sha1 = "c364011060eac7a507a2ae063eb857ece910e27f";
- };
- }
-
- {
- name = "pgpass___pgpass_1.0.2.tgz";
- path = fetchurl {
- name = "pgpass___pgpass_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz";
- sha1 = "2a7bb41b6065b67907e91da1b07c1847c877b306";
- };
- }
-
- {
- name = "pify___pify_2.3.0.tgz";
- path = fetchurl {
- name = "pify___pify_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
- sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
- };
- }
-
- {
- name = "pify___pify_3.0.0.tgz";
- path = fetchurl {
- name = "pify___pify_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz";
- sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
- };
- }
-
- {
- name = "pify___pify_4.0.1.tgz";
- path = fetchurl {
- name = "pify___pify_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz";
- sha1 = "4b2cd25c50d598735c50292224fd8c6df41e3231";
- };
- }
-
- {
- name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
- path = fetchurl {
- name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
- sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
- };
- }
-
- {
- name = "pinkie___pinkie_2.0.4.tgz";
- path = fetchurl {
- name = "pinkie___pinkie_2.0.4.tgz";
- url = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz";
- sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
- };
- }
-
- {
- name = "pirates___pirates_4.0.1.tgz";
- path = fetchurl {
- name = "pirates___pirates_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz";
- sha1 = "643a92caf894566f91b2b986d2c66950a8e2fb87";
- };
- }
-
- {
- name = "pkg_dir___pkg_dir_2.0.0.tgz";
- path = fetchurl {
- name = "pkg_dir___pkg_dir_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz";
- sha1 = "f6d5d1109e19d63edf428e0bd57e12777615334b";
- };
- }
-
- {
- name = "pkg_dir___pkg_dir_3.0.0.tgz";
- path = fetchurl {
- name = "pkg_dir___pkg_dir_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz";
- sha1 = "2749020f239ed990881b1f71210d51eb6523bea3";
- };
- }
-
- {
- name = "pluralize___pluralize_1.2.1.tgz";
- path = fetchurl {
- name = "pluralize___pluralize_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz";
- sha1 = "d1a21483fd22bb41e58a12fa3421823140897c45";
- };
- }
-
- {
- name = "pluralize___pluralize_7.0.0.tgz";
- path = fetchurl {
- name = "pluralize___pluralize_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz";
- sha1 = "298b89df8b93b0221dbf421ad2b1b1ea23fc6777";
- };
- }
-
- {
- name = "pn___pn_1.1.0.tgz";
- path = fetchurl {
- name = "pn___pn_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz";
- sha1 = "e2f4cef0e219f463c179ab37463e4e1ecdccbafb";
- };
- }
-
- {
- name = "portfinder___portfinder_1.0.20.tgz";
- path = fetchurl {
- name = "portfinder___portfinder_1.0.20.tgz";
- url = "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz";
- sha1 = "bea68632e54b2e13ab7b0c4775e9b41bf270e44a";
- };
- }
-
- {
- name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
- path = fetchurl {
- name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
- sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
- };
- }
-
- {
- name = "postcss_calc___postcss_calc_7.0.1.tgz";
- path = fetchurl {
- name = "postcss_calc___postcss_calc_7.0.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz";
- sha1 = "36d77bab023b0ecbb9789d84dcb23c4941145436";
- };
- }
-
- {
- name = "postcss_colormin___postcss_colormin_4.0.3.tgz";
- path = fetchurl {
- name = "postcss_colormin___postcss_colormin_4.0.3.tgz";
- url = "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz";
- sha1 = "ae060bce93ed794ac71264f08132d550956bd381";
- };
- }
-
- {
- name = "postcss_convert_values___postcss_convert_values_4.0.1.tgz";
- path = fetchurl {
- name = "postcss_convert_values___postcss_convert_values_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz";
- sha1 = "ca3813ed4da0f812f9d43703584e449ebe189a7f";
- };
- }
-
- {
- name = "postcss_discard_comments___postcss_discard_comments_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_discard_comments___postcss_discard_comments_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz";
- sha1 = "1fbabd2c246bff6aaad7997b2b0918f4d7af4033";
- };
- }
-
- {
- name = "postcss_discard_duplicates___postcss_discard_duplicates_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_discard_duplicates___postcss_discard_duplicates_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz";
- sha1 = "3fe133cd3c82282e550fc9b239176a9207b784eb";
- };
- }
-
- {
- name = "postcss_discard_empty___postcss_discard_empty_4.0.1.tgz";
- path = fetchurl {
- name = "postcss_discard_empty___postcss_discard_empty_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz";
- sha1 = "c8c951e9f73ed9428019458444a02ad90bb9f765";
- };
- }
-
- {
- name = "postcss_discard_overridden___postcss_discard_overridden_4.0.1.tgz";
- path = fetchurl {
- name = "postcss_discard_overridden___postcss_discard_overridden_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz";
- sha1 = "652aef8a96726f029f5e3e00146ee7a4e755ff57";
- };
- }
-
- {
- name = "postcss_load_config___postcss_load_config_2.0.0.tgz";
- path = fetchurl {
- name = "postcss_load_config___postcss_load_config_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz";
- sha1 = "f1312ddbf5912cd747177083c5ef7a19d62ee484";
- };
- }
-
- {
- name = "postcss_loader___postcss_loader_3.0.0.tgz";
- path = fetchurl {
- name = "postcss_loader___postcss_loader_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz";
- sha1 = "6b97943e47c72d845fa9e03f273773d4e8dd6c2d";
- };
- }
-
- {
- name = "postcss_merge_longhand___postcss_merge_longhand_4.0.11.tgz";
- path = fetchurl {
- name = "postcss_merge_longhand___postcss_merge_longhand_4.0.11.tgz";
- url = "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz";
- sha1 = "62f49a13e4a0ee04e7b98f42bb16062ca2549e24";
- };
- }
-
- {
- name = "postcss_merge_rules___postcss_merge_rules_4.0.3.tgz";
- path = fetchurl {
- name = "postcss_merge_rules___postcss_merge_rules_4.0.3.tgz";
- url = "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz";
- sha1 = "362bea4ff5a1f98e4075a713c6cb25aefef9a650";
- };
- }
-
- {
- name = "postcss_minify_font_values___postcss_minify_font_values_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_minify_font_values___postcss_minify_font_values_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz";
- sha1 = "cd4c344cce474343fac5d82206ab2cbcb8afd5a6";
- };
- }
-
- {
- name = "postcss_minify_gradients___postcss_minify_gradients_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_minify_gradients___postcss_minify_gradients_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz";
- sha1 = "93b29c2ff5099c535eecda56c4aa6e665a663471";
- };
- }
-
- {
- name = "postcss_minify_params___postcss_minify_params_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_minify_params___postcss_minify_params_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz";
- sha1 = "6b9cef030c11e35261f95f618c90036d680db874";
- };
- }
-
- {
- name = "postcss_minify_selectors___postcss_minify_selectors_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_minify_selectors___postcss_minify_selectors_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz";
- sha1 = "e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8";
- };
- }
-
- {
- name = "postcss_modules_extract_imports___postcss_modules_extract_imports_2.0.0.tgz";
- path = fetchurl {
- name = "postcss_modules_extract_imports___postcss_modules_extract_imports_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz";
- sha1 = "818719a1ae1da325f9832446b01136eeb493cd7e";
- };
- }
-
- {
- name = "postcss_modules_local_by_default___postcss_modules_local_by_default_2.0.6.tgz";
- path = fetchurl {
- name = "postcss_modules_local_by_default___postcss_modules_local_by_default_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz";
- sha1 = "dd9953f6dd476b5fd1ef2d8830c8929760b56e63";
- };
- }
-
- {
- name = "postcss_modules_scope___postcss_modules_scope_2.1.0.tgz";
- path = fetchurl {
- name = "postcss_modules_scope___postcss_modules_scope_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz";
- sha1 = "ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb";
- };
- }
-
- {
- name = "postcss_modules_values___postcss_modules_values_2.0.0.tgz";
- path = fetchurl {
- name = "postcss_modules_values___postcss_modules_values_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz";
- sha1 = "479b46dc0c5ca3dc7fa5270851836b9ec7152f64";
- };
- }
-
- {
- name = "postcss_normalize_charset___postcss_normalize_charset_4.0.1.tgz";
- path = fetchurl {
- name = "postcss_normalize_charset___postcss_normalize_charset_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz";
- sha1 = "8b35add3aee83a136b0471e0d59be58a50285dd4";
- };
- }
-
- {
- name = "postcss_normalize_display_values___postcss_normalize_display_values_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_normalize_display_values___postcss_normalize_display_values_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz";
- sha1 = "0dbe04a4ce9063d4667ed2be476bb830c825935a";
- };
- }
-
- {
- name = "postcss_normalize_positions___postcss_normalize_positions_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_normalize_positions___postcss_normalize_positions_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz";
- sha1 = "05f757f84f260437378368a91f8932d4b102917f";
- };
- }
-
- {
- name = "postcss_normalize_repeat_style___postcss_normalize_repeat_style_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_normalize_repeat_style___postcss_normalize_repeat_style_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz";
- sha1 = "c4ebbc289f3991a028d44751cbdd11918b17910c";
- };
- }
-
- {
- name = "postcss_normalize_string___postcss_normalize_string_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_normalize_string___postcss_normalize_string_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz";
- sha1 = "cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c";
- };
- }
-
- {
- name = "postcss_normalize_timing_functions___postcss_normalize_timing_functions_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_normalize_timing_functions___postcss_normalize_timing_functions_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz";
- sha1 = "8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9";
- };
- }
-
- {
- name = "postcss_normalize_unicode___postcss_normalize_unicode_4.0.1.tgz";
- path = fetchurl {
- name = "postcss_normalize_unicode___postcss_normalize_unicode_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz";
- sha1 = "841bd48fdcf3019ad4baa7493a3d363b52ae1cfb";
- };
- }
-
- {
- name = "postcss_normalize_url___postcss_normalize_url_4.0.1.tgz";
- path = fetchurl {
- name = "postcss_normalize_url___postcss_normalize_url_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz";
- sha1 = "10e437f86bc7c7e58f7b9652ed878daaa95faae1";
- };
- }
-
- {
- name = "postcss_normalize_whitespace___postcss_normalize_whitespace_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_normalize_whitespace___postcss_normalize_whitespace_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz";
- sha1 = "bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82";
- };
- }
-
- {
- name = "postcss_object_fit_images___postcss_object_fit_images_1.1.2.tgz";
- path = fetchurl {
- name = "postcss_object_fit_images___postcss_object_fit_images_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-object-fit-images/-/postcss-object-fit-images-1.1.2.tgz";
- sha1 = "8b773043db14672ef6cd6f2cb1f0d8b26a9f573b";
- };
- }
-
- {
- name = "postcss_ordered_values___postcss_ordered_values_4.1.2.tgz";
- path = fetchurl {
- name = "postcss_ordered_values___postcss_ordered_values_4.1.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz";
- sha1 = "0cf75c820ec7d5c4d280189559e0b571ebac0eee";
- };
- }
-
- {
- name = "postcss_reduce_initial___postcss_reduce_initial_4.0.3.tgz";
- path = fetchurl {
- name = "postcss_reduce_initial___postcss_reduce_initial_4.0.3.tgz";
- url = "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz";
- sha1 = "7fd42ebea5e9c814609639e2c2e84ae270ba48df";
- };
- }
-
- {
- name = "postcss_reduce_transforms___postcss_reduce_transforms_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_reduce_transforms___postcss_reduce_transforms_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz";
- sha1 = "17efa405eacc6e07be3414a5ca2d1074681d4e29";
- };
- }
-
- {
- name = "postcss_selector_parser___postcss_selector_parser_3.1.1.tgz";
- path = fetchurl {
- name = "postcss_selector_parser___postcss_selector_parser_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz";
- sha1 = "4f875f4afb0c96573d5cf4d74011aee250a7e865";
- };
- }
-
- {
- name = "postcss_selector_parser___postcss_selector_parser_5.0.0.tgz";
- path = fetchurl {
- name = "postcss_selector_parser___postcss_selector_parser_5.0.0.tgz";
- url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz";
- sha1 = "249044356697b33b64f1a8f7c80922dddee7195c";
- };
- }
-
- {
- name = "postcss_selector_parser___postcss_selector_parser_6.0.2.tgz";
- path = fetchurl {
- name = "postcss_selector_parser___postcss_selector_parser_6.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz";
- sha1 = "934cf799d016c83411859e09dcecade01286ec5c";
- };
- }
-
- {
- name = "postcss_svgo___postcss_svgo_4.0.2.tgz";
- path = fetchurl {
- name = "postcss_svgo___postcss_svgo_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz";
- sha1 = "17b997bc711b333bab143aaed3b8d3d6e3d38258";
- };
- }
-
- {
- name = "postcss_unique_selectors___postcss_unique_selectors_4.0.1.tgz";
- path = fetchurl {
- name = "postcss_unique_selectors___postcss_unique_selectors_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz";
- sha1 = "9446911f3289bfd64c6d680f073c03b1f9ee4bac";
- };
- }
-
- {
- name = "postcss_value_parser___postcss_value_parser_3.3.1.tgz";
- path = fetchurl {
- name = "postcss_value_parser___postcss_value_parser_3.3.1.tgz";
- url = "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz";
- sha1 = "9ff822547e2893213cf1c30efa51ac5fd1ba8281";
- };
- }
-
- {
- name = "postcss___postcss_5.2.18.tgz";
- path = fetchurl {
- name = "postcss___postcss_5.2.18.tgz";
- url = "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz";
- sha1 = "badfa1497d46244f6390f58b319830d9107853c5";
- };
- }
-
- {
- name = "postcss___postcss_7.0.17.tgz";
- path = fetchurl {
- name = "postcss___postcss_7.0.17.tgz";
- url = "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz";
- sha1 = "4da1bdff5322d4a0acaab4d87f3e782436bad31f";
- };
- }
-
- {
- name = "postgres_array___postgres_array_1.0.3.tgz";
- path = fetchurl {
- name = "postgres_array___postgres_array_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.3.tgz";
- sha1 = "c561fc3b266b21451fc6555384f4986d78ec80f5";
- };
- }
-
- {
- name = "postgres_bytea___postgres_bytea_1.0.0.tgz";
- path = fetchurl {
- name = "postgres_bytea___postgres_bytea_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
- sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
- };
- }
-
- {
- name = "postgres_date___postgres_date_1.0.3.tgz";
- path = fetchurl {
- name = "postgres_date___postgres_date_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.3.tgz";
- sha1 = "e2d89702efdb258ff9d9cee0fe91bd06975257a8";
- };
- }
-
- {
- name = "postgres_interval___postgres_interval_1.1.2.tgz";
- path = fetchurl {
- name = "postgres_interval___postgres_interval_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.2.tgz";
- sha1 = "bf71ff902635f21cb241a013fc421d81d1db15a9";
- };
- }
-
- {
- name = "precond___precond_0.2.3.tgz";
- path = fetchurl {
- name = "precond___precond_0.2.3.tgz";
- url = "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz";
- sha1 = "aa9591bcaa24923f1e0f4849d240f47efc1075ac";
- };
- }
-
- {
- name = "prelude_ls___prelude_ls_1.1.2.tgz";
- path = fetchurl {
- name = "prelude_ls___prelude_ls_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz";
- sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
- };
- }
-
- {
- name = "prettier___prettier_1.18.2.tgz";
- path = fetchurl {
- name = "prettier___prettier_1.18.2.tgz";
- url = "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz";
- sha1 = "6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea";
- };
- }
-
- {
- name = "pretty_format___pretty_format_24.8.0.tgz";
- path = fetchurl {
- name = "pretty_format___pretty_format_24.8.0.tgz";
- url = "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz";
- sha1 = "8dae7044f58db7cb8be245383b565a963e3c27f2";
- };
- }
-
- {
- name = "private___private_0.1.8.tgz";
- path = fetchurl {
- name = "private___private_0.1.8.tgz";
- url = "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz";
- sha1 = "2381edb3689f7a53d653190060fcf822d2f368ff";
- };
- }
-
- {
- name = "process_nextick_args___process_nextick_args_2.0.0.tgz";
- path = fetchurl {
- name = "process_nextick_args___process_nextick_args_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz";
- sha1 = "a37d732f4271b4ab1ad070d35508e8290788ffaa";
- };
- }
-
- {
- name = "process___process_0.11.10.tgz";
- path = fetchurl {
- name = "process___process_0.11.10.tgz";
- url = "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz";
- sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
- };
- }
-
- {
- name = "progress___progress_1.1.8.tgz";
- path = fetchurl {
- name = "progress___progress_1.1.8.tgz";
- url = "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz";
- sha1 = "e260c78f6161cdd9b0e56cc3e0a85de17c7a57be";
- };
- }
-
- {
- name = "progress___progress_2.0.3.tgz";
- path = fetchurl {
- name = "progress___progress_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz";
- sha1 = "7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8";
- };
- }
-
- {
- name = "promise_inflight___promise_inflight_1.0.1.tgz";
- path = fetchurl {
- name = "promise_inflight___promise_inflight_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz";
- sha1 = "98472870bf228132fcbdd868129bad12c3c029e3";
- };
- }
-
- {
- name = "promise___promise_7.3.1.tgz";
- path = fetchurl {
- name = "promise___promise_7.3.1.tgz";
- url = "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz";
- sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf";
- };
- }
-
- {
- name = "prompts___prompts_2.0.3.tgz";
- path = fetchurl {
- name = "prompts___prompts_2.0.3.tgz";
- url = "https://registry.yarnpkg.com/prompts/-/prompts-2.0.3.tgz";
- sha1 = "c5ccb324010b2e8f74752aadceeb57134c1d2522";
- };
- }
-
- {
- name = "prop_types_exact___prop_types_exact_1.2.0.tgz";
- path = fetchurl {
- name = "prop_types_exact___prop_types_exact_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz";
- sha1 = "825d6be46094663848237e3925a98c6e944e9869";
- };
- }
-
- {
- name = "prop_types_extra___prop_types_extra_1.1.0.tgz";
- path = fetchurl {
- name = "prop_types_extra___prop_types_extra_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.0.tgz";
- sha1 = "32609910ea2dcf190366bacd3490d5a6412a605f";
- };
- }
-
- {
- name = "prop_types___prop_types_15.7.2.tgz";
- path = fetchurl {
- name = "prop_types___prop_types_15.7.2.tgz";
- url = "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz";
- sha1 = "52c41e75b8c87e72b9d9360e0206b99dcbffa6c5";
- };
- }
-
- {
- name = "proxy_addr___proxy_addr_2.0.5.tgz";
- path = fetchurl {
- name = "proxy_addr___proxy_addr_2.0.5.tgz";
- url = "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz";
- sha1 = "34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34";
- };
- }
-
- {
- name = "prr___prr_1.0.1.tgz";
- path = fetchurl {
- name = "prr___prr_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz";
- sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
- };
- }
-
- {
- name = "psl___psl_1.1.31.tgz";
- path = fetchurl {
- name = "psl___psl_1.1.31.tgz";
- url = "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz";
- sha1 = "e9aa86d0101b5b105cbe93ac6b784cd547276184";
- };
- }
-
- {
- name = "public_encrypt___public_encrypt_4.0.3.tgz";
- path = fetchurl {
- name = "public_encrypt___public_encrypt_4.0.3.tgz";
- url = "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz";
- sha1 = "4fcc9d77a07e48ba7527e7cbe0de33d0701331e0";
- };
- }
-
- {
- name = "pump___pump_2.0.1.tgz";
- path = fetchurl {
- name = "pump___pump_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz";
- sha1 = "12399add6e4cf7526d973cbc8b5ce2e2908b3909";
- };
- }
-
- {
- name = "pump___pump_3.0.0.tgz";
- path = fetchurl {
- name = "pump___pump_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz";
- sha1 = "b4a2116815bde2f4e1ea602354e8c75565107a64";
- };
- }
-
- {
- name = "pumpify___pumpify_1.5.1.tgz";
- path = fetchurl {
- name = "pumpify___pumpify_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz";
- sha1 = "36513be246ab27570b1a374a5ce278bfd74370ce";
- };
- }
-
- {
- name = "punycode___punycode_1.3.2.tgz";
- path = fetchurl {
- name = "punycode___punycode_1.3.2.tgz";
- url = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz";
- sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
- };
- }
-
- {
- name = "punycode___punycode_1.4.1.tgz";
- path = fetchurl {
- name = "punycode___punycode_1.4.1.tgz";
- url = "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz";
- sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
- };
- }
-
- {
- name = "punycode___punycode_2.1.1.tgz";
- path = fetchurl {
- name = "punycode___punycode_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
- sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
- };
- }
-
- {
- name = "q___q_1.5.1.tgz";
- path = fetchurl {
- name = "q___q_1.5.1.tgz";
- url = "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz";
- sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
- };
- }
-
- {
- name = "qs___qs_6.7.0.tgz";
- path = fetchurl {
- name = "qs___qs_6.7.0.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz";
- sha1 = "41dc1a015e3d581f1621776be31afb2876a9b1bc";
- };
- }
-
- {
- name = "qs___qs_6.5.2.tgz";
- path = fetchurl {
- name = "qs___qs_6.5.2.tgz";
- url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
- sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
- };
- }
-
- {
- name = "querystring_es3___querystring_es3_0.2.1.tgz";
- path = fetchurl {
- name = "querystring_es3___querystring_es3_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz";
- sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
- };
- }
-
- {
- name = "querystring___querystring_0.2.0.tgz";
- path = fetchurl {
- name = "querystring___querystring_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz";
- sha1 = "b209849203bb25df820da756e747005878521620";
- };
- }
-
- {
- name = "querystringify___querystringify_2.1.0.tgz";
- path = fetchurl {
- name = "querystringify___querystringify_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz";
- sha1 = "7ded8dfbf7879dcc60d0a644ac6754b283ad17ef";
- };
- }
-
- {
- name = "quote___quote_0.4.0.tgz";
- path = fetchurl {
- name = "quote___quote_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/quote/-/quote-0.4.0.tgz";
- sha1 = "10839217f6c1362b89194044d29b233fd7f32f01";
- };
- }
-
- {
- name = "raf___raf_3.4.1.tgz";
- path = fetchurl {
- name = "raf___raf_3.4.1.tgz";
- url = "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz";
- sha1 = "0742e99a4a6552f445d73e3ee0328af0ff1ede39";
- };
- }
-
- {
- name = "railroad_diagrams___railroad_diagrams_1.0.0.tgz";
- path = fetchurl {
- name = "railroad_diagrams___railroad_diagrams_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz";
- sha1 = "eb7e6267548ddedfb899c1b90e57374559cddb7e";
- };
- }
-
- {
- name = "rails_ujs___rails_ujs_5.2.3.tgz";
- path = fetchurl {
- name = "rails_ujs___rails_ujs_5.2.3.tgz";
- url = "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.3.tgz";
- sha1 = "4b65ea781a6befe62e96da6362165286a1fe4099";
- };
- }
-
- {
- name = "randexp___randexp_0.4.6.tgz";
- path = fetchurl {
- name = "randexp___randexp_0.4.6.tgz";
- url = "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz";
- sha1 = "e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3";
- };
- }
-
- {
- name = "randombytes___randombytes_2.0.6.tgz";
- path = fetchurl {
- name = "randombytes___randombytes_2.0.6.tgz";
- url = "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz";
- sha1 = "d302c522948588848a8d300c932b44c24231da80";
- };
- }
-
- {
- name = "randomfill___randomfill_1.0.4.tgz";
- path = fetchurl {
- name = "randomfill___randomfill_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz";
- sha1 = "c92196fc86ab42be983f1bf31778224931d61458";
- };
- }
-
- {
- name = "range_parser___range_parser_1.2.1.tgz";
- path = fetchurl {
- name = "range_parser___range_parser_1.2.1.tgz";
- url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz";
- sha1 = "3cf37023d199e1c24d1a55b84800c2f3e6468031";
- };
- }
-
- {
- name = "raw_body___raw_body_2.4.0.tgz";
- path = fetchurl {
- name = "raw_body___raw_body_2.4.0.tgz";
- url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz";
- sha1 = "a1ce6fb9c9bc356ca52e89256ab59059e13d0332";
- };
- }
-
- {
- name = "rc___rc_1.2.8.tgz";
- path = fetchurl {
- name = "rc___rc_1.2.8.tgz";
- url = "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz";
- sha1 = "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed";
- };
- }
-
- {
- name = "react_dom___react_dom_16.8.6.tgz";
- path = fetchurl {
- name = "react_dom___react_dom_16.8.6.tgz";
- url = "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz";
- sha1 = "71d6303f631e8b0097f56165ef608f051ff6e10f";
- };
- }
-
- {
- name = "react_event_listener___react_event_listener_0.6.5.tgz";
- path = fetchurl {
- name = "react_event_listener___react_event_listener_0.6.5.tgz";
- url = "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.5.tgz";
- sha1 = "d374dbe5da485c9f9d4702f0e76971afbe9b6b2e";
- };
- }
-
- {
- name = "react_hotkeys___react_hotkeys_1.1.4.tgz";
- path = fetchurl {
- name = "react_hotkeys___react_hotkeys_1.1.4.tgz";
- url = "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-1.1.4.tgz";
- sha1 = "a0712aa2e0c03a759fd7885808598497a4dace72";
- };
- }
-
- {
- name = "react_immutable_proptypes___react_immutable_proptypes_2.1.0.tgz";
- path = fetchurl {
- name = "react_immutable_proptypes___react_immutable_proptypes_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz";
- sha1 = "023d6f39bb15c97c071e9e60d00d136eac5fa0b4";
- };
- }
-
- {
- name = "react_immutable_pure_component___react_immutable_pure_component_1.2.3.tgz";
- path = fetchurl {
- name = "react_immutable_pure_component___react_immutable_pure_component_1.2.3.tgz";
- url = "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-1.2.3.tgz";
- sha1 = "fa33638df68cfe9f73ccbee1d5861c17f3053f86";
- };
- }
-
- {
- name = "react_infinite_scroller___react_infinite_scroller_1.2.4.tgz";
- path = fetchurl {
- name = "react_infinite_scroller___react_infinite_scroller_1.2.4.tgz";
- url = "https://registry.yarnpkg.com/react-infinite-scroller/-/react-infinite-scroller-1.2.4.tgz";
- sha1 = "f67eaec4940a4ce6417bebdd6e3433bfc38826e9";
- };
- }
-
- {
- name = "react_input_autosize___react_input_autosize_2.2.1.tgz";
- path = fetchurl {
- name = "react_input_autosize___react_input_autosize_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.1.tgz";
- sha1 = "ec428fa15b1592994fb5f9aa15bb1eb6baf420f8";
- };
- }
-
- {
- name = "react_intl_translations_manager___react_intl_translations_manager_5.0.3.tgz";
- path = fetchurl {
- name = "react_intl_translations_manager___react_intl_translations_manager_5.0.3.tgz";
- url = "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.3.tgz";
- sha1 = "aee010ecf35975673e033ca5d7d3f4147894324d";
- };
- }
-
- {
- name = "react_intl___react_intl_2.9.0.tgz";
- path = fetchurl {
- name = "react_intl___react_intl_2.9.0.tgz";
- url = "https://registry.yarnpkg.com/react-intl/-/react-intl-2.9.0.tgz";
- sha1 = "c97c5d17d4718f1575fdbd5a769f96018a3b1843";
- };
- }
-
- {
- name = "react_is___react_is_16.8.6.tgz";
- path = fetchurl {
- name = "react_is___react_is_16.8.6.tgz";
- url = "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz";
- sha1 = "5bbc1e2d29141c9fbdfed456343fe2bc430a6a16";
- };
- }
-
- {
- name = "react_lifecycles_compat___react_lifecycles_compat_3.0.4.tgz";
- path = fetchurl {
- name = "react_lifecycles_compat___react_lifecycles_compat_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz";
- sha1 = "4f1a273afdfc8f3488a8c516bfda78f872352362";
- };
- }
-
- {
- name = "react_masonry_infinite___react_masonry_infinite_1.2.2.tgz";
- path = fetchurl {
- name = "react_masonry_infinite___react_masonry_infinite_1.2.2.tgz";
- url = "https://registry.yarnpkg.com/react-masonry-infinite/-/react-masonry-infinite-1.2.2.tgz";
- sha1 = "20c1386f9ccdda9747527c8f42bc2c02dd2e7951";
- };
- }
-
- {
- name = "react_motion___react_motion_0.5.2.tgz";
- path = fetchurl {
- name = "react_motion___react_motion_0.5.2.tgz";
- url = "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz";
- sha1 = "0dd3a69e411316567927917c6626551ba0607316";
- };
- }
-
- {
- name = "react_notification___react_notification_6.8.4.tgz";
- path = fetchurl {
- name = "react_notification___react_notification_6.8.4.tgz";
- url = "https://registry.yarnpkg.com/react-notification/-/react-notification-6.8.4.tgz";
- sha1 = "c189d23f47b0e1b240932f4cfab2f4082cd420bf";
- };
- }
-
- {
- name = "react_overlays___react_overlays_0.8.3.tgz";
- path = fetchurl {
- name = "react_overlays___react_overlays_0.8.3.tgz";
- url = "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.8.3.tgz";
- sha1 = "fad65eea5b24301cca192a169f5dddb0b20d3ac5";
- };
- }
-
- {
- name = "react_redux_loading_bar___react_redux_loading_bar_4.0.8.tgz";
- path = fetchurl {
- name = "react_redux_loading_bar___react_redux_loading_bar_4.0.8.tgz";
- url = "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-4.0.8.tgz";
- sha1 = "e84d59d1517b79f53b0f39c8ddb40682af648c1b";
- };
- }
-
- {
- name = "react_redux___react_redux_6.0.1.tgz";
- path = fetchurl {
- name = "react_redux___react_redux_6.0.1.tgz";
- url = "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.1.tgz";
- sha1 = "0d423e2c1cb10ada87293d47e7de7c329623ba4d";
- };
- }
-
- {
- name = "react_router_dom___react_router_dom_4.3.1.tgz";
- path = fetchurl {
- name = "react_router_dom___react_router_dom_4.3.1.tgz";
- url = "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz";
- sha1 = "4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6";
- };
- }
-
- {
- name = "react_router_scroll_4___react_router_scroll_4_1.0.0_beta.2.tgz";
- path = fetchurl {
- name = "react_router_scroll_4___react_router_scroll_4_1.0.0_beta.2.tgz";
- url = "https://registry.yarnpkg.com/react-router-scroll-4/-/react-router-scroll-4-1.0.0-beta.2.tgz";
- sha1 = "d887063ec0f66124aaf450158dd158ff7d3dc279";
- };
- }
-
- {
- name = "react_router___react_router_4.3.1.tgz";
- path = fetchurl {
- name = "react_router___react_router_4.3.1.tgz";
- url = "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz";
- sha1 = "aada4aef14c809cb2e686b05cee4742234506c4e";
- };
- }
-
- {
- name = "react_select___react_select_2.4.4.tgz";
- path = fetchurl {
- name = "react_select___react_select_2.4.4.tgz";
- url = "https://registry.yarnpkg.com/react-select/-/react-select-2.4.4.tgz";
- sha1 = "ba72468ef1060c7d46fbb862b0748f96491f1f73";
- };
- }
-
- {
- name = "react_sparklines___react_sparklines_1.7.0.tgz";
- path = fetchurl {
- name = "react_sparklines___react_sparklines_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/react-sparklines/-/react-sparklines-1.7.0.tgz";
- sha1 = "9b1d97e8c8610095eeb2ad658d2e1fcf91f91a60";
- };
- }
-
- {
- name = "react_swipeable_views_core___react_swipeable_views_core_0.13.1.tgz";
- path = fetchurl {
- name = "react_swipeable_views_core___react_swipeable_views_core_0.13.1.tgz";
- url = "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.13.1.tgz";
- sha1 = "8829a922462a8bdd701709cd1b385393d38f1527";
- };
- }
-
- {
- name = "react_swipeable_views_utils___react_swipeable_views_utils_0.13.3.tgz";
- path = fetchurl {
- name = "react_swipeable_views_utils___react_swipeable_views_utils_0.13.3.tgz";
- url = "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.13.3.tgz";
- sha1 = "c234d8d836bb085803631a9fef0adb2f9597221f";
- };
- }
-
- {
- name = "react_swipeable_views___react_swipeable_views_0.13.3.tgz";
- path = fetchurl {
- name = "react_swipeable_views___react_swipeable_views_0.13.3.tgz";
- url = "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.13.3.tgz";
- sha1 = "2ad886767c6b2de88000606a14bedde12156e6d0";
- };
- }
-
- {
- name = "react_test_renderer___react_test_renderer_16.8.6.tgz";
- path = fetchurl {
- name = "react_test_renderer___react_test_renderer_16.8.6.tgz";
- url = "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz";
- sha1 = "188d8029b8c39c786f998aa3efd3ffe7642d5ba1";
- };
- }
-
- {
- name = "react_textarea_autosize___react_textarea_autosize_7.1.0.tgz";
- path = fetchurl {
- name = "react_textarea_autosize___react_textarea_autosize_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-7.1.0.tgz";
- sha1 = "3132cb77e65d94417558d37c0bfe415a5afd3445";
- };
- }
-
- {
- name = "react_toggle___react_toggle_4.0.2.tgz";
- path = fetchurl {
- name = "react_toggle___react_toggle_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/react-toggle/-/react-toggle-4.0.2.tgz";
- sha1 = "77f487860efb87fafd197672a2db8c885be1440f";
- };
- }
-
- {
- name = "react_transition_group___react_transition_group_2.5.2.tgz";
- path = fetchurl {
- name = "react_transition_group___react_transition_group_2.5.2.tgz";
- url = "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.5.2.tgz";
- sha1 = "9457166a9ba6ce697a3e1b076b3c049b9fb2c408";
- };
- }
-
- {
- name = "react___react_16.8.6.tgz";
- path = fetchurl {
- name = "react___react_16.8.6.tgz";
- url = "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz";
- sha1 = "ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe";
- };
- }
-
- {
- name = "read_pkg_up___read_pkg_up_2.0.0.tgz";
- path = fetchurl {
- name = "read_pkg_up___read_pkg_up_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz";
- sha1 = "6b72a8048984e0c41e79510fd5e9fa99b3b549be";
- };
- }
-
- {
- name = "read_pkg_up___read_pkg_up_4.0.0.tgz";
- path = fetchurl {
- name = "read_pkg_up___read_pkg_up_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz";
- sha1 = "1b221c6088ba7799601c808f91161c66e58f8978";
- };
- }
-
- {
- name = "read_pkg___read_pkg_2.0.0.tgz";
- path = fetchurl {
- name = "read_pkg___read_pkg_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz";
- sha1 = "8ef1c0623c6a6db0dc6713c4bfac46332b2368f8";
- };
- }
-
- {
- name = "read_pkg___read_pkg_3.0.0.tgz";
- path = fetchurl {
- name = "read_pkg___read_pkg_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz";
- sha1 = "9cbc686978fee65d16c00e2b19c237fcf6e38389";
- };
- }
-
- {
- name = "readable_stream___readable_stream_2.3.6.tgz";
- path = fetchurl {
- name = "readable_stream___readable_stream_2.3.6.tgz";
- url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz";
- sha1 = "b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf";
- };
- }
-
- {
- name = "readable_stream___readable_stream_3.1.1.tgz";
- path = fetchurl {
- name = "readable_stream___readable_stream_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz";
- sha1 = "ed6bbc6c5ba58b090039ff18ce670515795aeb06";
- };
- }
-
- {
- name = "readdirp___readdirp_2.2.1.tgz";
- path = fetchurl {
- name = "readdirp___readdirp_2.2.1.tgz";
- url = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz";
- sha1 = "0e87622a3325aa33e892285caf8b4e846529a525";
- };
- }
-
- {
- name = "readline2___readline2_1.0.1.tgz";
- path = fetchurl {
- name = "readline2___readline2_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz";
- sha1 = "41059608ffc154757b715d9989d199ffbf372e35";
- };
- }
-
- {
- name = "realpath_native___realpath_native_1.1.0.tgz";
- path = fetchurl {
- name = "realpath_native___realpath_native_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz";
- sha1 = "2003294fea23fb0672f2476ebe22fcf498a2d65c";
- };
- }
-
- {
- name = "redis_commands___redis_commands_1.4.0.tgz";
- path = fetchurl {
- name = "redis_commands___redis_commands_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.4.0.tgz";
- sha1 = "52f9cf99153efcce56a8f86af986bd04e988602f";
- };
- }
-
- {
- name = "redis_parser___redis_parser_2.6.0.tgz";
- path = fetchurl {
- name = "redis_parser___redis_parser_2.6.0.tgz";
- url = "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz";
- sha1 = "52ed09dacac108f1a631c07e9b69941e7a19504b";
- };
- }
-
- {
- name = "redis___redis_2.8.0.tgz";
- path = fetchurl {
- name = "redis___redis_2.8.0.tgz";
- url = "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz";
- sha1 = "202288e3f58c49f6079d97af7a10e1303ae14b02";
- };
- }
-
- {
- name = "redux_immutable___redux_immutable_4.0.0.tgz";
- path = fetchurl {
- name = "redux_immutable___redux_immutable_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/redux-immutable/-/redux-immutable-4.0.0.tgz";
- sha1 = "3a1a32df66366462b63691f0e1dc35e472bbc9f3";
- };
- }
-
- {
- name = "redux_thunk___redux_thunk_2.3.0.tgz";
- path = fetchurl {
- name = "redux_thunk___redux_thunk_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz";
- sha1 = "51c2c19a185ed5187aaa9a2d08b666d0d6467622";
- };
- }
-
- {
- name = "redux___redux_4.0.1.tgz";
- path = fetchurl {
- name = "redux___redux_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz";
- sha1 = "436cae6cc40fbe4727689d7c8fae44808f1bfef5";
- };
- }
-
- {
- name = "reflect.ownkeys___reflect.ownkeys_0.2.0.tgz";
- path = fetchurl {
- name = "reflect.ownkeys___reflect.ownkeys_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz";
- sha1 = "749aceec7f3fdf8b63f927a04809e90c5c0b3460";
- };
- }
-
- {
- name = "regenerate_unicode_properties___regenerate_unicode_properties_8.1.0.tgz";
- path = fetchurl {
- name = "regenerate_unicode_properties___regenerate_unicode_properties_8.1.0.tgz";
- url = "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz";
- sha1 = "ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e";
- };
- }
-
- {
- name = "regenerate___regenerate_1.4.0.tgz";
- path = fetchurl {
- name = "regenerate___regenerate_1.4.0.tgz";
- url = "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz";
- sha1 = "4a856ec4b56e4077c557589cae85e7a4c8869a11";
- };
- }
-
- {
- name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
- path = fetchurl {
- name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
- url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
- sha1 = "be05ad7f9bf7d22e056f9726cee5017fbf19e2e9";
- };
- }
-
- {
- name = "regenerator_runtime___regenerator_runtime_0.12.1.tgz";
- path = fetchurl {
- name = "regenerator_runtime___regenerator_runtime_0.12.1.tgz";
- url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz";
- sha1 = "fa1a71544764c036f8c49b13a08b2594c9f8a0de";
- };
- }
-
- {
- name = "regenerator_runtime___regenerator_runtime_0.13.2.tgz";
- path = fetchurl {
- name = "regenerator_runtime___regenerator_runtime_0.13.2.tgz";
- url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz";
- sha1 = "32e59c9a6fb9b1a4aff09b4930ca2d4477343447";
- };
- }
-
- {
- name = "regenerator_transform___regenerator_transform_0.14.0.tgz";
- path = fetchurl {
- name = "regenerator_transform___regenerator_transform_0.14.0.tgz";
- url = "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz";
- sha1 = "2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf";
- };
- }
-
- {
- name = "regex_not___regex_not_1.0.2.tgz";
- path = fetchurl {
- name = "regex_not___regex_not_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz";
- sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c";
- };
- }
-
- {
- name = "regexp_tree___regexp_tree_0.1.10.tgz";
- path = fetchurl {
- name = "regexp_tree___regexp_tree_0.1.10.tgz";
- url = "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz";
- sha1 = "d837816a039c7af8a8d64d7a7c3cf6a1d93450bc";
- };
- }
-
- {
- name = "regexpp___regexpp_2.0.1.tgz";
- path = fetchurl {
- name = "regexpp___regexpp_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz";
- sha1 = "8d19d31cf632482b589049f8281f93dbcba4d07f";
- };
- }
-
- {
- name = "regexpu_core___regexpu_core_4.5.4.tgz";
- path = fetchurl {
- name = "regexpu_core___regexpu_core_4.5.4.tgz";
- url = "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz";
- sha1 = "080d9d02289aa87fe1667a4f5136bc98a6aebaae";
- };
- }
-
- {
- name = "regjsgen___regjsgen_0.5.0.tgz";
- path = fetchurl {
- name = "regjsgen___regjsgen_0.5.0.tgz";
- url = "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz";
- sha1 = "a7634dc08f89209c2049adda3525711fb97265dd";
- };
- }
-
- {
- name = "regjsparser___regjsparser_0.6.0.tgz";
- path = fetchurl {
- name = "regjsparser___regjsparser_0.6.0.tgz";
- url = "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz";
- sha1 = "f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c";
- };
- }
-
- {
- name = "rellax___rellax_1.10.0.tgz";
- path = fetchurl {
- name = "rellax___rellax_1.10.0.tgz";
- url = "https://registry.yarnpkg.com/rellax/-/rellax-1.10.0.tgz";
- sha1 = "0308b813b458f9175d37ffb4272e1f616eab1341";
- };
- }
-
- {
- name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
- path = fetchurl {
- name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
- sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
- };
- }
-
- {
- name = "repeat_element___repeat_element_1.1.3.tgz";
- path = fetchurl {
- name = "repeat_element___repeat_element_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz";
- sha1 = "782e0d825c0c5a3bb39731f84efee6b742e6b1ce";
- };
- }
-
- {
- name = "repeat_string___repeat_string_1.6.1.tgz";
- path = fetchurl {
- name = "repeat_string___repeat_string_1.6.1.tgz";
- url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz";
- sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
- };
- }
-
- {
- name = "request_promise_core___request_promise_core_1.1.1.tgz";
- path = fetchurl {
- name = "request_promise_core___request_promise_core_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz";
- sha1 = "3eee00b2c5aa83239cfb04c5700da36f81cd08b6";
- };
- }
-
- {
- name = "request_promise_native___request_promise_native_1.0.5.tgz";
- path = fetchurl {
- name = "request_promise_native___request_promise_native_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz";
- sha1 = "5281770f68e0c9719e5163fd3fab482215f4fda5";
- };
- }
-
- {
- name = "request___request_2.88.0.tgz";
- path = fetchurl {
- name = "request___request_2.88.0.tgz";
- url = "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz";
- sha1 = "9c2fca4f7d35b592efe57c7f0a55e81052124fef";
- };
- }
-
- {
- name = "requestidlecallback___requestidlecallback_0.3.0.tgz";
- path = fetchurl {
- name = "requestidlecallback___requestidlecallback_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/requestidlecallback/-/requestidlecallback-0.3.0.tgz";
- sha1 = "6fb74e0733f90df3faa4838f9f6a2a5f9b742ac5";
- };
- }
-
- {
- name = "require_directory___require_directory_2.1.1.tgz";
- path = fetchurl {
- name = "require_directory___require_directory_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
- sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
- };
- }
-
- {
- name = "require_from_string___require_from_string_2.0.2.tgz";
- path = fetchurl {
- name = "require_from_string___require_from_string_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz";
- sha1 = "89a7fdd938261267318eafe14f9c32e598c36909";
- };
- }
-
- {
- name = "require_main_filename___require_main_filename_1.0.1.tgz";
- path = fetchurl {
- name = "require_main_filename___require_main_filename_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz";
- sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
- };
- }
-
- {
- name = "require_package_name___require_package_name_2.0.1.tgz";
- path = fetchurl {
- name = "require_package_name___require_package_name_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz";
- sha1 = "c11e97276b65b8e2923f75dabf5fb2ef0c3841b9";
- };
- }
-
- {
- name = "require_uncached___require_uncached_1.0.3.tgz";
- path = fetchurl {
- name = "require_uncached___require_uncached_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz";
- sha1 = "4e0d56d6c9662fd31e43011c4b95aa49955421d3";
- };
- }
-
- {
- name = "requires_port___requires_port_1.0.0.tgz";
- path = fetchurl {
- name = "requires_port___requires_port_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz";
- sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
- };
- }
-
- {
- name = "reselect___reselect_4.0.0.tgz";
- path = fetchurl {
- name = "reselect___reselect_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz";
- sha1 = "f2529830e5d3d0e021408b246a206ef4ea4437f7";
- };
- }
-
- {
- name = "resolve_cwd___resolve_cwd_2.0.0.tgz";
- path = fetchurl {
- name = "resolve_cwd___resolve_cwd_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz";
- sha1 = "00a9f7387556e27038eae232caa372a6a59b665a";
- };
- }
-
- {
- name = "resolve_dir___resolve_dir_1.0.1.tgz";
- path = fetchurl {
- name = "resolve_dir___resolve_dir_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz";
- sha1 = "79a40644c362be82f26effe739c9bb5382046f43";
- };
- }
-
- {
- name = "resolve_from___resolve_from_1.0.1.tgz";
- path = fetchurl {
- name = "resolve_from___resolve_from_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz";
- sha1 = "26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226";
- };
- }
-
- {
- name = "resolve_from___resolve_from_3.0.0.tgz";
- path = fetchurl {
- name = "resolve_from___resolve_from_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz";
- sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748";
- };
- }
-
- {
- name = "resolve_pathname___resolve_pathname_2.2.0.tgz";
- path = fetchurl {
- name = "resolve_pathname___resolve_pathname_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz";
- sha1 = "7e9ae21ed815fd63ab189adeee64dc831eefa879";
- };
- }
-
- {
- name = "resolve_url___resolve_url_0.2.1.tgz";
- path = fetchurl {
- name = "resolve_url___resolve_url_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz";
- sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
- };
- }
-
- {
- name = "resolve___resolve_1.1.7.tgz";
- path = fetchurl {
- name = "resolve___resolve_1.1.7.tgz";
- url = "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz";
- sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b";
- };
- }
-
- {
- name = "resolve___resolve_1.11.0.tgz";
- path = fetchurl {
- name = "resolve___resolve_1.11.0.tgz";
- url = "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz";
- sha1 = "4014870ba296176b86343d50b60f3b50609ce232";
- };
- }
-
- {
- name = "restore_cursor___restore_cursor_1.0.1.tgz";
- path = fetchurl {
- name = "restore_cursor___restore_cursor_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz";
- sha1 = "34661f46886327fed2991479152252df92daa541";
- };
- }
-
- {
- name = "restore_cursor___restore_cursor_2.0.0.tgz";
- path = fetchurl {
- name = "restore_cursor___restore_cursor_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz";
- sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf";
- };
- }
-
- {
- name = "ret___ret_0.1.15.tgz";
- path = fetchurl {
- name = "ret___ret_0.1.15.tgz";
- url = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz";
- sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc";
- };
- }
-
- {
- name = "rgb_regex___rgb_regex_1.0.1.tgz";
- path = fetchurl {
- name = "rgb_regex___rgb_regex_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz";
- sha1 = "c0e0d6882df0e23be254a475e8edd41915feaeb1";
- };
- }
-
- {
- name = "rgba_regex___rgba_regex_1.0.0.tgz";
- path = fetchurl {
- name = "rgba_regex___rgba_regex_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz";
- sha1 = "43374e2e2ca0968b0ef1523460b7d730ff22eeb3";
- };
- }
-
- {
- name = "rimraf___rimraf_2.6.3.tgz";
- path = fetchurl {
- name = "rimraf___rimraf_2.6.3.tgz";
- url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz";
- sha1 = "b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab";
- };
- }
-
- {
- name = "ripemd160___ripemd160_2.0.2.tgz";
- path = fetchurl {
- name = "ripemd160___ripemd160_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz";
- sha1 = "a1c1a6f624751577ba5d07914cbc92850585890c";
- };
- }
-
- {
- name = "rst_selector_parser___rst_selector_parser_2.2.3.tgz";
- path = fetchurl {
- name = "rst_selector_parser___rst_selector_parser_2.2.3.tgz";
- url = "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz";
- sha1 = "81b230ea2fcc6066c89e3472de794285d9b03d91";
- };
- }
-
- {
- name = "rsvp___rsvp_3.6.2.tgz";
- path = fetchurl {
- name = "rsvp___rsvp_3.6.2.tgz";
- url = "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz";
- sha1 = "2e96491599a96cde1b515d5674a8f7a91452926a";
- };
- }
-
- {
- name = "run_async___run_async_0.1.0.tgz";
- path = fetchurl {
- name = "run_async___run_async_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz";
- sha1 = "c8ad4a5e110661e402a7d21b530e009f25f8e389";
- };
- }
-
- {
- name = "run_async___run_async_2.3.0.tgz";
- path = fetchurl {
- name = "run_async___run_async_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz";
- sha1 = "0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0";
- };
- }
-
- {
- name = "run_queue___run_queue_1.0.3.tgz";
- path = fetchurl {
- name = "run_queue___run_queue_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz";
- sha1 = "e848396f057d223f24386924618e25694161ec47";
- };
- }
-
- {
- name = "rx_lite___rx_lite_3.1.2.tgz";
- path = fetchurl {
- name = "rx_lite___rx_lite_3.1.2.tgz";
- url = "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz";
- sha1 = "19ce502ca572665f3b647b10939f97fd1615f102";
- };
- }
-
- {
- name = "rxjs___rxjs_6.3.3.tgz";
- path = fetchurl {
- name = "rxjs___rxjs_6.3.3.tgz";
- url = "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz";
- sha1 = "3c6a7fa420e844a81390fb1158a9ec614f4bad55";
- };
- }
-
- {
- name = "safe_buffer___safe_buffer_5.1.2.tgz";
- path = fetchurl {
- name = "safe_buffer___safe_buffer_5.1.2.tgz";
- url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
- sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
- };
- }
-
- {
- name = "safe_regex___safe_regex_1.1.0.tgz";
- path = fetchurl {
- name = "safe_regex___safe_regex_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz";
- sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
- };
- }
-
- {
- name = "safer_buffer___safer_buffer_2.1.2.tgz";
- path = fetchurl {
- name = "safer_buffer___safer_buffer_2.1.2.tgz";
- url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
- sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
- };
- }
-
- {
- name = "sane___sane_4.0.3.tgz";
- path = fetchurl {
- name = "sane___sane_4.0.3.tgz";
- url = "https://registry.yarnpkg.com/sane/-/sane-4.0.3.tgz";
- sha1 = "e878c3f19e25cc57fbb734602f48f8a97818b181";
- };
- }
-
- {
- name = "sass_lint___sass_lint_1.13.1.tgz";
- path = fetchurl {
- name = "sass_lint___sass_lint_1.13.1.tgz";
- url = "https://registry.yarnpkg.com/sass-lint/-/sass-lint-1.13.1.tgz";
- sha1 = "5fd2b2792e9215272335eb0f0dc607f61e8acc8f";
- };
- }
-
- {
- name = "sass_loader___sass_loader_7.1.0.tgz";
- path = fetchurl {
- name = "sass_loader___sass_loader_7.1.0.tgz";
- url = "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz";
- sha1 = "16fd5138cb8b424bf8a759528a1972d72aad069d";
- };
- }
-
- {
- name = "sass___sass_1.20.3.tgz";
- path = fetchurl {
- name = "sass___sass_1.20.3.tgz";
- url = "https://registry.yarnpkg.com/sass/-/sass-1.20.3.tgz";
- sha1 = "18284a7bac6eab9cbb80453288473194f29efb84";
- };
- }
-
- {
- name = "sax___sax_1.2.4.tgz";
- path = fetchurl {
- name = "sax___sax_1.2.4.tgz";
- url = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
- sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
- };
- }
-
- {
- name = "scheduler___scheduler_0.13.6.tgz";
- path = fetchurl {
- name = "scheduler___scheduler_0.13.6.tgz";
- url = "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz";
- sha1 = "466a4ec332467b31a91b9bf74e5347072e4cd889";
- };
- }
-
- {
- name = "schema_utils___schema_utils_1.0.0.tgz";
- path = fetchurl {
- name = "schema_utils___schema_utils_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz";
- sha1 = "0b79a93204d7b600d4b2850d1f66c2a34951c770";
- };
- }
-
- {
- name = "scroll_behavior___scroll_behavior_0.9.9.tgz";
- path = fetchurl {
- name = "scroll_behavior___scroll_behavior_0.9.9.tgz";
- url = "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.9.tgz";
- sha1 = "ebfe0658455b82ad885b66195215416674dacce2";
- };
- }
-
- {
- name = "select_hose___select_hose_2.0.0.tgz";
- path = fetchurl {
- name = "select_hose___select_hose_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz";
- sha1 = "625d8658f865af43ec962bfc376a37359a4994ca";
- };
- }
-
- {
- name = "selfsigned___selfsigned_1.10.4.tgz";
- path = fetchurl {
- name = "selfsigned___selfsigned_1.10.4.tgz";
- url = "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz";
- sha1 = "cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd";
- };
- }
-
- {
- name = "semver___semver_5.7.0.tgz";
- path = fetchurl {
- name = "semver___semver_5.7.0.tgz";
- url = "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz";
- sha1 = "790a7cf6fea5459bac96110b29b60412dc8ff96b";
- };
- }
-
- {
- name = "semver___semver_4.3.2.tgz";
- path = fetchurl {
- name = "semver___semver_4.3.2.tgz";
- url = "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz";
- sha1 = "c7a07158a80bedd052355b770d82d6640f803be7";
- };
- }
-
- {
- name = "semver___semver_6.1.1.tgz";
- path = fetchurl {
- name = "semver___semver_6.1.1.tgz";
- url = "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz";
- sha1 = "53f53da9b30b2103cd4f15eab3a18ecbcb210c9b";
- };
- }
-
- {
- name = "send___send_0.17.1.tgz";
- path = fetchurl {
- name = "send___send_0.17.1.tgz";
- url = "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz";
- sha1 = "c1d8b059f7900f7466dd4938bdc44e11ddb376c8";
- };
- }
-
- {
- name = "serialize_javascript___serialize_javascript_1.6.1.tgz";
- path = fetchurl {
- name = "serialize_javascript___serialize_javascript_1.6.1.tgz";
- url = "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz";
- sha1 = "4d1f697ec49429a847ca6f442a2a755126c4d879";
- };
- }
-
- {
- name = "serialize_javascript___serialize_javascript_1.7.0.tgz";
- path = fetchurl {
- name = "serialize_javascript___serialize_javascript_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz";
- sha1 = "d6e0dfb2a3832a8c94468e6eb1db97e55a192a65";
- };
- }
-
- {
- name = "serve_index___serve_index_1.9.1.tgz";
- path = fetchurl {
- name = "serve_index___serve_index_1.9.1.tgz";
- url = "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz";
- sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
- };
- }
-
- {
- name = "serve_static___serve_static_1.14.1.tgz";
- path = fetchurl {
- name = "serve_static___serve_static_1.14.1.tgz";
- url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz";
- sha1 = "666e636dc4f010f7ef29970a88a674320898b2f9";
- };
- }
-
- {
- name = "set_blocking___set_blocking_2.0.0.tgz";
- path = fetchurl {
- name = "set_blocking___set_blocking_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
- sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
- };
- }
-
- {
- name = "set_value___set_value_0.4.3.tgz";
- path = fetchurl {
- name = "set_value___set_value_0.4.3.tgz";
- url = "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz";
- sha1 = "7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1";
- };
- }
-
- {
- name = "set_value___set_value_2.0.0.tgz";
- path = fetchurl {
- name = "set_value___set_value_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz";
- sha1 = "71ae4a88f0feefbbf52d1ea604f3fb315ebb6274";
- };
- }
-
- {
- name = "setimmediate___setimmediate_1.0.5.tgz";
- path = fetchurl {
- name = "setimmediate___setimmediate_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz";
- sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
- };
- }
-
- {
- name = "setprototypeof___setprototypeof_1.1.0.tgz";
- path = fetchurl {
- name = "setprototypeof___setprototypeof_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz";
- sha1 = "d0bd85536887b6fe7c0d818cb962d9d91c54e656";
- };
- }
-
- {
- name = "setprototypeof___setprototypeof_1.1.1.tgz";
- path = fetchurl {
- name = "setprototypeof___setprototypeof_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz";
- sha1 = "7e95acb24aa92f5885e0abef5ba131330d4ae683";
- };
- }
-
- {
- name = "sha.js___sha.js_2.4.11.tgz";
- path = fetchurl {
- name = "sha.js___sha.js_2.4.11.tgz";
- url = "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz";
- sha1 = "37a5cf0b81ecbc6943de109ba2960d1b26584ae7";
- };
- }
-
- {
- name = "shallow_clone___shallow_clone_1.0.0.tgz";
- path = fetchurl {
- name = "shallow_clone___shallow_clone_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz";
- sha1 = "4480cd06e882ef68b2ad88a3ea54832e2c48b571";
- };
- }
-
- {
- name = "shebang_command___shebang_command_1.2.0.tgz";
- path = fetchurl {
- name = "shebang_command___shebang_command_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz";
- sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
- };
- }
-
- {
- name = "shebang_regex___shebang_regex_1.0.0.tgz";
- path = fetchurl {
- name = "shebang_regex___shebang_regex_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz";
- sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
- };
- }
-
- {
- name = "shelljs___shelljs_0.6.1.tgz";
- path = fetchurl {
- name = "shelljs___shelljs_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz";
- sha1 = "ec6211bed1920442088fe0f70b2837232ed2c8a8";
- };
- }
-
- {
- name = "shellwords___shellwords_0.1.1.tgz";
- path = fetchurl {
- name = "shellwords___shellwords_0.1.1.tgz";
- url = "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz";
- sha1 = "d6b9181c1a48d397324c84871efbcfc73fc0654b";
- };
- }
-
- {
- name = "signal_exit___signal_exit_3.0.2.tgz";
- path = fetchurl {
- name = "signal_exit___signal_exit_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz";
- sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
- };
- }
-
- {
- name = "simple_swizzle___simple_swizzle_0.2.2.tgz";
- path = fetchurl {
- name = "simple_swizzle___simple_swizzle_0.2.2.tgz";
- url = "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz";
- sha1 = "a4da6b635ffcccca33f70d17cb92592de95e557a";
- };
- }
-
- {
- name = "sisteransi___sisteransi_1.0.0.tgz";
- path = fetchurl {
- name = "sisteransi___sisteransi_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz";
- sha1 = "77d9622ff909080f1c19e5f4a1df0c1b0a27b88c";
- };
- }
-
- {
- name = "slash___slash_1.0.0.tgz";
- path = fetchurl {
- name = "slash___slash_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz";
- sha1 = "c41f2f6c39fc16d1cd17ad4b5d896114ae470d55";
- };
- }
-
- {
- name = "slash___slash_2.0.0.tgz";
- path = fetchurl {
- name = "slash___slash_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz";
- sha1 = "de552851a1759df3a8f206535442f5ec4ddeab44";
- };
- }
-
- {
- name = "slice_ansi___slice_ansi_0.0.4.tgz";
- path = fetchurl {
- name = "slice_ansi___slice_ansi_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz";
- sha1 = "edbf8903f66f7ce2f8eafd6ceed65e264c831b35";
- };
- }
-
- {
- name = "slice_ansi___slice_ansi_2.0.0.tgz";
- path = fetchurl {
- name = "slice_ansi___slice_ansi_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz";
- sha1 = "5373bdb8559b45676e8541c66916cdd6251612e7";
- };
- }
-
- {
- name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
- path = fetchurl {
- name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
- sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b";
- };
- }
-
- {
- name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
- path = fetchurl {
- name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
- sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2";
- };
- }
-
- {
- name = "snapdragon___snapdragon_0.8.2.tgz";
- path = fetchurl {
- name = "snapdragon___snapdragon_0.8.2.tgz";
- url = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz";
- sha1 = "64922e7c565b0e14204ba1aa7d6964278d25182d";
- };
- }
-
- {
- name = "sockjs_client___sockjs_client_1.3.0.tgz";
- path = fetchurl {
- name = "sockjs_client___sockjs_client_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz";
- sha1 = "12fc9d6cb663da5739d3dc5fb6e8687da95cb177";
- };
- }
-
- {
- name = "sockjs___sockjs_0.3.19.tgz";
- path = fetchurl {
- name = "sockjs___sockjs_0.3.19.tgz";
- url = "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz";
- sha1 = "d976bbe800af7bd20ae08598d582393508993c0d";
- };
- }
-
- {
- name = "source_list_map___source_list_map_2.0.1.tgz";
- path = fetchurl {
- name = "source_list_map___source_list_map_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz";
- sha1 = "3993bd873bfc48479cca9ea3a547835c7c154b34";
- };
- }
-
- {
- name = "source_map_resolve___source_map_resolve_0.5.2.tgz";
- path = fetchurl {
- name = "source_map_resolve___source_map_resolve_0.5.2.tgz";
- url = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz";
- sha1 = "72e2cc34095543e43b2c62b2c4c10d4a9054f259";
- };
- }
-
- {
- name = "source_map_support___source_map_support_0.5.9.tgz";
- path = fetchurl {
- name = "source_map_support___source_map_support_0.5.9.tgz";
- url = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz";
- sha1 = "41bc953b2534267ea2d605bccfa7bfa3111ced5f";
- };
- }
-
- {
- name = "source_map_support___source_map_support_0.5.12.tgz";
- path = fetchurl {
- name = "source_map_support___source_map_support_0.5.12.tgz";
- url = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz";
- sha1 = "b4f3b10d51857a5af0138d3ce8003b201613d599";
- };
- }
-
- {
- name = "source_map_url___source_map_url_0.4.0.tgz";
- path = fetchurl {
- name = "source_map_url___source_map_url_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz";
- sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
- };
- }
-
- {
- name = "source_map___source_map_0.5.7.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.5.7.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz";
- sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
- };
- }
-
- {
- name = "source_map___source_map_0.6.1.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.6.1.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
- sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
- };
- }
-
- {
- name = "source_map___source_map_0.7.3.tgz";
- path = fetchurl {
- name = "source_map___source_map_0.7.3.tgz";
- url = "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz";
- sha1 = "5302f8169031735226544092e64981f751750383";
- };
- }
-
- {
- name = "spdx_correct___spdx_correct_3.1.0.tgz";
- path = fetchurl {
- name = "spdx_correct___spdx_correct_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz";
- sha1 = "fb83e504445268f154b074e218c87c003cd31df4";
- };
- }
-
- {
- name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
- path = fetchurl {
- name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
- url = "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz";
- sha1 = "2ea450aee74f2a89bfb94519c07fcd6f41322977";
- };
- }
-
- {
- name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
- path = fetchurl {
- name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
- sha1 = "99e119b7a5da00e05491c9fa338b7904823b41d0";
- };
- }
-
- {
- name = "spdx_license_ids___spdx_license_ids_3.0.3.tgz";
- path = fetchurl {
- name = "spdx_license_ids___spdx_license_ids_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz";
- sha1 = "81c0ce8f21474756148bbb5f3bfc0f36bf15d76e";
- };
- }
-
- {
- name = "spdy_transport___spdy_transport_3.0.0.tgz";
- path = fetchurl {
- name = "spdy_transport___spdy_transport_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz";
- sha1 = "00d4863a6400ad75df93361a1608605e5dcdcf31";
- };
- }
-
- {
- name = "spdy___spdy_4.0.0.tgz";
- path = fetchurl {
- name = "spdy___spdy_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz";
- sha1 = "81f222b5a743a329aa12cea6a390e60e9b613c52";
- };
- }
-
- {
- name = "split_string___split_string_3.1.0.tgz";
- path = fetchurl {
- name = "split_string___split_string_3.1.0.tgz";
- url = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz";
- sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2";
- };
- }
-
- {
- name = "split___split_1.0.1.tgz";
- path = fetchurl {
- name = "split___split_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz";
- sha1 = "605bd9be303aa59fb35f9229fbea0ddec9ea07d9";
- };
- }
-
- {
- name = "sprintf_js___sprintf_js_1.0.3.tgz";
- path = fetchurl {
- name = "sprintf_js___sprintf_js_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
- sha1 = "04e6926f662895354f3dd015203633b857297e2c";
- };
- }
-
- {
- name = "sshpk___sshpk_1.16.0.tgz";
- path = fetchurl {
- name = "sshpk___sshpk_1.16.0.tgz";
- url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.0.tgz";
- sha1 = "1d4963a2fbffe58050aa9084ca20be81741c07de";
- };
- }
-
- {
- name = "ssri___ssri_6.0.1.tgz";
- path = fetchurl {
- name = "ssri___ssri_6.0.1.tgz";
- url = "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz";
- sha1 = "2a3c41b28dd45b62b63676ecb74001265ae9edd8";
- };
- }
-
- {
- name = "stable___stable_0.1.8.tgz";
- path = fetchurl {
- name = "stable___stable_0.1.8.tgz";
- url = "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz";
- sha1 = "836eb3c8382fe2936feaf544631017ce7d47a3cf";
- };
- }
-
- {
- name = "stack_utils___stack_utils_1.0.2.tgz";
- path = fetchurl {
- name = "stack_utils___stack_utils_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz";
- sha1 = "33eba3897788558bebfc2db059dc158ec36cebb8";
- };
- }
-
- {
- name = "static_extend___static_extend_0.1.2.tgz";
- path = fetchurl {
- name = "static_extend___static_extend_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz";
- sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
- };
- }
-
- {
- name = "statuses___statuses_1.5.0.tgz";
- path = fetchurl {
- name = "statuses___statuses_1.5.0.tgz";
- url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
- sha1 = "161c7dac177659fd9811f43771fa99381478628c";
- };
- }
-
- {
- name = "stealthy_require___stealthy_require_1.1.1.tgz";
- path = fetchurl {
- name = "stealthy_require___stealthy_require_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz";
- sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b";
- };
- }
-
- {
- name = "stream_browserify___stream_browserify_2.0.1.tgz";
- path = fetchurl {
- name = "stream_browserify___stream_browserify_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz";
- sha1 = "66266ee5f9bdb9940a4e4514cafb43bb71e5c9db";
- };
- }
-
- {
- name = "stream_each___stream_each_1.2.3.tgz";
- path = fetchurl {
- name = "stream_each___stream_each_1.2.3.tgz";
- url = "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz";
- sha1 = "ebe27a0c389b04fbcc233642952e10731afa9bae";
- };
- }
-
- {
- name = "stream_http___stream_http_2.8.3.tgz";
- path = fetchurl {
- name = "stream_http___stream_http_2.8.3.tgz";
- url = "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz";
- sha1 = "b2d242469288a5a27ec4fe8933acf623de6514fc";
- };
- }
-
- {
- name = "stream_shift___stream_shift_1.0.0.tgz";
- path = fetchurl {
- name = "stream_shift___stream_shift_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz";
- sha1 = "d5c752825e5367e786f78e18e445ea223a155952";
- };
- }
-
- {
- name = "string_length___string_length_2.0.0.tgz";
- path = fetchurl {
- name = "string_length___string_length_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz";
- sha1 = "d40dbb686a3ace960c1cffca562bf2c45f8363ed";
- };
- }
-
- {
- name = "string_width___string_width_1.0.2.tgz";
- path = fetchurl {
- name = "string_width___string_width_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz";
- sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
- };
- }
-
- {
- name = "string_width___string_width_2.1.1.tgz";
- path = fetchurl {
- name = "string_width___string_width_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
- sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
- };
- }
-
- {
- name = "string.prototype.trim___string.prototype.trim_1.1.2.tgz";
- path = fetchurl {
- name = "string.prototype.trim___string.prototype.trim_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz";
- sha1 = "d04de2c89e137f4d7d206f086b5ed2fae6be8cea";
- };
- }
-
- {
- name = "string_decoder___string_decoder_1.2.0.tgz";
- path = fetchurl {
- name = "string_decoder___string_decoder_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz";
- sha1 = "fe86e738b19544afe70469243b2a1ee9240eae8d";
- };
- }
-
- {
- name = "string_decoder___string_decoder_1.1.1.tgz";
- path = fetchurl {
- name = "string_decoder___string_decoder_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz";
- sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8";
- };
- }
-
- {
- name = "stringz___stringz_1.0.0.tgz";
- path = fetchurl {
- name = "stringz___stringz_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/stringz/-/stringz-1.0.0.tgz";
- sha1 = "d2acba994e4ce3c725ee15c86fff4281280d2025";
- };
- }
-
- {
- name = "strip_ansi___strip_ansi_3.0.1.tgz";
- path = fetchurl {
- name = "strip_ansi___strip_ansi_3.0.1.tgz";
- url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
- sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
- };
- }
-
- {
- name = "strip_ansi___strip_ansi_4.0.0.tgz";
- path = fetchurl {
- name = "strip_ansi___strip_ansi_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
- sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
- };
- }
-
- {
- name = "strip_ansi___strip_ansi_5.0.0.tgz";
- path = fetchurl {
- name = "strip_ansi___strip_ansi_5.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz";
- sha1 = "f78f68b5d0866c20b2c9b8c61b5298508dc8756f";
- };
- }
-
- {
- name = "strip_bom___strip_bom_3.0.0.tgz";
- path = fetchurl {
- name = "strip_bom___strip_bom_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz";
- sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
- };
- }
-
- {
- name = "strip_eof___strip_eof_1.0.0.tgz";
- path = fetchurl {
- name = "strip_eof___strip_eof_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz";
- sha1 = "bb43ff5598a6eb05d89b59fcd129c983313606bf";
- };
- }
-
- {
- name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
- path = fetchurl {
- name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
- sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
- };
- }
-
- {
- name = "strip_json_comments___strip_json_comments_1.0.4.tgz";
- path = fetchurl {
- name = "strip_json_comments___strip_json_comments_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz";
- sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91";
- };
- }
-
- {
- name = "stylehacks___stylehacks_4.0.1.tgz";
- path = fetchurl {
- name = "stylehacks___stylehacks_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz";
- sha1 = "3186595d047ab0df813d213e51c8b94e0b9010f2";
- };
- }
-
- {
- name = "stylis_rule_sheet___stylis_rule_sheet_0.0.10.tgz";
- path = fetchurl {
- name = "stylis_rule_sheet___stylis_rule_sheet_0.0.10.tgz";
- url = "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz";
- sha1 = "44e64a2b076643f4b52e5ff71efc04d8c3c4a430";
- };
- }
-
- {
- name = "stylis___stylis_3.5.4.tgz";
- path = fetchurl {
- name = "stylis___stylis_3.5.4.tgz";
- url = "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz";
- sha1 = "f665f25f5e299cf3d64654ab949a57c768b73fbe";
- };
- }
-
- {
- name = "substring_trie___substring_trie_1.0.2.tgz";
- path = fetchurl {
- name = "substring_trie___substring_trie_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/substring-trie/-/substring-trie-1.0.2.tgz";
- sha1 = "7b42592391628b4f2cb17365c6cce4257c7b7af5";
- };
- }
-
- {
- name = "supports_color___supports_color_2.0.0.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz";
- sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
- };
- }
-
- {
- name = "supports_color___supports_color_3.2.3.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_3.2.3.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz";
- sha1 = "65ac0504b3954171d8a64946b2ae3cbb8a5f54f6";
- };
- }
-
- {
- name = "supports_color___supports_color_5.5.0.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_5.5.0.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz";
- sha1 = "e2e69a44ac8772f78a1ec0b35b689df6530efc8f";
- };
- }
-
- {
- name = "supports_color___supports_color_6.1.0.tgz";
- path = fetchurl {
- name = "supports_color___supports_color_6.1.0.tgz";
- url = "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz";
- sha1 = "0764abc69c63d5ac842dd4867e8d025e880df8f3";
- };
- }
-
- {
- name = "svgo___svgo_1.1.1.tgz";
- path = fetchurl {
- name = "svgo___svgo_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz";
- sha1 = "12384b03335bcecd85cfa5f4e3375fed671cb985";
- };
- }
-
- {
- name = "symbol_observable___symbol_observable_1.2.0.tgz";
- path = fetchurl {
- name = "symbol_observable___symbol_observable_1.2.0.tgz";
- url = "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz";
- sha1 = "c22688aed4eab3cdc2dfeacbb561660560a00804";
- };
- }
-
- {
- name = "symbol_tree___symbol_tree_3.2.2.tgz";
- path = fetchurl {
- name = "symbol_tree___symbol_tree_3.2.2.tgz";
- url = "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz";
- sha1 = "ae27db38f660a7ae2e1c3b7d1bc290819b8519e6";
- };
- }
-
- {
- name = "table___table_3.8.3.tgz";
- path = fetchurl {
- name = "table___table_3.8.3.tgz";
- url = "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz";
- sha1 = "2bbc542f0fda9861a755d3947fefd8b3f513855f";
- };
- }
-
- {
- name = "table___table_5.1.1.tgz";
- path = fetchurl {
- name = "table___table_5.1.1.tgz";
- url = "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz";
- sha1 = "92030192f1b7b51b6eeab23ed416862e47b70837";
- };
- }
-
- {
- name = "tapable___tapable_1.1.1.tgz";
- path = fetchurl {
- name = "tapable___tapable_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz";
- sha1 = "4d297923c5a72a42360de2ab52dadfaaec00018e";
- };
- }
-
- {
- name = "tar___tar_4.4.8.tgz";
- path = fetchurl {
- name = "tar___tar_4.4.8.tgz";
- url = "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz";
- sha1 = "b19eec3fde2a96e64666df9fdb40c5ca1bc3747d";
- };
- }
-
- {
- name = "tcomb___tcomb_2.7.0.tgz";
- path = fetchurl {
- name = "tcomb___tcomb_2.7.0.tgz";
- url = "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz";
- sha1 = "10d62958041669a5d53567b9a4ee8cde22b1c2b0";
- };
- }
-
- {
- name = "terser_webpack_plugin___terser_webpack_plugin_1.3.0.tgz";
- path = fetchurl {
- name = "terser_webpack_plugin___terser_webpack_plugin_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz";
- sha1 = "69aa22426299f4b5b3775cbed8cb2c5d419aa1d4";
- };
- }
-
- {
- name = "terser___terser_4.0.0.tgz";
- path = fetchurl {
- name = "terser___terser_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/terser/-/terser-4.0.0.tgz";
- sha1 = "ef356f6f359a963e2cc675517f21c1c382877374";
- };
- }
-
- {
- name = "test_exclude___test_exclude_5.1.0.tgz";
- path = fetchurl {
- name = "test_exclude___test_exclude_5.1.0.tgz";
- url = "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz";
- sha1 = "6ba6b25179d2d38724824661323b73e03c0c1de1";
- };
- }
-
- {
- name = "text_table___text_table_0.2.0.tgz";
- path = fetchurl {
- name = "text_table___text_table_0.2.0.tgz";
- url = "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz";
- sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
- };
- }
-
- {
- name = "throat___throat_4.1.0.tgz";
- path = fetchurl {
- name = "throat___throat_4.1.0.tgz";
- url = "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz";
- sha1 = "89037cbc92c56ab18926e6ba4cbb200e15672a6a";
- };
- }
-
- {
- name = "throng___throng_4.0.0.tgz";
- path = fetchurl {
- name = "throng___throng_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/throng/-/throng-4.0.0.tgz";
- sha1 = "983c6ba1993b58eae859998aa687ffe88df84c17";
- };
- }
-
- {
- name = "through2___through2_2.0.5.tgz";
- path = fetchurl {
- name = "through2___through2_2.0.5.tgz";
- url = "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz";
- sha1 = "01c1e39eb31d07cb7d03a96a70823260b23132cd";
- };
- }
-
- {
- name = "through___through_2.3.8.tgz";
- path = fetchurl {
- name = "through___through_2.3.8.tgz";
- url = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz";
- sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
- };
- }
-
- {
- name = "thunky___thunky_1.0.3.tgz";
- path = fetchurl {
- name = "thunky___thunky_1.0.3.tgz";
- url = "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz";
- sha1 = "f5df732453407b09191dae73e2a8cc73f381a826";
- };
- }
-
- {
- name = "timers_browserify___timers_browserify_2.0.10.tgz";
- path = fetchurl {
- name = "timers_browserify___timers_browserify_2.0.10.tgz";
- url = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz";
- sha1 = "1d28e3d2aadf1d5a5996c4e9f95601cd053480ae";
- };
- }
-
- {
- name = "timsort___timsort_0.3.0.tgz";
- path = fetchurl {
- name = "timsort___timsort_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz";
- sha1 = "405411a8e7e6339fe64db9a234de11dc31e02bd4";
- };
- }
-
- {
- name = "tiny_queue___tiny_queue_0.2.1.tgz";
- path = fetchurl {
- name = "tiny_queue___tiny_queue_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz";
- sha1 = "25a67f2c6e253b2ca941977b5ef7442ef97a6046";
- };
- }
-
- {
- name = "tmp___tmp_0.0.33.tgz";
- path = fetchurl {
- name = "tmp___tmp_0.0.33.tgz";
- url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz";
- sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9";
- };
- }
-
- {
- name = "tmpl___tmpl_1.0.4.tgz";
- path = fetchurl {
- name = "tmpl___tmpl_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz";
- sha1 = "23640dd7b42d00433911140820e5cf440e521dd1";
- };
- }
-
- {
- name = "to_arraybuffer___to_arraybuffer_1.0.1.tgz";
- path = fetchurl {
- name = "to_arraybuffer___to_arraybuffer_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz";
- sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43";
- };
- }
-
- {
- name = "to_fast_properties___to_fast_properties_2.0.0.tgz";
- path = fetchurl {
- name = "to_fast_properties___to_fast_properties_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz";
- sha1 = "dc5e698cbd079265bc73e0377681a4e4e83f616e";
- };
- }
-
- {
- name = "to_object_path___to_object_path_0.3.0.tgz";
- path = fetchurl {
- name = "to_object_path___to_object_path_0.3.0.tgz";
- url = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz";
- sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
- };
- }
-
- {
- name = "to_regex_range___to_regex_range_2.1.1.tgz";
- path = fetchurl {
- name = "to_regex_range___to_regex_range_2.1.1.tgz";
- url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz";
- sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
- };
- }
-
- {
- name = "to_regex___to_regex_3.0.2.tgz";
- path = fetchurl {
- name = "to_regex___to_regex_3.0.2.tgz";
- url = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz";
- sha1 = "13cfdd9b336552f30b51f33a8ae1b42a7a7599ce";
- };
- }
-
- {
- name = "toidentifier___toidentifier_1.0.0.tgz";
- path = fetchurl {
- name = "toidentifier___toidentifier_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz";
- sha1 = "7e1be3470f1e77948bc43d94a3c8f4d7752ba553";
- };
- }
-
- {
- name = "touch___touch_2.0.2.tgz";
- path = fetchurl {
- name = "touch___touch_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/touch/-/touch-2.0.2.tgz";
- sha1 = "ca0b2a3ae3211246a61b16ba9e6cbf1596287164";
- };
- }
-
- {
- name = "tough_cookie___tough_cookie_2.5.0.tgz";
- path = fetchurl {
- name = "tough_cookie___tough_cookie_2.5.0.tgz";
- url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz";
- sha1 = "cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2";
- };
- }
-
- {
- name = "tough_cookie___tough_cookie_2.4.3.tgz";
- path = fetchurl {
- name = "tough_cookie___tough_cookie_2.4.3.tgz";
- url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz";
- sha1 = "53f36da3f47783b0925afa06ff9f3b165280f781";
- };
- }
-
- {
- name = "tr46___tr46_1.0.1.tgz";
- path = fetchurl {
- name = "tr46___tr46_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz";
- sha1 = "a8b13fd6bfd2489519674ccde55ba3693b706d09";
- };
- }
-
- {
- name = "trim_right___trim_right_1.0.1.tgz";
- path = fetchurl {
- name = "trim_right___trim_right_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz";
- sha1 = "cb2e1203067e0c8de1f614094b9fe45704ea6003";
- };
- }
-
- {
- name = "tryer___tryer_1.0.1.tgz";
- path = fetchurl {
- name = "tryer___tryer_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz";
- sha1 = "f2c85406800b9b0f74c9f7465b81eaad241252f8";
- };
- }
-
- {
- name = "tslib___tslib_1.9.3.tgz";
- path = fetchurl {
- name = "tslib___tslib_1.9.3.tgz";
- url = "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz";
- sha1 = "d7e4dd79245d85428c4d7e4822a79917954ca286";
- };
- }
-
- {
- name = "tty_browserify___tty_browserify_0.0.0.tgz";
- path = fetchurl {
- name = "tty_browserify___tty_browserify_0.0.0.tgz";
- url = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz";
- sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6";
- };
- }
-
- {
- name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
- path = fetchurl {
- name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
- url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
- sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
- };
- }
-
- {
- name = "tweetnacl___tweetnacl_0.14.5.tgz";
- path = fetchurl {
- name = "tweetnacl___tweetnacl_0.14.5.tgz";
- url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
- sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
- };
- }
-
- {
- name = "type_check___type_check_0.3.2.tgz";
- path = fetchurl {
- name = "type_check___type_check_0.3.2.tgz";
- url = "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz";
- sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
- };
- }
-
- {
- name = "type_is___type_is_1.6.18.tgz";
- path = fetchurl {
- name = "type_is___type_is_1.6.18.tgz";
- url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz";
- sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131";
- };
- }
-
- {
- name = "typedarray___typedarray_0.0.6.tgz";
- path = fetchurl {
- name = "typedarray___typedarray_0.0.6.tgz";
- url = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz";
- sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
- };
- }
-
- {
- name = "ua_parser_js___ua_parser_js_0.7.19.tgz";
- path = fetchurl {
- name = "ua_parser_js___ua_parser_js_0.7.19.tgz";
- url = "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz";
- sha1 = "94151be4c0a7fb1d001af7022fdaca4642659e4b";
- };
- }
-
- {
- name = "uglify_js___uglify_js_3.4.9.tgz";
- path = fetchurl {
- name = "uglify_js___uglify_js_3.4.9.tgz";
- url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz";
- sha1 = "af02f180c1207d76432e473ed24a28f4a782bae3";
- };
- }
-
- {
- name = "unicode_astral_regex___unicode_astral_regex_1.0.1.tgz";
- path = fetchurl {
- name = "unicode_astral_regex___unicode_astral_regex_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/unicode-astral-regex/-/unicode-astral-regex-1.0.1.tgz";
- sha1 = "2cab8529480646f9614ddbc7b62158ad05123feb";
- };
- }
-
- {
- name = "unicode_canonical_property_names_ecmascript___unicode_canonical_property_names_ecmascript_1.0.4.tgz";
- path = fetchurl {
- name = "unicode_canonical_property_names_ecmascript___unicode_canonical_property_names_ecmascript_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz";
- sha1 = "2619800c4c825800efdd8343af7dd9933cbe2818";
- };
- }
-
- {
- name = "unicode_match_property_ecmascript___unicode_match_property_ecmascript_1.0.4.tgz";
- path = fetchurl {
- name = "unicode_match_property_ecmascript___unicode_match_property_ecmascript_1.0.4.tgz";
- url = "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz";
- sha1 = "8ed2a32569961bce9227d09cd3ffbb8fed5f020c";
- };
- }
-
- {
- name = "unicode_match_property_value_ecmascript___unicode_match_property_value_ecmascript_1.1.0.tgz";
- path = fetchurl {
- name = "unicode_match_property_value_ecmascript___unicode_match_property_value_ecmascript_1.1.0.tgz";
- url = "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz";
- sha1 = "5b4b426e08d13a80365e0d657ac7a6c1ec46a277";
- };
- }
-
- {
- name = "unicode_property_aliases_ecmascript___unicode_property_aliases_ecmascript_1.0.5.tgz";
- path = fetchurl {
- name = "unicode_property_aliases_ecmascript___unicode_property_aliases_ecmascript_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz";
- sha1 = "a9cc6cc7ce63a0a3023fc99e341b94431d405a57";
- };
- }
-
- {
- name = "union_value___union_value_1.0.0.tgz";
- path = fetchurl {
- name = "union_value___union_value_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz";
- sha1 = "5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4";
- };
- }
-
- {
- name = "uniq___uniq_1.0.1.tgz";
- path = fetchurl {
- name = "uniq___uniq_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz";
- sha1 = "b31c5ae8254844a3a8281541ce2b04b865a734ff";
- };
- }
-
- {
- name = "uniqs___uniqs_2.0.0.tgz";
- path = fetchurl {
- name = "uniqs___uniqs_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz";
- sha1 = "ffede4b36b25290696e6e165d4a59edb998e6b02";
- };
- }
-
- {
- name = "unique_filename___unique_filename_1.1.1.tgz";
- path = fetchurl {
- name = "unique_filename___unique_filename_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz";
- sha1 = "1d69769369ada0583103a1e6ae87681b56573230";
- };
- }
-
- {
- name = "unique_slug___unique_slug_2.0.1.tgz";
- path = fetchurl {
- name = "unique_slug___unique_slug_2.0.1.tgz";
- url = "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz";
- sha1 = "5e9edc6d1ce8fb264db18a507ef9bd8544451ca6";
- };
- }
-
- {
- name = "universalify___universalify_0.1.2.tgz";
- path = fetchurl {
- name = "universalify___universalify_0.1.2.tgz";
- url = "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz";
- sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66";
- };
- }
-
- {
- name = "unpipe___unpipe_1.0.0.tgz";
- path = fetchurl {
- name = "unpipe___unpipe_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
- sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
- };
- }
-
- {
- name = "unquote___unquote_1.1.1.tgz";
- path = fetchurl {
- name = "unquote___unquote_1.1.1.tgz";
- url = "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz";
- sha1 = "8fded7324ec6e88a0ff8b905e7c098cdc086d544";
- };
- }
-
- {
- name = "unset_value___unset_value_1.0.0.tgz";
- path = fetchurl {
- name = "unset_value___unset_value_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz";
- sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
- };
- }
-
- {
- name = "upath___upath_1.1.2.tgz";
- path = fetchurl {
- name = "upath___upath_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz";
- sha1 = "3db658600edaeeccbe6db5e684d67ee8c2acd068";
- };
- }
-
- {
- name = "uri_js___uri_js_4.2.2.tgz";
- path = fetchurl {
- name = "uri_js___uri_js_4.2.2.tgz";
- url = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
- sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
- };
- }
-
- {
- name = "urix___urix_0.1.0.tgz";
- path = fetchurl {
- name = "urix___urix_0.1.0.tgz";
- url = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz";
- sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
- };
- }
-
- {
- name = "url_parse___url_parse_1.4.4.tgz";
- path = fetchurl {
- name = "url_parse___url_parse_1.4.4.tgz";
- url = "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz";
- sha1 = "cac1556e95faa0303691fec5cf9d5a1bc34648f8";
- };
- }
-
- {
- name = "url___url_0.11.0.tgz";
- path = fetchurl {
- name = "url___url_0.11.0.tgz";
- url = "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz";
- sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
- };
- }
-
- {
- name = "use___use_3.1.1.tgz";
- path = fetchurl {
- name = "use___use_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz";
- sha1 = "d50c8cac79a19fbc20f2911f56eb973f4e10070f";
- };
- }
-
- {
- name = "user_home___user_home_2.0.0.tgz";
- path = fetchurl {
- name = "user_home___user_home_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz";
- sha1 = "9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f";
- };
- }
-
- {
- name = "util_deprecate___util_deprecate_1.0.2.tgz";
- path = fetchurl {
- name = "util_deprecate___util_deprecate_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
- sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
- };
- }
-
- {
- name = "util.promisify___util.promisify_1.0.0.tgz";
- path = fetchurl {
- name = "util.promisify___util.promisify_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz";
- sha1 = "440f7165a459c9a16dc145eb8e72f35687097030";
- };
- }
-
- {
- name = "util___util_0.10.3.tgz";
- path = fetchurl {
- name = "util___util_0.10.3.tgz";
- url = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz";
- sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
- };
- }
-
- {
- name = "util___util_0.10.4.tgz";
- path = fetchurl {
- name = "util___util_0.10.4.tgz";
- url = "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz";
- sha1 = "3aa0125bfe668a4672de58857d3ace27ecb76901";
- };
- }
-
- {
- name = "utils_merge___utils_merge_1.0.1.tgz";
- path = fetchurl {
- name = "utils_merge___utils_merge_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz";
- sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
- };
- }
-
- {
- name = "uuid___uuid_3.3.2.tgz";
- path = fetchurl {
- name = "uuid___uuid_3.3.2.tgz";
- url = "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz";
- sha1 = "1b4af4955eb3077c501c23872fc6513811587131";
- };
- }
-
- {
- name = "v8_compile_cache___v8_compile_cache_2.0.2.tgz";
- path = fetchurl {
- name = "v8_compile_cache___v8_compile_cache_2.0.2.tgz";
- url = "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz";
- sha1 = "a428b28bb26790734c4fc8bc9fa106fccebf6a6c";
- };
- }
-
- {
- name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
- path = fetchurl {
- name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
- url = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
- sha1 = "fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a";
- };
- }
-
- {
- name = "value_equal___value_equal_0.4.0.tgz";
- path = fetchurl {
- name = "value_equal___value_equal_0.4.0.tgz";
- url = "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz";
- sha1 = "c5bdd2f54ee093c04839d71ce2e4758a6890abc7";
- };
- }
-
- {
- name = "vary___vary_1.1.2.tgz";
- path = fetchurl {
- name = "vary___vary_1.1.2.tgz";
- url = "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz";
- sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
- };
- }
-
- {
- name = "vendors___vendors_1.0.2.tgz";
- path = fetchurl {
- name = "vendors___vendors_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz";
- sha1 = "7fcb5eef9f5623b156bcea89ec37d63676f21801";
- };
- }
-
- {
- name = "verror___verror_1.10.0.tgz";
- path = fetchurl {
- name = "verror___verror_1.10.0.tgz";
- url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
- sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
- };
- }
-
- {
- name = "vm_browserify___vm_browserify_0.0.4.tgz";
- path = fetchurl {
- name = "vm_browserify___vm_browserify_0.0.4.tgz";
- url = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz";
- sha1 = "5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73";
- };
- }
-
- {
- name = "w3c_hr_time___w3c_hr_time_1.0.1.tgz";
- path = fetchurl {
- name = "w3c_hr_time___w3c_hr_time_1.0.1.tgz";
- url = "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz";
- sha1 = "82ac2bff63d950ea9e3189a58a65625fedf19045";
- };
- }
-
- {
- name = "walker___walker_1.0.7.tgz";
- path = fetchurl {
- name = "walker___walker_1.0.7.tgz";
- url = "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz";
- sha1 = "2f7f9b8fd10d677262b18a884e28d19618e028fb";
- };
- }
-
- {
- name = "warning___warning_3.0.0.tgz";
- path = fetchurl {
- name = "warning___warning_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz";
- sha1 = "32e5377cb572de4ab04753bdf8821c01ed605b7c";
- };
- }
-
- {
- name = "warning___warning_4.0.2.tgz";
- path = fetchurl {
- name = "warning___warning_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/warning/-/warning-4.0.2.tgz";
- sha1 = "aa6876480872116fa3e11d434b0d0d8d91e44607";
- };
- }
-
- {
- name = "watchpack___watchpack_1.6.0.tgz";
- path = fetchurl {
- name = "watchpack___watchpack_1.6.0.tgz";
- url = "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz";
- sha1 = "4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00";
- };
- }
-
- {
- name = "wbuf___wbuf_1.7.3.tgz";
- path = fetchurl {
- name = "wbuf___wbuf_1.7.3.tgz";
- url = "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz";
- sha1 = "c1d8d149316d3ea852848895cb6a0bfe887b87df";
- };
- }
-
- {
- name = "webidl_conversions___webidl_conversions_4.0.2.tgz";
- path = fetchurl {
- name = "webidl_conversions___webidl_conversions_4.0.2.tgz";
- url = "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz";
- sha1 = "a855980b1f0b6b359ba1d5d9fb39ae941faa63ad";
- };
- }
-
- {
- name = "webpack_assets_manifest___webpack_assets_manifest_3.1.1.tgz";
- path = fetchurl {
- name = "webpack_assets_manifest___webpack_assets_manifest_3.1.1.tgz";
- url = "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz";
- sha1 = "39bbc3bf2ee57fcd8ba07cda51c9ba4a3c6ae1de";
- };
- }
-
- {
- name = "webpack_bundle_analyzer___webpack_bundle_analyzer_3.3.2.tgz";
- path = fetchurl {
- name = "webpack_bundle_analyzer___webpack_bundle_analyzer_3.3.2.tgz";
- url = "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz";
- sha1 = "3da733a900f515914e729fcebcd4c40dde71fc6f";
- };
- }
-
- {
- name = "webpack_cli___webpack_cli_3.3.4.tgz";
- path = fetchurl {
- name = "webpack_cli___webpack_cli_3.3.4.tgz";
- url = "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.4.tgz";
- sha1 = "de27e281c48a897b8c219cb093e261d5f6afe44a";
- };
- }
-
- {
- name = "webpack_dev_middleware___webpack_dev_middleware_3.7.0.tgz";
- path = fetchurl {
- name = "webpack_dev_middleware___webpack_dev_middleware_3.7.0.tgz";
- url = "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz";
- sha1 = "ef751d25f4e9a5c8a35da600c5fda3582b5c6cff";
- };
- }
-
- {
- name = "webpack_dev_server___webpack_dev_server_3.5.1.tgz";
- path = fetchurl {
- name = "webpack_dev_server___webpack_dev_server_3.5.1.tgz";
- url = "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.5.1.tgz";
- sha1 = "4290ac709bb989dc7382c912899f79fd5677dabf";
- };
- }
-
- {
- name = "webpack_log___webpack_log_2.0.0.tgz";
- path = fetchurl {
- name = "webpack_log___webpack_log_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz";
- sha1 = "5b7928e0637593f119d32f6227c1e0ac31e1b47f";
- };
- }
-
- {
- name = "webpack_merge___webpack_merge_4.2.1.tgz";
- path = fetchurl {
- name = "webpack_merge___webpack_merge_4.2.1.tgz";
- url = "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz";
- sha1 = "5e923cf802ea2ace4fd5af1d3247368a633489b4";
- };
- }
-
- {
- name = "webpack_sources___webpack_sources_1.3.0.tgz";
- path = fetchurl {
- name = "webpack_sources___webpack_sources_1.3.0.tgz";
- url = "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz";
- sha1 = "2a28dcb9f1f45fe960d8f1493252b5ee6530fa85";
- };
- }
-
- {
- name = "webpack___webpack_4.34.0.tgz";
- path = fetchurl {
- name = "webpack___webpack_4.34.0.tgz";
- url = "https://registry.yarnpkg.com/webpack/-/webpack-4.34.0.tgz";
- sha1 = "a4c30129482f7b4ece4c0842002dedf2b56fab58";
- };
- }
-
- {
- name = "websocket_driver___websocket_driver_0.7.0.tgz";
- path = fetchurl {
- name = "websocket_driver___websocket_driver_0.7.0.tgz";
- url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz";
- sha1 = "0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb";
- };
- }
-
- {
- name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
- path = fetchurl {
- name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
- url = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz";
- sha1 = "5d2ff22977003ec687a4b87073dfbbac146ccf29";
- };
- }
-
- {
- name = "websocket.js___websocket.js_0.1.12.tgz";
- path = fetchurl {
- name = "websocket.js___websocket.js_0.1.12.tgz";
- url = "https://registry.yarnpkg.com/websocket.js/-/websocket.js-0.1.12.tgz";
- sha1 = "46c980787c57ebc8edcf44a0263e5d639367b85b";
- };
- }
-
- {
- name = "whatwg_encoding___whatwg_encoding_1.0.5.tgz";
- path = fetchurl {
- name = "whatwg_encoding___whatwg_encoding_1.0.5.tgz";
- url = "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz";
- sha1 = "5abacf777c32166a51d085d6b4f3e7d27113ddb0";
- };
- }
-
- {
- name = "whatwg_fetch___whatwg_fetch_3.0.0.tgz";
- path = fetchurl {
- name = "whatwg_fetch___whatwg_fetch_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz";
- sha1 = "fc804e458cc460009b1a2b966bc8817d2578aefb";
- };
- }
-
- {
- name = "whatwg_mimetype___whatwg_mimetype_2.3.0.tgz";
- path = fetchurl {
- name = "whatwg_mimetype___whatwg_mimetype_2.3.0.tgz";
- url = "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz";
- sha1 = "3d4b1e0312d2079879f826aff18dbeeca5960fbf";
- };
- }
-
- {
- name = "whatwg_url___whatwg_url_6.5.0.tgz";
- path = fetchurl {
- name = "whatwg_url___whatwg_url_6.5.0.tgz";
- url = "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz";
- sha1 = "f2df02bff176fd65070df74ad5ccbb5a199965a8";
- };
- }
-
- {
- name = "whatwg_url___whatwg_url_7.0.0.tgz";
- path = fetchurl {
- name = "whatwg_url___whatwg_url_7.0.0.tgz";
- url = "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz";
- sha1 = "fde926fa54a599f3adf82dff25a9f7be02dc6edd";
- };
- }
-
- {
- name = "which_module___which_module_2.0.0.tgz";
- path = fetchurl {
- name = "which_module___which_module_2.0.0.tgz";
- url = "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz";
- sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
- };
- }
-
- {
- name = "which___which_1.3.1.tgz";
- path = fetchurl {
- name = "which___which_1.3.1.tgz";
- url = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz";
- sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a";
- };
- }
-
- {
- name = "wide_align___wide_align_1.1.3.tgz";
- path = fetchurl {
- name = "wide_align___wide_align_1.1.3.tgz";
- url = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz";
- sha1 = "ae074e6bdc0c14a431e804e624549c633b000457";
- };
- }
-
- {
- name = "wordwrap___wordwrap_0.0.3.tgz";
- path = fetchurl {
- name = "wordwrap___wordwrap_0.0.3.tgz";
- url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz";
- sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
- };
- }
-
- {
- name = "wordwrap___wordwrap_1.0.0.tgz";
- path = fetchurl {
- name = "wordwrap___wordwrap_1.0.0.tgz";
- url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz";
- sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
- };
- }
-
- {
- name = "worker_farm___worker_farm_1.7.0.tgz";
- path = fetchurl {
- name = "worker_farm___worker_farm_1.7.0.tgz";
- url = "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz";
- sha1 = "26a94c5391bbca926152002f69b84a4bf772e5a8";
- };
- }
-
- {
- name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
- path = fetchurl {
- name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
- url = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
- sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
- };
- }
-
- {
- name = "wrappy___wrappy_1.0.2.tgz";
- path = fetchurl {
- name = "wrappy___wrappy_1.0.2.tgz";
- url = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
- sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
- };
- }
-
- {
- name = "write_file_atomic___write_file_atomic_2.4.1.tgz";
- path = fetchurl {
- name = "write_file_atomic___write_file_atomic_2.4.1.tgz";
- url = "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz";
- sha1 = "d0b05463c188ae804396fd5ab2a370062af87529";
- };
- }
-
- {
- name = "write___write_0.2.1.tgz";
- path = fetchurl {
- name = "write___write_0.2.1.tgz";
- url = "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz";
- sha1 = "5fc03828e264cea3fe91455476f7a3c566cb0757";
- };
- }
-
- {
- name = "ws___ws_5.2.2.tgz";
- path = fetchurl {
- name = "ws___ws_5.2.2.tgz";
- url = "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz";
- sha1 = "dffef14866b8e8dc9133582514d1befaf96e980f";
- };
- }
-
- {
- name = "ws___ws_6.1.2.tgz";
- path = fetchurl {
- name = "ws___ws_6.1.2.tgz";
- url = "https://registry.yarnpkg.com/ws/-/ws-6.1.2.tgz";
- sha1 = "3cc7462e98792f0ac679424148903ded3b9c3ad8";
- };
- }
-
- {
- name = "xml_name_validator___xml_name_validator_3.0.0.tgz";
- path = fetchurl {
- name = "xml_name_validator___xml_name_validator_3.0.0.tgz";
- url = "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz";
- sha1 = "6ae73e06de4d8c6e47f9fb181f78d648ad457c6a";
- };
- }
-
- {
- name = "xtend___xtend_4.0.1.tgz";
- path = fetchurl {
- name = "xtend___xtend_4.0.1.tgz";
- url = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz";
- sha1 = "a5c6d532be656e23db820efb943a1f04998d63af";
- };
- }
-
- {
- name = "y18n___y18n_4.0.0.tgz";
- path = fetchurl {
- name = "y18n___y18n_4.0.0.tgz";
- url = "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz";
- sha1 = "95ef94f85ecc81d007c264e190a120f0a3c8566b";
- };
- }
-
- {
- name = "yallist___yallist_3.0.3.tgz";
- path = fetchurl {
- name = "yallist___yallist_3.0.3.tgz";
- url = "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz";
- sha1 = "b4b049e314be545e3ce802236d6cd22cd91c3de9";
- };
- }
-
- {
- name = "yargs_parser___yargs_parser_11.1.1.tgz";
- path = fetchurl {
- name = "yargs_parser___yargs_parser_11.1.1.tgz";
- url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz";
- sha1 = "879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4";
- };
- }
-
- {
- name = "yargs___yargs_12.0.5.tgz";
- path = fetchurl {
- name = "yargs___yargs_12.0.5.tgz";
- url = "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz";
- sha1 = "05f5997b609647b64f66b81e3b4b10a368e7ad13";
- };
- }
- ];
-}
diff --git a/pkgs/webapps/mediagoblin/bower-packages.nix b/pkgs/webapps/mediagoblin/bower-packages.nix
deleted file mode 100644
index 03af849..0000000
--- a/pkgs/webapps/mediagoblin/bower-packages.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-# Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix)
-{ fetchbower, buildEnv }:
-buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
- (fetchbower "jquery" "2.1.4" "~2.1.3" "1ywrpk2xsr6ghkm3j9gfnl9r3jn6xarfamp99b0bcm57kq9fm2k0")
- (fetchbower "video.js" "4.11.4" "~4.11.4" "05prdvyk0rxbkh7sdd0d9ns5l5crwvc68wzkyqmrdjw367pcv8sn")
- (fetchbower "leaflet" "0.7.7" "~0.7.3" "0jim285bljmxxngpm3yx6bnnd10n2whwkgmmhzpcd1rdksnr5nca")
- (fetchbower "tinymce" "4.1.10" "~4.1.7" "16jyvdb9bq8gjwhs69q8p88vdixalajrz81nsmbrzzxhkih57dyx")
-]; }
diff --git a/pkgs/webapps/mediagoblin/default.nix b/pkgs/webapps/mediagoblin/default.nix
deleted file mode 100644
index 22cb292..0000000
--- a/pkgs/webapps/mediagoblin/default.nix
+++ /dev/null
@@ -1,210 +0,0 @@
-{ makeWrapper, stdenv, writeScript, fetchurl, buildBowerComponents, mylibs, which, python36, gst_all_1, automake, autoconf, nodejs, nodePackages, lib, callPackage, fetchgit }:
-let
- overridePython = let
- packageOverrides = self: super: {
- pybcrypt = super.buildPythonPackage rec {
- pname = "pybcrypt";
- version = "0.4";
-
- src = self.fetchPypi {
- inherit pname version;
- sha256 = "5fa13bce551468350d66c4883694850570f3da28d6866bb638ba44fe5eabda78";
- };
- };
- celery = super.celery.overridePythonAttrs(old: rec {
- version = "3.1.26.post2";
- src = self.fetchPypi {
- inherit version;
- inherit (old) pname;
- sha256 = "5493e172ae817b81ba7d09443ada114886765a8ce02f16a56e6fac68d953a9b2";
- };
- patches = [];
- doCheck = false;
- });
- billiard = super.billiard.overridePythonAttrs(old: rec {
- version = "3.3.0.23";
- src = self.fetchPypi {
- inherit version;
- inherit (old) pname;
- sha256 = "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9";
- };
- doCheck = false;
- doInstallCheck = false;
- });
- amqp = super.amqp.overridePythonAttrs(old: rec {
- version = "1.4.9";
- src = self.fetchPypi {
- inherit version;
- inherit (old) pname;
- sha256 = "2dea4d16d073c902c3b89d9b96620fb6729ac0f7a923bbc777cb4ad827c0c61a";
- };
- doCheck = false;
- });
- kombu = super.kombu.overridePythonAttrs(old: rec {
- version = "3.0.37";
- src = self.fetchPypi {
- inherit version;
- inherit (old) pname;
- sha256 = "e064a00c66b4d1058cd2b0523fb8d98c82c18450244177b6c0f7913016642650";
- };
- propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.anyjson ];
- doCheck = false;
- });
- markdown = super.markdown.overridePythonAttrs(old: rec {
- version = "3.1.1";
- src = self.fetchPypi {
- inherit version;
- inherit (old) pname;
- sha256 = "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a";
- };
- });
- sqlalchemy = super.sqlalchemy.overridePythonAttrs(old: rec {
- version = "1.1.18";
- src = self.fetchPypi {
- inherit version;
- inherit (old) pname;
- sha256 = "8b0ec71af9291191ba83a91c03d157b19ab3e7119e27da97932a4773a3f664a9";
- };
- doCheck = false;
- });
- tempita_5_3_dev = super.buildPythonPackage (mylibs.fetchedGithub ./tempita.json // rec {
- buildInputs = with self; [ nose ];
- disabled = false;
- });
- sqlalchemy_migrate = super.sqlalchemy_migrate.overridePythonAttrs(old: rec {
- propagatedBuildInputs = with self; [ pbr tempita_5_3_dev decorator sqlalchemy six sqlparse ];
- });
- pasteScript = super.pasteScript.overridePythonAttrs(old: rec {
- version = "2.0.2";
- name = "PasteScript-${version}";
- src = fetchurl {
- url = "mirror://pypi/P/PasteScript/${name}.tar.gz";
- sha256 = "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0";
- };
- propagatedBuildInputs = with self; [ six paste PasteDeploy ];
- });
- werkzeug = super.werkzeug.overridePythonAttrs(old: rec {
- version = "0.16.1";
- src = self.fetchPypi {
- inherit version;
- inherit (old) pname;
- sha256 = "b353856d37dec59d6511359f97f6a4b2468442e454bd1c98298ddce53cac1f04";
- };
- });
- };
- in
- python36.override { inherit packageOverrides; };
- pythonEnv = python-pkgs: with python-pkgs; [
- waitress alembic dateutil wtforms pybcrypt
- pytest pytest_xdist werkzeug celery
- kombu jinja2 Babel webtest configobj markdown
- sqlalchemy itsdangerous pytz sphinx six
- oauthlib unidecode jsonschema PasteDeploy
- requests PyLD exifread
- typing pasteScript lxml
- # For images plugin
- pillow
- # For video plugin
- gst-python
- # migrations
- sqlalchemy_migrate
- # authentication
- ldap3
- redis
- psycopg2
- ];
- python = overridePython.withPackages pythonEnv;
- gmg = writeScript "gmg" ''
- #!${python}/bin/python
- __requires__ = 'mediagoblin'
- import sys
- from pkg_resources import load_entry_point
-
- if __name__ == '__main__':
- sys.exit(
- load_entry_point('mediagoblin', 'console_scripts', 'gmg')()
- )
- '';
- mediagoblinSrc = fetchgit {
- name = "mediagoblin";
- url = "git://git.savannah.gnu.org/mediagoblin.git";
- rev = "cd465ebfec837a75a44c4ebd727dffe2fff6d850";
- sha256 = "1yz4i4i97z3rxl534a6psaybyjbyp5nnc52v3nvbpzc4pd2s69mx";
- fetchSubmodules = true; # important!
- };
- bowerComponents = buildBowerComponents {
- name = "mediagoblin-bower-components";
- generated = ./bower-packages.nix;
- src = mediagoblinSrc;
- };
- pluginNames = [ "basicsearch" ];
- allPlugins = lib.attrsets.genAttrs pluginNames
- (name: callPackage (./plugins + "/${name}") {});
- toPassthru = pkg: {
- inherit allPlugins;
- withPlugins = withPlugins pkg;
- };
- withPlugins = pkg: toPlugins:
- let
- plugins = toPlugins allPlugins;
- toBuildPlugin = n: "ln -s ${n} mediagoblin/plugins/${n.pluginName}";
- newMediagoblin = pkg.overrideAttrs(old: {
- postBuild = old.postBuild + "\n" + builtins.concatStringsSep "\n" (map toBuildPlugin plugins);
- passthru = toPassthru newMediagoblin;
- });
- in newMediagoblin;
- package = stdenv.mkDerivation rec {
- pname = "mediagoblin";
- name = "${pname}-${version}";
- version = "cd465eb-stable";
- src = mediagoblinSrc;
- preConfigure = ''
- # ./bootstrap.sh
- aclocal -I m4 --install
- autoreconf -fvi
- # end
- export HOME=$PWD
- '';
- configureFlags = [ "--with-python3" "--without-virtualenv" ];
- postBuild = ''
- cp -a ${bowerComponents}/bower_components/* extlib
- chmod -R u+w extlib
- make extlib
- '';
- installPhase = let
- libpaths = with gst_all_1; [
- python
- gstreamer
- gst-plugins-base
- gst-libav
- gst-plugins-good
- gst-plugins-bad
- gst-plugins-ugly
- ];
- plugin_paths = builtins.concatStringsSep ":" (map (x: "${x}/lib") libpaths);
- typelib_paths = with gst_all_1; "${gstreamer}/lib/girepository-1.0:${gst-plugins-base}/lib/girepository-1.0";
- in ''
- sed -i "s/registry.has_key(current_theme_name)/current_theme_name in registry/" mediagoblin/tools/theme.py
- sed -i -e "s@\[DEFAULT\]@[DEFAULT]\nhere = $out@" mediagoblin/config_spec.ini
- sed -i -e "/from gi.repository import GstPbutils/s/^/gi.require_version('GstPbutils', '1.0')\n/" mediagoblin/media_types/video/transcoders.py
- cp ${./ldap_fix.py} mediagoblin/plugins/ldap/tools.py
- find . -name '*.pyc' -delete
- find . -type f -exec sed -i "s|$PWD|$out|g" {} \;
- python setup.py build
- cp -a . $out
- mkdir $out/bin
- makeWrapper ${gmg} $out/bin/gmg --prefix PYTHONPATH : "$out:$PYTHONPATH" \
- --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
- --prefix GI_TYPELIB_PATH : ${typelib_paths}
- makeWrapper ${python}/bin/paster $out/bin/paster --prefix PYTHONPATH : "$out:$PYTHONPATH" \
- --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
- --prefix GI_TYPELIB_PATH : ${typelib_paths}
- makeWrapper ${python}/bin/celery $out/bin/celery --prefix PYTHONPATH : "$out:$PYTHONPATH" \
- --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
- --prefix GI_TYPELIB_PATH : ${typelib_paths}
- '';
- buildInputs = [ makeWrapper automake autoconf which nodePackages.bower nodejs python ];
- propagatedBuildInputs = with gst_all_1; [ python gst-libav gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer ];
- passthru = toPassthru package;
- };
-in package
diff --git a/pkgs/webapps/mediagoblin/ldap_fix.py b/pkgs/webapps/mediagoblin/ldap_fix.py
deleted file mode 100644
index 10cc375..0000000
--- a/pkgs/webapps/mediagoblin/ldap_fix.py
+++ /dev/null
@@ -1,93 +0,0 @@
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-from ldap3 import Server, Connection, SUBTREE
-from ldap3.core.exceptions import LDAPException
-import logging
-
-import six
-
-from mediagoblin.tools import pluginapi
-
-_log = logging.getLogger(__name__)
-
-
-class LDAP(object):
- def __init__(self):
- self.ldap_settings = pluginapi.get_config('mediagoblin.plugins.ldap')
-
- def _connect(self, server):
- _log.info('Connecting to {0}.'.format(server['LDAP_SERVER_URI']))
- self.server = Server(server['LDAP_SERVER_URI'])
-
- if 'LDAP_START_TLS' in server and server['LDAP_START_TLS'] == 'true':
- _log.info('Initiating TLS')
- self.server.start_tls()
-
- def _manager_auth(self, settings, username, password):
- conn = Connection(self.server,
- settings['LDAP_BIND_DN'],
- settings['LDAP_BIND_PW'],
- auto_bind=True)
- found = conn.search(
- search_base=settings['LDAP_SEARCH_BASE'],
- search_filter=settings['LDAP_SEARCH_FILTER'].format(username=username),
- search_scope=SUBTREE,
- attributes=[settings['EMAIL_SEARCH_FIELD']])
- if (not found) or len(conn.entries) > 1:
- return False, None
-
- user = conn.entries[0]
- user_dn = user.entry_dn
- try:
- email = user.entry_attributes_as_dict[settings['EMAIL_SEARCH_FIELD']][0]
- except KeyError:
- email = None
-
- Connection(self.server, user_dn, password, auto_bind=True)
-
- return username, email
-
- def _direct_auth(self, settings, username, password):
- user_dn = settings['LDAP_USER_DN_TEMPLATE'].format(username=username)
- conn = Connection(self.server, user_dn, password, auto_bind=True)
- email_found = conn.search(
- search_base=settings['LDAP_SEARCH_BASE'],
- search_filter='uid={0}'.format(username),
- search_scope=SUBTREE,
- attributes=[settings['EMAIL_SEARCH_FIELD']])
-
- if email_found:
- try:
- email = conn.entries[0].entry_attributes_as_dict[settings['EMAIL_SEARCH_FIELD']][0]
- except KeyError:
- email = None
-
- return username, email
-
- def login(self, username, password):
- for k, v in six.iteritems(self.ldap_settings):
- try:
- self._connect(v)
-
- if 'LDAP_BIND_DN' in v:
- return self._manager_auth(v, username, password)
- else:
- return self._direct_auth(v, username, password)
-
- except LDAPException as e:
- _log.info(e)
-
- return False, None
diff --git a/pkgs/webapps/mediagoblin/plugins/basicsearch/default.nix b/pkgs/webapps/mediagoblin/plugins/basicsearch/default.nix
deleted file mode 100644
index 16be613..0000000
--- a/pkgs/webapps/mediagoblin/plugins/basicsearch/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ stdenv, fetchFromGitHub }:
-stdenv.mkDerivation rec {
- name = "mediagoblin-plugin-basicsearch-${version}";
- version = "ba0a154-master";
- src = fetchFromGitHub {
- owner = "ayleph";
- repo = "mediagoblin-basicsearch";
- rev = "ba0a1547bd24ebaf363227fe17644d38c6ce8a6b";
- sha256 = "0d4r7xkf4gxmgaxlb264l44xbanis77g49frwfhfzsflxmdwgncy";
- };
- phases = "unpackPhase installPhase";
- installPhase = ''
- cp -R ./basicsearch $out
- '';
- passthru = {
- pluginName = "basicsearch";
- };
-}
diff --git a/pkgs/webapps/mediagoblin/tempita.json b/pkgs/webapps/mediagoblin/tempita.json
deleted file mode 100644
index 5371e17..0000000
--- a/pkgs/webapps/mediagoblin/tempita.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "47414a7-master",
- "meta": {
- "name": "tempita",
- "url": "https://github.com/gjhiggins/tempita",
- "branch": "master"
- },
- "github": {
- "owner": "gjhiggins",
- "repo": "tempita",
- "rev": "47414a7c6e46a9a9afe78f0bce2ea299fa84d10d",
- "sha256": "0f33jjjs5rvp7ar2j6ggyfykcrsrn04jaqcq71qfvycf6b7nw3rn",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/nextcloud/apps/apporder.nix b/pkgs/webapps/nextcloud/apps/apporder.nix
deleted file mode 100644
index 29fd6e2..0000000
--- a/pkgs/webapps/nextcloud/apps/apporder.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 18;
-buildApp rec {
- appName = "apporder";
- version = "0.9.0";
- url = "https://github.com/juliushaertl/apporder/releases/download/v${version}/${appName}.tar.gz";
- sha256 = "1add4i892n4bpmpxwrsr7x99fjyj5rk6maw04iwhviqqqr28fsw6";
-}
diff --git a/pkgs/webapps/nextcloud/apps/audioplayer.nix b/pkgs/webapps/nextcloud/apps/audioplayer.nix
deleted file mode 100644
index a49776f..0000000
--- a/pkgs/webapps/nextcloud/apps/audioplayer.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "audioplayer";
- version = "2.10.0";
- url = "https://github.com/Rello/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
- sha256 = "122wc05b0m8s5ksdhsiws98aqph894i7cffjkhfhq66c40a728s3";
-}
diff --git a/pkgs/webapps/nextcloud/apps/bookmarks.nix b/pkgs/webapps/nextcloud/apps/bookmarks.nix
deleted file mode 100644
index 1065c34..0000000
--- a/pkgs/webapps/nextcloud/apps/bookmarks.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "bookmarks";
- version = "3.0.10";
- url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
- sha256 = "0y12iqcc6yp25cisg7mg40ddx72531zdvsp2gcl37qi8vqf162ji";
-}
diff --git a/pkgs/webapps/nextcloud/apps/calendar.nix b/pkgs/webapps/nextcloud/apps/calendar.nix
deleted file mode 100644
index bc3ccea..0000000
--- a/pkgs/webapps/nextcloud/apps/calendar.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "calendar";
- version = "2.0.3";
- url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
- sha256 = "17pjsa657p9n1kslqkfcxd6n4ssh2yd4f5l5ww79mixfs34idbl9";
-}
diff --git a/pkgs/webapps/nextcloud/apps/carnet.nix b/pkgs/webapps/nextcloud/apps/carnet.nix
deleted file mode 100644
index 879ab17..0000000
--- a/pkgs/webapps/nextcloud/apps/carnet.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 13 && nextcloudVersion <= 18;
-buildApp rec {
- appName = "carnet";
- version = "0.20.0";
- url = "https://github.com/PhieF/CarnetNextcloud/releases/download/v${version}/${appName}-nc-v${version}.tar.gz";
- sha256 = "1hbvs88vj830xalyq8fv8xlnf7livsj1xmnjl4xgla803ch4aym8";
-}
diff --git a/pkgs/webapps/nextcloud/apps/circles.nix b/pkgs/webapps/nextcloud/apps/circles.nix
deleted file mode 100644
index 64a4f2f..0000000
--- a/pkgs/webapps/nextcloud/apps/circles.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 18 && nextcloudVersion <= 18;
-buildApp rec {
- appName = "circles";
- version = "0.18.9";
- url = "https://github.com/nextcloud/circles/releases/download/v${version}/${appName}-${version}.tar.gz";
- sha256 = "1a58zrjg4cc0igq14s5zfc5zva83mahmfr0mxvhvnasw7rwkpyzr";
-}
diff --git a/pkgs/webapps/nextcloud/apps/contacts.nix b/pkgs/webapps/nextcloud/apps/contacts.nix
deleted file mode 100644
index d80f0b5..0000000
--- a/pkgs/webapps/nextcloud/apps/contacts.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "contacts";
- version = "3.3.0";
- url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
- sha256 = "187avlksg4k7ci3jz4djfq8zfyq5jpvhbw2dzlp76wlppm1al4m0";
-}
diff --git a/pkgs/webapps/nextcloud/apps/cookbook.nix b/pkgs/webapps/nextcloud/apps/cookbook.nix
deleted file mode 100644
index 63cac0d..0000000
--- a/pkgs/webapps/nextcloud/apps/cookbook.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 14 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "cookbook";
- version = "0.6.5";
- url = "https://github.com/mrzapp/nextcloud-cookbook/releases/download/v${version}/${appName}.tar.gz";
- sha256 = "068dxdxy9ix37970mn348blkdrrnkzad26zgyx4f5s19wm439p5j";
- installPhase = ''
- sed -i -e "s/application..ld..json/application[^\"|\\\\']*ld[^\"|\\\\']*json/" lib/Service/RecipeService.php
- mkdir -p $out
- cp -R . $out/
- '';
-}
-
diff --git a/pkgs/webapps/nextcloud/apps/deck.nix b/pkgs/webapps/nextcloud/apps/deck.nix
deleted file mode 100644
index ec693c6..0000000
--- a/pkgs/webapps/nextcloud/apps/deck.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion == 18;
-buildApp rec {
- appName = "deck";
- version = "1.0.0";
- url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
- sha256 = "13r9vd5bf75slrzhvi6bybazhh1vcx0n4a8a7hf97bxr7pq2f91j";
-}
diff --git a/pkgs/webapps/nextcloud/apps/extract.nix b/pkgs/webapps/nextcloud/apps/extract.nix
deleted file mode 100644
index daa9d2d..0000000
--- a/pkgs/webapps/nextcloud/apps/extract.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 13 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "extract";
- version = "1.2.4";
- url = "https://github.com/PaulLereverend/NextcloudExtract/releases/download/${version}/${appName}.tar.gz";
- sha256 = "0f1csv0warga12a1hkgdcnhnfiwfv5z2ab3mri4frn2qlh12wyby";
-}
diff --git a/pkgs/webapps/nextcloud/apps/files_markdown.nix b/pkgs/webapps/nextcloud/apps/files_markdown.nix
deleted file mode 100644
index 5810ec9..0000000
--- a/pkgs/webapps/nextcloud/apps/files_markdown.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 18;
-buildApp rec {
- appName = "files_markdown";
- version = "2.2.0";
- url = "https://github.com/icewind1991/${appName}/releases/download/v${version}/${appName}.tar.gz";
- sha256 = "05f793pznkkdgmr3wfqfbhwcg8s8kcvpfxnhzyj0pbw19srls2aw";
-}
diff --git a/pkgs/webapps/nextcloud/apps/files_readmemd.nix b/pkgs/webapps/nextcloud/apps/files_readmemd.nix
deleted file mode 100644
index c9728c0..0000000
--- a/pkgs/webapps/nextcloud/apps/files_readmemd.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 18;
-buildApp rec {
- appName = "files_readmemd";
- version = "1.1.4";
- url = "https://gitlab.univ-nantes.fr/uncloud/files_readmemd/-/wikis/uploads/e1d280e855f37e5f0a421c757868113c/${appName}.tar.gz";
- sha256 = "1sfaghbyzfv3hg5vhj1nprb85zsl6lcr2x88ks6l9ndv49nfbvm9";
-}
diff --git a/pkgs/webapps/nextcloud/apps/flowupload.nix b/pkgs/webapps/nextcloud/apps/flowupload.nix
deleted file mode 100644
index 516ee32..0000000
--- a/pkgs/webapps/nextcloud/apps/flowupload.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 15 && nextcloudVersion <= 18;
-buildApp rec {
- appName = "flowupload";
- version = "0.1.8";
- url = "https://github.com/e-alfred/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
- sha256 = "0llg5cr4fgqg512znp9bga77y7vdsi2pgsyl4m3a54c557zyjah3";
-}
diff --git a/pkgs/webapps/nextcloud/apps/gpxedit.nix b/pkgs/webapps/nextcloud/apps/gpxedit.nix
deleted file mode 100644
index cd3e878..0000000
--- a/pkgs/webapps/nextcloud/apps/gpxedit.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 14 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "gpxedit";
- version = "0.0.13";
- url = "https://gitlab.com/eneiluj/gpxedit-oc/wikis/uploads/a7c638d1b038514d07bb5c787b6e7961/${appName}-${version}.tar.gz";
- sha256 = "1b15iqaq8fj3khpx3lh0fyqkhmj6x44fc59pg3cp3jrh3bpg0534";
- otherConfig = {
- mimetypealiases = {
- "application/gpx+xml" = "gpx";
- };
- mimetypemapping = {
- "gpx" = ["application/gpx+xml"];
- };
- };
-}
diff --git a/pkgs/webapps/nextcloud/apps/gpxpod.nix b/pkgs/webapps/nextcloud/apps/gpxpod.nix
deleted file mode 100644
index 0750144..0000000
--- a/pkgs/webapps/nextcloud/apps/gpxpod.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 14 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "gpxpod";
- version = "4.2.1";
- url = "https://gitlab.com/eneiluj/gpxpod-oc/wikis/uploads/0361f9dc50633f0f39d929442935435c/${appName}-${version}.tar.gz";
- sha256 = "0ycpychq6g8axdprvd0ahgdy2pwfdbfyf1pxk4cprr4ab986aq1x";
- otherConfig = {
- mimetypealiases = {
- "application/gpx+xml" = "gpx";
- };
- mimetypemapping = {
- "gpx" = ["application/gpx+xml"];
- };
- };
-}
diff --git a/pkgs/webapps/nextcloud/apps/impersonate.nix b/pkgs/webapps/nextcloud/apps/impersonate.nix
deleted file mode 100644
index 66cc893..0000000
--- a/pkgs/webapps/nextcloud/apps/impersonate.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 18 && nextcloudVersion < 19;
-buildApp rec {
- appName = "impersonate";
- version = "1.5.2";
- url = "https://github.com/nextcloud/impersonate/releases/download/v${version}/${appName}.tar.gz";
- sha256 = "03fm9d2p6ap9gyiw5anmlwsdmiyklrkpdgchfx2zfgxn38pjrz6d";
-}
-
diff --git a/pkgs/webapps/nextcloud/apps/keeweb.nix b/pkgs/webapps/nextcloud/apps/keeweb.nix
deleted file mode 100644
index 4ea1399..0000000
--- a/pkgs/webapps/nextcloud/apps/keeweb.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 11 && nextcloudVersion <= 18;
-buildApp rec {
- appName = "keeweb";
- version = "0.6.2";
- url = "https://github.com/jhass/nextcloud-keeweb/releases/download/v${version}/${appName}-${version}.tar.gz";
- sha256 = "067801qz0fcfvmb14ja1ringzk53j1wp7ys2fl7lnlhf45r81vxx";
- installPhase = ''
- mkdir -p $out
- cp -R . $out/
- '';
- otherConfig = {
- mimetypemapping = {
- "kdbx" = ["application/x-kdbx"];
- };
- };
-}
diff --git a/pkgs/webapps/nextcloud/apps/maps.nix b/pkgs/webapps/nextcloud/apps/maps.nix
deleted file mode 100644
index 898df6c..0000000
--- a/pkgs/webapps/nextcloud/apps/maps.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "maps";
- version = "0.1.6";
- url = "https://github.com/nextcloud/maps/releases/download/v${version}/${appName}-${version}.tar.gz";
- sha256 = "1yh5h96c91lgz58zcm7zdpblvsc6c6nflx8pldfds102x292mprk";
-}
diff --git a/pkgs/webapps/nextcloud/apps/metadata.nix b/pkgs/webapps/nextcloud/apps/metadata.nix
deleted file mode 100644
index 2d62f53..0000000
--- a/pkgs/webapps/nextcloud/apps/metadata.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 13 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "metadata";
- version = "0.11.1";
- url = "https://github.com/gino0631/nextcloud-metadata/releases/download/v${version}/${appName}.tar.gz";
- sha256 = "11napkv5s29xk1gmbfvy610ab1kc06qxqzw606ix5x0d1x4m3h0c";
-}
diff --git a/pkgs/webapps/nextcloud/apps/music.nix b/pkgs/webapps/nextcloud/apps/music.nix
deleted file mode 100644
index e430dd9..0000000
--- a/pkgs/webapps/nextcloud/apps/music.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 9 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "music";
- version = "0.14.1";
- url = "https://github.com/owncloud/music/releases/download/v${version}/${appName}.zip";
- zip = true;
- sha256 = "06svn24qix0nbikwi0kxnli402vq99851bn5ljcsm10r74bnlw83";
-}
diff --git a/pkgs/webapps/nextcloud/apps/notes.nix b/pkgs/webapps/nextcloud/apps/notes.nix
deleted file mode 100644
index 7a06bbc..0000000
--- a/pkgs/webapps/nextcloud/apps/notes.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "notes";
- version = "3.3.0";
- url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}.tar.gz";
- sha256 = "03k0ijma7sccwqq9ch3bvgbg9kxr2wk0bmkxzxrc9in1d40d3k7f";
-}
diff --git a/pkgs/webapps/nextcloud/apps/ocsms.nix b/pkgs/webapps/nextcloud/apps/ocsms.nix
deleted file mode 100644
index aee1ff2..0000000
--- a/pkgs/webapps/nextcloud/apps/ocsms.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 18;
-buildApp rec {
- appName = "ocsms";
- version = "2.1.7";
- url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
- sha256 = "1pfdzq16nbh4wfmkmif0dxacxg0fy4n4cp2d1hbq9k2z9awcx1vh";
- installPhase = ''
- mkdir -p $out
- cp -R . $out/
- '';
-}
diff --git a/pkgs/webapps/nextcloud/apps/passman.nix b/pkgs/webapps/nextcloud/apps/passman.nix
deleted file mode 100644
index 2de4882..0000000
--- a/pkgs/webapps/nextcloud/apps/passman.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 18;
-buildApp rec {
- # FIXME: it creates a /settings/user/additional setting url which
- # doesn’t work
- appName = "passman";
- version = "2.3.5";
- url = "https://releases.passman.cc/${appName}_${version}.tar.gz";
- sha256 = "05gc288n43c7dhmq1jqfn8cfw7sycwdfhn36j8rh8nbx1irldbjn";
-}
diff --git a/pkgs/webapps/nextcloud/apps/polls.nix b/pkgs/webapps/nextcloud/apps/polls.nix
deleted file mode 100644
index 69e1102..0000000
--- a/pkgs/webapps/nextcloud/apps/polls.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "polls";
- version = "1.4.3";
- url = "https://github.com/nextcloud/polls/releases/download/v${version}/${appName}.tar.gz";
- sha256 = "07l5x5xblk6w8f6mqz3a5hjpry8qc3zgqi49z6bp5ipnzj0s6wm4";
-}
diff --git a/pkgs/webapps/nextcloud/apps/social.nix b/pkgs/webapps/nextcloud/apps/social.nix
deleted file mode 100644
index 75b790a..0000000
--- a/pkgs/webapps/nextcloud/apps/social.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 17 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "social";
- version = "0.3.1";
- url = "https://github.com/nextcloud/social/releases/download/v${version}/${appName}-${version}.tar.gz";
- sha256 = "03hh6vr34p33dphrjqmc7s8mvsk5n7dl817j8qkf75203y8szhdy";
-}
-
diff --git a/pkgs/webapps/nextcloud/apps/spreed.nix b/pkgs/webapps/nextcloud/apps/spreed.nix
deleted file mode 100644
index b52c8c5..0000000
--- a/pkgs/webapps/nextcloud/apps/spreed.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion == 18;
-buildApp rec {
- appName = "spreed";
- version = "8.0.8";
- url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
- sha256 = "19szk61ixzzrabs63l2fihx7k4f6a8k4kdzpa0xxzv5w9ssqjhbj";
-}
diff --git a/pkgs/webapps/nextcloud/apps/tasks.nix b/pkgs/webapps/nextcloud/apps/tasks.nix
deleted file mode 100644
index a2de465..0000000
--- a/pkgs/webapps/nextcloud/apps/tasks.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ buildApp, nextcloudVersion }:
-assert nextcloudVersion >= 16 && nextcloudVersion <= 19;
-buildApp rec {
- appName = "tasks";
- version = "0.12.2";
- url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
- sha256 = "092fg7dpx69jp5z0ka14ay6bnfdcnjq8zk2gc3rwpzc3llpdnqph";
-}
diff --git a/pkgs/webapps/nextcloud/default.nix b/pkgs/webapps/nextcloud/default.nix
deleted file mode 100644
index 5017fd2..0000000
--- a/pkgs/webapps/nextcloud/default.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{ varDir ? "/var/lib/nextcloud", nextcloudVersion ? 18, otherConfig ? {}, lib, stdenv, callPackage, fetchzip, fetchurl }:
-let
- appNames = [
- "apporder" "audioplayer" "bookmarks" "calendar" "carnet" "circles"
- "contacts" "cookbook" "deck" "extract" "files_markdown"
- "files_readmemd" "flowupload" "gpxedit" "gpxpod" "impersonate"
- "keeweb" "maps" "metadata" "music" "notes" "ocsms" "passman" "polls"
- "spreed" "social" "tasks"
- ];
- allApps = lib.attrsets.genAttrs appNames
- (name: callPackage (./apps + "/${name}.nix") { inherit buildApp nextcloudVersion; });
- buildApp = { appName, version, url, sha256, zip ? false, otherConfig ? {}, installPhase ? "mkdir -p $out && cp -R . $out/" }:
- stdenv.mkDerivation rec {
- name = "nextcloud-app-${appName}-${version}";
- inherit version;
- phases = "unpackPhase installPhase";
- inherit installPhase;
- src = (if zip then fetchzip else fetchurl) { inherit url sha256; };
- passthru = {
- inherit appName otherConfig;
- };
- };
- toPassthru = pkg: apps: otherConfig: {
- inherit apps otherConfig allApps buildApp varDir;
- withApps = withApps pkg;
- };
- withApps = pkg: toApps:
- let
- apps = toApps allApps;
- toInstallApp = n: ''
- ln -sf ${n} $out/apps/${n.appName}
- '';
- zipped = lib.attrsets.zipAttrs ([pkg.otherConfig or {}] ++ map (v: v.otherConfig) apps);
- appConfigs = with lib.attrsets; with lib.lists; {
- mimetypealiases = foldr (h: prev: prev // h) {} (zipped.mimetypealiases or []);
- mimetypemapping = mapAttrs (_: v: unique (flatten v)) (zipAttrs (zipped.mimetypemapping or []));
- };
- newNextcloud = pkg.overrideAttrs(old: {
- installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallApp apps);
- passthru = toPassthru newNextcloud (pkg.apps ++ apps) appConfigs;
- });
- in newNextcloud;
- package = stdenv.mkDerivation rec {
- name = "nextcloud-${version}";
- version = "${builtins.toString nextcloudVersion}.0.4";
-
- src = fetchurl {
- url = "https://download.nextcloud.com/server/releases/${name}.tar.bz2";
- sha256 = "0aa3f4xbkzacfw0h9aic0ywk5mqlwka83qaszizj8lmk68kf3n7s";
- };
-
- installPhase = ''
- mkdir -p $out/
- cp -R . $out/
- rm -r $out/config
- '' + lib.optionalString (varDir != null) ''
- ln -sf ${varDir}/config $out/config
- '';
-
- passthru = toPassthru package [] otherConfig;
- meta = {
- description = "Sharing solution for files, calendars, contacts and more";
- homepage = https://nextcloud.com;
- maintainers = with lib.maintainers; [ schneefux bachp globin fpletz ];
- license = lib.licenses.agpl3Plus;
- platforms = with lib.platforms; unix;
- };
- };
-in package
diff --git a/pkgs/webapps/phpbb/default.nix b/pkgs/webapps/phpbb/default.nix
deleted file mode 100644
index 21ee154..0000000
--- a/pkgs/webapps/phpbb/default.nix
+++ /dev/null
@@ -1,61 +0,0 @@
-{ stdenv, fetchurl, callPackage
-, varDir ? "/var/lib/phpbb"
-}:
-let
- allExts = {
- alfredoramos.markdown = callPackage ./extensions/markdown.nix {};
- davidiq.mailinglist = callPackage ./extensions/mailinglist.nix {};
- dmzx.mchat = callPackage ./extensions/mchat.nix {};
- empteintesduweb.monitoranswers = callPackage ./extensions/monitoranswers.nix {};
- lr94.autosubscribe = callPackage ./extensions/autosubscribe.nix {};
- phpbbmodders.adduser = callPackage ./extensions/adduser.nix {};
- };
- allLangs = {
- fr = callPackage ./langs/fr.nix {};
- };
- toPassthru = pkg: {
- inherit allLangs allExts;
- withLangs = withLangs pkg;
- withExts = withExts pkg;
- };
- withExts = pkg: toExts:
- let
- exts = toExts allExts;
- toInstallExt = ext: "cp -r ${ext}/* $out/ext/";
- newPhpBB = pkg.overrideAttrs(old: {
- installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallExt exts);
- passthru = toPassthru newPhpBB;
- });
- in newPhpBB;
- withLangs = pkg: toLangs:
- let
- langs = toLangs allLangs;
- toInstallLang = lang: "cp -r ${lang}/*/ $out";
- newPhpBB = pkg.overrideAttrs(old: {
- installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallLang langs);
- passthru = toPassthru newPhpBB;
- });
- in newPhpBB;
- phpBB = stdenv.mkDerivation rec {
- pname = "phpBB";
- version = "3.3.0";
-
- src = fetchurl {
- url = "https://download.phpbb.com/pub/release/3.3/${version}/${pname}-${version}.tar.bz2";
- sha256 = "a6234ac9dcf9086c025ece29a0a235f997a92bb9a994eff0ddcf8917e841262f";
- };
-
- phases = [ "unpackPhase" "installPhase" ];
-
- installPhase = ''
- cp -a . $out
- mkdir -p $out/vars
- mv $out/{cache,files,store,config.php} $out/vars
- ln -s ${varDir}/{cache,files,store,config.php} $out/
- echo -e "core:\n allow_install_dir: true" >> $out/config/production/config.yml
- '';
-
- passthru = toPassthru phpBB;
- };
-in
- phpBB
diff --git a/pkgs/webapps/phpbb/extensions/adduser.nix b/pkgs/webapps/phpbb/extensions/adduser.nix
deleted file mode 100644
index f9073e6..0000000
--- a/pkgs/webapps/phpbb/extensions/adduser.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ stdenv, fetchurl, unzip }:
-stdenv.mkDerivation rec {
- pname = "phpBB-extension-adduser";
- version = "1.0.4";
- src = fetchurl {
- # https://www.phpbb.com/customise/db/extension/acp_add_user_2
- url = "https://www.phpbb.com/customise/db/download/141601";
- sha256 = "13m4anib74cinnv1ap3b1ncb8cxm3mzhhmlqhbrr9mlrqmwf4zg2";
- };
-
- buildInputs = [ unzip ];
- phases = [ "unpackPhase" "installPhase" ];
- unpackPhase = ''
- mkdir src
- cd src
- unzip $src
- '';
- installPhase = ''
- cp -a . $out
- cp -a $out/phpbbmodders/adduser/language/en $out/phpbbmodders/adduser/language/fr
- '';
-}
diff --git a/pkgs/webapps/phpbb/extensions/autosubscribe.nix b/pkgs/webapps/phpbb/extensions/autosubscribe.nix
deleted file mode 100644
index 78e23fc..0000000
--- a/pkgs/webapps/phpbb/extensions/autosubscribe.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ stdenv, fetchurl, unzip }:
-stdenv.mkDerivation rec {
- pname = "phpBB-extension-autosubscribe";
- version = "1.1.0";
- src = fetchurl {
- # https://www.phpbb.com/customise/db/extension/autosubscribe
- url = "https://www.phpbb.com/customise/db/download/146556";
- sha256 = "0dsay463g4impw86w1nv307nslc195fkgkqmihfn5kc0hya0giv0";
- };
-
- buildInputs = [ unzip ];
- phases = [ "unpackPhase" "installPhase" ];
- unpackPhase = ''
- mkdir src
- cd src
- unzip $src
- '';
- installPhase = "cp -a . $out";
-}
diff --git a/pkgs/webapps/phpbb/extensions/mailinglist.nix b/pkgs/webapps/phpbb/extensions/mailinglist.nix
deleted file mode 100644
index d432aaf..0000000
--- a/pkgs/webapps/phpbb/extensions/mailinglist.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ stdenv, fetchurl, unzip }:
-stdenv.mkDerivation rec {
- pname = "phpBB-extension-MailingList";
- version = "2.0.0";
- src = fetchurl {
- url = "https://github.com/DavidIQ/MailingList/archive/${version}.tar.gz";
- sha256 = "1ddg8bci85jwmvyakcwdn4yzqwz1rgy7ljf4nmfk9p2kvx2nhj62";
- };
-
- phases = [ "unpackPhase" "installPhase" ];
- installPhase = ''
- mkdir -p $out/davidiq/mailinglist
- cp -a . $out/davidiq/mailinglist
- # delete last two lines which contain EMAIL_SIG
- sed -i -n -e :a -e '1,2!{P;N;D;};N;ba' $out/davidiq/mailinglist/language/en/email/*
- '';
-}
-
diff --git a/pkgs/webapps/phpbb/extensions/markdown.nix b/pkgs/webapps/phpbb/extensions/markdown.nix
deleted file mode 100644
index 3bd73c7..0000000
--- a/pkgs/webapps/phpbb/extensions/markdown.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ stdenv, fetchurl, unzip }:
-stdenv.mkDerivation rec {
- pname = "phpBB-extension-markdown";
- version = "1.2.0";
- src = fetchurl {
- # https://www.phpbb.com/customise/db/extension/markdown
- name = "alfredoramos_markdown_${version}.zip";
- url = "https://www.phpbb.com/customise/db/download/173626";
- sha256 = "0bmgi8qr6azaaz8xnz8dkyf147dyawqvqr93r01qbm9s8bfkpzqx";
- };
-
- buildInputs = [ unzip ];
- phases = [ "unpackPhase" "installPhase" ];
- unpackPhase = ''
- mkdir src
- cd src
- unzip $src
- '';
- installPhase = "cp -a . $out";
-}
diff --git a/pkgs/webapps/phpbb/extensions/mchat.nix b/pkgs/webapps/phpbb/extensions/mchat.nix
deleted file mode 100644
index 93ea861..0000000
--- a/pkgs/webapps/phpbb/extensions/mchat.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ stdenv, fetchurl, unzip }:
-stdenv.mkDerivation rec {
- pname = "phpBB-extension-mchat";
- version = "2.1.3";
- src = fetchurl {
- # https://www.phpbb.com/customise/db/extension/mchat_extension
- name = "dmzx_mchat_${version}.zip";
- url = "https://www.phpbb.com/customise/db/download/168331";
- sha256 = "0mcka02wamn899vg64m1c5d5k6f4qml18cshhzfvccrdc7a0m5p1";
- };
-
- buildInputs = [ unzip ];
- phases = [ "unpackPhase" "installPhase" ];
- unpackPhase = ''
- mkdir src
- cd src
- unzip $src
- '';
- installPhase = "cp -a . $out";
-}
-
diff --git a/pkgs/webapps/phpbb/extensions/monitoranswers.nix b/pkgs/webapps/phpbb/extensions/monitoranswers.nix
deleted file mode 100644
index 52c852e..0000000
--- a/pkgs/webapps/phpbb/extensions/monitoranswers.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ stdenv, fetchurl, unzip }:
-stdenv.mkDerivation rec {
- pname = "phpBB-extension-monitoranswers";
- version = "1.0.0";
- src = fetchurl {
- # http://forums.phpbb-fr.com/extensions-developpement-en-cours/sujet208410.html
- url = "https://www.empreintesduweb.com/dl/extension_empreintesduweb_monitoranswers_v100.zip";
- sha256 = "0g5khzz7brkra9rnnjh8vsv11h8vf36pcw53b4wrkcjb66bfm20s";
- };
-
- buildInputs = [ unzip ];
- phases = [ "unpackPhase" "installPhase" ];
- unpackPhase = ''
- mkdir src
- cd src
- unzip $src
- '';
- installPhase = "cp -a . $out";
-}
diff --git a/pkgs/webapps/phpbb/langs/fr.nix b/pkgs/webapps/phpbb/langs/fr.nix
deleted file mode 100644
index 12f2df0..0000000
--- a/pkgs/webapps/phpbb/langs/fr.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ stdenv, fetchurl }:
-stdenv.mkDerivation rec {
- pname = "phpBB-language-fr";
- version = "v4.0.0";
- src = fetchurl {
- url = "https://github.com/milescellar/phpbb-language-fr/archive/${version}.tar.gz";
- sha256 = "0pkw55pb8ka4ayn1861hwvjwzs8vkq04yaxrs7zm9c8lh2g7y8z0";
- };
-
- phases = [ "unpackPhase" "installPhase" ];
- installPhase = "cp -a . $out";
-}
diff --git a/pkgs/webapps/phpldapadmin/default.nix b/pkgs/webapps/phpldapadmin/default.nix
deleted file mode 100644
index da32f97..0000000
--- a/pkgs/webapps/phpldapadmin/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ config ? "/etc/phpldapadmin/config.php", fetchurl, fetchFromGitHub, stdenv, optipng }:
-stdenv.mkDerivation rec {
- version = "1.2.5";
- name = "phpldapadmin-${version}";
- src = fetchFromGitHub {
- owner = "leenooks";
- repo = "phpLDAPadmin";
- rev = "8f4ced96f9c63a09510a5bccb2189a8b92fb29ba";
- sha256 = "1x6xc3xbvw3aj46i5ds06a8h6mfljxdv3argxrzz02l541ra6ni7";
- };
- patches = [
- #./ldap-php5_5.patch
- #./ldap-disable-mcrypt.patch
- #./ldap-php7_2.patch
- ./ldap-sort-in-templates.patch
- ./ldap-align-button.patch
- ./ldap-fix-password.patch
- ];
- buildInputs = [ optipng ];
- buildPhase = ''
- find -name '*.png' -exec optipng -quiet -force -fix {} \;
- '';
- installPhase = ''
- cp -a . $out
- ln -sf ${config} $out/config/config.php
- '';
-}
diff --git a/pkgs/webapps/phpldapadmin/ldap-align-button.patch b/pkgs/webapps/phpldapadmin/ldap-align-button.patch
deleted file mode 100644
index d9a5504..0000000
--- a/pkgs/webapps/phpldapadmin/ldap-align-button.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/htdocs/update_confirm.php 2012-10-01 08:54:14.000000000 +0200
-+++ b/htdocs/update_confirm.php 2018-06-06 15:47:44.122398888 +0200
-@@ -187,7 +187,7 @@
-
- echo '';
-
-- echo '';
-+ echo '
';
- echo ' ';
- // @todo cant use AJAX here, it affects file uploads.
- printf(' ',
diff --git a/pkgs/webapps/phpldapadmin/ldap-fix-password.patch b/pkgs/webapps/phpldapadmin/ldap-fix-password.patch
deleted file mode 100644
index d2d80e4..0000000
--- a/pkgs/webapps/phpldapadmin/ldap-fix-password.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/htdocs/login.php b/htdocs/login.php
-index 48f9e2e..298b07d 100644
---- a/htdocs/login.php
-+++ b/htdocs/login.php
-@@ -13,7 +13,7 @@ require './common.php';
-
- $user = array();
- $user['login'] = get_request('login');
--$user['password'] = get_request('login_pass');
-+$user['password'] = get_request('login_pass','POST',false,null,false);
-
- if ($user['login'] && ! strlen($user['password']))
- system_message(array(
diff --git a/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch b/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch
deleted file mode 100644
index 55a1974..0000000
--- a/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -wbBur phpldapadmin-1.2.3.org/lib/TemplateRender.php phpldapadmin-1.2.3/lib/TemplateRender.php
---- phpldapadmin-1.2.3.org/lib/TemplateRender.php 2012-10-01 10:54:14.000000000 +0400
-+++ phpldapadmin-1.2.3/lib/TemplateRender.php 2018-02-02 19:06:45.674760057 +0300
-@@ -321,6 +321,8 @@
-
- $vals = array();
-
-+ asort($picklistvalues);
-+
- foreach ($picklistvalues as $key => $values) {
- $display = $args[3];
-
diff --git a/pkgs/webapps/rompr/default.nix b/pkgs/webapps/rompr/default.nix
deleted file mode 100644
index 2accf00..0000000
--- a/pkgs/webapps/rompr/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ varDir ? "/var/lib/rompr", stdenv, mylibs }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./rompr.json // {
- installPhase = ''
- cp -a . $out
- ln -sf ${varDir}/prefs $out/prefs
- ln -sf ${varDir}/albumart $out/albumart
- '';
-})
diff --git a/pkgs/webapps/rompr/rompr.json b/pkgs/webapps/rompr/rompr.json
deleted file mode 100644
index 778d915..0000000
--- a/pkgs/webapps/rompr/rompr.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "1.24",
- "meta": {
- "name": "rompr",
- "url": "https://github.com/fatg3erman/RompR",
- "branch": "refs/tags/1.24"
- },
- "github": {
- "owner": "fatg3erman",
- "repo": "RompR",
- "rev": "0d8f597027ac71b320963fe3f33f461a136312ad",
- "sha256": "13p3c4whhmvz1vvh9fva5gdx4xji288k108hjdi8b1yn506lzix2",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/roundcubemail/add_all.patch b/pkgs/webapps/roundcubemail/add_all.patch
deleted file mode 100644
index ba651e2..0000000
--- a/pkgs/webapps/roundcubemail/add_all.patch
+++ /dev/null
@@ -1,209 +0,0 @@
-diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php
-index 0552b89c2..1b84e1b4e 100644
---- a/program/include/rcmail_output_html.php
-+++ b/program/include/rcmail_output_html.php
-@@ -1013,13 +1013,13 @@ EOF;
- // use minified file if exists (not in development mode)
- if (!$this->devel_mode && !preg_match('/\.min\.' . $ext . '$/', $file)) {
- $minified_file = substr($file, 0, strlen($ext) * -1) . 'min.' . $ext;
-- if ($fs = @filemtime($this->assets_dir . $minified_file)) {
-- return $minified_file . '?s=' . $fs;
-+ if ($fs = @md5_file($this->assets_dir . $minified_file)) {
-+ return $minified_file . '?s=' . substr($fs, 0, 6);
- }
- }
-
-- if ($fs = @filemtime($this->assets_dir . $file)) {
-- $file .= '?s=' . $fs;
-+ if ($fs = @md5_file($this->assets_dir . $file)) {
-+ $file .= '?s=' . substr($fs, 0, 6);
- }
-
- return $file;
-diff --git a/program/js/app.js b/program/js/app.js
-index 2094b7b7b..06fe96a80 100644
---- a/program/js/app.js
-+++ b/program/js/app.js
-@@ -2277,6 +2277,9 @@ function rcube_webmail()
- }
-
- tree += ' ';
-+ if (flags.mbox != this.env.mailbox) {
-+ tree += '' + flags.mbox + ' ';
-+ }
- row.className = row_class;
-
- // build subject link
-diff --git a/program/localization/en_CA/labels.inc b/program/localization/en_CA/labels.inc
-index 03c1c8e11..8d67a49ac 100644
---- a/program/localization/en_CA/labels.inc
-+++ b/program/localization/en_CA/labels.inc
-@@ -128,6 +128,7 @@ $labels['markunread'] = 'As unread';
- $labels['markflagged'] = 'As flagged';
- $labels['markunflagged'] = 'As unflagged';
- $labels['moreactions'] = 'More actions...';
-+$labels['folders-allsubscribed'] = 'All subscribed folders';
- $labels['folders-all'] = 'All folders';
- $labels['more'] = 'More';
- $labels['back'] = 'Back';
-@@ -184,6 +185,7 @@ $labels['namex'] = 'Name';
- $labels['searchscope'] = 'Scope';
- $labels['currentfolder'] = 'Current folder';
- $labels['subfolders'] = 'This and subfolders';
-+$labels['allsubscribedfolders'] = 'All subscribed folders';
- $labels['allfolders'] = 'All folders';
- $labels['openinextwin'] = 'Open in new window';
- $labels['emlsave'] = 'Download (.eml)';
-diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc
-index a442965de..b5b4839e3 100644
---- a/program/localization/en_GB/labels.inc
-+++ b/program/localization/en_GB/labels.inc
-@@ -135,6 +135,7 @@ $labels['moreactions'] = 'More actions...';
- $labels['markallread'] = 'Mark all as read';
- $labels['folders-cur'] = 'Selected folder only';
- $labels['folders-sub'] = 'Selected folder and its subfolders';
-+$labels['folders-allsubscribed'] = 'All subscribed folders';
- $labels['folders-all'] = 'All folders';
- $labels['more'] = 'More';
- $labels['back'] = 'Back';
-@@ -221,6 +222,7 @@ $labels['namex'] = 'Name';
- $labels['searchscope'] = 'Scope';
- $labels['currentfolder'] = 'Current folder';
- $labels['subfolders'] = 'This and subfolders';
-+$labels['allsubscribedfolders'] = 'All subscribed folders';
- $labels['allfolders'] = 'All folders';
- $labels['searchinterval-1W'] = 'older than a week';
- $labels['searchinterval-1M'] = 'older than a month';
-diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
-index 2e8ec8009..c7736557f 100644
---- a/program/localization/en_US/labels.inc
-+++ b/program/localization/en_US/labels.inc
-@@ -158,6 +158,7 @@ $labels['moreactions'] = 'More actions...';
- $labels['markallread'] = 'Mark all as read';
- $labels['folders-cur'] = 'Selected folder only';
- $labels['folders-sub'] = 'Selected folder and its subfolders';
-+$labels['folders-allsubscribed'] = 'All subscribed folders';
- $labels['folders-all'] = 'All folders';
- $labels['more'] = 'More';
- $labels['back'] = 'Back';
-@@ -249,6 +250,7 @@ $labels['namex'] = 'Name';
- $labels['searchscope'] = 'Scope';
- $labels['currentfolder'] = 'Current folder';
- $labels['subfolders'] = 'This and subfolders';
-+$labels['allsubscribedfolders'] = 'All subscribed folders';
- $labels['allfolders'] = 'All folders';
- $labels['searchinterval-1W'] = 'older than a week';
- $labels['searchinterval-1M'] = 'older than a month';
-diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc
-index 6db44f95c..ad83e15d8 100644
---- a/program/localization/fr_FR/labels.inc
-+++ b/program/localization/fr_FR/labels.inc
-@@ -135,6 +135,7 @@ $labels['moreactions'] = 'Plus d’actions…';
- $labels['markallread'] = 'Tout marquer comme lu';
- $labels['folders-cur'] = 'Dossier sélectionné seulement';
- $labels['folders-sub'] = 'Dossier sélectionné et ses sous-dossiers';
-+$labels['folders-allsubscribed'] = 'Tous les dossiers souscrits';
- $labels['folders-all'] = 'Tous les dossiers';
- $labels['more'] = 'Plus';
- $labels['back'] = 'Retour';
-@@ -221,6 +222,7 @@ $labels['namex'] = 'Nom';
- $labels['searchscope'] = 'Portée';
- $labels['currentfolder'] = 'Répertoire actuel';
- $labels['subfolders'] = 'Ceci et les sous-dossiers';
-+$labels['allsubscribedfolders'] = 'Tous les dossiers souscrits';
- $labels['allfolders'] = 'Tous les dossiers';
- $labels['searchinterval-1W'] = 'plus d’une semaine';
- $labels['searchinterval-1M'] = 'plus d’un mois';
-diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
-index 8e0c642f6..ac79780e0 100644
---- a/program/steps/mail/func.inc
-+++ b/program/steps/mail/func.inc
-@@ -110,8 +110,8 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
- 'copy', 'move', 'quota', 'replyall', 'replylist', 'stillsearching',
- 'flagged', 'unflagged', 'unread', 'deleted', 'replied', 'forwarded',
- 'priority', 'withattachment', 'fileuploaderror', 'mark', 'markallread',
-- 'folders-cur', 'folders-sub', 'folders-all', 'cancel', 'bounce', 'bouncemsg',
-- 'sendingmessage');
-+ 'folders-cur', 'folders-sub', 'folders-allsubscribed', 'folder-all',
-+ 'cancel', 'bounce', 'bouncemsg', 'sendingmessage');
- }
- }
-
-diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc
-index f60528835..836a715b0 100644
---- a/program/steps/mail/search.inc
-+++ b/program/steps/mail/search.inc
-@@ -86,7 +86,7 @@ else if (strlen(trim($str))) {
- }
-
- // save search modifiers for the current folder to user prefs
-- $mkey = $scope == 'all' ? '*' : $mbox;
-+ $mkey = ($scope == 'all' || $scope == 'allsubscribed') ? '*' : $mbox;
- $search_mods = rcmail_search_mods();
- $search_mods[$mkey] = array_fill_keys(array_keys($subject), 1);
-
-@@ -124,6 +124,10 @@ if (!empty($continue) && isset($_SESSION['search']) && $_SESSION['search_request
- if ($search_str) {
- // search all, current or subfolders folders
- if ($scope == 'all') {
-+ $mboxes = $RCMAIL->storage->list_folders('', '*', 'mail', null, true);
-+ natcasesort($mboxes); // we want natural alphabetic sorting of folders in the result set
-+ }
-+ else if ($scope == 'allsubscribed') {
- $mboxes = $RCMAIL->storage->list_folders_subscribed('', '*', 'mail', null, true);
- natcasesort($mboxes); // we want natural alphabetic sorting of folders in the result set
- }
-@@ -133,7 +137,7 @@ if ($search_str) {
- array_unshift($mboxes, $mbox);
- }
-
-- if ($scope != 'all') {
-+ if ($scope != 'all' && $scope != 'allsubscribed') {
- // Remember current folder, it can change in meantime (plugins)
- // but we need it to e.g. recognize Sent folder to handle From/To column later
- $RCMAIL->output->set_env('mailbox', $mbox);
-@@ -194,7 +198,7 @@ else {
- $count = 0;
- $OUTPUT->show_message('searchnomatch', 'notice');
- $OUTPUT->set_env('multifolder_listing', (bool)$result->multi);
-- if ($result->multi && $scope == 'all') {
-+ if ($result->multi && ($scope == 'all' || $scope == 'allsubscribed')) {
- $OUTPUT->command('select_folder', '');
- }
- }
-diff --git a/skins/classic/templates/mail.html b/skins/classic/templates/mail.html
-index 666adf606..23d12a275 100644
---- a/skins/classic/templates/mail.html
-+++ b/skins/classic/templates/mail.html
-@@ -106,6 +106,7 @@
-
-
-
-+
-
-
-
-diff --git a/skins/elastic/templates/mail.html b/skins/elastic/templates/mail.html
-index 51dbfcd30..4c2281281 100644
---- a/skins/elastic/templates/mail.html
-+++ b/skins/elastic/templates/mail.html
-@@ -77,6 +77,7 @@
-
-
-
-+
-
-
-
-diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html
-index 5ef0bc211..e0e8280ad 100644
---- a/skins/larry/templates/mail.html
-+++ b/skins/larry/templates/mail.html
-@@ -56,6 +56,7 @@
-
-
-
-+
-
-
-
diff --git a/pkgs/webapps/roundcubemail/default.nix b/pkgs/webapps/roundcubemail/default.nix
deleted file mode 100644
index bdddf2f..0000000
--- a/pkgs/webapps/roundcubemail/default.nix
+++ /dev/null
@@ -1,85 +0,0 @@
-{ varDir ? "/var/lib/roundcubemail"
-, roundcube_config ? "/etc/roundcube/config.php"
-, stdenv, fetchurl, jre, unzip, lib, callPackage }:
-let
- defaultInstall = ''
- mkdir -p $out
- cp -R . $out/
- cd $out
- if [ -d skins -a -d skins/larry -a ! -d skins/elastic ]; then
- ln -s larry skins/elastic
- fi
- '';
- buildPlugin = { appName, version, url, sha256, installPhase ? defaultInstall }:
- stdenv.mkDerivation rec {
- name = "roundcube-${appName}-${version}";
- inherit version;
- phases = "unpackPhase installPhase";
- inherit installPhase;
- src = fetchurl { inherit url sha256; };
- passthru.pluginName = appName;
- };
- skinNames = [];
- allSkins = lib.attrsets.genAttrs skinNames
- (name: callPackage (./skins + "/${name}") {});
- pluginNames = [
- "automatic_addressbook" "carddav" "contextmenu"
- "contextmenu_folder" "html5_notifier" "ident_switch"
- "message_highlight" "thunderbird_labels"
- ];
- allPlugins = lib.attrsets.genAttrs pluginNames
- (name: callPackage (./plugins + "/${name}") { inherit buildPlugin; });
- toPassthru = pkg: plugins: skins: {
- inherit plugins skins allSkins allPlugins;
- withSkins = withSkins pkg;
- withPlugins = withPlugins pkg;
- };
- withPlugins = pkg: toPlugins:
- let
- plugins = toPlugins allPlugins;
- toInstallPlugin = n: "ln -s ${n} $out/plugins/${n.pluginName}";
- newRoundcube = pkg.overrideAttrs(old: {
- installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
- passthru = toPassthru newRoundcube (pkg.plugins ++ plugins) pkg.skins;
- });
- in newRoundcube;
- withSkins = pkg: toSkins:
- let
- skins = toSkins allSkins;
- toInstallSkin = n: "ln -s ${n} $out/skins/${n.skinName}";
- newRoundcube = pkg.overrideAttrs(old: {
- installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallSkin skins);
- passthru = toPassthru newRoundcube pkg.plugins (pkg.skins ++ skins);
- });
- in newRoundcube;
- shrinker = fetchurl {
- url = "https://dl.google.com/closure-compiler/compiler-20200719.zip";
- sha256 = "0j46y9ack2yq67naca6nfysbmyilwjlkl29dbswidf1lq09yhhj3";
- };
- package = stdenv.mkDerivation rec {
- version = "1.4.4";
- name = "roundcubemail-${version}";
- src= fetchurl {
- url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/${name}-complete.tar.gz";
- sha256 = "1my726p0wmsn21nbdsjx02h6hnbh8nidzipzdy0gk0qgda1j729b";
- };
- patches = [ ./add_all.patch ]; # This patch includes js modification which requires to re-run the jsshrink below
- buildInputs = [ unzip jre ];
- buildPhase = ''
- mkdir -p /tmp
- unzip -p "${shrinker}" "*.jar" > "/tmp/compiler.jar"
- ./bin/jsshrink.sh
- sed -i \
- -e "s|RCUBE_INSTALL_PATH . 'temp.*|'${varDir}/cache';|" \
- config/defaults.inc.php
- sed -i \
- -e "s|RCUBE_INSTALL_PATH . 'logs.*|'${varDir}/logs';|" \
- config/defaults.inc.php
- '';
- installPhase = ''
- cp -a . $out
- ln -s ${roundcube_config} $out/config/config.inc.php
- '';
- passthru = toPassthru package [] [];
- };
-in package
diff --git a/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix b/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix
deleted file mode 100644
index cd9efee..0000000
--- a/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ buildPlugin }:
-buildPlugin rec {
- appName = "automatic_addressbook";
- version = "0.4.3";
- url = "https://github.com/sblaisot/${appName}/archive/${version}.tar.gz";
- sha256 = "0bx5qjzp3a3wc72fr295bvgsy5n15949c041hq76n6c7sqdn7inc";
-}
diff --git a/pkgs/webapps/roundcubemail/plugins/carddav/default.nix b/pkgs/webapps/roundcubemail/plugins/carddav/default.nix
deleted file mode 100644
index ad6856b..0000000
--- a/pkgs/webapps/roundcubemail/plugins/carddav/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ buildPlugin }:
-buildPlugin rec {
- appName = "carddav";
- version = "3.0.3";
- url = "https://github.com/blind-coder/rcmcarddav/releases/download/v${version}/${appName}-${version}.tar.bz2";
- sha256 = "0cf5rnqkhhag2vdy808zfpr4l5586fn43nvcia8ac1ha58azrxal";
-}
diff --git a/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix b/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix
deleted file mode 100644
index 34a43a7..0000000
--- a/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ buildPlugin }:
-buildPlugin rec {
- appName = "contextmenu";
- version = "3.2";
- url = "https://github.com/johndoh/roundcube-${appName}/archive/${version}.tar.gz";
- sha256 = "1j7qns42bvgwav8d5n8g16iajyrhydd76hgil8625f3xyjbv4mx0";
-}
diff --git a/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix b/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix
deleted file mode 100644
index e5cb46d..0000000
--- a/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ buildPlugin }:
-buildPlugin rec {
- appName = "contextmenu_folder";
- version = "1.3.3";
- url = "https://github.com/random-cuber/${appName}/archive/${version}.tar.gz";
- sha256 = "1ngfws1v8qrpa52rjh7kirc98alchk2vbqwra86h00agyjjlcc57";
-}
diff --git a/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix b/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix
deleted file mode 100644
index a5788b3..0000000
--- a/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ buildPlugin }:
-buildPlugin rec {
- appName = "html5_notifier";
- version = "v0.6.4";
- url = "https://github.com/stremlau/${appName}/archive/${version}.tar.gz";
- sha256 = "1w6xkffgxwbahi7acixdh5sgjvsjlfwdq942gkvc64byk8r3bhsj";
-}
diff --git a/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix b/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix
deleted file mode 100644
index 3e10fee..0000000
--- a/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ buildPlugin }:
-buildPlugin rec {
- appName = "ident_switch";
- version = "4.2";
- url = "https://bitbucket.org/BoresExpress/${appName}/get/${version}.tar.gz";
- sha256 = "0rf2krjsnly4i0mzgsbx09xckr3p9a9dzxf8qq4lkyng1a7dvjkq";
-}
diff --git a/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix b/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix
deleted file mode 100644
index dc7138a..0000000
--- a/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ buildPlugin }:
-buildPlugin rec {
- appName = "message_highlight";
- version = "4.4";
- url = "https://github.com/corbosman/${appName}/archive/${version}.tar.gz";
- sha256 = "12c4x47y70xdl5pgm8csh5i4yiyhpi232lvjbixmca6di4lkhh9j";
-}
diff --git a/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix b/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix
deleted file mode 100644
index b67f16a..0000000
--- a/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ buildPlugin }:
-buildPlugin rec {
- appName = "thunderbird_labels";
- version = "v1.4.2";
- url = "https://github.com/mike-kfed/roundcube-${appName}/archive/${version}.tar.gz";
- sha256 = "00dqqlq6m8a6dwynp6gwfimc10anbs8kh0qdy8xvq2l06hk6jxyc";
-}
diff --git a/pkgs/webapps/spip/default.nix b/pkgs/webapps/spip/default.nix
deleted file mode 100644
index 20d5c8c..0000000
--- a/pkgs/webapps/spip/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ siteName ? "spip"
-, siteDir ? runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out"
-, environment ? "prod"
-, ldap ? false
-, varDir ? "/var/lib/${siteName}_${environment}"
-, lib, fetchzip, runCommand, stdenv }:
-let
- app = stdenv.mkDerivation rec {
- name = "${siteName}-${environment}-spip-${version}";
- version = "3.2.7";
- src = fetchzip {
- url = "https://files.spip.net/spip/archives/SPIP-v${version}.zip";
- sha256 = "0n4kc95nhn524zbb11bpfjs965pm4v026s3m3q44pl8nyms91r33";
- };
- paches = lib.optionals ldap [ ./spip_ldap_patch.patch ];
- buildPhase = ''
- rm -rf IMG local tmp config/remove.txt
- ln -sf ${./spip_mes_options.php} config/mes_options.php
- echo "Require all denied" > "config/.htaccess"
- ln -sf ${varDir}/{IMG,local} .
- '';
- installPhase = ''
- cp -a . $out
- cp -a ${siteDir}/* $out
- '';
- passthru = {
- inherit siteName siteDir environment varDir;
- webRoot = app;
- spipConfig = ./spip_mes_options.php;
- };
- };
-in app
diff --git a/pkgs/webapps/spip/spip_ldap_patch.patch b/pkgs/webapps/spip/spip_ldap_patch.patch
deleted file mode 100644
index 653c909..0000000
--- a/pkgs/webapps/spip/spip_ldap_patch.patch
+++ /dev/null
@@ -1,60 +0,0 @@
---- old/ecrire/auth/ldap.php 2017-06-08 21:58:17.000000000 +0200
-+++ new/ecrire/auth/ldap.php 2017-06-10 02:54:02.687954143 +0200
-@@ -171,24 +171,41 @@
- $desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
-
- $logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']);
-+ if (isset($GLOBALS['ldap_search'])) {
-+ $search_query = str_replace("%user%", $login_search, $GLOBALS['ldap_search']);
-+ $result = @ldap_search($ldap_link, $ldap_base, $search_query, array("dn"));
-+ $info = @ldap_get_entries($ldap_link, $result);
-+ // Ne pas accepter les resultats si plus d'une entree
-+ // (on veut un attribut unique)
-
-- // Tenter une recherche pour essayer de retrouver le DN
-- foreach ($logins as $att) {
-- $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
-- $info = @ldap_get_entries($ldap_link, $result);
-- // Ne pas accepter les resultats si plus d'une entree
-- // (on veut un attribut unique)
-+ if (is_array($info) and $info['count'] == 1) {
-+ $dn = $info[0]['dn'];
-+ if (!$checkpass) {
-+ return $dn;
-+ }
-+ if (@ldap_bind($ldap_link, $dn, $pass)) {
-+ return $dn;
-+ }
-+ }
-+ } else {
-+ // Tenter une recherche pour essayer de retrouver le DN
-+ foreach ($logins as $att) {
-+ $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
-+ $info = @ldap_get_entries($ldap_link, $result);
-+ // Ne pas accepter les resultats si plus d'une entree
-+ // (on veut un attribut unique)
-
-- if (is_array($info) and $info['count'] == 1) {
-- $dn = $info[0]['dn'];
-- if (!$checkpass) {
-- return $dn;
-- }
-- if (@ldap_bind($ldap_link, $dn, $pass)) {
-- return $dn;
-- }
-- }
-- }
-+ if (is_array($info) and $info['count'] == 1) {
-+ $dn = $info[0]['dn'];
-+ if (!$checkpass) {
-+ return $dn;
-+ }
-+ if (@ldap_bind($ldap_link, $dn, $pass)) {
-+ return $dn;
-+ }
-+ }
-+ }
-+ }
-
- if ($checkpass and !isset($dn)) {
- // Si echec, essayer de deviner le DN
diff --git a/pkgs/webapps/spip/spip_mes_options.php b/pkgs/webapps/spip/spip_mes_options.php
deleted file mode 100644
index 8db8389..0000000
--- a/pkgs/webapps/spip/spip_mes_options.php
+++ /dev/null
@@ -1,18 +0,0 @@
-
diff --git a/pkgs/webapps/surfer/default.nix b/pkgs/webapps/surfer/default.nix
deleted file mode 100644
index 9a04da5..0000000
--- a/pkgs/webapps/surfer/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ callPackage, mylibs, sources }:
-# built using node2nix -l package-lock.json
-# and changing "./." to "src"
-(callPackage ./node-packages.nix {
- src = sources.webapps-surfer;
- nodeEnv = callPackage mylibs.nodeEnv {};
-}).package.overrideAttrs(old: {
- postInstall = ''
- mkdir -p $out/bin
- ln -s ../cloudron-surfer/server.js $out/lib/node_modules/.bin/surfer-server
- '';
-})
diff --git a/pkgs/webapps/surfer/node-packages.nix b/pkgs/webapps/surfer/node-packages.nix
deleted file mode 100644
index a1fb5ba..0000000
--- a/pkgs/webapps/surfer/node-packages.nix
+++ /dev/null
@@ -1,2437 +0,0 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
-
-{nodeEnv, src, fetchurl, fetchgit, globalBuildInputs ? []}:
-
-let
- sources = {
- "accepts-1.3.4" = {
- name = "accepts";
- packageName = "accepts";
- version = "1.3.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz";
- sha1 = "86246758c7dd6d21a6474ff084a4740ec05eb21f";
- };
- };
- "ajv-5.5.2" = {
- name = "ajv";
- packageName = "ajv";
- version = "5.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz";
- sha1 = "73b5eeca3fab653e3d3f9422b341ad42205dc965";
- };
- };
- "archiver-4.0.1" = {
- name = "archiver";
- packageName = "archiver";
- version = "4.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/archiver/-/archiver-4.0.1.tgz";
- sha512 = "/YV1pU4Nhpf/rJArM23W6GTUjT0l++VbjykrCRua1TSXrn+yM8Qs7XvtwSiRse0iCe49EPNf7ktXnPsWuSb91Q==";
- };
- };
- "archiver-utils-2.1.0" = {
- name = "archiver-utils";
- packageName = "archiver-utils";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz";
- sha512 = "bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==";
- };
- };
- "array-flatten-1.1.1" = {
- name = "array-flatten";
- packageName = "array-flatten";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz";
- sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
- };
- };
- "array-union-1.0.2" = {
- name = "array-union";
- packageName = "array-union";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz";
- sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
- };
- };
- "array-uniq-1.0.3" = {
- name = "array-uniq";
- packageName = "array-uniq";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz";
- sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
- };
- };
- "arrify-1.0.1" = {
- name = "arrify";
- packageName = "arrify";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz";
- sha1 = "898508da2226f380df904728456849c1501a4b0d";
- };
- };
- "asn1-0.2.3" = {
- name = "asn1";
- packageName = "asn1";
- version = "0.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
- sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
- };
- };
- "assert-plus-0.1.5" = {
- name = "assert-plus";
- packageName = "assert-plus";
- version = "0.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz";
- sha1 = "ee74009413002d84cec7219c6ac811812e723160";
- };
- };
- "assert-plus-1.0.0" = {
- name = "assert-plus";
- packageName = "assert-plus";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
- sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
- };
- };
- "async-1.5.2" = {
- name = "async";
- packageName = "async";
- version = "1.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/async/-/async-1.5.2.tgz";
- sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
- };
- };
- "async-2.6.3" = {
- name = "async";
- packageName = "async";
- version = "2.6.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/async/-/async-2.6.3.tgz";
- sha512 = "zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==";
- };
- };
- "asynckit-0.4.0" = {
- name = "asynckit";
- packageName = "asynckit";
- version = "0.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
- sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
- };
- };
- "aws-sign2-0.7.0" = {
- name = "aws-sign2";
- packageName = "aws-sign2";
- version = "0.7.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
- sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
- };
- };
- "aws4-1.6.0" = {
- name = "aws4";
- packageName = "aws4";
- version = "1.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz";
- sha1 = "83ef5ca860b2b32e4a0deedee8c771b9db57471e";
- };
- };
- "backoff-2.5.0" = {
- name = "backoff";
- packageName = "backoff";
- version = "2.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz";
- sha1 = "f616eda9d3e4b66b8ca7fca79f695722c5f8e26f";
- };
- };
- "balanced-match-1.0.0" = {
- name = "balanced-match";
- packageName = "balanced-match";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
- sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
- };
- };
- "base64-js-1.3.1" = {
- name = "base64-js";
- packageName = "base64-js";
- version = "1.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz";
- sha512 = "mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==";
- };
- };
- "basic-auth-2.0.1" = {
- name = "basic-auth";
- packageName = "basic-auth";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz";
- sha512 = "NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==";
- };
- };
- "batch-0.6.1" = {
- name = "batch";
- packageName = "batch";
- version = "0.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz";
- sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
- };
- };
- "bcrypt-pbkdf-1.0.1" = {
- name = "bcrypt-pbkdf";
- packageName = "bcrypt-pbkdf";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz";
- sha1 = "63bc5dcb61331b92bc05fd528953c33462a06f8d";
- };
- };
- "bcryptjs-2.4.3" = {
- name = "bcryptjs";
- packageName = "bcryptjs";
- version = "2.4.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz";
- sha1 = "9ab5627b93e60621ff7cdac5da9733027df1d0cb";
- };
- };
- "bl-4.0.2" = {
- name = "bl";
- packageName = "bl";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz";
- sha512 = "j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==";
- };
- };
- "body-parser-1.18.2" = {
- name = "body-parser";
- packageName = "body-parser";
- version = "1.18.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz";
- sha1 = "87678a19d84b47d859b83199bd59bce222b10454";
- };
- };
- "boom-4.3.1" = {
- name = "boom";
- packageName = "boom";
- version = "4.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz";
- sha1 = "4f8a3005cb4a7e3889f749030fd25b96e01d2e31";
- };
- };
- "boom-5.2.0" = {
- name = "boom";
- packageName = "boom";
- version = "5.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz";
- sha512 = "Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==";
- };
- };
- "brace-expansion-1.1.8" = {
- name = "brace-expansion";
- packageName = "brace-expansion";
- version = "1.1.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz";
- sha1 = "c07b211c7c952ec1f8efd51a77ef0d1d3990a292";
- };
- };
- "buffer-5.6.0" = {
- name = "buffer";
- packageName = "buffer";
- version = "5.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz";
- sha512 = "/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==";
- };
- };
- "buffer-crc32-0.2.13" = {
- name = "buffer-crc32";
- packageName = "buffer-crc32";
- version = "0.2.13";
- src = fetchurl {
- url = "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz";
- sha1 = "0d333e3f00eac50aa1454abd30ef8c2a5d9a7242";
- };
- };
- "bunyan-1.8.12" = {
- name = "bunyan";
- packageName = "bunyan";
- version = "1.8.12";
- src = fetchurl {
- url = "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz";
- sha1 = "f150f0f6748abdd72aeae84f04403be2ef113797";
- };
- };
- "bytes-3.0.0" = {
- name = "bytes";
- packageName = "bytes";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz";
- sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
- };
- };
- "caseless-0.12.0" = {
- name = "caseless";
- packageName = "caseless";
- version = "0.12.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
- sha1 = "1b681c21ff84033c826543090689420d187151dc";
- };
- };
- "co-4.6.0" = {
- name = "co";
- packageName = "co";
- version = "4.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
- sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
- };
- };
- "colors-1.1.2" = {
- name = "colors";
- packageName = "colors";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz";
- sha1 = "168a4701756b6a7f51a12ce0c97bfa28c084ed63";
- };
- };
- "combined-stream-1.0.5" = {
- name = "combined-stream";
- packageName = "combined-stream";
- version = "1.0.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz";
- sha1 = "938370a57b4a51dea2c77c15d5c5fdf895164009";
- };
- };
- "combined-stream-1.0.6" = {
- name = "combined-stream";
- packageName = "combined-stream";
- version = "1.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz";
- sha1 = "723e7df6e801ac5613113a7e445a9b69cb632818";
- };
- };
- "combined-stream-1.0.8" = {
- name = "combined-stream";
- packageName = "combined-stream";
- version = "1.0.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
- sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
- };
- };
- "commander-2.14.1" = {
- name = "commander";
- packageName = "commander";
- version = "2.14.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz";
- sha512 = "+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==";
- };
- };
- "component-emitter-1.3.0" = {
- name = "component-emitter";
- packageName = "component-emitter";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz";
- sha512 = "Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==";
- };
- };
- "compress-commons-3.0.0" = {
- name = "compress-commons";
- packageName = "compress-commons";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/compress-commons/-/compress-commons-3.0.0.tgz";
- sha512 = "FyDqr8TKX5/X0qo+aVfaZ+PVmNJHJeckFBlq8jZGSJOgnynhfifoyl24qaqdUdDIBe0EVTHByN6NAkqYvE/2Xg==";
- };
- };
- "compressible-2.0.13" = {
- name = "compressible";
- packageName = "compressible";
- version = "2.0.13";
- src = fetchurl {
- url = "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz";
- sha1 = "0d1020ab924b2fdb4d6279875c7d6daba6baa7a9";
- };
- };
- "compression-1.7.2" = {
- name = "compression";
- packageName = "compression";
- version = "1.7.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/compression/-/compression-1.7.2.tgz";
- sha1 = "aaffbcd6aaf854b44ebb280353d5ad1651f59a69";
- };
- };
- "concat-map-0.0.1" = {
- name = "concat-map";
- packageName = "concat-map";
- version = "0.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
- sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
- };
- };
- "connect-lastmile-1.2.2" = {
- name = "connect-lastmile";
- packageName = "connect-lastmile";
- version = "1.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/connect-lastmile/-/connect-lastmile-1.2.2.tgz";
- sha512 = "laKBrYAoYNuUYAsJQVUdmCqzi825A0GJ7YuiT8zWP0wU6s0Cv9h1eSdHvXh0DgxaVe0dQaYFufcL1htzPCJIpQ==";
- };
- };
- "connect-timeout-1.9.0" = {
- name = "connect-timeout";
- packageName = "connect-timeout";
- version = "1.9.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.9.0.tgz";
- sha1 = "bc27326b122103714bebfa0d958bab33f6522e3a";
- };
- };
- "content-disposition-0.5.2" = {
- name = "content-disposition";
- packageName = "content-disposition";
- version = "0.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz";
- sha1 = "0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4";
- };
- };
- "content-type-1.0.4" = {
- name = "content-type";
- packageName = "content-type";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
- sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
- };
- };
- "cookie-0.3.1" = {
- name = "cookie";
- packageName = "cookie";
- version = "0.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz";
- sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
- };
- };
- "cookie-parser-1.4.3" = {
- name = "cookie-parser";
- packageName = "cookie-parser";
- version = "1.4.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz";
- sha1 = "0fe31fa19d000b95f4aadf1f53fdc2b8a203baa5";
- };
- };
- "cookie-signature-1.0.6" = {
- name = "cookie-signature";
- packageName = "cookie-signature";
- version = "1.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
- sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
- };
- };
- "cookiejar-2.1.2" = {
- name = "cookiejar";
- packageName = "cookiejar";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz";
- sha512 = "Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==";
- };
- };
- "core-util-is-1.0.2" = {
- name = "core-util-is";
- packageName = "core-util-is";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
- sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
- };
- };
- "crc-3.4.4" = {
- name = "crc";
- packageName = "crc";
- version = "3.4.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz";
- sha1 = "9da1e980e3bd44fc5c93bf5ab3da3378d85e466b";
- };
- };
- "crc32-stream-3.0.1" = {
- name = "crc32-stream";
- packageName = "crc32-stream";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz";
- sha512 = "mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==";
- };
- };
- "cryptiles-3.1.2" = {
- name = "cryptiles";
- packageName = "cryptiles";
- version = "3.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz";
- sha1 = "a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe";
- };
- };
- "dashdash-1.14.1" = {
- name = "dashdash";
- packageName = "dashdash";
- version = "1.14.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
- sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
- };
- };
- "debug-2.6.9" = {
- name = "debug";
- packageName = "debug";
- version = "2.6.9";
- src = fetchurl {
- url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
- sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
- };
- };
- "debug-4.1.1" = {
- name = "debug";
- packageName = "debug";
- version = "4.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz";
- sha512 = "pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==";
- };
- };
- "del-2.2.2" = {
- name = "del";
- packageName = "del";
- version = "2.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/del/-/del-2.2.2.tgz";
- sha1 = "c12c981d067846c84bcaf862cff930d907ffd1a8";
- };
- };
- "delayed-stream-1.0.0" = {
- name = "delayed-stream";
- packageName = "delayed-stream";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
- sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
- };
- };
- "depd-1.1.0" = {
- name = "depd";
- packageName = "depd";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz";
- sha1 = "e1bd82c6aab6ced965b97b88b17ed3e528ca18c3";
- };
- };
- "depd-1.1.1" = {
- name = "depd";
- packageName = "depd";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz";
- sha1 = "5783b4e1c459f06fa5ca27f991f3d06e7a310359";
- };
- };
- "depd-1.1.2" = {
- name = "depd";
- packageName = "depd";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
- sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
- };
- };
- "destroy-1.0.4" = {
- name = "destroy";
- packageName = "destroy";
- version = "1.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
- sha1 = "978857442c44749e4206613e37946205826abd80";
- };
- };
- "dtrace-provider-0.8.7" = {
- name = "dtrace-provider";
- packageName = "dtrace-provider";
- version = "0.8.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz";
- sha1 = "dc939b4d3e0620cfe0c1cd803d0d2d7ed04ffd04";
- };
- };
- "ecc-jsbn-0.1.1" = {
- name = "ecc-jsbn";
- packageName = "ecc-jsbn";
- version = "0.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz";
- sha1 = "0fc73a9ed5f0d53c38193398523ef7e543777505";
- };
- };
- "ee-first-1.1.1" = {
- name = "ee-first";
- packageName = "ee-first";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
- sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
- };
- };
- "encodeurl-1.0.2" = {
- name = "encodeurl";
- packageName = "encodeurl";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
- sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
- };
- };
- "end-of-stream-1.4.4" = {
- name = "end-of-stream";
- packageName = "end-of-stream";
- version = "1.4.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz";
- sha512 = "+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==";
- };
- };
- "escape-html-1.0.3" = {
- name = "escape-html";
- packageName = "escape-html";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
- sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
- };
- };
- "etag-1.8.1" = {
- name = "etag";
- packageName = "etag";
- version = "1.8.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
- sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
- };
- };
- "express-4.16.2" = {
- name = "express";
- packageName = "express";
- version = "4.16.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/express/-/express-4.16.2.tgz";
- sha1 = "e35c6dfe2d64b7dca0a5cd4f21781be3299e076c";
- };
- };
- "express-session-1.15.6" = {
- name = "express-session";
- packageName = "express-session";
- version = "1.15.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/express-session/-/express-session-1.15.6.tgz";
- sha512 = "r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==";
- };
- };
- "extend-3.0.2" = {
- name = "extend";
- packageName = "extend";
- version = "3.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
- sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
- };
- };
- "extsprintf-1.2.0" = {
- name = "extsprintf";
- packageName = "extsprintf";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz";
- sha1 = "5ad946c22f5b32ba7f8cd7426711c6e8a3fc2529";
- };
- };
- "extsprintf-1.3.0" = {
- name = "extsprintf";
- packageName = "extsprintf";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
- sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
- };
- };
- "fast-deep-equal-1.0.0" = {
- name = "fast-deep-equal";
- packageName = "fast-deep-equal";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz";
- sha1 = "96256a3bc975595eb36d82e9929d060d893439ff";
- };
- };
- "fast-json-stable-stringify-2.0.0" = {
- name = "fast-json-stable-stringify";
- packageName = "fast-json-stable-stringify";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
- sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
- };
- };
- "fast-safe-stringify-2.0.7" = {
- name = "fast-safe-stringify";
- packageName = "fast-safe-stringify";
- version = "2.0.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz";
- sha512 = "Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==";
- };
- };
- "fd-slicer-1.0.1" = {
- name = "fd-slicer";
- packageName = "fd-slicer";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz";
- sha1 = "8b5bcbd9ec327c5041bf9ab023fd6750f1177e65";
- };
- };
- "finalhandler-1.1.0" = {
- name = "finalhandler";
- packageName = "finalhandler";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz";
- sha1 = "ce0b6855b45853e791b2fcc680046d88253dd7f5";
- };
- };
- "forever-agent-0.6.1" = {
- name = "forever-agent";
- packageName = "forever-agent";
- version = "0.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
- sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
- };
- };
- "form-data-2.3.2" = {
- name = "form-data";
- packageName = "form-data";
- version = "2.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz";
- sha1 = "4970498be604c20c005d4f5c23aecd21d6b49099";
- };
- };
- "form-data-3.0.0" = {
- name = "form-data";
- packageName = "form-data";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz";
- sha512 = "CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==";
- };
- };
- "formidable-1.2.1" = {
- name = "formidable";
- packageName = "formidable";
- version = "1.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz";
- sha512 = "Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==";
- };
- };
- "forwarded-0.1.2" = {
- name = "forwarded";
- packageName = "forwarded";
- version = "0.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz";
- sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
- };
- };
- "fresh-0.5.2" = {
- name = "fresh";
- packageName = "fresh";
- version = "0.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
- sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
- };
- };
- "fs-constants-1.0.0" = {
- name = "fs-constants";
- packageName = "fs-constants";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz";
- sha512 = "y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==";
- };
- };
- "fs.realpath-1.0.0" = {
- name = "fs.realpath";
- packageName = "fs.realpath";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
- sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
- };
- };
- "getpass-0.1.7" = {
- name = "getpass";
- packageName = "getpass";
- version = "0.1.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
- sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
- };
- };
- "glob-6.0.4" = {
- name = "glob";
- packageName = "glob";
- version = "6.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz";
- sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
- };
- };
- "glob-7.1.2" = {
- name = "glob";
- packageName = "glob";
- version = "7.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
- sha1 = "c19c9df9a028702d678612384a6552404c636d15";
- };
- };
- "glob-7.1.6" = {
- name = "glob";
- packageName = "glob";
- version = "7.1.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
- sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==";
- };
- };
- "globby-5.0.0" = {
- name = "globby";
- packageName = "globby";
- version = "5.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz";
- sha1 = "ebd84667ca0dbb330b99bcfc68eac2bc54370e0d";
- };
- };
- "graceful-fs-4.2.4" = {
- name = "graceful-fs";
- packageName = "graceful-fs";
- version = "4.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz";
- sha512 = "WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==";
- };
- };
- "har-schema-2.0.0" = {
- name = "har-schema";
- packageName = "har-schema";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
- sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
- };
- };
- "har-validator-5.0.3" = {
- name = "har-validator";
- packageName = "har-validator";
- version = "5.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz";
- sha1 = "ba402c266194f15956ef15e0fcf242993f6a7dfd";
- };
- };
- "hawk-6.0.2" = {
- name = "hawk";
- packageName = "hawk";
- version = "6.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz";
- sha512 = "miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==";
- };
- };
- "hoek-4.2.1" = {
- name = "hoek";
- packageName = "hoek";
- version = "4.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz";
- sha512 = "QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==";
- };
- };
- "http-errors-1.6.1" = {
- name = "http-errors";
- packageName = "http-errors";
- version = "1.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz";
- sha1 = "5f8b8ed98aca545656bf572997387f904a722257";
- };
- };
- "http-errors-1.6.2" = {
- name = "http-errors";
- packageName = "http-errors";
- version = "1.6.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz";
- sha1 = "0a002cc85707192a7e7946ceedc11155f60ec736";
- };
- };
- "http-errors-1.6.3" = {
- name = "http-errors";
- packageName = "http-errors";
- version = "1.6.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz";
- sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
- };
- };
- "http-signature-1.2.0" = {
- name = "http-signature";
- packageName = "http-signature";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
- sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
- };
- };
- "iconv-lite-0.4.19" = {
- name = "iconv-lite";
- packageName = "iconv-lite";
- version = "0.4.19";
- src = fetchurl {
- url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz";
- sha512 = "oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==";
- };
- };
- "ieee754-1.1.13" = {
- name = "ieee754";
- packageName = "ieee754";
- version = "1.1.13";
- src = fetchurl {
- url = "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz";
- sha512 = "4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==";
- };
- };
- "inflight-1.0.6" = {
- name = "inflight";
- packageName = "inflight";
- version = "1.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
- sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
- };
- };
- "inherits-2.0.3" = {
- name = "inherits";
- packageName = "inherits";
- version = "2.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
- sha1 = "633c2c83e3da42a502f52466022480f4208261de";
- };
- };
- "inherits-2.0.4" = {
- name = "inherits";
- packageName = "inherits";
- version = "2.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
- sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
- };
- };
- "ipaddr.js-1.5.2" = {
- name = "ipaddr.js";
- packageName = "ipaddr.js";
- version = "1.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz";
- sha1 = "d4b505bde9946987ccf0fc58d9010ff9607e3fa0";
- };
- };
- "is-path-cwd-1.0.0" = {
- name = "is-path-cwd";
- packageName = "is-path-cwd";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz";
- sha1 = "d225ec23132e89edd38fda767472e62e65f1106d";
- };
- };
- "is-path-in-cwd-1.0.0" = {
- name = "is-path-in-cwd";
- packageName = "is-path-in-cwd";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz";
- sha1 = "6477582b8214d602346094567003be8a9eac04dc";
- };
- };
- "is-path-inside-1.0.0" = {
- name = "is-path-inside";
- packageName = "is-path-inside";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz";
- sha1 = "fc06e5a1683fbda13de667aff717bbc10a48f37f";
- };
- };
- "is-typedarray-1.0.0" = {
- name = "is-typedarray";
- packageName = "is-typedarray";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
- sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
- };
- };
- "isarray-1.0.0" = {
- name = "isarray";
- packageName = "isarray";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
- sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
- };
- };
- "isstream-0.1.2" = {
- name = "isstream";
- packageName = "isstream";
- version = "0.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
- sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
- };
- };
- "jsbn-0.1.1" = {
- name = "jsbn";
- packageName = "jsbn";
- version = "0.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
- sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
- };
- };
- "json-schema-0.2.3" = {
- name = "json-schema";
- packageName = "json-schema";
- version = "0.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
- sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
- };
- };
- "json-schema-traverse-0.3.1" = {
- name = "json-schema-traverse";
- packageName = "json-schema-traverse";
- version = "0.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz";
- sha1 = "349a6d44c53a51de89b40805c5d5e59b417d3340";
- };
- };
- "json-stringify-safe-5.0.1" = {
- name = "json-stringify-safe";
- packageName = "json-stringify-safe";
- version = "5.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
- sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
- };
- };
- "jsprim-1.4.1" = {
- name = "jsprim";
- packageName = "jsprim";
- version = "1.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
- sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
- };
- };
- "lazystream-1.0.0" = {
- name = "lazystream";
- packageName = "lazystream";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz";
- sha1 = "f6995fe0f820392f61396be89462407bb77168e4";
- };
- };
- "ldap-filter-0.2.2" = {
- name = "ldap-filter";
- packageName = "ldap-filter";
- version = "0.2.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz";
- sha1 = "f2b842be0b86da3352798505b31ebcae590d77d0";
- };
- };
- "ldapjs-1.0.2" = {
- name = "ldapjs";
- packageName = "ldapjs";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.2.tgz";
- sha1 = "544ff7032b7b83c68f0701328d9297aa694340f9";
- };
- };
- "lodash-4.17.15" = {
- name = "lodash";
- packageName = "lodash";
- version = "4.17.15";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz";
- sha512 = "8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==";
- };
- };
- "lodash.defaults-4.2.0" = {
- name = "lodash.defaults";
- packageName = "lodash.defaults";
- version = "4.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
- sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
- };
- };
- "lodash.difference-4.5.0" = {
- name = "lodash.difference";
- packageName = "lodash.difference";
- version = "4.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz";
- sha1 = "9ccb4e505d486b91651345772885a2df27fd017c";
- };
- };
- "lodash.flatten-4.4.0" = {
- name = "lodash.flatten";
- packageName = "lodash.flatten";
- version = "4.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz";
- sha1 = "f31c22225a9632d2bbf8e4addbef240aa765a61f";
- };
- };
- "lodash.isplainobject-4.0.6" = {
- name = "lodash.isplainobject";
- packageName = "lodash.isplainobject";
- version = "4.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz";
- sha1 = "7c526a52d89b45c45cc690b88163be0497f550cb";
- };
- };
- "lodash.union-4.6.0" = {
- name = "lodash.union";
- packageName = "lodash.union";
- version = "4.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz";
- sha1 = "48bb5088409f16f1821666641c44dd1aaae3cd88";
- };
- };
- "media-typer-0.3.0" = {
- name = "media-typer";
- packageName = "media-typer";
- version = "0.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
- sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
- };
- };
- "merge-descriptors-1.0.1" = {
- name = "merge-descriptors";
- packageName = "merge-descriptors";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
- sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
- };
- };
- "methods-1.1.2" = {
- name = "methods";
- packageName = "methods";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
- sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
- };
- };
- "mime-1.4.1" = {
- name = "mime";
- packageName = "mime";
- version = "1.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz";
- sha512 = "KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==";
- };
- };
- "mime-2.4.4" = {
- name = "mime";
- packageName = "mime";
- version = "2.4.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz";
- sha512 = "LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==";
- };
- };
- "mime-db-1.27.0" = {
- name = "mime-db";
- packageName = "mime-db";
- version = "1.27.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz";
- sha1 = "820f572296bbd20ec25ed55e5b5de869e5436eb1";
- };
- };
- "mime-db-1.33.0" = {
- name = "mime-db";
- packageName = "mime-db";
- version = "1.33.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz";
- sha512 = "BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==";
- };
- };
- "mime-db-1.38.0" = {
- name = "mime-db";
- packageName = "mime-db";
- version = "1.38.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz";
- sha512 = "bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==";
- };
- };
- "mime-db-1.44.0" = {
- name = "mime-db";
- packageName = "mime-db";
- version = "1.44.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz";
- sha512 = "/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==";
- };
- };
- "mime-types-2.1.15" = {
- name = "mime-types";
- packageName = "mime-types";
- version = "2.1.15";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz";
- sha1 = "a4ebf5064094569237b8cf70046776d09fc92aed";
- };
- };
- "mime-types-2.1.18" = {
- name = "mime-types";
- packageName = "mime-types";
- version = "2.1.18";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz";
- sha512 = "lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==";
- };
- };
- "mime-types-2.1.22" = {
- name = "mime-types";
- packageName = "mime-types";
- version = "2.1.22";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz";
- sha512 = "aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==";
- };
- };
- "mime-types-2.1.27" = {
- name = "mime-types";
- packageName = "mime-types";
- version = "2.1.27";
- src = fetchurl {
- url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz";
- sha512 = "JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==";
- };
- };
- "minimatch-3.0.4" = {
- name = "minimatch";
- packageName = "minimatch";
- version = "3.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
- sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
- };
- };
- "minimist-0.0.8" = {
- name = "minimist";
- packageName = "minimist";
- version = "0.0.8";
- src = fetchurl {
- url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
- sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
- };
- };
- "mkdirp-0.5.1" = {
- name = "mkdirp";
- packageName = "mkdirp";
- version = "0.5.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
- sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
- };
- };
- "moment-2.24.0" = {
- name = "moment";
- packageName = "moment";
- version = "2.24.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
- sha512 = "bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==";
- };
- };
- "morgan-1.9.1" = {
- name = "morgan";
- packageName = "morgan";
- version = "1.9.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz";
- sha512 = "HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==";
- };
- };
- "ms-2.0.0" = {
- name = "ms";
- packageName = "ms";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
- sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
- };
- };
- "ms-2.1.2" = {
- name = "ms";
- packageName = "ms";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
- sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
- };
- };
- "multiparty-4.1.3" = {
- name = "multiparty";
- packageName = "multiparty";
- version = "4.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/multiparty/-/multiparty-4.1.3.tgz";
- sha1 = "3c43c7fcb1896e17460436a9dd0b6ef1668e4f94";
- };
- };
- "mv-2.1.1" = {
- name = "mv";
- packageName = "mv";
- version = "2.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz";
- sha1 = "ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2";
- };
- };
- "nan-2.12.1" = {
- name = "nan";
- packageName = "nan";
- version = "2.12.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz";
- sha512 = "JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==";
- };
- };
- "ncp-2.0.0" = {
- name = "ncp";
- packageName = "ncp";
- version = "2.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz";
- sha1 = "195a21d6c46e361d2fb1281ba38b91e9df7bdbb3";
- };
- };
- "negotiator-0.6.1" = {
- name = "negotiator";
- packageName = "negotiator";
- version = "0.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz";
- sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
- };
- };
- "normalize-path-3.0.0" = {
- name = "normalize-path";
- packageName = "normalize-path";
- version = "3.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";
- sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==";
- };
- };
- "oauth-sign-0.8.2" = {
- name = "oauth-sign";
- packageName = "oauth-sign";
- version = "0.8.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz";
- sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
- };
- };
- "object-assign-4.1.1" = {
- name = "object-assign";
- packageName = "object-assign";
- version = "4.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
- sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
- };
- };
- "on-finished-2.3.0" = {
- name = "on-finished";
- packageName = "on-finished";
- version = "2.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
- sha1 = "20f1336481b083cd75337992a16971aa2d906947";
- };
- };
- "on-headers-1.0.1" = {
- name = "on-headers";
- packageName = "on-headers";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz";
- sha1 = "928f5d0f470d49342651ea6794b0857c100693f7";
- };
- };
- "once-1.4.0" = {
- name = "once";
- packageName = "once";
- version = "1.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
- sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
- };
- };
- "parseurl-1.3.2" = {
- name = "parseurl";
- packageName = "parseurl";
- version = "1.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz";
- sha1 = "fc289d4ed8993119460c156253262cdc8de65bf3";
- };
- };
- "path-is-absolute-1.0.1" = {
- name = "path-is-absolute";
- packageName = "path-is-absolute";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
- sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
- };
- };
- "path-is-inside-1.0.2" = {
- name = "path-is-inside";
- packageName = "path-is-inside";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz";
- sha1 = "365417dede44430d1c11af61027facf074bdfc53";
- };
- };
- "path-to-regexp-0.1.7" = {
- name = "path-to-regexp";
- packageName = "path-to-regexp";
- version = "0.1.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
- sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
- };
- };
- "pend-1.2.0" = {
- name = "pend";
- packageName = "pend";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz";
- sha1 = "7a57eb550a6783f9115331fcf4663d5c8e007a50";
- };
- };
- "performance-now-2.1.0" = {
- name = "performance-now";
- packageName = "performance-now";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
- sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
- };
- };
- "pify-2.3.0" = {
- name = "pify";
- packageName = "pify";
- version = "2.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz";
- sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
- };
- };
- "pinkie-2.0.4" = {
- name = "pinkie";
- packageName = "pinkie";
- version = "2.0.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
- sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
- };
- };
- "pinkie-promise-2.0.1" = {
- name = "pinkie-promise";
- packageName = "pinkie-promise";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
- sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
- };
- };
- "precond-0.2.3" = {
- name = "precond";
- packageName = "precond";
- version = "0.2.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz";
- sha1 = "aa9591bcaa24923f1e0f4849d240f47efc1075ac";
- };
- };
- "process-nextick-args-2.0.1" = {
- name = "process-nextick-args";
- packageName = "process-nextick-args";
- version = "2.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
- sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
- };
- };
- "proxy-addr-2.0.2" = {
- name = "proxy-addr";
- packageName = "proxy-addr";
- version = "2.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz";
- sha1 = "6571504f47bb988ec8180253f85dd7e14952bdec";
- };
- };
- "punycode-1.4.1" = {
- name = "punycode";
- packageName = "punycode";
- version = "1.4.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
- sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
- };
- };
- "qs-6.5.1" = {
- name = "qs";
- packageName = "qs";
- version = "6.5.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz";
- sha512 = "eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==";
- };
- };
- "qs-6.9.1" = {
- name = "qs";
- packageName = "qs";
- version = "6.9.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz";
- sha512 = "Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==";
- };
- };
- "random-bytes-1.0.0" = {
- name = "random-bytes";
- packageName = "random-bytes";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz";
- sha1 = "4f68a1dc0ae58bd3fb95848c30324db75d64360b";
- };
- };
- "range-parser-1.2.0" = {
- name = "range-parser";
- packageName = "range-parser";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz";
- sha1 = "f49be6b487894ddc40dcc94a322f611092e00d5e";
- };
- };
- "raw-body-2.3.2" = {
- name = "raw-body";
- packageName = "raw-body";
- version = "2.3.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz";
- sha1 = "bcd60c77d3eb93cde0050295c3f379389bc88f89";
- };
- };
- "readable-stream-2.3.7" = {
- name = "readable-stream";
- packageName = "readable-stream";
- version = "2.3.7";
- src = fetchurl {
- url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
- sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
- };
- };
- "readable-stream-3.4.0" = {
- name = "readable-stream";
- packageName = "readable-stream";
- version = "3.4.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz";
- sha512 = "jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==";
- };
- };
- "readable-stream-3.6.0" = {
- name = "readable-stream";
- packageName = "readable-stream";
- version = "3.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
- sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
- };
- };
- "readline-sync-1.4.9" = {
- name = "readline-sync";
- packageName = "readline-sync";
- version = "1.4.9";
- src = fetchurl {
- url = "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.9.tgz";
- sha1 = "3eda8e65f23cd2a17e61301b1f0003396af5ecda";
- };
- };
- "request-2.83.0" = {
- name = "request";
- packageName = "request";
- version = "2.83.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/request/-/request-2.83.0.tgz";
- sha512 = "lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==";
- };
- };
- "rimraf-2.4.5" = {
- name = "rimraf";
- packageName = "rimraf";
- version = "2.4.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz";
- sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
- };
- };
- "rimraf-2.6.1" = {
- name = "rimraf";
- packageName = "rimraf";
- version = "2.6.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz";
- sha1 = "c2338ec643df7a1b7fe5c54fa86f57428a55f33d";
- };
- };
- "safe-buffer-5.1.1" = {
- name = "safe-buffer";
- packageName = "safe-buffer";
- version = "5.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz";
- sha512 = "kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==";
- };
- };
- "safe-buffer-5.1.2" = {
- name = "safe-buffer";
- packageName = "safe-buffer";
- version = "5.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
- sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
- };
- };
- "safe-buffer-5.2.0" = {
- name = "safe-buffer";
- packageName = "safe-buffer";
- version = "5.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz";
- sha512 = "fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==";
- };
- };
- "safe-json-stringify-1.2.0" = {
- name = "safe-json-stringify";
- packageName = "safe-json-stringify";
- version = "1.2.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz";
- sha512 = "gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==";
- };
- };
- "safer-buffer-2.1.2" = {
- name = "safer-buffer";
- packageName = "safer-buffer";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
- sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
- };
- };
- "safetydance-0.1.1" = {
- name = "safetydance";
- packageName = "safetydance";
- version = "0.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/safetydance/-/safetydance-0.1.1.tgz";
- sha1 = "1588c69133a7c69cddfd6a2d1d334381d0b7b2f7";
- };
- };
- "sax-1.2.4" = {
- name = "sax";
- packageName = "sax";
- version = "1.2.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
- sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
- };
- };
- "semver-6.3.0" = {
- name = "semver";
- packageName = "semver";
- version = "6.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz";
- sha512 = "b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==";
- };
- };
- "send-0.16.1" = {
- name = "send";
- packageName = "send";
- version = "0.16.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/send/-/send-0.16.1.tgz";
- sha512 = "ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==";
- };
- };
- "serve-index-1.9.1" = {
- name = "serve-index";
- packageName = "serve-index";
- version = "1.9.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz";
- sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
- };
- };
- "serve-static-1.13.1" = {
- name = "serve-static";
- packageName = "serve-static";
- version = "1.13.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz";
- sha512 = "hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==";
- };
- };
- "setprototypeof-1.0.3" = {
- name = "setprototypeof";
- packageName = "setprototypeof";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz";
- sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
- };
- };
- "setprototypeof-1.1.0" = {
- name = "setprototypeof";
- packageName = "setprototypeof";
- version = "1.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz";
- sha512 = "BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==";
- };
- };
- "sntp-2.1.0" = {
- name = "sntp";
- packageName = "sntp";
- version = "2.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz";
- sha512 = "FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==";
- };
- };
- "sshpk-1.16.1" = {
- name = "sshpk";
- packageName = "sshpk";
- version = "1.16.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
- sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
- };
- };
- "statuses-1.3.1" = {
- name = "statuses";
- packageName = "statuses";
- version = "1.3.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz";
- sha1 = "faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e";
- };
- };
- "statuses-1.5.0" = {
- name = "statuses";
- packageName = "statuses";
- version = "1.5.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
- sha1 = "161c7dac177659fd9811f43771fa99381478628c";
- };
- };
- "string_decoder-1.1.1" = {
- name = "string_decoder";
- packageName = "string_decoder";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
- sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
- };
- };
- "string_decoder-1.3.0" = {
- name = "string_decoder";
- packageName = "string_decoder";
- version = "1.3.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz";
- sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==";
- };
- };
- "stringstream-0.0.6" = {
- name = "stringstream";
- packageName = "stringstream";
- version = "0.0.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz";
- sha512 = "87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==";
- };
- };
- "superagent-5.1.3" = {
- name = "superagent";
- packageName = "superagent";
- version = "5.1.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/superagent/-/superagent-5.1.3.tgz";
- sha512 = "2bno1Nb4uvZPECTJ7NDYlae6Q8LLQoZZZ9Vumd346jU1UGVkNC/lQI42jHwtrqVoepyt0QxNKFty01IRKgD4CA==";
- };
- };
- "tar-stream-2.1.2" = {
- name = "tar-stream";
- packageName = "tar-stream";
- version = "2.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz";
- sha512 = "UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==";
- };
- };
- "tough-cookie-2.3.3" = {
- name = "tough-cookie";
- packageName = "tough-cookie";
- version = "2.3.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz";
- sha1 = "0b618a5565b6dea90bf3425d04d55edc475a7561";
- };
- };
- "tunnel-agent-0.6.0" = {
- name = "tunnel-agent";
- packageName = "tunnel-agent";
- version = "0.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
- sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
- };
- };
- "tweetnacl-0.14.5" = {
- name = "tweetnacl";
- packageName = "tweetnacl";
- version = "0.14.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
- sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
- };
- };
- "type-is-1.6.16" = {
- name = "type-is";
- packageName = "type-is";
- version = "1.6.16";
- src = fetchurl {
- url = "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz";
- sha512 = "HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==";
- };
- };
- "uid-safe-2.1.5" = {
- name = "uid-safe";
- packageName = "uid-safe";
- version = "2.1.5";
- src = fetchurl {
- url = "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz";
- sha512 = "KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==";
- };
- };
- "underscore-1.8.3" = {
- name = "underscore";
- packageName = "underscore";
- version = "1.8.3";
- src = fetchurl {
- url = "http://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz";
- sha1 = "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022";
- };
- };
- "underscore-1.9.1" = {
- name = "underscore";
- packageName = "underscore";
- version = "1.9.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz";
- sha512 = "5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==";
- };
- };
- "unpipe-1.0.0" = {
- name = "unpipe";
- packageName = "unpipe";
- version = "1.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
- sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
- };
- };
- "util-deprecate-1.0.2" = {
- name = "util-deprecate";
- packageName = "util-deprecate";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
- sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
- };
- };
- "utils-merge-1.0.1" = {
- name = "utils-merge";
- packageName = "utils-merge";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz";
- sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
- };
- };
- "uuid-3.2.1" = {
- name = "uuid";
- packageName = "uuid";
- version = "3.2.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz";
- sha512 = "jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==";
- };
- };
- "vary-1.1.2" = {
- name = "vary";
- packageName = "vary";
- version = "1.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz";
- sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
- };
- };
- "vasync-1.6.4" = {
- name = "vasync";
- packageName = "vasync";
- version = "1.6.4";
- src = fetchurl {
- url = "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz";
- sha1 = "dfe93616ad0e7ae801b332a9d88bfc5cdc8e1d1f";
- };
- };
- "verror-1.10.0" = {
- name = "verror";
- packageName = "verror";
- version = "1.10.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
- sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
- };
- };
- "verror-1.6.0" = {
- name = "verror";
- packageName = "verror";
- version = "1.6.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz";
- sha1 = "7d13b27b1facc2e2da90405eb5ea6e5bdd252ea5";
- };
- };
- "webdav-server-2.4.6" = {
- name = "webdav-server";
- packageName = "webdav-server";
- version = "2.4.6";
- src = fetchurl {
- url = "https://registry.npmjs.org/webdav-server/-/webdav-server-2.4.6.tgz";
- sha512 = "YhqjqlQdD4H55UEnRgk99a9epTuulKMW05m6KBTtG6fBXcc4/2H87F2DRJHH7a33PibNn3jWv8u9AgcMHLGUrw==";
- };
- };
- "wrappy-1.0.2" = {
- name = "wrappy";
- packageName = "wrappy";
- version = "1.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
- sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
- };
- };
- "xml-js-1.6.11" = {
- name = "xml-js";
- packageName = "xml-js";
- version = "1.6.11";
- src = fetchurl {
- url = "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz";
- sha512 = "7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==";
- };
- };
- "xml-js-builder-1.0.3" = {
- name = "xml-js-builder";
- packageName = "xml-js-builder";
- version = "1.0.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/xml-js-builder/-/xml-js-builder-1.0.3.tgz";
- sha512 = "BoLgG/glT45M0jK5PGh9h+iGrQxa8jJk9ofR63GroRifl2tbGB3/yYiVY3wQWHrZgWWfl9+7fhEB/VoD9mWnSg==";
- };
- };
- "zip-stream-3.0.1" = {
- name = "zip-stream";
- packageName = "zip-stream";
- version = "3.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/zip-stream/-/zip-stream-3.0.1.tgz";
- sha512 = "r+JdDipt93ttDjsOVPU5zaq5bAyY+3H19bDrThkvuVxC0xMQzU1PJcS6D+KrP3u96gH9XLomcHPb+2skoDjulQ==";
- };
- };
- };
- args = {
- name = "cloudron-surfer";
- packageName = "cloudron-surfer";
- version = "5.10.0";
- inherit src;
- dependencies = [
- (sources."accepts-1.3.4" // {
- dependencies = [
- sources."mime-db-1.33.0"
- sources."mime-types-2.1.18"
- ];
- })
- sources."ajv-5.5.2"
- (sources."archiver-4.0.1" // {
- dependencies = [
- sources."async-2.6.3"
- sources."glob-7.1.6"
- sources."readable-stream-3.6.0"
- ];
- })
- (sources."archiver-utils-2.1.0" // {
- dependencies = [
- sources."glob-7.1.6"
- sources."readable-stream-2.3.7"
- sources."string_decoder-1.1.1"
- ];
- })
- sources."array-flatten-1.1.1"
- sources."array-union-1.0.2"
- sources."array-uniq-1.0.3"
- sources."arrify-1.0.1"
- sources."asn1-0.2.3"
- sources."assert-plus-1.0.0"
- sources."async-1.5.2"
- sources."asynckit-0.4.0"
- sources."aws-sign2-0.7.0"
- sources."aws4-1.6.0"
- sources."backoff-2.5.0"
- sources."balanced-match-1.0.0"
- sources."base64-js-1.3.1"
- (sources."basic-auth-2.0.1" // {
- dependencies = [
- sources."safe-buffer-5.1.2"
- ];
- })
- sources."batch-0.6.1"
- sources."bcrypt-pbkdf-1.0.1"
- sources."bcryptjs-2.4.3"
- (sources."bl-4.0.2" // {
- dependencies = [
- sources."inherits-2.0.4"
- ];
- })
- (sources."body-parser-1.18.2" // {
- dependencies = [
- sources."depd-1.1.2"
- (sources."http-errors-1.6.2" // {
- dependencies = [
- sources."depd-1.1.1"
- ];
- })
- ];
- })
- sources."boom-4.3.1"
- sources."brace-expansion-1.1.8"
- sources."buffer-5.6.0"
- sources."buffer-crc32-0.2.13"
- sources."bunyan-1.8.12"
- sources."bytes-3.0.0"
- sources."caseless-0.12.0"
- sources."co-4.6.0"
- sources."colors-1.1.2"
- sources."combined-stream-1.0.5"
- sources."commander-2.14.1"
- sources."component-emitter-1.3.0"
- (sources."compress-commons-3.0.0" // {
- dependencies = [
- sources."readable-stream-2.3.7"
- sources."string_decoder-1.1.1"
- ];
- })
- (sources."compressible-2.0.13" // {
- dependencies = [
- sources."mime-db-1.33.0"
- ];
- })
- sources."compression-1.7.2"
- sources."concat-map-0.0.1"
- (sources."connect-lastmile-1.2.2" // {
- dependencies = [
- sources."debug-4.1.1"
- sources."ms-2.1.2"
- sources."underscore-1.9.1"
- ];
- })
- sources."connect-timeout-1.9.0"
- sources."content-disposition-0.5.2"
- sources."content-type-1.0.4"
- sources."cookie-0.3.1"
- sources."cookie-parser-1.4.3"
- sources."cookie-signature-1.0.6"
- sources."cookiejar-2.1.2"
- sources."core-util-is-1.0.2"
- sources."crc-3.4.4"
- sources."crc32-stream-3.0.1"
- (sources."cryptiles-3.1.2" // {
- dependencies = [
- sources."boom-5.2.0"
- ];
- })
- (sources."dashdash-1.14.1" // {
- dependencies = [
- sources."assert-plus-1.0.0"
- ];
- })
- sources."debug-2.6.9"
- sources."del-2.2.2"
- sources."delayed-stream-1.0.0"
- sources."depd-1.1.0"
- sources."destroy-1.0.4"
- sources."dtrace-provider-0.8.7"
- sources."ecc-jsbn-0.1.1"
- sources."ee-first-1.1.1"
- sources."encodeurl-1.0.2"
- sources."end-of-stream-1.4.4"
- sources."escape-html-1.0.3"
- sources."etag-1.8.1"
- (sources."express-4.16.2" // {
- dependencies = [
- sources."depd-1.1.2"
- sources."setprototypeof-1.1.0"
- ];
- })
- (sources."express-session-1.15.6" // {
- dependencies = [
- sources."depd-1.1.2"
- ];
- })
- sources."extend-3.0.2"
- sources."extsprintf-1.2.0"
- sources."fast-deep-equal-1.0.0"
- sources."fast-json-stable-stringify-2.0.0"
- sources."fast-safe-stringify-2.0.7"
- sources."fd-slicer-1.0.1"
- sources."finalhandler-1.1.0"
- sources."forever-agent-0.6.1"
- (sources."form-data-2.3.2" // {
- dependencies = [
- sources."combined-stream-1.0.6"
- ];
- })
- sources."formidable-1.2.1"
- sources."forwarded-0.1.2"
- sources."fresh-0.5.2"
- sources."fs-constants-1.0.0"
- sources."fs.realpath-1.0.0"
- (sources."getpass-0.1.7" // {
- dependencies = [
- sources."assert-plus-1.0.0"
- ];
- })
- sources."glob-7.1.2"
- sources."globby-5.0.0"
- sources."graceful-fs-4.2.4"
- sources."har-schema-2.0.0"
- sources."har-validator-5.0.3"
- sources."hawk-6.0.2"
- sources."hoek-4.2.1"
- sources."http-errors-1.6.1"
- (sources."http-signature-1.2.0" // {
- dependencies = [
- sources."assert-plus-1.0.0"
- sources."extsprintf-1.3.0"
- sources."json-schema-0.2.3"
- sources."jsprim-1.4.1"
- sources."verror-1.10.0"
- ];
- })
- sources."iconv-lite-0.4.19"
- sources."ieee754-1.1.13"
- sources."inflight-1.0.6"
- sources."inherits-2.0.3"
- sources."ipaddr.js-1.5.2"
- sources."is-path-cwd-1.0.0"
- sources."is-path-in-cwd-1.0.0"
- sources."is-path-inside-1.0.0"
- sources."is-typedarray-1.0.0"
- sources."isarray-1.0.0"
- sources."isstream-0.1.2"
- sources."jsbn-0.1.1"
- sources."json-schema-traverse-0.3.1"
- sources."json-stringify-safe-5.0.1"
- (sources."lazystream-1.0.0" // {
- dependencies = [
- sources."readable-stream-2.3.7"
- sources."string_decoder-1.1.1"
- ];
- })
- (sources."ldap-filter-0.2.2" // {
- dependencies = [
- sources."assert-plus-0.1.5"
- ];
- })
- sources."ldapjs-1.0.2"
- sources."lodash-4.17.15"
- sources."lodash.defaults-4.2.0"
- sources."lodash.difference-4.5.0"
- sources."lodash.flatten-4.4.0"
- sources."lodash.isplainobject-4.0.6"
- sources."lodash.union-4.6.0"
- sources."media-typer-0.3.0"
- sources."merge-descriptors-1.0.1"
- sources."methods-1.1.2"
- sources."mime-2.4.4"
- sources."mime-db-1.27.0"
- sources."mime-types-2.1.15"
- sources."minimatch-3.0.4"
- sources."minimist-0.0.8"
- sources."mkdirp-0.5.1"
- sources."moment-2.24.0"
- (sources."morgan-1.9.1" // {
- dependencies = [
- sources."depd-1.1.2"
- ];
- })
- sources."ms-2.0.0"
- sources."multiparty-4.1.3"
- (sources."mv-2.1.1" // {
- dependencies = [
- sources."glob-6.0.4"
- sources."rimraf-2.4.5"
- ];
- })
- sources."nan-2.12.1"
- sources."ncp-2.0.0"
- sources."negotiator-0.6.1"
- sources."normalize-path-3.0.0"
- sources."oauth-sign-0.8.2"
- sources."object-assign-4.1.1"
- sources."on-finished-2.3.0"
- sources."on-headers-1.0.1"
- sources."once-1.4.0"
- sources."parseurl-1.3.2"
- sources."path-is-absolute-1.0.1"
- sources."path-is-inside-1.0.2"
- sources."path-to-regexp-0.1.7"
- sources."pend-1.2.0"
- sources."performance-now-2.1.0"
- sources."pify-2.3.0"
- sources."pinkie-2.0.4"
- sources."pinkie-promise-2.0.1"
- sources."precond-0.2.3"
- sources."process-nextick-args-2.0.1"
- sources."proxy-addr-2.0.2"
- sources."punycode-1.4.1"
- sources."qs-6.5.1"
- sources."random-bytes-1.0.0"
- sources."range-parser-1.2.0"
- (sources."raw-body-2.3.2" // {
- dependencies = [
- sources."depd-1.1.1"
- sources."http-errors-1.6.2"
- ];
- })
- sources."readable-stream-3.4.0"
- sources."readline-sync-1.4.9"
- (sources."request-2.83.0" // {
- dependencies = [
- sources."mime-db-1.33.0"
- sources."mime-types-2.1.18"
- ];
- })
- sources."rimraf-2.6.1"
- sources."safe-buffer-5.1.1"
- sources."safe-json-stringify-1.2.0"
- sources."safer-buffer-2.1.2"
- sources."safetydance-0.1.1"
- (sources."send-0.16.1" // {
- dependencies = [
- sources."depd-1.1.2"
- (sources."http-errors-1.6.2" // {
- dependencies = [
- sources."depd-1.1.1"
- ];
- })
- sources."mime-1.4.1"
- ];
- })
- (sources."serve-index-1.9.1" // {
- dependencies = [
- sources."depd-1.1.2"
- sources."http-errors-1.6.3"
- sources."mime-db-1.44.0"
- sources."mime-types-2.1.27"
- sources."setprototypeof-1.1.0"
- sources."statuses-1.5.0"
- ];
- })
- sources."serve-static-1.13.1"
- sources."setprototypeof-1.0.3"
- sources."sntp-2.1.0"
- sources."sshpk-1.16.1"
- sources."statuses-1.3.1"
- (sources."string_decoder-1.3.0" // {
- dependencies = [
- sources."safe-buffer-5.2.0"
- ];
- })
- sources."stringstream-0.0.6"
- (sources."superagent-5.1.3" // {
- dependencies = [
- sources."combined-stream-1.0.8"
- sources."debug-4.1.1"
- sources."form-data-3.0.0"
- sources."ms-2.1.2"
- sources."qs-6.9.1"
- sources."semver-6.3.0"
- ];
- })
- sources."tar-stream-2.1.2"
- sources."tough-cookie-2.3.3"
- sources."tunnel-agent-0.6.0"
- sources."tweetnacl-0.14.5"
- (sources."type-is-1.6.16" // {
- dependencies = [
- sources."mime-db-1.33.0"
- sources."mime-types-2.1.18"
- ];
- })
- sources."uid-safe-2.1.5"
- sources."underscore-1.8.3"
- sources."unpipe-1.0.0"
- sources."util-deprecate-1.0.2"
- sources."utils-merge-1.0.1"
- sources."uuid-3.2.1"
- sources."vary-1.1.2"
- (sources."vasync-1.6.4" // {
- dependencies = [
- sources."verror-1.6.0"
- ];
- })
- sources."verror-1.10.0"
- (sources."webdav-server-2.4.6" // {
- dependencies = [
- sources."mime-db-1.38.0"
- sources."mime-types-2.1.22"
- ];
- })
- sources."wrappy-1.0.2"
- (sources."xml-js-1.6.11" // {
- dependencies = [
- sources."sax-1.2.4"
- ];
- })
- sources."xml-js-builder-1.0.3"
- (sources."zip-stream-3.0.1" // {
- dependencies = [
- sources."readable-stream-3.6.0"
- ];
- })
- ];
- buildInputs = globalBuildInputs;
- meta = {
- description = "Simple file server";
- license = "MIT";
- };
- production = true;
- bypassCache = true;
- reconstructLock = false;
- };
-in
-{
- args = args;
- sources = sources;
- tarball = nodeEnv.buildNodeSourceDist args;
- package = nodeEnv.buildNodePackage args;
- shell = nodeEnv.buildNodeShell args;
-}
diff --git a/pkgs/webapps/taskwarrior-web/Gemfile.lock b/pkgs/webapps/taskwarrior-web/Gemfile.lock
deleted file mode 100644
index 1b2f5ba..0000000
--- a/pkgs/webapps/taskwarrior-web/Gemfile.lock
+++ /dev/null
@@ -1,139 +0,0 @@
-PATH
- remote: .
- specs:
- taskwarrior-web (1.1.12)
- activesupport (~> 3)
- json (~> 1.8)
- parseconfig
- rack-flash3
- rinku
- sinatra
- sinatra-simple-navigation
- vegas
- versionomy
-
-GEM
- remote: http://rubygems.org/
- specs:
- activesupport (3.2.22.5)
- i18n (~> 0.6, >= 0.6.4)
- multi_json (~> 1.0)
- blockenspiel (0.5.0)
- coderay (1.1.2)
- concurrent-ruby (1.1.4)
- daemons (1.3.1)
- diff-lcs (1.3)
- docile (1.3.1)
- eventmachine (1.2.7)
- ffi (1.10.0)
- formatador (0.2.5)
- growl (1.0.3)
- guard (2.15.0)
- formatador (>= 0.2.4)
- listen (>= 2.7, < 4.0)
- lumberjack (>= 1.0.12, < 2.0)
- nenv (~> 0.1)
- notiffany (~> 0.0)
- pry (>= 0.9.12)
- shellany (~> 0.0)
- thor (>= 0.18.1)
- guard-bundler (2.2.1)
- bundler (>= 1.3.0, < 3)
- guard (~> 2.2)
- guard-compat (~> 1.1)
- guard-compat (1.2.1)
- guard-rspec (4.7.3)
- guard (~> 2.1)
- guard-compat (~> 1.1)
- rspec (>= 2.99.0, < 4.0)
- i18n (0.9.5)
- concurrent-ruby (~> 1.0)
- json (1.8.6)
- listen (3.1.5)
- rb-fsevent (~> 0.9, >= 0.9.4)
- rb-inotify (~> 0.9, >= 0.9.7)
- ruby_dep (~> 1.2)
- lumberjack (1.0.13)
- method_source (0.9.2)
- mini_portile2 (2.4.0)
- multi_json (1.13.1)
- mustermann (1.0.3)
- nenv (0.3.0)
- nokogiri (1.10.1)
- mini_portile2 (~> 2.4.0)
- notiffany (0.1.1)
- nenv (~> 0.1)
- shellany (~> 0.0)
- parseconfig (1.0.8)
- pry (0.12.2)
- coderay (~> 1.1.0)
- method_source (~> 0.9.0)
- rack (2.0.6)
- rack-flash3 (1.0.5)
- rack
- rack-protection (2.0.5)
- rack
- rack-test (1.1.0)
- rack (>= 1.0, < 3)
- rake (10.5.0)
- rb-fsevent (0.10.3)
- rb-inotify (0.10.0)
- ffi (~> 1.0)
- rinku (2.0.5)
- rspec (2.99.0)
- rspec-core (~> 2.99.0)
- rspec-expectations (~> 2.99.0)
- rspec-mocks (~> 2.99.0)
- rspec-core (2.99.2)
- rspec-expectations (2.99.2)
- diff-lcs (>= 1.1.3, < 2.0)
- rspec-html-matchers (0.5.0)
- nokogiri (~> 1)
- rspec (~> 2, >= 2.11.0)
- rspec-mocks (2.99.4)
- ruby_dep (1.5.0)
- shellany (0.0.1)
- simple-navigation (4.0.5)
- activesupport (>= 2.3.2)
- simplecov (0.16.1)
- docile (~> 1.1)
- json (>= 1.8, < 3)
- simplecov-html (~> 0.10.0)
- simplecov-html (0.10.2)
- sinatra (2.0.5)
- mustermann (~> 1.0)
- rack (~> 2.0)
- rack-protection (= 2.0.5)
- tilt (~> 2.0)
- sinatra-simple-navigation (4.1.0)
- simple-navigation (~> 4.0)
- sinatra (>= 1.0, < 3.0)
- thin (1.7.2)
- daemons (~> 1.0, >= 1.0.9)
- eventmachine (~> 1.0, >= 1.0.4)
- rack (>= 1, < 3)
- thor (0.20.3)
- tilt (2.0.9)
- vegas (0.1.11)
- rack (>= 1.0.0)
- versionomy (0.5.0)
- blockenspiel (~> 0.5)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- growl
- guard-bundler
- guard-rspec
- rack-test
- rake (< 11)
- rb-fsevent
- rspec (~> 2)
- rspec-html-matchers
- simplecov
- taskwarrior-web!
- thin
-
-BUNDLED WITH
- 1.16.2
diff --git a/pkgs/webapps/taskwarrior-web/default.nix b/pkgs/webapps/taskwarrior-web/default.nix
deleted file mode 100644
index d5368c5..0000000
--- a/pkgs/webapps/taskwarrior-web/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ ruby_2_6, bundlerEnv, mylibs, stdenv }:
-let
- gems = bundlerEnv {
- name = "taskwarrior-web-env";
- ruby = ruby_2_6;
- pname = "taskwarrior-web";
- gemset = ./gemset.nix;
- gemdir = package.out;
- groups = [ "default" "local" "development" ];
- };
- package = stdenv.mkDerivation (mylibs.fetchedGithub ./taskwarrior-web.json // rec {
- phases = [ "unpackPhase" "patchPhase" "installPhase" ];
- patches = [ ./fixes.patch ./thin.patch ];
- installPhase = ''
- cp -a . $out
- cp ${./Gemfile.lock} $out/Gemfile.lock
- '';
- passthru = {
- inherit gems;
- };
- });
-in package
diff --git a/pkgs/webapps/taskwarrior-web/fixes.patch b/pkgs/webapps/taskwarrior-web/fixes.patch
deleted file mode 100644
index 851f9f0..0000000
--- a/pkgs/webapps/taskwarrior-web/fixes.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-diff --git a/lib/taskwarrior-web/helpers.rb b/lib/taskwarrior-web/helpers.rb
-index 212aed7..94c57df 100644
---- a/lib/taskwarrior-web/helpers.rb
-+++ b/lib/taskwarrior-web/helpers.rb
-@@ -1,6 +1,8 @@
- require 'active_support/core_ext/date/calculations'
-
- module TaskwarriorWeb::App::Helpers
-+ include ERB::Util
-+
- def format_date(timestamp)
- format = TaskwarriorWeb::Config.dateformat || '%-m/%-d/%Y'
- Time.parse(timestamp).localtime.strftime(format)
-diff --git a/lib/taskwarrior-web/services/builder/base.rb b/lib/taskwarrior-web/services/builder/base.rb
-index 58d246e..8f716ac 100644
---- a/lib/taskwarrior-web/services/builder/base.rb
-+++ b/lib/taskwarrior-web/services/builder/base.rb
-@@ -10,7 +10,7 @@ module TaskwarriorWeb::CommandBuilder::Base
- :complete => ':id done',
- :annotate => ':id annotate',
- :denotate => ':id denotate',
-- :projects => '_projects',
-+ :projects => '_unique project',
- :tags => '_tags',
- :sync => 'sync'
- }
-diff --git a/lib/taskwarrior-web/views/tasks/_form.erb b/lib/taskwarrior-web/views/tasks/_form.erb
-index 789e7a1..fa08698 100644
---- a/lib/taskwarrior-web/views/tasks/_form.erb
-+++ b/lib/taskwarrior-web/views/tasks/_form.erb
-@@ -1,14 +1,14 @@
-
-
-
-
-@@ -45,7 +45,7 @@
-
diff --git a/pkgs/webapps/taskwarrior-web/gemset.nix b/pkgs/webapps/taskwarrior-web/gemset.nix
deleted file mode 100644
index 35d13c6..0000000
--- a/pkgs/webapps/taskwarrior-web/gemset.nix
+++ /dev/null
@@ -1,567 +0,0 @@
-{
- activesupport = {
- dependencies = ["i18n" "multi_json"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0fyxqkkws4px4lzkbcqzp0bwai7nn7jk4p0bgfy0dny9cwm0qc9r";
- type = "gem";
- };
- version = "3.2.22.5";
- };
- blockenspiel = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1h701s45n5qprvcpc7fnr45n88p56x07pznkxqnhz1dbdbhb7xx8";
- type = "gem";
- };
- version = "0.5.0";
- };
- coderay = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
- type = "gem";
- };
- version = "1.1.2";
- };
- concurrent-ruby = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1ixcx9pfissxrga53jbdpza85qd5f6b5nq1sfqa9rnfq82qnlbp1";
- type = "gem";
- };
- version = "1.1.4";
- };
- daemons = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0l5gai3vd4g7aqff0k1mp41j9zcsvm2rbwmqn115a325k9r7pf4w";
- type = "gem";
- };
- version = "1.3.1";
- };
- diff-lcs = {
- groups = ["default" "development" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
- type = "gem";
- };
- version = "1.3";
- };
- docile = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
- type = "gem";
- };
- version = "1.3.1";
- };
- eventmachine = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
- type = "gem";
- };
- version = "1.2.7";
- };
- ffi = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p";
- type = "gem";
- };
- version = "1.10.0";
- };
- formatador = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
- type = "gem";
- };
- version = "0.2.5";
- };
- growl = {
- groups = ["local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0s0y7maljnalpbv2q1j5j5hvb4wcc31y9af0n7x1q2l0fzxgc9n9";
- type = "gem";
- };
- version = "1.0.3";
- };
- guard = {
- dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
- type = "gem";
- };
- version = "2.15.0";
- };
- guard-bundler = {
- dependencies = ["guard" "guard-compat"];
- groups = ["local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0lji8f8w7y4prmpr2lqmlljvkqgkgnlsiwqgwvq7b1y3sxlsvy62";
- type = "gem";
- };
- version = "2.2.1";
- };
- guard-compat = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
- type = "gem";
- };
- version = "1.2.1";
- };
- guard-rspec = {
- dependencies = ["guard" "guard-compat" "rspec"];
- groups = ["local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
- type = "gem";
- };
- version = "4.7.3";
- };
- i18n = {
- dependencies = ["concurrent-ruby"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "038qvz7kd3cfxk8bvagqhakx68pfbnmghpdkx7573wbf0maqp9a3";
- type = "gem";
- };
- version = "0.9.5";
- };
- json = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0qmj7fypgb9vag723w1a49qihxrcf5shzars106ynw2zk352gbv5";
- type = "gem";
- };
- version = "1.8.6";
- };
- listen = {
- dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
- type = "gem";
- };
- version = "3.1.5";
- };
- lumberjack = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
- type = "gem";
- };
- version = "1.0.13";
- };
- method_source = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
- type = "gem";
- };
- version = "0.9.2";
- };
- mini_portile2 = {
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
- type = "gem";
- };
- version = "2.4.0";
- };
- multi_json = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
- type = "gem";
- };
- version = "1.13.1";
- };
- mustermann = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1";
- type = "gem";
- };
- version = "1.0.3";
- };
- nenv = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
- type = "gem";
- };
- version = "0.3.0";
- };
- nokogiri = {
- dependencies = ["mini_portile2"];
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "09zll7c6j7xr6wyvh5mm5ncj6pkryp70ybcsxdbw1nyphx5dh184";
- type = "gem";
- };
- version = "1.10.1";
- };
- notiffany = {
- dependencies = ["nenv" "shellany"];
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
- type = "gem";
- };
- version = "0.1.1";
- };
- parseconfig = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0br2g9k6zc4ygah52aa8cwvpnnkszia29bnvnr8bhpk3rdzi2vmq";
- type = "gem";
- };
- version = "1.0.8";
- };
- pry = {
- dependencies = ["coderay" "method_source"];
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
- type = "gem";
- };
- version = "0.12.2";
- };
- rack = {
- groups = ["default" "development"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
- type = "gem";
- };
- version = "2.0.6";
- };
- rack-flash3 = {
- dependencies = ["rack"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0rim9afrns6s8zc4apiymncysyvijpdg18k57kdpz66p55jf4mqz";
- type = "gem";
- };
- version = "1.0.5";
- };
- rack-protection = {
- dependencies = ["rack"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk";
- type = "gem";
- };
- version = "2.0.5";
- };
- rack-test = {
- dependencies = ["rack"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
- type = "gem";
- };
- version = "1.1.0";
- };
- rake = {
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0jcabbgnjc788chx31sihc5pgbqnlc1c75wakmqlbjdm8jns2m9b";
- type = "gem";
- };
- version = "10.5.0";
- };
- rb-fsevent = {
- groups = ["local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
- type = "gem";
- };
- version = "0.10.3";
- };
- rb-inotify = {
- dependencies = ["ffi"];
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1fs7hxm9g6ywv2yih83b879klhc4fs8i0p9166z795qmd77dk0a4";
- type = "gem";
- };
- version = "0.10.0";
- };
- rinku = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1smkk299v18brk98gqbdnqrfwm3143kikl30scidqb5j3pzlbz91";
- type = "gem";
- };
- version = "2.0.5";
- };
- rspec = {
- dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
- groups = ["development" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "14q3hxvngk4ks8h41yw50d5fqbf2dhzwi9rz5ccxvh5a53ak2as3";
- type = "gem";
- };
- version = "2.99.0";
- };
- rspec-core = {
- groups = ["default" "development" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1wwz21lcz2lwd2jcp2pvq7n1677v23acf7wxsyszp8msb47mw38i";
- type = "gem";
- };
- version = "2.99.2";
- };
- rspec-expectations = {
- dependencies = ["diff-lcs"];
- groups = ["default" "development" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "11a5pph3anp4xr591dnlcy8xfkdf54qi2lvg4ykpqhxk37si1py3";
- type = "gem";
- };
- version = "2.99.2";
- };
- rspec-html-matchers = {
- dependencies = ["nokogiri" "rspec"];
- groups = ["development"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "148grzvk0cvh24avhl0shjzz7ldhj138svf48pc5h1fdsb0pnqcv";
- type = "gem";
- };
- version = "0.5.0";
- };
- rspec-mocks = {
- groups = ["default" "development" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0bzhqahbiswq41nqi6y2dka1k42n0hl14jb6bldb206zp4hikz8r";
- type = "gem";
- };
- version = "2.99.4";
- };
- ruby_dep = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
- type = "gem";
- };
- version = "1.5.0";
- };
- shellany = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
- type = "gem";
- };
- version = "0.0.1";
- };
- simple-navigation = {
- dependencies = ["activesupport"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "08a2s18an3br3xj5j86r33q0hrkai0y157xg67h1khdskb08yylk";
- type = "gem";
- };
- version = "4.0.5";
- };
- simplecov = {
- dependencies = ["docile" "json" "simplecov-html"];
- groups = ["local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
- type = "gem";
- };
- version = "0.16.1";
- };
- simplecov-html = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
- type = "gem";
- };
- version = "0.10.2";
- };
- sinatra = {
- dependencies = ["mustermann" "rack" "rack-protection" "tilt"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1gasgn5f15myv08k10i16p326pchxjsy37pgqfw0xm66kcc5d7ry";
- type = "gem";
- };
- version = "2.0.5";
- };
- sinatra-simple-navigation = {
- dependencies = ["simple-navigation" "sinatra"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1gishxd23qw6bwsk7fkagkfc7ihqyvvvb98j9bmwc6wwpsfs4prs";
- type = "gem";
- };
- version = "4.1.0";
- };
- taskwarrior-web = {
- dependencies = ["activesupport" "json" "parseconfig" "rack-flash3" "rinku" "sinatra" "sinatra-simple-navigation" "vegas" "versionomy"];
- groups = ["default"];
- platforms = [];
- bundledByPath = true;
- path = ./.;
- source = {
- path = ./.;
- type = "path";
- };
- version = "1.1.12";
- };
- thin = {
- dependencies = ["daemons" "eventmachine" "rack"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f";
- type = "gem";
- };
- version = "1.7.2";
- };
- thor = {
- groups = ["default" "local"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29";
- type = "gem";
- };
- version = "0.20.3";
- };
- tilt = {
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz";
- type = "gem";
- };
- version = "2.0.9";
- };
- vegas = {
- dependencies = ["rack"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0kzv0v1zb8vvm188q4pqwahb6468bmiamn6wpsbiq6r5i69s1bs5";
- type = "gem";
- };
- version = "0.1.11";
- };
- versionomy = {
- dependencies = ["blockenspiel"];
- groups = ["default"];
- platforms = [];
- source = {
- remotes = ["http://rubygems.org"];
- sha256 = "0i0l4pzrl1vyp4lpg2cxhgkk56spki3lld943d6h7168fj8qyv33";
- type = "gem";
- };
- version = "0.5.0";
- };
-}
diff --git a/pkgs/webapps/taskwarrior-web/taskwarrior-web.json b/pkgs/webapps/taskwarrior-web/taskwarrior-web.json
deleted file mode 100644
index 70f396d..0000000
--- a/pkgs/webapps/taskwarrior-web/taskwarrior-web.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "a79cfe2-master",
- "meta": {
- "name": "taskwarrior-web",
- "url": "https://github.com/theunraveler/taskwarrior-web",
- "branch": "master"
- },
- "github": {
- "owner": "theunraveler",
- "repo": "taskwarrior-web",
- "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
- "sha256": "028rb4wry2an19707bvy4n305f3s0hipg214224p1m0mb61c3cq4",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/taskwarrior-web/thin.patch b/pkgs/webapps/taskwarrior-web/thin.patch
deleted file mode 100644
index a7df3e3..0000000
--- a/pkgs/webapps/taskwarrior-web/thin.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/Gemfile b/Gemfile
-index 8544e15..9c4279c 100644
---- a/Gemfile
-+++ b/Gemfile
-@@ -3,6 +3,8 @@ source "http://rubygems.org"
- # Specify your gem's dependencies in taskwarrior-web.gemspec
- gemspec
-
-+gem 'thin'
-+
- group :local do
- gem 'rb-fsevent', :require => false
- gem 'growl', :require => false
-diff --git a/config.ru b/config.ru
-index c3050c6..52387d8 100644
---- a/config.ru
-+++ b/config.ru
-@@ -1,5 +1,4 @@
- require File.join(File.dirname(__FILE__), 'lib', 'taskwarrior-web')
-
--disable :run
- TaskwarriorWeb::App.set({ :environment => :production })
- run TaskwarriorWeb::App
diff --git a/pkgs/webapps/ttrss/default.nix b/pkgs/webapps/ttrss/default.nix
deleted file mode 100644
index aeb573c..0000000
--- a/pkgs/webapps/ttrss/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ ttrss_config ? "/etc/ttrss/config.php"
-, varDir ? "/var/lib/ttrss"
-, stdenv, lib, callPackage, sources }:
-let
- pluginNames = [ "auth_ldap" "af_feedmod" "feediron" "ff_instagram" "tumblr_gdpr_ua" ];
- allPlugins = lib.attrsets.genAttrs pluginNames
- (name: callPackage (./plugins + "/${name}") {});
- toPassthru = pkg: plugins: {
- inherit plugins allPlugins;
- withPlugins = withPlugins pkg;
- };
- withPlugins = pkg: toPlugins:
- let
- plugins = toPlugins allPlugins;
- toInstallPlugin = n:
- "ln -sf ${n} $out/plugins/${n.pluginName}";
- newTtrss = pkg.overrideAttrs(old: {
- installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
- passthru = toPassthru newTtrss (pkg.plugins ++ plugins);
- });
- in newTtrss;
- package = stdenv.mkDerivation rec {
- pname = "tt-rss";
- version = sources.webapps-ttrss.version;
- name = "${pname}-${version}";
- src = sources.webapps-ttrss;
- buildPhase = ''
- rm -rf lock feed-icons cache
- ln -sf ${varDir}/{lock,feed-icons,cache} .
- '';
- installPhase = ''
- cp -a . $out
- ln -s ${ttrss_config} $out/config.php
- '';
- passthru = toPassthru package [];
- };
-in package
diff --git a/pkgs/webapps/ttrss/plugins/af_feedmod/af_feedmod.json b/pkgs/webapps/ttrss/plugins/af_feedmod/af_feedmod.json
deleted file mode 100644
index e57fcce..0000000
--- a/pkgs/webapps/ttrss/plugins/af_feedmod/af_feedmod.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "0ea2092-master",
- "meta": {
- "name": "ttrss-af_feedmod",
- "url": "https://github.com/mbirth/ttrss_plugin-af_feedmod",
- "branch": "master"
- },
- "github": {
- "owner": "mbirth",
- "repo": "ttrss_plugin-af_feedmod",
- "rev": "0ea2092dd34067ecd898802cfca3570023d1ecfe",
- "sha256": "02ibf47zcrsc2rr45wsix8gxyyf371davj8n8i0gj1zdq95klvnv",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix b/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix
deleted file mode 100644
index 8512be3..0000000
--- a/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ patched ? false, stdenv, mylibs, lib }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./af_feedmod.json // {
- patches = lib.optionals patched [ ./type_replace.patch ];
- installPhase = ''
- mkdir $out
- cp init.php $out
- '';
- passthru.pluginName = "af_feedmod";
-})
diff --git a/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch b/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch
deleted file mode 100644
index d622577..0000000
--- a/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/init.php 2014-06-16 14:21:06.995480038 +0200
-+++ b/init.php 2014-06-16 14:22:00.151027654 +0200
-@@ -147,6 +147,9 @@
- }
- }
- break;
-+ case 'replace':
-+ $article['content'] = preg_replace("/".$config['pattern']."/",$config['replacement'],$article['content']);
-+ break;
-
- default:
- // unknown type or invalid config
diff --git a/pkgs/webapps/ttrss/plugins/auth_ldap/auth-ldap.json b/pkgs/webapps/ttrss/plugins/auth_ldap/auth-ldap.json
deleted file mode 100644
index c8aaab5..0000000
--- a/pkgs/webapps/ttrss/plugins/auth_ldap/auth-ldap.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "4d751b0-master",
- "meta": {
- "name": "ttrss-auth-ldap",
- "url": "https://github.com/hydrian/TTRSS-Auth-LDAP",
- "branch": "master"
- },
- "github": {
- "owner": "hydrian",
- "repo": "TTRSS-Auth-LDAP",
- "rev": "4d751b095c29a8dbe2dc7bb07777742956136e94",
- "sha256": "0b9fl86acrzpcv41r7pj3bl8b3n72hpkdywzx9zjyfqv5pskxyim",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix b/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix
deleted file mode 100644
index 424a9f7..0000000
--- a/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ stdenv, mylibs }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./auth-ldap.json // {
- installPhase = ''
- mkdir $out
- cp plugins/auth_ldap/init.php $out
- '';
- passthru.pluginName = "auth_ldap";
-})
diff --git a/pkgs/webapps/ttrss/plugins/feediron/default.nix b/pkgs/webapps/ttrss/plugins/feediron/default.nix
deleted file mode 100644
index 80bfda4..0000000
--- a/pkgs/webapps/ttrss/plugins/feediron/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ patched ? false, stdenv, mylibs, lib }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./feediron.json // {
- patches = lib.optionals patched [ ./json_reformat.patch ];
- installPhase = ''
- mkdir $out
- cp -a . $out
- '';
- passthru.pluginName = "feediron";
-})
diff --git a/pkgs/webapps/ttrss/plugins/feediron/feediron.json b/pkgs/webapps/ttrss/plugins/feediron/feediron.json
deleted file mode 100644
index 5dbec92..0000000
--- a/pkgs/webapps/ttrss/plugins/feediron/feediron.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "407168c-master",
- "meta": {
- "name": "ttrss-feediron",
- "url": "https://github.com/m42e/ttrss_plugin-feediron",
- "branch": "master"
- },
- "github": {
- "owner": "m42e",
- "repo": "ttrss_plugin-feediron",
- "rev": "407168c628880b5ced572cc549db6d50e866d3c8",
- "sha256": "17b95ifpcph6m03hjd1mhi8gi1hw9yd3fnffmw66fqr5c9l3zd9r",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch b/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch
deleted file mode 100644
index e1c44d9..0000000
--- a/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/init.php b/init.php
-index 3c0f2f9..1aad146 100644
---- a/init.php
-+++ b/init.php
-@@ -600,10 +600,11 @@ class Feediron extends Plugin implements IHandler
- return false;
- }
-
-- $this->host->set($this, 'json_conf', Feediron_Json::format($json_conf));
-+ $new_conf = json_encode(json_decode($json_conf), JSON_PRETTY_PRINT);
-+ $this->host->set($this, 'json_conf', $new_conf);
- $json_reply['success'] = true;
- $json_reply['message'] = __('Configuration saved.');
-- $json_reply['json_conf'] = Feediron_Json::format($json_conf);
-+ $json_reply['json_conf'] = $new_conf;
- echo json_encode($json_reply);
- }
-
diff --git a/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix b/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix
deleted file mode 100644
index 3540f73..0000000
--- a/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ stdenv, mylibs }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./ff_instagram.json // {
- installPhase = ''
- mkdir $out
- cp -a . $out
- '';
- passthru.pluginName = "ff_instagram";
-})
diff --git a/pkgs/webapps/ttrss/plugins/ff_instagram/ff_instagram.json b/pkgs/webapps/ttrss/plugins/ff_instagram/ff_instagram.json
deleted file mode 100644
index 1f241b9..0000000
--- a/pkgs/webapps/ttrss/plugins/ff_instagram/ff_instagram.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "0366ffb-master",
- "meta": {
- "name": "ttrss-ff_instagram",
- "url": "https://github.com/wltb/ff_instagram",
- "branch": "master"
- },
- "github": {
- "owner": "wltb",
- "repo": "ff_instagram",
- "rev": "0366ffb18c4d490c8fbfba2f5f3367a5af23cfe8",
- "sha256": "0vvzl6wi6jmrqknsfddvckjgsgfizz1d923d1nyrpzjfn6bda1vk",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix b/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix
deleted file mode 100644
index 2cf3e05..0000000
--- a/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ stdenv, mylibs }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./tumblr_gdpr_ua.json // {
- installPhase = ''
- mkdir $out
- cp -a . $out
- '';
- passthru.pluginName = "tumblr_gdpr_ua";
-})
diff --git a/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/tumblr_gdpr_ua.json b/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/tumblr_gdpr_ua.json
deleted file mode 100644
index eafbcfe..0000000
--- a/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/tumblr_gdpr_ua.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "287c584-master",
- "meta": {
- "name": "ttrss-tumblr_gdpr_ua",
- "url": "https://github.com/hkockerbeck/ttrss-tumblr-gdpr-ua",
- "branch": "master"
- },
- "github": {
- "owner": "hkockerbeck",
- "repo": "ttrss-tumblr-gdpr-ua",
- "rev": "287c584e68845d524f920156bff0b2eaa6f65117",
- "sha256": "1fviawgcclqky4k4xv1sqzvpb8i74w9f0pclm09m78s8l85wh9py",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/wallabag/default.nix b/pkgs/webapps/wallabag/default.nix
deleted file mode 100644
index bd420d4..0000000
--- a/pkgs/webapps/wallabag/default.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ varDir ? "/var/lib/wallabag"
-, wallabag_config ? "/etc/wallabag/parameters.yml"
-, ldap ? false
-, composerEnv, fetchurl, lib }:
-composerEnv.buildPackage rec {
- packages = {
- "fr3d/ldap-bundle" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "fr3d-ldap-bundle-5a8927c11af45fa06331b97221c6da1a4a237475";
- src = fetchurl {
- url = https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475;
- sha256 = "168zkd82j200wd6h0a3lq81g5s2pifg889rv27q2g429nppsbfxc";
- };
- };
- };
- "zendframework/zend-ldap" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "zendframework-zend-ldap-b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49";
- src = fetchurl {
- url = https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49;
- sha256 = "0mn4yqnb5prqhrbbybmw1i2rx7xf4s4wagbdq9qi55fa0vk3jgw9";
- };
- };
- };
- };
- noDev = true;
- doRemoveVendor = false;
- # Beware when upgrading, I probably messed up with the migrations table
- # (due to a psql bug in wallabag)
- version = "2.3.8";
- name = "wallabag-${version}";
- src = fetchurl {
- url = "https://static.wallabag.org/releases/wallabag-release-${version}.tar.gz";
- sha256 = "1sr62hfk2f2rl5by48dg8yd1gchngjnc850as17wr3w287p1kwsq";
- };
- unpackPhase = ''
- unpackFile "$src"
- sourceRoot=${version}
- src=$PWD/${version}
- '';
- patches = lib.optionals ldap [ ./ldap.patch ];
- preInstall = ''
- export SYMFONY_ENV="prod"
- '';
- postInstall = ''
- rm -rf web/assets var/{cache,logs,sessions} app/config/parameters.yml data
- ln -sf ${wallabag_config} app/config/parameters.yml
- ln -sf ${varDir}/var/{cache,logs,sessions} var
- ln -sf ${varDir}/data data
- ln -sf ${varDir}/assets web/assets
- '';
-}
diff --git a/pkgs/webapps/wallabag/ldap.patch b/pkgs/webapps/wallabag/ldap.patch
deleted file mode 100644
index e04dae1..0000000
--- a/pkgs/webapps/wallabag/ldap.patch
+++ /dev/null
@@ -1,664 +0,0 @@
-diff --git a/.travis.yml b/.travis.yml
-index 04cea258..56b1f576 100644
---- a/.travis.yml
-+++ b/.travis.yml
-@@ -58,6 +58,7 @@ install:
-
- before_script:
- - PHP=$TRAVIS_PHP_VERSION
-+ - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
- - if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi;
- # xdebug isn't enable for PHP 7.1
- - if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi
-diff --git a/app/AppKernel.php b/app/AppKernel.php
-index 40726f05..c4f465dc 100644
---- a/app/AppKernel.php
-+++ b/app/AppKernel.php
-@@ -42,6 +42,10 @@ class AppKernel extends Kernel
- new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(),
- ];
-
-+ if (class_exists('FR3D\\LdapBundle\\FR3DLdapBundle')) {
-+ $bundles[] = new FR3D\LdapBundle\FR3DLdapBundle();
-+ }
-+
- if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
- $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
- $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
-diff --git a/app/DoctrineMigrations/Version20170710113900.php b/app/DoctrineMigrations/Version20170710113900.php
-new file mode 100644
-index 00000000..7be83110
---- /dev/null
-+++ b/app/DoctrineMigrations/Version20170710113900.php
-@@ -0,0 +1,54 @@
-+container = $container;
-+ }
-+
-+ private function getTable($tableName)
-+ {
-+ return $this->container->getParameter('database_table_prefix').$tableName;
-+ }
-+
-+ /**
-+ * @param Schema $schema
-+ */
-+ public function up(Schema $schema)
-+ {
-+ $usersTable = $schema->getTable($this->getTable('user'));
-+
-+ $this->skipIf($usersTable->hasColumn('dn'), 'It seems that you already played this migration.');
-+
-+ $usersTable->addColumn('dn', 'text', [
-+ 'default' => null,
-+ 'notnull' => false,
-+ ]);
-+ }
-+
-+ /**
-+ * @param Schema $schema
-+ */
-+ public function down(Schema $schema)
-+ {
-+ $usersTable = $schema->getTable($this->getTable('user'));
-+ $usersTable->dropColumn('dn');
-+ }
-+}
-+
-diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist
-index 6b0cb8e8..cfd41b69 100644
---- a/app/config/parameters.yml.dist
-+++ b/app/config/parameters.yml.dist
-@@ -62,3 +62,23 @@ parameters:
- redis_port: 6379
- redis_path: null
- redis_password: null
-+
-+ # ldap configuration
-+ # To enable, you need to require fr3d/ldap-bundle
-+ ldap_enabled: false
-+ ldap_host: localhost
-+ ldap_port: 389
-+ ldap_tls: false
-+ ldap_ssl: false
-+ ldap_bind_requires_dn: true
-+ ldap_base: dc=example,dc=com
-+ ldap_manager_dn: ou=Manager,dc=example,dc=com
-+ ldap_manager_pw: password
-+ ldap_filter: (&(ObjectClass=Person))
-+ # optional (if null: no ldap user is admin)
-+ ldap_admin_filter: (&(memberOf=ou=admins,dc=example,dc=com)(uid=%s))
-+ ldap_username_attribute: uid
-+ ldap_email_attribute: mail
-+ ldap_name_attribute: cn
-+ # optional (default sets user as enabled unconditionally)
-+ ldap_enabled_attribute: ~
-diff --git a/app/config/security.yml b/app/config/security.yml
-index 02afc9ea..48fbb553 100644
---- a/app/config/security.yml
-+++ b/app/config/security.yml
-@@ -6,6 +6,7 @@ security:
- ROLE_ADMIN: ROLE_USER
- ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
-
-+ # /!\ This list is modified in WallabagUserBundle when LDAP is enabled
- providers:
- administrators:
- entity:
-@@ -36,6 +37,7 @@ security:
- pattern: ^/login$
- anonymous: ~
-
-+ # /!\ This section is modified in WallabagUserBundle when LDAP is enabled
- secured_area:
- pattern: ^/
- form_login:
-diff --git a/composer.json b/composer.json
-index 0483da1d..e3e47bdc 100644
---- a/composer.json
-+++ b/composer.json
-@@ -87,7 +87,11 @@
- "bdunogier/guzzle-site-authenticator": "^1.0.0",
- "defuse/php-encryption": "^2.1",
- "html2text/html2text": "^4.1",
-- "sulu/symfony-intl-fix": "^1.0"
-+ "sulu/symfony-intl-fix": "^1.0",
-+ "fr3d/ldap-bundle": "^3.0"
-+ },
-+ "suggest": {
-+ "fr3d/ldap-bundle": "If you want to authenticate via LDAP"
- },
- "require-dev": {
- "doctrine/doctrine-fixtures-bundle": "~2.2",
-diff --git a/composer.lock b/composer.lock
-index b3b0a4c6..8c8a87ee 100644
---- a/composer.lock
-+++ b/composer.lock
-@@ -1346,6 +1346,65 @@
- ],
- "time": "2019-05-09T11:53:40+00:00"
- },
-+ {
-+ "name": "fr3d/ldap-bundle",
-+ "version": "v3.0.0",
-+ "source": {
-+ "type": "git",
-+ "url": "https://github.com/Maks3w/FR3DLdapBundle.git",
-+ "reference": "5a8927c11af45fa06331b97221c6da1a4a237475"
-+ },
-+ "dist": {
-+ "type": "zip",
-+ "url": "https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475",
-+ "reference": "5a8927c11af45fa06331b97221c6da1a4a237475",
-+ "shasum": ""
-+ },
-+ "require": {
-+ "php": ">=5.5",
-+ "psr/log": "~1.0",
-+ "symfony/config": "2.3 - 3",
-+ "symfony/dependency-injection": "2.3 - 3",
-+ "symfony/polyfill-php56": "^1.1",
-+ "symfony/security": "2.3 - 3",
-+ "symfony/security-bundle": "2.3 - 3",
-+ "zendframework/zend-ldap": "2.5 - 3"
-+ },
-+ "require-dev": {
-+ "fabpot/php-cs-fixer": "1.11.*",
-+ "fr3d/psr3-message-assertions": "0.1.*",
-+ "friendsofsymfony/user-bundle": "~1.3",
-+ "maks3w/phpunit-methods-trait": "^4.6",
-+ "phpunit/phpunit": "^4.6",
-+ "symfony/validator": "2.3 - 3"
-+ },
-+ "suggest": {
-+ "friendsofsymfony/user-bundle": "Integrate authentication and management for DB users, useful for unmanned LDAP servers",
-+ "symfony/validator": "Allow pre-validate for existing users before register new ones"
-+ },
-+ "type": "symfony-bundle",
-+ "autoload": {
-+ "psr-4": {
-+ "FR3D\\LdapBundle\\": ""
-+ }
-+ },
-+ "notification-url": "https://packagist.org/downloads/",
-+ "license": [
-+ "MIT"
-+ ],
-+ "authors": [
-+ {
-+ "name": "Maks3w"
-+ }
-+ ],
-+ "description": "This package provide users and authentication services based on LDAP directories for Symfony2 framework",
-+ "homepage": "https://github.com/Maks3w/FR3DLdapBundle",
-+ "keywords": [
-+ "Authentication",
-+ "ldap"
-+ ],
-+ "time": "2016-02-12T17:45:14+00:00"
-+ },
- {
- "name": "friendsofsymfony/jsrouting-bundle",
- "version": "1.6.3",
-@@ -7069,6 +7128,59 @@
- "zf2"
- ],
- "time": "2018-04-25T15:33:34+00:00"
-+ },
-+ {
-+ "name": "zendframework/zend-ldap",
-+ "version": "2.10.0",
-+ "source": {
-+ "type": "git",
-+ "url": "https://github.com/zendframework/zend-ldap.git",
-+ "reference": "b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49"
-+ },
-+ "dist": {
-+ "type": "zip",
-+ "url": "https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49",
-+ "reference": "b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49",
-+ "shasum": ""
-+ },
-+ "require": {
-+ "ext-ldap": "*",
-+ "php": "^5.6 || ^7.0"
-+ },
-+ "require-dev": {
-+ "php-mock/php-mock-phpunit": "^1.1.2 || ^2.1.1",
-+ "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2",
-+ "zendframework/zend-coding-standard": "~1.0.0",
-+ "zendframework/zend-config": "^2.5",
-+ "zendframework/zend-eventmanager": "^2.6.3 || ^3.0.1",
-+ "zendframework/zend-stdlib": "^2.7 || ^3.0"
-+ },
-+ "suggest": {
-+ "zendframework/zend-eventmanager": "Zend\\EventManager component"
-+ },
-+ "type": "library",
-+ "extra": {
-+ "branch-alias": {
-+ "dev-master": "2.10.x-dev",
-+ "dev-develop": "2.11.x-dev"
-+ }
-+ },
-+ "autoload": {
-+ "psr-4": {
-+ "Zend\\Ldap\\": "src/"
-+ }
-+ },
-+ "notification-url": "https://packagist.org/downloads/",
-+ "license": [
-+ "BSD-3-Clause"
-+ ],
-+ "description": "Provides support for LDAP operations including but not limited to binding, searching and modifying entries in an LDAP directory",
-+ "keywords": [
-+ "ZendFramework",
-+ "ldap",
-+ "zf"
-+ ],
-+ "time": "2018-07-05T05:05:12+00:00"
- }
- ],
- "packages-dev": [
-diff --git a/scripts/install.sh b/scripts/install.sh
-index affa715f..45254212 100755
---- a/scripts/install.sh
-+++ b/scripts/install.sh
-@@ -37,5 +37,8 @@ fi
- TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
-
- git checkout $TAG
-+if [ -n "$LDAP_ENABLED" ]; then
-+ SYMFONY_ENV=$ENV $COMPOSER_COMMAND require --no-update fr3d/ldap-bundle
-+fi
- SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist
- php bin/console wallabag:install --env=$ENV
-diff --git a/scripts/update.sh b/scripts/update.sh
-index 3ef10439..eeee28d6 100755
---- a/scripts/update.sh
-+++ b/scripts/update.sh
-@@ -42,6 +42,9 @@ git fetch origin
- git fetch --tags
- TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
- git checkout $TAG --force
-+if [ -n "$LDAP_ENABLED" ]; then
-+ SYMFONY_ENV=$ENV $COMPOSER_COMMAND require --no-update fr3d/ldap-bundle
-+fi
- SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist
- php bin/console doctrine:migrations:migrate --no-interaction --env=$ENV
- php bin/console cache:clear --env=$ENV
-diff --git a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
-index 5ca3482e..904a6af1 100644
---- a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
-+++ b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
-@@ -6,9 +6,34 @@ use Symfony\Component\Config\FileLocator;
- use Symfony\Component\DependencyInjection\ContainerBuilder;
- use Symfony\Component\DependencyInjection\Loader;
- use Symfony\Component\HttpKernel\DependencyInjection\Extension;
-+use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
-
--class WallabagUserExtension extends Extension
-+class WallabagUserExtension extends Extension implements PrependExtensionInterface
- {
-+ public function prepend(ContainerBuilder $container)
-+ {
-+ $ldap = $container->getParameter('ldap_enabled');
-+
-+ if ($ldap) {
-+ $container->prependExtensionConfig('security', array(
-+ 'providers' => array(
-+ 'chain_provider' => array(),
-+ ),
-+ ));
-+ $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
-+ $loader->load('ldap.yml');
-+ } elseif ($container->hasExtension('fr3d_ldap')) {
-+ $container->prependExtensionConfig('fr3_d_ldap', array(
-+ 'driver' => array(
-+ 'host' => 'localhost',
-+ ),
-+ 'user' => array(
-+ 'baseDn' => 'dc=example,dc=com',
-+ ),
-+ ));
-+ }
-+ }
-+
- public function load(array $configs, ContainerBuilder $container)
- {
- $configuration = new Configuration();
-@@ -16,6 +41,9 @@ class WallabagUserExtension extends Extension
-
- $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
- $loader->load('services.yml');
-+ if ($container->getParameter('ldap_enabled')) {
-+ $loader->load('ldap_services.yml');
-+ }
- $container->setParameter('wallabag_user.registration_enabled', $config['registration_enabled']);
- }
-
-diff --git a/src/Wallabag/UserBundle/Entity/User.php b/src/Wallabag/UserBundle/Entity/User.php
-index 48446e3c..f93c59c7 100644
---- a/src/Wallabag/UserBundle/Entity/User.php
-+++ b/src/Wallabag/UserBundle/Entity/User.php
-@@ -1,5 +1,15 @@
- clients->first();
- }
- }
-+
-+ /**
-+ * Set dn.
-+ *
-+ * @param string $dn
-+ *
-+ * @return User
-+ */
-+ public function setDn($dn)
-+ {
-+ $this->dn = $dn;
-+
-+ return $this;
-+ }
-+
-+ /**
-+ * Get dn.
-+ *
-+ * @return string
-+ */
-+ public function getDn()
-+ {
-+ return $this->dn;
-+ }
-+
-+ public function isLdapUser()
-+ {
-+ return $this->dn !== null;
-+ }
- }
-diff --git a/src/Wallabag/UserBundle/LdapHydrator.php b/src/Wallabag/UserBundle/LdapHydrator.php
-new file mode 100644
-index 00000000..cea2450f
---- /dev/null
-+++ b/src/Wallabag/UserBundle/LdapHydrator.php
-@@ -0,0 +1,103 @@
-+userManager = $user_manager;
-+ $this->eventDispatcher = $event_dispatcher;
-+
-+ $this->attributesMap = array(
-+ 'setUsername' => $attributes_map[0],
-+ 'setEmail' => $attributes_map[1],
-+ 'setName' => $attributes_map[2],
-+ );
-+ $this->enabledAttribute = $attributes_map[3];
-+
-+ $this->ldapBaseDn = $ldap_base_dn;
-+ $this->ldapAdminFilter = $ldap_admin_filter;
-+ $this->ldapDriver = $ldap_driver;
-+ }
-+
-+ public function hydrate(array $ldapEntry)
-+ {
-+ $user = $this->userManager->findUserBy(array('dn' => $ldapEntry['dn']));
-+
-+ if (!$user) {
-+ $user = $this->userManager->createUser();
-+ $user->setDn($ldapEntry['dn']);
-+ $user->setPassword('');
-+ $user->setSalt('');
-+ $this->updateUserFields($user, $ldapEntry);
-+
-+ $event = new UserEvent($user);
-+ $this->eventDispatcher->dispatch(FOSUserEvents::USER_CREATED, $event);
-+
-+ $this->userManager->reloadUser($user);
-+ } else {
-+ $this->updateUserFields($user, $ldapEntry);
-+ }
-+
-+ return $user;
-+ }
-+
-+ private function updateUserFields($user, $ldapEntry)
-+ {
-+ foreach ($this->attributesMap as $key => $value) {
-+ if (is_array($ldapEntry[$value])) {
-+ $ldap_value = $ldapEntry[$value][0];
-+ } else {
-+ $ldap_value = $ldapEntry[$value];
-+ }
-+
-+ call_user_func([$user, $key], $ldap_value);
-+ }
-+
-+ if ($this->enabledAttribute !== null) {
-+ $user->setEnabled($ldapEntry[$this->enabledAttribute]);
-+ } else {
-+ $user->setEnabled(true);
-+ }
-+
-+ if ($this->isAdmin($user)) {
-+ $user->addRole('ROLE_SUPER_ADMIN');
-+ } else {
-+ $user->removeRole('ROLE_SUPER_ADMIN');
-+ }
-+
-+ $this->userManager->updateUser($user, true);
-+ }
-+
-+ private function isAdmin($user)
-+ {
-+ if ($this->ldapAdminFilter === null) {
-+ return false;
-+ }
-+
-+ $escaped_username = ldap_escape($user->getUsername(), '', LDAP_ESCAPE_FILTER);
-+ $filter = sprintf($this->ldapAdminFilter, $escaped_username);
-+ $entries = $this->ldapDriver->search($this->ldapBaseDn, $filter);
-+
-+ return $entries['count'] == 1;
-+ }
-+}
-diff --git a/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php b/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php
-new file mode 100644
-index 00000000..8a851f12
---- /dev/null
-+++ b/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php
-@@ -0,0 +1,43 @@
-+ldapManager = $ldap_manager;
-+ }
-+
-+ public function checkUserCredentials(IOAuth2Client $client, $username, $password)
-+ {
-+ try {
-+ $user = $this->userProvider->loadUserByUsername($username);
-+ } catch (AuthenticationException $e) {
-+ return false;
-+ }
-+
-+ if ($user->isLdapUser()) {
-+ return $this->checkLdapUserCredentials($user, $password);
-+ } else {
-+ return parent::checkUserCredentials($client, $username, $password);
-+ }
-+ }
-+
-+ private function checkLdapUserCredentials($user, $password)
-+ {
-+ if ($this->ldapManager->bind($user, $password)) {
-+ return array(
-+ 'data' => $user,
-+ );
-+ } else {
-+ return false;
-+ }
-+ }
-+}
-diff --git a/src/Wallabag/UserBundle/Resources/config/ldap.yml b/src/Wallabag/UserBundle/Resources/config/ldap.yml
-new file mode 100644
-index 00000000..5ec16088
---- /dev/null
-+++ b/src/Wallabag/UserBundle/Resources/config/ldap.yml
-@@ -0,0 +1,28 @@
-+fr3d_ldap:
-+ service:
-+ user_hydrator: ldap_user_hydrator
-+ driver:
-+ host: "%ldap_host%"
-+ port: "%ldap_port%"
-+ useSsl: "%ldap_ssl%"
-+ useStartTls: "%ldap_tls%"
-+ bindRequiresDn: "%ldap_bind_requires_dn%"
-+ username: "%ldap_manager_dn%"
-+ password: "%ldap_manager_pw%"
-+ user:
-+ baseDn: "%ldap_base%"
-+ filter: "%ldap_filter%"
-+ usernameAttribute: "%ldap_username_attribute%"
-+security:
-+ providers:
-+ chain_provider:
-+ chain:
-+ providers: [ fr3d_ldapbundle, fos_userbundle ]
-+ fr3d_ldapbundle:
-+ id: fr3d_ldap.security.user.provider
-+ firewalls:
-+ secured_area:
-+ fr3d_ldap: ~
-+ form_login:
-+ provider: chain_provider
-+
-diff --git a/src/Wallabag/UserBundle/Resources/config/ldap_services.yml b/src/Wallabag/UserBundle/Resources/config/ldap_services.yml
-new file mode 100644
-index 00000000..b3e3fd8a
---- /dev/null
-+++ b/src/Wallabag/UserBundle/Resources/config/ldap_services.yml
-@@ -0,0 +1,22 @@
-+services:
-+ fos_oauth_server.server:
-+ class: OAuth2\OAuth2
-+ arguments:
-+ - "@oauth_storage_ldap_wrapper"
-+ - "%fos_oauth_server.server.options%"
-+ oauth_storage_ldap_wrapper:
-+ class: Wallabag\UserBundle\OAuthStorageLdapWrapper
-+ parent: fos_oauth_server.storage
-+ calls:
-+ - [setLdapManager, ["@fr3d_ldap.ldap_manager"]]
-+
-+ ldap_user_hydrator:
-+ class: Wallabag\UserBundle\LdapHydrator
-+ arguments:
-+ - "@fos_user.user_manager"
-+ - "@event_dispatcher"
-+ - [ "%ldap_username_attribute%", "%ldap_email_attribute%", "%ldap_name_attribute%", "%ldap_enabled_attribute%" ]
-+ - "%ldap_base%"
-+ - "%ldap_admin_filter%"
-+ - "@fr3d_ldap.ldap_driver"
-+
diff --git a/pkgs/webapps/yourls/default.nix b/pkgs/webapps/yourls/default.nix
deleted file mode 100644
index d940c54..0000000
--- a/pkgs/webapps/yourls/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ yourls_config ? "/etc/yourls/config.php", mylibs, callPackage, lib, stdenv }:
-let
- pluginNames = [ "ldap" ];
- allPlugins = lib.attrsets.genAttrs pluginNames
- (name: callPackage (./plugins + "/${name}") { inherit mylibs; });
- toPassthru = pkg: plugins: {
- inherit plugins allPlugins;
- withPlugins = withPlugins pkg;
- };
- withPlugins = pkg: toPlugins:
- let
- plugins = toPlugins allPlugins;
- toInstallPlugin = n: "ln -s ${n} $out/user/plugins/${n.pluginName}";
- newYourls = pkg.overrideAttrs(old: {
- installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
- passthru = toPassthru newYourls (pkg.plugins ++ plugins);
- });
- in newYourls;
- package = stdenv.mkDerivation (mylibs.fetchedGithub ./yourls.json // rec {
- installPhase = ''
- mkdir -p $out
- cp -a */ *.php $out/
- cp sample-robots.txt $out/robots.txt
- ln -sf ${yourls_config} $out/includes/config.php
- '';
- passthru = toPassthru package [];
- });
-in package
diff --git a/pkgs/webapps/yourls/plugins/ldap/default.nix b/pkgs/webapps/yourls/plugins/ldap/default.nix
deleted file mode 100644
index 01dc6fb..0000000
--- a/pkgs/webapps/yourls/plugins/ldap/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ stdenv, mylibs }:
-stdenv.mkDerivation (mylibs.fetchedGithub ./ldap.json // rec {
- installPhase = ''
- mkdir -p $out
- cp plugin.php $out
- '';
- passthru.pluginName = "ldap";
-})
diff --git a/pkgs/webapps/yourls/plugins/ldap/ldap.json b/pkgs/webapps/yourls/plugins/ldap/ldap.json
deleted file mode 100644
index 9411e4a..0000000
--- a/pkgs/webapps/yourls/plugins/ldap/ldap.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "2a3cb03-master",
- "meta": {
- "name": "yourls-ldap-plugin",
- "url": "https://github.com/k3a/yourls-ldap-plugin",
- "branch": "master"
- },
- "github": {
- "owner": "k3a",
- "repo": "yourls-ldap-plugin",
- "rev": "2a3cb0334b8a6b81b284a7196e614bbd2b2b1615",
- "sha256": "0cchbnli77d295lzf7kjmn4dcxj2bmdqa9qc3f8l8qgmp4n5n0gh",
- "fetchSubmodules": true
- }
-}
diff --git a/pkgs/webapps/yourls/yourls.json b/pkgs/webapps/yourls/yourls.json
deleted file mode 100644
index 0a79b18..0000000
--- a/pkgs/webapps/yourls/yourls.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "tag": "1.7.3",
- "meta": {
- "name": "yourls",
- "url": "https://github.com/YOURLS/YOURLS",
- "branch": "refs/tags/1.7.3"
- },
- "github": {
- "owner": "YOURLS",
- "repo": "YOURLS",
- "rev": "077018822d3594229daa8343310d0b40804b9ddc",
- "sha256": "1av6h619rwqn0yn0kjn2s2h3gmrhmxaaa9hd5ns4ralxgg731imd",
- "fetchSubmodules": true
- }
-}
diff --git a/scripts/fetch_version b/scripts/fetch_version
deleted file mode 100755
index 5c4715a..0000000
--- a/scripts/fetch_version
+++ /dev/null
@@ -1,173 +0,0 @@
-#!/usr/bin/env bash
-
-usage() {
- echo "$0 file.json"
- echo "$0 [-n|--name name] [-b|--branch branch_or_rev] [-f|--file out_file] [-h|--help] (-u|--url) url"
- exit
-}
-
-branch="master"
-while [[ $# -gt 0 ]]; do
- a="$1"
- shift
- case "$a" in
- *.json)
- file=$a
- content=$(cat $a)
- name="$(echo "$content" | jq -r ".meta.name")"
- url="$(echo "$content" | jq -r ".meta.url")"
- branch="$(echo "$content" | jq -r ".meta.branch")"
- ;;
- -n|--name)
- name=$1
- shift
- ;;
- -u|--url)
- url=$1
- shift
- ;;
- -b|--branch)
- branch=$1
- shift
- ;;
- -f|--file)
- file=$1
- shift
- ;;
- -h|--help)
- usage
- ;;
- esac
-done
-if [ -z "$url" ]; then
- usage
-fi
-if [ -z "$name" ]; then
- name=$(echo "$url" | cut -d"/" -f5)
-fi
-if [ -z "$file" ]; then
- file=$name.json
-fi
-
-# function fetch_ledger () {
-# pushd $HOME/projets/ledger >/dev/null 2>/dev/null
-# git fetch origin
-# tag="$(git describe origin/next | sed -e "s/^v//")"
-# rev="$(git show-ref -s refs/remotes/origin/next)"
-# sha="$(nix-prefetch-url --unpack file://<(git archive --format=tar.gz HEAD) 2>/dev/null)"
-# popd >/dev/null 2>/dev/null
-# }
-
-# awk_describe='BEGIN {
-# FS = "[ /^]+"
-# while ("git ls-remote " ARGV[1] "| sort -Vk2" | getline) {
-# if (!sha)
-# sha = substr($0, 1, 7)
-# tag = $3
-# }
-# while ("curl -s " ARGV[1] "/releases/tag/" tag | getline)
-# if ($3 ~ "commits")
-# com = $2
-# printf com ? "%s-%s-g%s\n" : "%s\n", tag, com, sha
-# }'
-
-function get_ref () {
- case "$1" in
- refs/*)
- echo "$1"
- ;;
- *)
- echo "refs/heads/$1"
- ;;
- esac
-}
-
-function get_name () {
- branch="$1"
- rev="$2"
- minirev=${rev:0:7}
-
- case "$branch" in
- refs/tags/*)
- b="${branch#refs/tags/}"
- echo "${b//\//-}"
- ;;
- refs/heads/*)
- b=${branch#refs/heads/}
- echo "$minirev-${b//\//-}"
- ;;
- refs/*)
- b=${branch#refs/}
- echo "$minirev-${b//\//-}"
- ;;
- *)
- echo "$minirev-${branch//\//-}"
- ;;
- esac
-}
-
-function fetch_github () {
- rev="$(git ls-remote --refs $url $(get_ref $branch) | head -n1 | cut -f1)"
- sha="$(nix-prefetch-url --unpack $url/archive/$rev.tar.gz)"
- # Différent du git-describe et github-spécifique
- #tag=$(echo "$awk_describe" | awk -f - $url | sed -e "s/^v//")
- tag=$(get_name $branch $rev)
-}
-
-function fetch_other () {
- rev="$(git ls-remote --refs $url $(get_ref $branch) | head -n1 | cut -f1)"
- sha="$(nix-prefetch-git --url $url --rev $(get_ref $branch) | jq -r '.sha256')"
- tag=$(get_name $branch $rev)
-}
-
-case "$url" in
- https://*github.com/*)
- fetch_github 2>/dev/null
- owner=$(echo "$url" | cut -d"/" -f4)
- repo=$(echo "$url" | cut -d"/" -f5)
-
- F='{
- "tag": $tag,
- "meta": {
- "name": $name,
- "url": $url,
- "branch": $branch
- },
- "github": {
- "owner": $owner,
- "repo": $repo,
- "rev": $rev,
- "sha256": $sha,
- "fetchSubmodules": true
- }
- }'
- ;;
- *)
- fetch_other 2>/dev/null
- F='{
- "tag": $tag,
- "meta": {
- "name": $name,
- "url": $url,
- "branch": $branch
- },
- "git": {
- "url": $url,
- "rev": $rev,
- "sha256": $sha,
- "fetchSubmodules": true
- }
- }'
- ;;
-esac
-
-jq -n \
- --arg name "$name" \
- --arg owner "$owner" \
- --arg repo "$repo" \
- --arg tag "$tag" \
- --arg rev "$rev" \
- --arg url "$url" \
- --arg branch "$branch" \
- --arg sha "$sha" \
- "$F" > $file
diff --git a/scripts/make-nur b/scripts/make-nur
index 127f8bd..2b7278f 100755
--- a/scripts/make-nur
+++ b/scripts/make-nur
@@ -19,7 +19,7 @@ git rebase --onto=$nur_root $first_commit master
# The list below musn't get shrinked, it is used by filter-branch on
# every commit
clean_folder='
- rm -rf config lib/private modules/private pkgs/private nixops
+ rm -rf config lib/private modules/private pkgs/private deploy
for broken in pkgs/crypto/cardano/default.nix; do
if [ -f $broken ]; then
rm -f $broken
diff --git a/scripts/refresh_flakes b/scripts/refresh_flakes
new file mode 100755
index 0000000..2bbcad6
--- /dev/null
+++ b/scripts/refresh_flakes
@@ -0,0 +1,71 @@
+#!/usr/bin/env bash
+
+set -e
+
+declare -A refreshed
+
+while [ -n "$1" ]; do
+ case "$1" in
+ --no-new-inputs)
+ no_new_inputs="y"
+ shift;;
+ *)
+ flake_or_dir="$1"
+ shift;;
+ esac
+done
+
+refresh_deps() {
+ local flake
+ local inputs=()
+ local depname
+ local deppath
+ flake="$(realpath $1)"
+ if [ "${refreshed[$flake]}" = 1 ]; then
+ return
+ fi
+ pushd "$flake" 2>/dev/null >/dev/null
+ if [ -z "$no_new_inputs" ]; then
+ nix --no-warn-dirty flake lock
+ fi
+ if [ ! -e "$flake/flake.lock" ]; then
+ popd 2>/dev/null >/dev/null
+ refreshed[$flake]=1
+ return
+ fi
+
+ deps=$(jq -r '. as $root | .nodes[.root].inputs|values|to_entries|map({ key: .key, value: $root.nodes[.value].original.path })[]|select(.value != null)|.key + " " + .value' < flake.lock)
+ if [ -n "$deps" ]; then
+ while read depname deppath; do
+ refresh_deps "$deppath"
+ inputs+=(--update-input "$depname")
+ done <<<"$deps"
+ fi
+ nix --no-warn-dirty flake lock "${inputs[@]}"
+ popd 2>/dev/null >/dev/null
+ refreshed[$flake]=1
+}
+
+git_dir=$(git rev-parse --show-toplevel)
+
+# If argument is given (flake.nix or directory containing), refresh that argument
+# Otherwise, if we are in a subdirectory containing a flake.nix, refresh that
+# Otherwise, refresh all
+if [ -n "$flake_or_dir" ]; then
+ if [ -d "$flake_or_dir" -a -e "$1/flake.nix" ]; then
+ refresh_deps "$flake_or_dir"
+ elif [ -f "$flake_or_dir" -a -e "$(dirname $flake_or_dir)/flake.nix" ]; then
+ refresh_deps "$(dirname $flake_or_dir)"
+ else
+ echo "No flake.nix file in specified location"
+ exit 1
+ fi
+else
+ if [ "$(pwd)" != "$git_dir" -a -e "$(pwd)/flake.nix" ]; then
+ refresh_deps "$(pwd)"
+ else
+ find $git_dir -name "flake.lock" | while read flake; do
+ refresh_deps "$(dirname $flake)"
+ done
+ fi
+fi
diff --git a/scripts/setup b/scripts/setup
new file mode 100755
index 0000000..db0f353
--- /dev/null
+++ b/scripts/setup
@@ -0,0 +1,90 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+if ! which nix 2>/dev/null >/dev/null; then
+ cat <<-EOF
+ nix is needed, please install it:
+ > curl https://nixos.org/nix/install | sh
+ (or any other way handled by your distribution)
+ EOF
+ exit 1
+fi
+
+if [ "${NIX_STORE:-/nix/store}" != "/nix/store" ]; then
+ cat <<-EOF
+ Nix store outside of /nix/store is not supported
+ EOF
+ exit 1
+fi
+
+if ! which direnv 2>/dev/null >/dev/null; then
+ cat <<-EOF
+ direnv is needed, please install it
+ EOF
+ exit 1
+fi
+
+if [ -z "$NIXOPS_ENV_LOADED" ]; then
+ cat <<-EOF
+ direnv environment needs to be loaded
+ EOF
+ exit 1
+fi
+
+if [ "$(git config --get include.path)" != "../.gitconfig" ]; then
+ cat <<-EOF
+ it is recommended to include the .gitconfig file into (local) git configuration:
+ git config --local include.path '../.gitconfig'
+ Run this command? [y/N]
+ EOF
+ read y
+ if [ "$y" = "y" -o "$y" = "Y" ]; then
+ git config --local include.path '../.gitconfig'
+ fi
+fi
+
+for key in public_keys/*; do
+ fpr=$(cat "$key" | gpg --import-options show-only --import --with-colons | grep -e "^pub" | cut -d':' -f5)
+ gpg --list-key "$fpr" >/dev/null 2>/dev/null && imported=yes || imported=no
+ # /usr/share/doc/gnupg/DETAILS field 2
+ (cat "$key" | gpg --import-options show-only --import --with-colons |
+ grep -E '^pub:' |
+ cut -d':' -f2 |
+ grep -q '[fu]') && signed=yes || signed=no
+ if [ "$signed" = no -o "$imported" = no ] ; then
+ echo "The key for $key needs to be imported and signed (a local signature is enough)"
+ cat "$key" | gpg --import-options show-only --import
+ echo "Continue? [y/N]"
+ read y
+ if [ "$y" = "y" -o "$y" = "Y" ]; then
+ cat "$key" | gpg --import
+ gpg --expert --edit-key "$fpr" lsign quit
+ else
+ echo "Aborting"
+ exit 1
+ fi
+ fi
+done
+
+if nix show-config --json | jq -e '.sandbox.value == "true"' >/dev/null; then
+ cat <<-EOF
+ There used to be some impure derivations (grep __noChroot), you may need
+ sandbox = "relaxed"
+ in /etc/nix/nix.conf
+ you may also want to add
+ keep-outputs = true
+ keep-derivations = true
+ to prevent garbage collector from deleting build dependencies (they take a lot of time to build)
+ and
+ allow-import-from-derivation = false
+ as an attempt to avoid having build-time derivations (doesn’t work for all packages)
+ press key to continue
+ EOF
+ read y
+fi
+
+cat <<-EOF
+ All set up.
+ Please make sure you’re using make commands when deploying
+ EOF
diff --git a/scripts/update_flake b/scripts/update_flake
new file mode 100755
index 0000000..3a9cd17
--- /dev/null
+++ b/scripts/update_flake
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+
+searched_file="$1"
+
+get_inputs() {
+ flake=$1
+ name=$2
+ cat "$flake" | jq -r --arg name "$name" '.nodes|to_entries[]|select(.value.original.path != null and (.value.original.path|test("(../)+" + $name)))|.key'
+}
+
+find flakes -name "flake.lock" | while read flake; do
+ for input in $(get_inputs "$flake" "$searched_file"); do
+ echo "updating $input in $(dirname "$flake")"
+ pushd "$(dirname "$flake")" >/dev/null 2>/dev/null
+ nix flake update --update-input "$input"
+ popd >/dev/null 2>/dev/null
+ done
+done
diff --git a/scripts/with_env b/scripts/with_env
new file mode 100755
index 0000000..783d86c
--- /dev/null
+++ b/scripts/with_env
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+if [ -z "$SOPS_VARS_FILE" ]; then
+ echo "Variable SOPS_VARS_FILE is needed with a path to the sops variables"
+ exit 1;
+fi
+
+umask 0077
+TEMP=$(mktemp -d /tmp/XXXXXX-nixops-files)
+chmod go-rwx $TEMP
+
+finish() {
+ rm -rf "$TEMP"
+}
+
+trap finish EXIT
+
+sops -d $SOPS_VARS_FILE | yq -r .ssl_keys.nix_repository > $TEMP/id_ed25519
+
+cat > $TEMP/ssh_config < { overlays = builtins.attrValues (import ./overlays); },
- pkgs-nix ? import { overlays = builtins.attrValues (import ./overlays); }
-}:
-let
- patchedNix = pkgs-nix.nixUnstable.overrideAttrs(old: {
- patches = old.patches ++ [
- # Fix the ETag bug. PR merged. Remove when updating to >= 20210125
- # https://github.com/NixOS/nixpkgs/pull/109309#issuecomment-768331750
- (pkgs-nix.fetchpatch {
- url = "https://patch-diff.githubusercontent.com/raw/NixOS/nix/pull/4470.diff";
- sha256 = "sha256-d4RNOKMxa4NMbFgYcqWRv2ByHt8F/XUWV+6P9qHz7S4=";
- })
- ];
- });
-in
-pkgs.mkShell {
- buildInputs = [ patchedNix pkgs.sops pkgs.morph pkgs.niv pkgs.curl pkgs.shellcheck pkgs.jq pkgs.gnumake pkgs.yq ];
-}
diff --git a/systems/backup-2/base.nix b/systems/backup-2/base.nix
new file mode 100644
index 0000000..97a364c
--- /dev/null
+++ b/systems/backup-2/base.nix
@@ -0,0 +1,164 @@
+{ config, pkgs, resources, name, lib, nixpkgs, secrets, ... }:
+{
+ # ssh-keyscan backup-2 | nix-shell -p ssh-to-age --run ssh-to-age
+ secrets.ageKeys = [ "age1kk3nr27qu42j28mcfdag5lhq0zu2pky7gfanvne8l4z2ctevjpgskmw0sr" ];
+ secrets.keys = {
+ "rsync_backup/identity" = {
+ user = "backup";
+ group = "backup";
+ permissions = "0400";
+ text = config.myEnv.rsync_backup.ssh_key.private;
+ };
+ "rsync_backup/identity.pub" = {
+ user = "backup";
+ group = "backup";
+ permissions = "0444";
+ text = config.myEnv.rsync_backup.ssh_key.public;
+ };
+ };
+ boot.kernelPackages = pkgs.linuxPackages_latest;
+
+ nixpkgs.config.permittedInsecurePackages = [
+ "python-2.7.18.6" # for nagios-cli
+ ];
+
+ imports =
+ [
+ secrets.nixosModules.users-config-backup-2
+ (nixpkgs + "/nixos/modules/profiles/qemu-guest.nix")
+ ./databases/mariadb_replication.nix
+ ./databases/openldap_replication.nix
+ ./databases/postgresql_replication.nix
+ ./databases/redis_replication.nix
+ ./mail/relay.nix
+ ./monitoring.nix
+ ];
+
+ fileSystems = {
+ "/backup2" = {
+ fsType = "ext4";
+ device = "UUID=b9425333-f567-435d-94d8-b26c22d93426";
+ };
+ "/" = { device = "/dev/sda1"; fsType = "ext4"; };
+ };
+
+ networking = {
+ firewall.enable = true;
+ interfaces."ens3".ipv4.addresses = pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
+ (n: ips: map (ip: { address = ip; prefixLength = 32; }) (ips.ip4 or []))
+ (pkgs.lib.attrsets.filterAttrs (n: v: n != "main") config.hostEnv.ips));
+ interfaces."ens3".ipv6.addresses = pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
+ (n: ips: map (ip: { address = ip; prefixLength = (if n == "main" && ip == pkgs.lib.head ips.ip6 then 64 else 128); }) (ips.ip6 or []))
+ config.hostEnv.ips);
+ defaultGateway6 = { address = "fe80::1"; interface = "ens3"; };
+ };
+
+ boot.loader.grub.device = "nodev";
+
+ security.acme.certs."${name}" = {
+ group = config.services.nginx.group;
+ };
+ services.nginx = {
+ enable = true;
+ recommendedOptimisation = true;
+ recommendedGzipSettings = true;
+ recommendedProxySettings = true;
+ };
+ networking.firewall.allowedTCPPorts = [ 80 443 ];
+
+ services.cron = {
+ mailto = "cron@immae.eu";
+ enable = true;
+ };
+
+ myServices.chatonsProperties.hostings.rsync-backup = {
+ file.datetime = "2022-08-27T16:00:00";
+ hosting = {
+ name = "Rsync backups";
+ description = "Remote initiated rsync backups";
+ website = "backup-2.v.immae.eu";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "rsync";
+ website = "https://rsync.samba.org/";
+ license.url = "https://rsync.samba.org/GPL.html";
+ license.name = "GNU General Public License version 3";
+ version = pkgs.rsync.version;
+ source.url = "https://github.com/WayneD/rsync";
+ };
+ };
+
+ services.rsyncBackup = {
+ mountpoint = "/backup2";
+ profiles = config.myEnv.rsync_backup.profiles;
+ ssh_key_public = config.secrets.fullPaths."rsync_backup/identity.pub";
+ ssh_key_private = config.secrets.fullPaths."rsync_backup/identity";
+ };
+
+ myServices.mailRelay.enable = true;
+ myServices.mailBackup.enable = true;
+ myServices.monitoring.enable = true;
+ myServices.databasesReplication = {
+ postgresql = {
+ enable = true;
+ base = "/backup2";
+ mainPackage = pkgs.postgresql;
+ hosts = {
+ eldiron = {
+ slot = "backup_2";
+ connection = "postgresql://backup-2:${config.hostEnv.ldap.password}@eldiron.immae.eu";
+ package = pkgs.postgresql;
+ };
+ };
+ };
+ mariadb = {
+ enable = true;
+ base = "/backup2";
+ hosts = {
+ eldiron = {
+ serverId = 2;
+ # mysql resolves "backup-2" host and checks the ip, but uses /etc/hosts which only contains ip4
+ host = lib.head config.myEnv.servers.eldiron.ips.main.ip4;
+ port = config.myEnv.databases.mysql.port;
+ user = "backup-2";
+ password = config.hostEnv.ldap.password;
+ dumpUser = "root";
+ dumpPassword = config.myEnv.databases.mysql.systemUsers.root;
+ };
+ };
+ };
+ redis = {
+ enable = true;
+ base = "/backup2";
+ hosts = {
+ eldiron = {
+ host = "127.0.0.1";
+ port = "16379";
+ };
+ };
+ };
+ openldap = {
+ enable = true;
+ base = "/backup2";
+ hosts = {
+ eldiron = {
+ url = "ldaps://${config.myEnv.ldap.host}:636";
+ dn = config.myEnv.ldap.replication_dn;
+ password = config.myEnv.ldap.replication_pw;
+ base = config.myEnv.ldap.base;
+ };
+ };
+ };
+ };
+
+ # This value determines the NixOS release with which your system is
+ # to be compatible, in order to avoid breaking some software such as
+ # database servers. You should change this only after NixOS release
+ # notes say you should.
+ # https://nixos.org/nixos/manual/release-notes.html
+ system.stateVersion = "23.05"; # Did you read the comment?
+}
diff --git a/systems/backup-2/databases/mariadb_replication.nix b/systems/backup-2/databases/mariadb_replication.nix
new file mode 100644
index 0000000..8d2b457
--- /dev/null
+++ b/systems/backup-2/databases/mariadb_replication.nix
@@ -0,0 +1,271 @@
+{ pkgs, config, lib, ... }:
+let
+ cfg = config.myServices.databasesReplication.mariadb;
+in
+{
+ options.myServices.databasesReplication.mariadb = {
+ enable = lib.mkEnableOption "Enable mariadb replication";
+ base = lib.mkOption {
+ type = lib.types.path;
+ description = ''
+ Base path to put the replications
+ '';
+ };
+ hosts = lib.mkOption {
+ default = {};
+ description = ''
+ Hosts to backup
+ '';
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ package = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.mariadb;
+ description = ''
+ Mariadb package for this host
+ '';
+ };
+ serverId = lib.mkOption {
+ type = lib.types.int;
+ description = ''
+ Server id to use for replication cluster (must be unique among the cluster!)
+ '';
+ };
+ host = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Host to connect to
+ '';
+ };
+ port = lib.mkOption {
+ type = lib.types.int;
+ description = ''
+ Port to connect to
+ '';
+ };
+ user = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ User to connect as
+ '';
+ };
+ password = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Password to use
+ '';
+ };
+ dumpUser = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ User who can do a dump
+ '';
+ };
+ dumpPassword = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Password for the dump user
+ '';
+ };
+ };
+ });
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.chatonsProperties.hostings.mysql-replication = {
+ file.datetime = "2022-08-27T15:00:00";
+ hosting = {
+ name = "Mysql replication";
+ description = "Replication of mysql database";
+ website = "db-1.immae.eu";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "MariaDB";
+ website = "https://mariadb.org/";
+ license.url = "https://github.com/MariaDB/server/blob/10.11/COPYING";
+ license.name = "GNU General Public License v2.0";
+ version = pkgs.mariadb.version;
+ source.url = "https://github.com/MariaDB/server";
+ };
+ };
+ users.users.mysql = {
+ description = "MySQL server user";
+ group = "mysql";
+ uid = config.ids.uids.mysql;
+ extraGroups = [ "keys" ];
+ };
+ users.groups.mysql.gid = config.ids.gids.mysql;
+
+ secrets.keys = lib.listToAttrs (lib.flatten (lib.mapAttrsToList (name: hcfg: [
+ (lib.nameValuePair "mysql_replication/${name}/slave_init_commands" {
+ user = "mysql";
+ group = "mysql";
+ permissions = "0400";
+ text = ''
+ CHANGE MASTER TO master_host="${hcfg.host}", master_port=${builtins.toString hcfg.port}, master_user="${hcfg.user}", master_password="${hcfg.password}", master_ssl=1, master_use_gtid=slave_pos;
+ START SLAVE;
+ '';
+ })
+ (lib.nameValuePair "mysql_replication/${name}/mysqldump_remote" {
+ permissions = "0400";
+ user = "root";
+ group = "root";
+ text = ''
+ [mysqldump]
+ user = ${hcfg.user}
+ password = ${hcfg.password}
+ '';
+ })
+ (lib.nameValuePair "mysql_replication/${name}/mysqldump" {
+ permissions = "0400";
+ user = "root";
+ group = "root";
+ text = ''
+ [mysqldump]
+ user = ${hcfg.dumpUser}
+ password = ${hcfg.dumpPassword}
+ '';
+ })
+ (lib.nameValuePair "mysql_replication/${name}/client" {
+ permissions = "0400";
+ user = "mysql";
+ group = "mysql";
+ text = ''
+ [client]
+ user = ${hcfg.dumpUser}
+ password = ${hcfg.dumpPassword}
+ '';
+ })
+ ]) cfg.hosts));
+
+ services.cron = {
+ enable = true;
+ systemCronJobs = lib.flatten (lib.mapAttrsToList (name: hcfg:
+ let
+ dataDir = "${cfg.base}/${name}/mysql";
+ backupDir = "${cfg.base}/${name}/mysql_backup";
+ backup_script = pkgs.writeScript "backup_mysql_${name}" ''
+ #!${pkgs.stdenv.shell}
+
+ set -euo pipefail
+
+ filename=${backupDir}/$(${pkgs.coreutils}/bin/date -Iminutes).sql
+ ${hcfg.package}/bin/mysqldump \
+ --defaults-file=${config.secrets.fullPaths."mysql_replication/${name}/mysqldump"} \
+ -S /run/mysqld_${name}/mysqld.sock \
+ --gtid \
+ --master-data \
+ --flush-privileges \
+ --ignore-database=netdata \
+ --all-databases > $filename
+ ${pkgs.gzip}/bin/gzip $filename
+ '';
+ u = pkgs.callPackage ./utils.nix {};
+ cleanup_script = pkgs.writeScript "cleanup_mysql_${name}" (u.exponentialDumps "sql.gz" backupDir);
+ in [
+ "0 22,4,10,16 * * * root ${backup_script}"
+ "0 3 * * * root ${cleanup_script}"
+ ]) cfg.hosts);
+ };
+
+ system.activationScripts = lib.attrsets.mapAttrs' (name: hcfg:
+ lib.attrsets.nameValuePair "mysql_replication_${name}" {
+ deps = [ "users" "groups" ];
+ text = ''
+ install -m 0700 -o mysql -g mysql -d ${cfg.base}/${name}/mysql
+ install -m 0700 -o mysql -g mysql -d ${cfg.base}/${name}/mysql_backup
+ '';
+ }) cfg.hosts;
+
+ environment.etc = lib.attrsets.mapAttrs' (name: hcfg:
+ lib.attrsets.nameValuePair "mysql/${name}_my.cnf" {
+ text = ''
+ [mysqld]
+ skip-networking
+ socket = /run/mysqld_${name}/mysqld.sock
+ datadir = ${cfg.base}/${name}/mysql/
+ log-bin = mariadb-bin
+ server-id = ${builtins.toString hcfg.serverId}
+ '';
+ }
+ ) cfg.hosts;
+
+ systemd.services = lib.attrsets.mapAttrs' (name: hcfg:
+ let
+ dataDir = "${cfg.base}/${name}/mysql";
+ in
+ lib.attrsets.nameValuePair "mysql_backup_${name}" {
+ description = "Mysql replication for ${name}";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+ restartTriggers = [ config.environment.etc."mysql/${name}_my.cnf".source ];
+ unitConfig.RequiresMountsFor = dataDir;
+
+ preStart = ''
+ if ! test -e ${dataDir}/mysql; then
+ if ! test -e ${dataDir}/initial.sql; then
+ ${hcfg.package}/bin/mysqldump \
+ --defaults-file=${config.secrets.fullPaths."mysql_replication/${name}/mysqldump_remote"} \
+ -h ${hcfg.host} \
+ -P ${builtins.toString hcfg.port} \
+ --ssl \
+ --gtid \
+ --flush-privileges \
+ --master-data \
+ --all-databases > ${dataDir}/initial.sql
+ fi
+
+ ${hcfg.package}/bin/mysql_install_db \
+ --defaults-file=/etc/mysql/${name}_my.cnf \
+ --user=mysql \
+ --datadir=${dataDir} \
+ --basedir=${hcfg.package}
+ fi
+ '';
+
+ serviceConfig = {
+ User = "mysql";
+ Group = "mysql";
+ RuntimeDirectory = "mysqld_${name}";
+ RuntimeDirectoryMode = "0755";
+ SupplementaryGroups = "keys";
+ PermissionsStartOnly = true;
+ Type = "notify";
+
+ ExecStart = "${hcfg.package}/bin/mysqld --defaults-file=/etc/mysql/${name}_my.cnf --user=mysql --datadir=${dataDir} --basedir=${hcfg.package}";
+ ExecStartPost =
+ let
+ sql_before = pkgs.writeText "mysql-initial-before" ''
+ DROP DATABASE test;
+ INSTALL SONAME 'auth_pam';
+ '';
+ setupScript = pkgs.writeScript "mysql-setup" ''
+ #!${pkgs.runtimeShell} -e
+
+ if test -e ${dataDir}/initial.sql; then
+ cat \
+ ${sql_before} \
+ ${dataDir}/initial.sql \
+ ${config.secrets.fullPaths."mysql_replication/${name}/slave_init_commands"} \
+ | ${hcfg.package}/bin/mysql \
+ --defaults-file=/etc/mysql/${name}_my.cnf \
+ -S /run/mysqld_${name}/mysqld.sock \
+ --user=root
+ rm -f ${dataDir}/initial.sql
+ fi
+ '';
+ in
+ "+${setupScript}";
+ # initial dump can take a long time
+ TimeoutStartSec="infinity";
+ TimeoutStopSec = 120;
+ };
+ }) cfg.hosts;
+ };
+}
+
diff --git a/systems/backup-2/databases/openldap_replication.nix b/systems/backup-2/databases/openldap_replication.nix
new file mode 100644
index 0000000..b962224
--- /dev/null
+++ b/systems/backup-2/databases/openldap_replication.nix
@@ -0,0 +1,165 @@
+{ pkgs, config, lib, openldap, ... }:
+let
+ cfg = config.myServices.databasesReplication.openldap;
+ ldapConfig = hcfg: name: pkgs.writeText "slapd.conf" ''
+ include ${pkgs.openldap}/etc/schema/core.schema
+ include ${pkgs.openldap}/etc/schema/cosine.schema
+ include ${pkgs.openldap}/etc/schema/inetorgperson.schema
+ include ${pkgs.openldap}/etc/schema/nis.schema
+ include ${openldap.immae-schema}
+ pidfile /run/slapd_${name}/slapd.pid
+ argsfile /run/slapd_${name}/slapd.args
+
+ moduleload back_mdb
+ backend mdb
+ database mdb
+
+ suffix "${hcfg.base}"
+ rootdn "cn=root,${hcfg.base}"
+ directory ${cfg.base}/${name}/openldap
+
+ index objectClass eq
+ index uid pres,eq
+ index entryUUID eq
+
+ include ${config.secrets.fullPaths."openldap_replication/${name}/replication_config"}
+ '';
+in
+{
+ options.myServices.databasesReplication.openldap = {
+ enable = lib.mkEnableOption "Enable openldap replication";
+ base = lib.mkOption {
+ type = lib.types.path;
+ description = ''
+ Base path to put the replications
+ '';
+ };
+ hosts = lib.mkOption {
+ default = {};
+ description = ''
+ Hosts to backup
+ '';
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ package = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.openldap;
+ description = ''
+ Openldap package for this host
+ '';
+ };
+ url = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Host to connect to
+ '';
+ };
+ base = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Base DN to replicate
+ '';
+ };
+ dn = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ DN to use
+ '';
+ };
+ password = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Password to use
+ '';
+ };
+ };
+ });
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ users.users.openldap = {
+ description = "Openldap database user";
+ group = "openldap";
+ uid = config.ids.uids.openldap;
+ extraGroups = [ "keys" ];
+ };
+ users.groups.openldap.gid = config.ids.gids.openldap;
+
+ secrets.keys = lib.listToAttrs (lib.flatten (lib.mapAttrsToList (name: hcfg: [
+ (lib.nameValuePair "openldap_replication/${name}/replication_config" {
+ user = "openldap";
+ group = "openldap";
+ permissions = "0400";
+ text = ''
+ syncrepl rid=000
+ provider=${hcfg.url}
+ type=refreshAndPersist
+ searchbase="${hcfg.base}"
+ retry="5 10 300 +"
+ attrs="*,+"
+ schemachecking=off
+ bindmethod=simple
+ binddn="${hcfg.dn}"
+ credentials="${hcfg.password}"
+ '';
+ })
+ (lib.nameValuePair "openldap_replication/${name}/replication_password" {
+ user = "openldap";
+ group = "openldap";
+ permissions = "0400";
+ text = hcfg.password;
+ })
+ ]) cfg.hosts));
+
+ services.cron = {
+ enable = true;
+ systemCronJobs = lib.flatten (lib.mapAttrsToList (name: hcfg:
+ let
+ dataDir = "${cfg.base}/${name}/openldap";
+ backupDir = "${cfg.base}/${name}/openldap_backup";
+ backup_script = pkgs.writeScript "backup_openldap_${name}" ''
+ #!${pkgs.stdenv.shell}
+
+ ${hcfg.package}/bin/slapcat -b "${hcfg.base}" -f ${ldapConfig hcfg name} -l ${backupDir}/$(${pkgs.coreutils}/bin/date -Iminutes).ldif
+ '';
+ u = pkgs.callPackage ./utils.nix {};
+ cleanup_script = pkgs.writeScript "cleanup_openldap_${name}" (u.exponentialDumps "ldif" backupDir);
+ in [
+ "0 22,4,10,16 * * * root ${backup_script}"
+ "0 3 * * * root ${cleanup_script}"
+ ]) cfg.hosts);
+ };
+
+ system.activationScripts = lib.attrsets.mapAttrs' (name: hcfg:
+ lib.attrsets.nameValuePair "openldap_replication_${name}" {
+ deps = [ "users" "groups" ];
+ text = ''
+ install -m 0700 -o openldap -g openldap -d ${cfg.base}/${name}/openldap
+ install -m 0700 -o openldap -g openldap -d ${cfg.base}/${name}/openldap_backup
+ '';
+ }) cfg.hosts;
+
+ systemd.services = lib.attrsets.mapAttrs' (name: hcfg:
+ let
+ dataDir = "${cfg.base}/${name}/openldap";
+ in
+ lib.attrsets.nameValuePair "openldap_backup_${name}" {
+ description = "Openldap replication for ${name}";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+ unitConfig.RequiresMountsFor = dataDir;
+
+ preStart = ''
+ mkdir -p /run/slapd_${name}
+ chown -R "openldap:openldap" /run/slapd_${name}
+ '';
+
+ serviceConfig = {
+ ExecStart = "${hcfg.package}/libexec/slapd -d 0 -u openldap -g openldap -f ${ldapConfig hcfg name}";
+ };
+ }) cfg.hosts;
+ };
+}
+
+
diff --git a/systems/backup-2/databases/postgresql_replication.nix b/systems/backup-2/databases/postgresql_replication.nix
new file mode 100644
index 0000000..5351a4f
--- /dev/null
+++ b/systems/backup-2/databases/postgresql_replication.nix
@@ -0,0 +1,203 @@
+{ pkgs, config, lib, ... }:
+let
+ cfg = config.myServices.databasesReplication.postgresql;
+in
+{
+ options.myServices.databasesReplication.postgresql = {
+ enable = lib.mkEnableOption "Enable postgresql replication";
+ base = lib.mkOption {
+ type = lib.types.path;
+ description = ''
+ Base path to put the replications
+ '';
+ };
+ mainPackage = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.postgresql;
+ description = ''
+ Postgresql package available in shell
+ '';
+ };
+ hosts = lib.mkOption {
+ default = {};
+ description = ''
+ Hosts to backup
+ '';
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ package = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.postgresql;
+ description = ''
+ Postgresql package for this host
+ '';
+ };
+ slot = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Slot to use for replication
+ '';
+ };
+ connection = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Connection string to access the psql master
+ '';
+ };
+ };
+ });
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.chatonsProperties.hostings.postgresql-replication = {
+ file.datetime = "2022-08-27T15:00:00";
+ hosting = {
+ name = "PostgreSQL replication";
+ description = "Replication of PostgreSQL database";
+ website = "db-1.immae.eu";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "PostgreSQL";
+ website = "https://www.postgresql.org/";
+ license.url = "https://www.postgresql.org/about/licence/";
+ license.name = "The PostgreSQL Licence";
+ version = pkgs.postgresql.version;
+ source.url = "https://git.postgresql.org/gitweb/?p=postgresql.git;a=summary";
+ };
+ };
+ users.users.postgres = {
+ name = "postgres";
+ uid = config.ids.uids.postgres;
+ group = "postgres";
+ description = "PostgreSQL server user";
+ home = "/var/lib/postgresql";
+ useDefaultShell = true;
+ extraGroups = [ "keys" ];
+ };
+ users.groups.postgres.gid = config.ids.gids.postgres;
+ environment.systemPackages = [ cfg.mainPackage ];
+
+ secrets.keys = lib.listToAttrs (lib.flatten (lib.mapAttrsToList (name: hcfg: [
+ (lib.nameValuePair "postgresql_replication/${name}/recovery.conf" {
+ user = "postgres";
+ group = "postgres";
+ permissions = "0400";
+ text = ''
+ standby_mode = on
+ primary_conninfo = '${hcfg.connection}?sslmode=require'
+ primary_slot_name = '${hcfg.slot}'
+ '';
+ })
+ (lib.nameValuePair "postgresql_replication/${name}/connection_string" {
+ user = "postgres";
+ group = "postgres";
+ permissions = "0400";
+ text = hcfg.connection;
+ })
+ (lib.nameValuePair "postgresql_replication/${name}/postgresql.conf" {
+ user = "postgres";
+ group = "postgres";
+ permissions = "0400";
+ text = let
+ dataDir = "${cfg.base}/${name}/postgresql";
+ in ''
+ listen_addresses = '''
+ unix_socket_directories = '${dataDir}'
+ data_directory = '${dataDir}'
+ wal_level = logical
+ max_connections = 300
+ '';
+ })
+ ]) cfg.hosts));
+
+ services.cron = {
+ enable = true;
+ systemCronJobs = lib.flatten (lib.mapAttrsToList (name: hcfg:
+ let
+ dataDir = "${cfg.base}/${name}/postgresql";
+ backupDir = "${cfg.base}/${name}/postgresql_backup";
+ backup_script = pkgs.writeScript "backup_psql_${name}" ''
+ #!${pkgs.stdenv.shell}
+
+ set -euo pipefail
+
+ resume_replication() {
+ ${hcfg.package}/bin/psql -h ${dataDir} -c "SELECT pg_wal_replay_resume();" >/dev/null || echo "impossible to resume replication"
+ }
+
+ trap resume_replication EXIT
+
+ ${hcfg.package}/bin/psql -h ${dataDir} -c "SELECT pg_wal_replay_pause();" >/dev/null || (echo "impossible to pause replication" && false)
+
+ ${hcfg.package}/bin/pg_dumpall -h ${dataDir} -f ${backupDir}/$(${pkgs.coreutils}/bin/date -Iminutes).sql
+ '';
+ u = pkgs.callPackage ./utils.nix {};
+ cleanup_script = pkgs.writeScript "cleanup_postgresql_${name}" (u.keepLastNDumps "sql" backupDir 6);
+ in [
+ "0 22,4,10,16 * * * postgres ${backup_script}"
+ "0 3 * * * postgres ${cleanup_script}"
+ ]) cfg.hosts);
+ };
+
+ system.activationScripts = lib.attrsets.mapAttrs' (name: hcfg:
+ lib.attrsets.nameValuePair "psql_replication_${name}" {
+ deps = [ "users" ];
+ text = ''
+ install -m 0700 -o postgres -g postgres -d ${cfg.base}/${name}/postgresql
+ install -m 0700 -o postgres -g postgres -d ${cfg.base}/${name}/postgresql_backup
+ '';
+ }) cfg.hosts;
+
+ systemd.services = lib.attrsets.mapAttrs' (name: hcfg:
+ let
+ dataDir = "${cfg.base}/${name}/postgresql";
+ in
+ lib.attrsets.nameValuePair "postgresql_backup_${name}" {
+ description = "Postgresql replication for ${name}";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+
+ environment.PGDATA = dataDir;
+ path = [ hcfg.package ];
+
+ preStart = ''
+ if ! test -e ${dataDir}/PG_VERSION; then
+ mkdir -m 0700 -p ${dataDir}
+ chown -R postgres:postgres ${dataDir}
+ fi
+ '';
+ script = let
+ fp = n: config.secrets.fullPaths."postgresql_replication/${name}/${n}";
+ in ''
+ if ! test -e ${dataDir}/PG_VERSION; then
+ pg_basebackup -d $(cat ${fp "connection_string"}) -D ${dataDir} -S ${hcfg.slot}
+ fi
+ ln -sfn ${fp "recovery.conf"} ${dataDir}/recovery.conf
+ ln -sfn ${fp "postgresql.conf"} ${dataDir}/postgresql.conf
+
+ exec postgres
+ '';
+
+ serviceConfig = {
+ ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
+ User = "postgres";
+ Group = "postgres";
+ PermissionsStartOnly = true;
+ RuntimeDirectory = "postgresql";
+ Type = "notify";
+
+ KillSignal = "SIGINT";
+ KillMode = "mixed";
+ # basebackup can take a long time
+ TimeoutStartSec="infinity";
+ TimeoutStopSec = 120;
+ };
+ unitConfig.RequiresMountsFor = dataDir;
+ }) cfg.hosts;
+ };
+}
diff --git a/systems/backup-2/databases/redis_replication.nix b/systems/backup-2/databases/redis_replication.nix
new file mode 100644
index 0000000..53fa904
--- /dev/null
+++ b/systems/backup-2/databases/redis_replication.nix
@@ -0,0 +1,171 @@
+{ pkgs, config, lib, ... }:
+let
+ cfg = config.myServices.databasesReplication.redis;
+in
+{
+ options.myServices.databasesReplication.redis = {
+ enable = lib.mkEnableOption "Enable redis replication";
+ base = lib.mkOption {
+ type = lib.types.path;
+ description = ''
+ Base path to put the replications
+ '';
+ };
+ hosts = lib.mkOption {
+ default = {};
+ description = ''
+ Hosts to backup
+ '';
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ package = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.redis;
+ description = ''
+ Redis package for this host
+ '';
+ };
+ host = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Host to connect to
+ '';
+ };
+ port = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Port to connect to
+ '';
+ };
+ password = lib.mkOption {
+ type = lib.types.nullOr lib.types.str;
+ default = null;
+ description = ''
+ Password to use
+ '';
+ };
+ };
+ });
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ users.users.redis = {
+ description = "Redis database user";
+ group = "redis";
+ uid = config.ids.uids.redis;
+ extraGroups = [ "keys" ];
+ };
+ users.groups.redis.gid = config.ids.gids.redis;
+
+ services.spiped = { # sync from eldiron
+ enable = true;
+ config.redis = {
+ encrypt = true;
+ source = "127.0.0.1:16379";
+ target = "${lib.head config.myEnv.servers.eldiron.ips.main.ip4}:16379";
+ keyfile = config.secrets.fullPaths."redis/spiped_eldiron_keyfile";
+ };
+ };
+
+ secrets.keys = lib.mapAttrs' (name: hcfg:
+ lib.nameValuePair "redis_replication/${name}/config" {
+ user = "redis";
+ group = "redis";
+ permissions = "0400";
+ text = ''
+ pidfile ${cfg.base}/${name}/redis/redis.pid
+ port 0
+ unixsocket /run/redis_${name}/redis.sock
+ loglevel notice
+ logfile /dev/null
+ syslog-enabled yes
+ databases 16
+ save 900 1
+ save 300 10
+ save 60 10000
+ dbfilename dump.rdb
+ dir ${cfg.base}/${name}/redis/
+ slaveof ${hcfg.host} ${hcfg.port}
+ ${if hcfg.password != null then "masterauth ${hcfg.password}" else ""}
+ appendOnly no
+ appendfsync everysec
+ slowlog-log-slower-than 10000
+ slowlog-max-len 128
+ unixsocketperm 777
+ maxclients 1024
+ '';
+ }
+ ) cfg.hosts // {
+ "redis/spiped_eldiron_keyfile" = { # For eldiron only
+ user = "spiped";
+ group = "spiped";
+ permissions = "0400";
+ text = config.myEnv.databases.redis.spiped_key;
+ };
+ };
+
+ services.cron = {
+ enable = true;
+ systemCronJobs = lib.flatten (lib.mapAttrsToList (name: hcfg:
+ let
+ dataDir = "${cfg.base}/${name}/redis";
+ backupDir = "${cfg.base}/${name}/redis_backup";
+ backup_script = pkgs.writeScript "backup_redis_${name}" ''
+ #!${pkgs.stdenv.shell}
+
+ ${pkgs.coreutils}/bin/cp ${cfg.base}/${name}/redis/dump.rdb \
+ ${backupDir}/$(${pkgs.coreutils}/bin/date -Iminutes).rdb
+ '';
+ u = pkgs.callPackage ./utils.nix {};
+ cleanup_script = pkgs.writeScript "cleanup_redis_${name}" (u.exponentialDumps "rdb" backupDir);
+ in [
+ "0 22,4,10,16 * * * root ${backup_script}"
+ "0 3 * * * root ${cleanup_script}"
+ ]) cfg.hosts);
+ };
+
+ system.activationScripts = lib.attrsets.mapAttrs' (name: hcfg:
+ lib.attrsets.nameValuePair "redis_replication_${name}" {
+ deps = [ "users" "groups" ];
+ text = ''
+ install -m 0700 -o redis -g redis -d ${cfg.base}/${name}/redis
+ install -m 0700 -o redis -g redis -d ${cfg.base}/${name}/redis_backup
+ '';
+ }) cfg.hosts;
+
+ systemd.services = {
+ spiped_redis = { # For eldiron
+ description = "Secure pipe 'redis'";
+ after = [ "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+
+ serviceConfig = {
+ Restart = "always";
+ User = "spiped";
+ PermissionsStartOnly = true;
+ SupplementaryGroups = "keys";
+ };
+
+ script = "exec ${pkgs.spiped}/bin/spiped -F `cat /etc/spiped/redis.spec`";
+ };
+ } // lib.attrsets.mapAttrs' (name: hcfg:
+ let
+ dataDir = "${cfg.base}/${name}/redis";
+ in
+ lib.attrsets.nameValuePair "redis_backup_${name}" {
+ description = "Redis replication for ${name}";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+ unitConfig.RequiresMountsFor = dataDir;
+
+ serviceConfig = {
+ ExecStart = "${hcfg.package}/bin/redis-server ${config.secrets.fullPaths."redis_replication/${name}/config"}";
+ User = "redis";
+ RuntimeDirectory = "redis_${name}";
+ };
+ }) cfg.hosts;
+ };
+}
+
+
diff --git a/systems/backup-2/databases/utils.nix b/systems/backup-2/databases/utils.nix
new file mode 100644
index 0000000..1b3190f
--- /dev/null
+++ b/systems/backup-2/databases/utils.nix
@@ -0,0 +1,30 @@
+{ pkgs }:
+{
+ keepLastNDumps = ext: backupDir: n: ''
+ #!${pkgs.stdenv.shell}
+
+ cd ${backupDir}
+ ${pkgs.coreutils}/bin/rm -f \
+ $(${pkgs.coreutils}/bin/ls -1 *.${ext} \
+ | ${pkgs.coreutils}/bin/sort -r \
+ | ${pkgs.gnused}/bin/sed -e '1,${builtins.toString n}d')
+ '';
+ exponentialDumps = ext: backupDir: let
+ log2rotateSrc = builtins.fetchGit {
+ url = "https://github.com/avian2/pylog2rotate";
+ ref = "master";
+ rev = "061f0564757289d3bea553b16f8fd5c4a0319c5e";
+ };
+ log2rotate = pkgs.writeScript "log2rotate" ''
+ #!${pkgs.python38}/bin/python
+
+ ${builtins.readFile "${log2rotateSrc}/log2rotate.py"}
+ '';
+ in ''
+ #!${pkgs.stdenv.shell}
+
+ cd ${backupDir}
+ ${pkgs.coreutils}/bin/rm -f $(ls -1 *.${ext} | grep -v 'T22:' | sort -r | sed -e '1,12d')
+ ${pkgs.coreutils}/bin/rm -f $(ls -1 *T22*.${ext} | ${log2rotate} --skip 7 --fuzz 7 --delete --format='%Y-%m-%dT%H:%M+00:00.${ext}')
+ '';
+}
diff --git a/systems/backup-2/flake.lock b/systems/backup-2/flake.lock
new file mode 100644
index 0000000..46003ba
--- /dev/null
+++ b/systems/backup-2/flake.lock
@@ -0,0 +1,1159 @@
+{
+ "nodes": {
+ "backports": {
+ "inputs": {
+ "flake-utils": "flake-utils_6",
+ "nixpkgs": "nixpkgs_10"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "chatons": {
+ "inputs": {
+ "environment": "environment"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ }
+ },
+ "colmena": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils_3",
+ "nixpkgs": "nixpkgs_3",
+ "stable": "stable"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "disko": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_4"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_2"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_3"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_3": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_4": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_5": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_6": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "loginctl-linger": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "mail-relay": {
+ "inputs": {
+ "environment": "environment_3",
+ "secrets": "secrets"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ }
+ },
+ "milters": {
+ "inputs": {
+ "environment": "environment_4",
+ "files-watcher": "files-watcher",
+ "openarc": "openarc",
+ "opendmarc": "opendmarc",
+ "secrets": "secrets_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ }
+ },
+ "monitoring": {
+ "inputs": {
+ "environment": "environment_5",
+ "naemon": "naemon",
+ "nixpkgs-lib": "nixpkgs-lib",
+ "secrets": "secrets_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "my-lib": {
+ "inputs": {
+ "colmena": "colmena",
+ "disko": "disko",
+ "flake-parts": "flake-parts",
+ "nixos-anywhere": "nixos-anywhere",
+ "nixpkgs": "nixpkgs_6"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_2",
+ "nixpkgs": "nixpkgs_11",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "naemon": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "nixos-2305": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere": {
+ "inputs": {
+ "disko": [
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305",
+ "nixos-images": "nixos-images",
+ "nixpkgs": "nixpkgs_5",
+ "treefmt-nix": "treefmt-nix"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-images": {
+ "inputs": {
+ "nixos-2305": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_2": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_3": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_10": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_11": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_6": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_7": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_8": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_9": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "openarc": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "myuids": "myuids",
+ "nixpkgs": "nixpkgs",
+ "openarc": "openarc_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_3": {
+ "inputs": {
+ "files-watcher": "files-watcher_2",
+ "openarc": "openarc_4",
+ "secrets": "secrets_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ }
+ },
+ "openarc_4": {
+ "inputs": {
+ "flake-utils": "flake-utils_4",
+ "myuids": "myuids_4",
+ "nixpkgs": "nixpkgs_8",
+ "openarc": "openarc_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "opendmarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_2",
+ "myuids": "myuids_2",
+ "nixpkgs": "nixpkgs_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_2": {
+ "inputs": {
+ "environment": "environment_6",
+ "files-watcher": "files-watcher_3",
+ "opendmarc": "opendmarc_3",
+ "secrets": "secrets_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_3": {
+ "inputs": {
+ "flake-utils": "flake-utils_5",
+ "myuids": "myuids_5",
+ "nixpkgs": "nixpkgs_9"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "openldap": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "chatons": "chatons",
+ "environment": "environment_2",
+ "loginctl-linger": "loginctl-linger",
+ "mail-relay": "mail-relay",
+ "milters": "milters",
+ "monitoring": "monitoring",
+ "my-lib": "my-lib",
+ "myuids": "myuids_3",
+ "nixpkgs": "nixpkgs_7",
+ "openarc": "openarc_3",
+ "opendmarc": "opendmarc_2",
+ "openldap": "openldap",
+ "rsync_backup": "rsync_backup",
+ "secrets": "secrets_6",
+ "system": "system"
+ }
+ },
+ "rsync_backup": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TxLsFx4DTTScMHkvR0pJgzYea6ILiu1Dl6LA67LtYGo=",
+ "path": "../../flakes/rsync_backup",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/rsync_backup",
+ "type": "path"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "stable": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "system": {
+ "inputs": {
+ "backports": "backports",
+ "environment": "environment_7",
+ "mypackages": "mypackages",
+ "myuids": "myuids_6",
+ "secrets-public": "secrets-public"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "treefmt-nix": {
+ "inputs": {
+ "nixpkgs": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/systems/backup-2/flake.nix b/systems/backup-2/flake.nix
new file mode 100644
index 0000000..e6807d6
--- /dev/null
+++ b/systems/backup-2/flake.nix
@@ -0,0 +1,51 @@
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+
+ my-lib.url = "path:../../flakes/lib";
+
+ openldap.url = "path:../../flakes/private/openldap";
+ monitoring.url = "path:../../flakes/private/monitoring";
+ mail-relay.url = "path:../../flakes/private/mail-relay";
+ milters.url = "path:../../flakes/private/milters";
+ openarc.url = "path:../../flakes/private/openarc";
+ opendmarc.url = "path:../../flakes/private/opendmarc";
+ chatons.url = "path:../../flakes/private/chatons";
+ environment.url = "path:../../flakes/private/environment";
+ system.url = "path:../../flakes/private/system";
+
+ myuids.url = "path:../../flakes/myuids";
+ secrets.url = "path:../../flakes/secrets";
+ rsync_backup.url = "path:../../flakes/rsync_backup";
+ loginctl-linger.url = "path:../../flakes/loginctl-linger";
+ };
+ outputs = inputs@{ self, my-lib, nixpkgs, ...}:
+ my-lib.lib.mkColmenaFlake {
+ name = "backup-2";
+ inherit self nixpkgs;
+ system = "x86_64-linux";
+ targetHost = "95.217.19.143";
+ targetUser = "root";
+ nixosModules = {
+ base = ./base.nix;
+ system = inputs.system.nixosModule;
+ mail-relay = inputs.mail-relay.nixosModule;
+ milters = inputs.milters.nixosModule;
+ openarc = inputs.openarc.nixosModule;
+ opendmarc = inputs.opendmarc.nixosModule;
+ chatons = inputs.chatons.nixosModule;
+ monitoring = inputs.monitoring.nixosModule;
+ environment = inputs.environment.nixosModule;
+
+ myuids = inputs.myuids.nixosModule;
+ secrets = inputs.secrets.nixosModule;
+ rsync_backup = inputs.rsync_backup.nixosModule;
+ loginctl-linger = inputs.loginctl-linger.nixosModule;
+ };
+ moduleArgs = {
+ nixpkgs = inputs.nixpkgs;
+ openldap = inputs.openldap;
+ monitoring = inputs.monitoring;
+ };
+ };
+}
diff --git a/systems/backup-2/mail/relay.nix b/systems/backup-2/mail/relay.nix
new file mode 100644
index 0000000..1b7e25e
--- /dev/null
+++ b/systems/backup-2/mail/relay.nix
@@ -0,0 +1,196 @@
+{ lib, pkgs, config, name, nodes, ... }:
+let
+ getDomains = p: lib.mapAttrsToList (n: v: v.fqdn) (lib.filterAttrs (n: v: v.receive) p.emailPolicies);
+ bydomain = builtins.mapAttrs (n: getDomains) nodes.eldiron.config.myServices.dns.zones;
+ receiving_domains = lib.flatten (builtins.attrValues bydomain);
+in
+{
+ options.myServices.mailBackup.enable = lib.mkEnableOption "enable MX backup services";
+ config = lib.mkIf config.myServices.mailBackup.enable {
+ myServices.mail.milters.enable = true;
+ security.acme.certs."mail" = {
+ postRun = ''
+ systemctl restart postfix.service
+ '';
+ domain = config.hostEnv.fqdn;
+ extraDomainNames = let
+ zonesWithMx = builtins.attrNames (lib.filterAttrs (n: v: v.hasEmail) nodes.eldiron.config.myServices.dns.zones);
+ mxs = map (n: "${config.myEnv.servers."${name}".mx.subdomain}.${n}") zonesWithMx;
+ in mxs;
+ };
+ secrets.keys = {
+ "postfix/mysql_alias_maps" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ # We need to specify that option to trigger ssl connection
+ tls_ciphers = TLSv1.2
+ user = ${config.myEnv.mail.postfix.mysql.user}
+ password = ${config.myEnv.mail.postfix.mysql.password}
+ hosts = ${config.myEnv.mail.postfix.mysql.remoteHost}
+ dbname = ${config.myEnv.mail.postfix.mysql.database}
+ query = SELECT DISTINCT 1
+ FROM forwardings
+ WHERE
+ ((regex = 1 AND '%s' REGEXP CONCAT('^',source,'$') ) OR (regex = 0 AND source = '%s'))
+ AND active = 1
+ AND '%s' NOT IN
+ (
+ SELECT source
+ FROM forwardings_blacklisted
+ WHERE source = '%s'
+ ) UNION
+ SELECT 'devnull@immae.eu'
+ FROM forwardings_blacklisted
+ WHERE source = '%s'
+ '';
+ };
+ "postfix/ldap_mailboxes" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ server_host = ldaps://${config.myEnv.mail.dovecot.ldap.host}:636
+ search_base = ${config.myEnv.mail.dovecot.ldap.base}
+ query_filter = ${config.myEnv.mail.dovecot.ldap.postfix_mailbox_filter}
+ bind_dn = ${config.myEnv.mail.dovecot.ldap.dn}
+ bind_pw = ${config.myEnv.mail.dovecot.ldap.password}
+ result_attribute = immaePostfixAddress
+ result_format = dummy
+ version = 3
+ '';
+ };
+ "postfix/sympa_mailbox_maps" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ hosts = ${config.myEnv.mail.sympa.postgresql.host}
+ user = ${config.myEnv.mail.sympa.postgresql.user}
+ password = ${config.myEnv.mail.sympa.postgresql.password}
+ dbname = ${config.myEnv.mail.sympa.postgresql.database}
+ query = SELECT DISTINCT 1 FROM list_table WHERE '%s' IN (
+ CONCAT(name_list, '@', robot_list),
+ CONCAT(name_list, '-request@', robot_list),
+ CONCAT(name_list, '-editor@', robot_list),
+ CONCAT(name_list, '-unsubscribe@', robot_list),
+ CONCAT(name_list, '-owner@', robot_list),
+ CONCAT('sympa-request@', robot_list),
+ CONCAT('sympa-owner@', robot_list),
+ CONCAT('sympa@', robot_list),
+ CONCAT('listmaster@', robot_list),
+ CONCAT('bounce@', robot_list),
+ CONCAT('abuse-feedback-report@', robot_list)
+ )
+ '';
+ };
+ "postfix/ldap_ejabberd_users_immae_fr" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ server_host = ldaps://${config.myEnv.jabber.ldap.host}:636
+ search_base = ${config.myEnv.jabber.ldap.base}
+ query_filter = ${config.myEnv.jabber.postfix_user_filter}
+ domain = immae.fr
+ bind_dn = ${config.myEnv.jabber.ldap.dn}
+ bind_pw = ${config.myEnv.jabber.ldap.password}
+ result_attribute = immaeXmppUid
+ result_format = ejabberd@localhost
+ version = 3
+ '';
+ };
+ };
+
+ networking.firewall.allowedTCPPorts = [ 25 ];
+
+ users.users."${config.services.postfix.user}".extraGroups = [ "keys" ];
+ services.filesWatcher.postfix = {
+ restart = true;
+ paths = [
+ config.secrets.fullPaths."postfix/mysql_alias_maps"
+ config.secrets.fullPaths."postfix/sympa_mailbox_maps"
+ config.secrets.fullPaths."postfix/ldap_ejabberd_users_immae_fr"
+ config.secrets.fullPaths."postfix/ldap_mailboxes"
+ ];
+ };
+ services.postfix = {
+ mapFiles = let
+ virtual_map = {
+ virtual = let
+ cfg = config.myEnv.monitoring.email_check.eldiron;
+ address = "${cfg.mail_address}@${cfg.mail_domain}";
+ aliases = config.myEnv.mail.postfix.common_aliases;
+ in pkgs.writeText "postfix-virtual" (
+ builtins.concatStringsSep "\n" (
+ [ "${address} 1"
+ ] ++
+ map (a: "${a} 1") config.myEnv.mail.postfix.other_aliases ++
+ lib.lists.flatten (map (domain: map (alias: "${alias}@${domain} 1") aliases) receiving_domains)
+ )
+ );
+ };
+ in
+ virtual_map;
+ config = {
+ ### postfix module overrides
+ readme_directory = "${pkgs.postfix}/share/postfix/doc";
+ smtp_tls_CAfile = lib.mkForce "";
+ smtp_tls_cert_file = lib.mkForce "";
+ smtp_tls_key_file = lib.mkForce "";
+
+ message_size_limit = "1073741824"; # Don't put 0 here, it's not equivalent to "unlimited"
+ mailbox_size_limit = "1073741825"; # Workaround, local delivered mails should all go through scripts
+ alias_database = "\$alias_maps";
+
+ ### Relay domains
+ relay_domains = receiving_domains;
+ relay_recipient_maps = let
+ virtual_alias_maps = [
+ "hash:/etc/postfix/virtual"
+ "mysql:${config.secrets.fullPaths."postfix/mysql_alias_maps"}"
+ "ldap:${config.secrets.fullPaths."postfix/ldap_ejabberd_users_immae_fr"}"
+ ];
+ virtual_mailbox_maps = [
+ "ldap:${config.secrets.fullPaths."postfix/ldap_mailboxes"}"
+ "pgsql:${config.secrets.fullPaths."postfix/sympa_mailbox_maps"}"
+ ];
+ in
+ virtual_alias_maps ++ virtual_mailbox_maps;
+ smtpd_relay_restrictions = [
+ "defer_unauth_destination"
+ ];
+
+ ### Additional smtpd configuration
+ smtpd_tls_received_header = "yes";
+ smtpd_tls_loglevel = "1";
+
+ ### Email sending configuration
+ smtp_tls_security_level = "may";
+ smtp_tls_loglevel = "1";
+
+ ### Force ip bind for smtp
+ smtp_bind_address = builtins.head config.myEnv.servers."${name}".ips.main.ip4;
+ smtp_bind_address6 = builtins.head config.myEnv.servers."${name}".ips.main.ip6;
+
+ smtpd_milters = [
+ "unix:${config.myServices.mail.milters.sockets.opendkim}"
+ "unix:${config.myServices.mail.milters.sockets.openarc}"
+ "unix:${config.myServices.mail.milters.sockets.opendmarc}"
+ ];
+ };
+ enable = true;
+ enableSmtp = true;
+ enableSubmission = false;
+ destination = ["localhost"];
+ # This needs to reverse DNS
+ hostname = config.hostEnv.fqdn;
+ setSendmail = false;
+ sslCert = "/var/lib/acme/mail/fullchain.pem";
+ sslKey = "/var/lib/acme/mail/key.pem";
+ recipientDelimiter = "+";
+ };
+ };
+}
+
diff --git a/systems/backup-2/monitoring.nix b/systems/backup-2/monitoring.nix
new file mode 100644
index 0000000..6d769e3
--- /dev/null
+++ b/systems/backup-2/monitoring.nix
@@ -0,0 +1,117 @@
+{ config, pkgs, lib, name, openldap, monitoring, ... }:
+let
+ hostFQDN = config.hostEnv.fqdn;
+ emailCheck = monitoring.lib.emailCheck config.myEnv.monitoring.email_check;
+in
+{
+ config.myServices.monitoring.activatedPlugins = [ "memory" "command" "bandwidth" "file_date" "mysql" "openldap" "redis" "emails" "notify-secondary"];
+ config.myServices.monitoring.objects = lib.mkMerge [
+ (monitoring.lib.objectsCommon {
+ inherit hostFQDN;
+ hostName = name;
+ master = false;
+ processWarn = "60"; processAlert = "70";
+ loadWarn = "4.0"; loadAlert = "6.0";
+ load15Warn = "1.0"; load15Alert = "1.0";
+ interface = builtins.head (builtins.attrNames config.networking.interfaces);
+ })
+
+ {
+ service = [
+ (emailCheck "backup-2" hostFQDN // {
+ __passive_servicegroups = "webstatus-email";
+ })
+ {
+ service_description = "Size on /backup2 partition";
+ use = "local-service";
+ check_command = ["check_local_disk" "10%" "5%" "/backup2"];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ {
+ service_description = "Last backup in /backup2/phare is not too old";
+ use = "local-service";
+ check_command = ["check_last_file_date" "/backup2/phare" "14" "backup"];
+ __passive_servicegroups = "webstatus-backup";
+ }
+ {
+ service_description = "Last backup in /backup2/dilion is not too old";
+ use = "local-service";
+ check_command = ["check_last_file_date" "/backup2/dilion" "14" "backup"];
+ __passive_servicegroups = "webstatus-backup";
+ }
+ {
+ service_description = "Last backup in /backup2/ulminfo is not too old";
+ use = "local-service";
+ check_command = ["check_last_file_date" "/backup2/ulminfo" "14" "backup"];
+ __passive_servicegroups = "webstatus-backup";
+ }
+ {
+ service_description = "Last postgresql dump in /backup2/eldiron/postgresql_backup is not too old";
+ use = "local-service";
+ check_command = ["check_last_file_date" "/backup2/eldiron/postgresql_backup" "7" "postgres"];
+ __passive_servicegroups = "webstatus-databases,webstatus-backup";
+ }
+ {
+ service_description = "Redis replication for eldiron is up to date";
+ use = "local-service";
+ check_command = ["check_redis_replication" "/run/redis_eldiron/redis.sock"];
+ __passive_servicegroups = "webstatus-databases";
+ }
+ {
+ service_description = "Last redis dump in /backup2/eldiron/redis_backup is not too old";
+ use = "local-service";
+ check_command = ["check_last_file_date" "/backup2/eldiron/redis_backup" "7" "redis"];
+ __passive_servicegroups = "webstatus-databases,webstatus-backup";
+ }
+ {
+ service_description = "Mysql replication for eldiron is up to date";
+ use = "local-service";
+ check_command = ["check_mysql_replication" "/run/mysqld_eldiron/mysqld.sock" config.secrets.fullPaths."mysql_replication/eldiron/client"];
+ __passive_servicegroups = "webstatus-databases";
+ }
+ {
+ service_description = "Last mysql dump in /backup2/eldiron/mysql_backup is not too old";
+ use = "local-service";
+ check_command = ["check_last_file_date" "/backup2/eldiron/mysql_backup" "7" "mysql"];
+ __passive_servicegroups = "webstatus-databases,webstatus-backup";
+ }
+ {
+ service_description = "Openldap replication for eldiron is up to date";
+ use = "local-service";
+ check_command = let
+ name = "eldiron";
+ hcfg = config.myServices.databasesReplication.openldap.hosts.eldiron;
+ base = config.myServices.databasesReplication.openldap.base;
+ ldapConfig = pkgs.writeText "slapd.conf" ''
+ include ${pkgs.openldap}/etc/schema/core.schema
+ include ${pkgs.openldap}/etc/schema/cosine.schema
+ include ${pkgs.openldap}/etc/schema/inetorgperson.schema
+ include ${pkgs.openldap}/etc/schema/nis.schema
+ include ${openldap.immae-schema}
+ moduleload back_mdb
+ backend mdb
+ database mdb
+
+ suffix "${hcfg.base}"
+ directory ${base}/${name}/openldap
+ '';
+ in [
+ "check_openldap_replication"
+ hcfg.url
+ hcfg.dn
+ config.secrets.fullPaths."openldap_replication/eldiron/replication_password"
+ hcfg.base
+ "${ldapConfig}"
+ ];
+ __passive_servicegroups = "webstatus-databases";
+ }
+ {
+ service_description = "Last openldap dump in /backup2/eldiron/openldap_backup is not too old";
+ use = "local-service";
+ check_command = ["check_last_file_date" "/backup2/eldiron/openldap_backup" "7" "openldap"];
+ __passive_servicegroups = "webstatus-databases,webstatus-backup";
+ }
+ ];
+ }
+ ];
+}
diff --git a/systems/dilion/base.nix b/systems/dilion/base.nix
new file mode 100644
index 0000000..ac4bdaf
--- /dev/null
+++ b/systems/dilion/base.nix
@@ -0,0 +1,309 @@
+{ config, pkgs, name, lib, pkgs-no-overlay, secrets, ... }:
+{
+ # ssh-keyscan dilion | nix-shell -p ssh-to-age --run ssh-to-age
+ secrets.ageKeys = [ "age1x49n6qa0arkdpq8530s7umgm0gqkq90exv4jep97q30rfnzknpaqate06a" ];
+ boot = {
+ loader = {
+ grub = {
+ devices = [ "/dev/sda" "/dev/sdb" "/dev/sdc" "/dev/sdd" ];
+ };
+ timeout = 1;
+ };
+ blacklistedKernelModules = [ "nvidiafb" ];
+ supportedFilesystems = [ "zfs" ];
+ kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
+ kernelModules = [ "kvm-intel" ];
+ initrd.availableKernelModules = [ "ahci" "sd_mod" ];
+ initrd.secrets = {
+ "/boot/pass.key" = "/boot/pass.key";
+ };
+ kernel.sysctl."vm.nr_hugepages" = 256; # for xmr-stak
+ # available in nixos-20.09
+ #zfs.requestEncryptionCredentials = [ "zpool/root" ];
+ };
+ powerManagement.cpuFreqGovernor = "powersave";
+ hardware.enableRedistributableFirmware = true;
+
+ swapDevices = [ { label = "swap"; } ];
+ fileSystems = {
+ "/" = { fsType = "zfs"; device = "zpool/root"; };
+ "/boot" = { fsType = "ext4"; device = "/dev/disk/by-uuid/fd1c511e-2bc0-49d5-b8bb-95e7e8c8c816"; };
+ "/etc" = { fsType = "zfs"; device = "zpool/root/etc"; };
+ "/home" = { fsType = "zfs"; device = "zpool/root/home"; };
+ "/home/immae" = { fsType = "zfs"; device = "zpool/root/home/immae"; };
+ "/tmp" = { fsType = "zfs"; device = "zpool/root/tmp"; };
+ "/var" = { fsType = "zfs"; device = "zpool/root/var"; };
+ "/data" = { fsType = "ext4"; label = "data"; };
+ "/nix" = { fsType = "ext4"; label = "nix"; };
+ };
+
+ services.udev.extraRules = ''
+ ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="10:bf:48:7f:e6:3b", NAME="eth0"
+ '';
+
+ nixpkgs.config.permittedInsecurePackages = [
+ "python-2.7.18.6" # for nagios-cli
+ ];
+
+ networking = {
+ hostId = "27c3048d"; # generated with head -c4 /dev/urandom | od -A none -t x4
+ firewall.enable = false;
+ interfaces."eth0".ipv4.addresses =
+ [ { address = lib.head config.hostEnv.ips.main.ip4; prefixLength = 27; } ]
+ ++ pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
+ (n: ips: map (ip: { address = ip; prefixLength = 32; }) (ips.ip4 or []))
+ (pkgs.lib.attrsets.filterAttrs (n: v: n != "main") config.hostEnv.ips));
+ interfaces."eth0".ipv6.addresses =
+ [ { address = "2a01:4f8:141:53e7::"; prefixLength = 64; } ]
+ ++ pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
+ (n: ips: map (ip: { address = ip; prefixLength = (if n == "main" && ip == pkgs.lib.head ips.ip6 then 64 else 128); }) (ips.ip6 or []))
+ config.hostEnv.ips);
+ defaultGateway = { address = "176.9.10.225"; interface = "eth0"; };
+ defaultGateway6 = { address = "fe80::1"; interface = "eth0"; };
+ nameservers = [
+ "213.133.98.98"
+ "213.133.99.99"
+ "213.133.100.100"
+ "2a01:4f8:0:a0a1::add:1010"
+ "2a01:4f8:0:a102::add:9999"
+ "2a01:4f8:0:a111::add:9898"
+ ];
+ };
+
+ myServices.ssh.modules.regular.snippet = builtins.readFile ./ssh_ldap_regular.sh;
+
+ imports = [
+ secrets.nixosModules.users-config-dilion
+ ./monitoring.nix
+ ./vms.nix
+ ];
+
+ myServices.vms.libvirt-guests = {
+ buildbot = {
+ pool = "zfspool";
+ network = "immae";
+ cpus = 1;
+ memory = 3;
+ diskSize = 10;
+ destroyVolumeOnExit = true;
+ };
+ };
+ myServices.vms.libvirt-images = {
+ nixos = ./vms/base_configuration.nix;
+ buildbot = ./vms/buildbot_configuration.nix;
+ };
+ myServices.vms.libvirt-networks.immae = {
+ bridgeNumber = 1;
+ ipRange = "192.168.100";
+ };
+ myServices.vms.libvirt-pools = {
+ niximages = {
+ type = "dir";
+ target = "/etc/libvirtd/base-images";
+ };
+ buildbot-disks = rec {
+ type = "dir";
+ target = "/var/lib/libvirt/images/buildbot-disks";
+ preStart = ''
+ mkdir -p ${target}
+ '';
+ };
+ zfspool = {
+ # pool-define-as --name zfspool --source-name zpool/libvirt --type zfs
+ type = "zfs";
+ xml = ''
+
+ zpool/libvirt
+
+ '';
+ };
+ };
+
+ system.nssModules = [ pkgs.libvirt ];
+ system.nssDatabases.hosts = lib.mkForce [ "files" "libvirt_guest" "mymachines" "dns" "myhostname" ];
+ programs.zsh.enable = true;
+
+ users.users.libvirt = {
+ hashedPassword = "!";
+ shell = pkgs.bashInteractive;
+ isSystemUser = true;
+ group = "libvirtd";
+ packages = [ pkgs.libressl.nc ];
+ openssh.authorizedKeys.keys = [
+ config.myEnv.buildbot.ssh_key.public
+ config.myEnv.sshd.rootKeys.ismael_flony
+ ];
+ };
+
+ users.groups.backup = {};
+ users.users.backup = {
+ hashedPassword = "!";
+ isSystemUser = true;
+ extraGroups = [ "keys" ];
+ group = "backup";
+ shell = pkgs.bashInteractive;
+ openssh.authorizedKeys.keys = let
+ zreplConfig = "/etc/zrepl/zrepl.yml";
+ in
+ ["command=\"${pkgs.zrepl}/bin/zrepl stdinserver --config ${zreplConfig} eldiron\",restrict ${config.myEnv.zrepl_backup.ssh_key.public}"];
+ };
+ security.sudo.extraRules = pkgs.lib.mkAfter [
+ {
+ commands = [
+ { command = "/home/immae/.nix-profile/root_scripts/*"; options = [ "NOPASSWD" ]; }
+ ];
+ users = [ "immae" ];
+ runAs = "root";
+ }
+ ];
+
+ virtualisation.docker.enable = true;
+ virtualisation.docker.storageDriver = "zfs";
+ virtualisation.libvirtd.enable = true;
+ virtualisation.libvirtd.qemu.package = pkgs-no-overlay.qemu;
+ systemd.services.libvirtd.path = lib.mkAfter [ config.boot.zfs.package ];
+ users.groups.immae = {};
+ users.extraUsers.immae.extraGroups = [ "immae" "libvirtd" "docker" ];
+ systemd.services.libvirtd.postStart = ''
+ install -m 0770 -g libvirtd -d /var/lib/libvirt/images
+ '';
+
+ time.timeZone = "Europe/Paris";
+ nix = {
+ settings = {
+ sandbox = "relaxed";
+ max-jobs = 8;
+ substituters = [ "https://hydra.iohk.io" "https://cache.nixos.org" ];
+ trusted-public-keys = [ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" ];
+ trusted-users = [ "root" "@wheel"] ;
+ };
+ extraOptions = ''
+ keep-outputs = true
+ keep-derivations = true
+ allow-unsafe-native-code-during-evaluation = true
+ experimental-features = nix-command flakes
+ #Assumed in NUR
+ allow-import-from-derivation = true
+ '';
+ };
+
+ security.pki.certificateFiles = [
+ (pkgs.fetchurl {
+ url = "http://downloads.e.eriomem.net/eriomemca.pem";
+ sha256 = "1ixx4c6j3m26j8dp9a3dkvxc80v1nr5aqgmawwgs06bskasqkvvh";
+ })
+ ];
+
+ myServices.monitoring.enable = true;
+ security.acme.certs."${name}-immae" = {
+ group = "immae";
+ domain = "dilion.immae.eu";
+ };
+ security.acme.certs."${name}" = {
+ group = config.services.nginx.group;
+ extraDomainNames = [
+ "dilion.immae.dev"
+ ];
+ };
+ systemd.services.nginx.serviceConfig.ProtectHome = "read-only";
+ services.nginx = {
+ enable = true;
+ recommendedOptimisation = true;
+ recommendedGzipSettings = true;
+ recommendedProxySettings = true;
+ virtualHosts = {
+ "dilion.immae.dev" = {
+ acmeRoot = config.security.acme.defaults.webroot;
+ useACMEHost = name;
+ forceSSL = true;
+ locations."/".root = "/home/immae/www";
+ };
+ };
+ };
+
+ secrets.keys = {
+ "zrepl/${name}.key" = {
+ permissions = "0400";
+ text = config.myEnv.zrepl_backup.certs."${name}".key;
+ user = "backup";
+ group = "root";
+ };
+ } // builtins.listToAttrs (map (x: lib.attrsets.nameValuePair "zrepl/certificates/${x}.crt" {
+ permissions = "0400";
+ text = config.myEnv.zrepl_backup.certs."${x}".certificate;
+ user = "backup";
+ group = "root";
+ }) (builtins.attrNames config.myEnv.zrepl_backup.certs));
+
+ environment.etc."mdadm.conf" = {
+ enable = true;
+ mode = "0644";
+ user = "root";
+ text = "MAILADDR ${config.myEnv.monitoring.email}";
+ };
+
+
+ systemd.services.zrepl.serviceConfig.User = "backup";
+ systemd.services.zrepl.path = [ pkgs.openssh ];
+ # pour eldiron:
+ # zfs allow backup create,mount,receive,destroy,rename,snapshot,hold,bookmark,release zpool/backup
+ # pour flony:
+ # zfs allow backup hold,release,bookmark,snapshot,send zpool
+ services.zrepl = {
+ enable = true;
+ settings = {
+ global.control.sockpath = "/run/zrepl/control";
+ global.serve.stdinserver.sockdir = "/run/zrepl/stdinserver";
+ jobs = [
+ {
+ type = "sink";
+ # must not change
+ name = "backup-from-eldiron";
+ root_fs = "zpool/backup";
+ serve.type = "tls";
+ serve.listen = ":19000";
+ serve.ca = config.secrets.fullPaths."zrepl/certificates/eldiron.crt";
+ serve.cert = config.secrets.fullPaths."zrepl/certificates/dilion.crt";
+ serve.key = config.secrets.fullPaths."zrepl/dilion.key";
+ serve.client_cns = [ "eldiron" ];
+ }
+ {
+ type = "source";
+ # must not change
+ name = "backup-to-wd-zpool";
+ # not encrypted!
+ serve.type = "tls";
+ serve.listen = ":19001";
+ serve.ca = config.secrets.fullPaths."zrepl/certificates/flony.crt";
+ serve.cert = config.secrets.fullPaths."zrepl/certificates/dilion.crt";
+ serve.key = config.secrets.fullPaths."zrepl/dilion.key";
+ serve.client_cns = [ "flony" ];
+ filesystems."zpool/libvirt<" = true;
+ filesystems."zpool/root<" = true;
+ snapshotting.type = "manual";
+ }
+ {
+ type = "source";
+ # must not change
+ name = "backup-to-wd-zpool-docker";
+ # not encrypted!
+ serve.type = "tls";
+ serve.listen = ":19002";
+ serve.ca = config.secrets.fullPaths."zrepl/certificates/flony.crt";
+ serve.cert = config.secrets.fullPaths."zrepl/certificates/dilion.crt";
+ serve.key = config.secrets.fullPaths."zrepl/dilion.key";
+ serve.client_cns = [ "flony" ];
+ filesystems."zpool/docker<" = true;
+ snapshotting.type = "manual";
+ }
+ ];
+ };
+ };
+ # This value determines the NixOS release with which your system is
+ # to be compatible, in order to avoid breaking some software such as
+ # database servers. You should change this only after NixOS release
+ # notes say you should.
+ # https://nixos.org/nixos/manual/release-notes.html
+ system.stateVersion = "23.05"; # Did you read the comment?
+}
+
diff --git a/systems/dilion/flake.lock b/systems/dilion/flake.lock
new file mode 100644
index 0000000..6da2d47
--- /dev/null
+++ b/systems/dilion/flake.lock
@@ -0,0 +1,695 @@
+{
+ "nodes": {
+ "backports": {
+ "inputs": {
+ "flake-utils": "flake-utils_2",
+ "nixpkgs": "nixpkgs_6"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "colmena": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs",
+ "stable": "stable"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "disko": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_2"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_2"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_3"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "loginctl-linger": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "monitoring": {
+ "inputs": {
+ "environment": "environment_2",
+ "naemon": "naemon",
+ "nixpkgs-lib": "nixpkgs-lib",
+ "secrets": "secrets"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "my-lib": {
+ "inputs": {
+ "colmena": "colmena",
+ "disko": "disko",
+ "flake-parts": "flake-parts",
+ "nixos-anywhere": "nixos-anywhere",
+ "nixpkgs": "nixpkgs_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_2",
+ "nixpkgs": "nixpkgs_7",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "naemon": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "nixos-2305": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere": {
+ "inputs": {
+ "disko": [
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305",
+ "nixos-images": "nixos-images",
+ "nixpkgs": "nixpkgs_3",
+ "treefmt-nix": "treefmt-nix"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-images": {
+ "inputs": {
+ "nixos-2305": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_2": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_3": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_6": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_7": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "environment": "environment",
+ "files-watcher": "files-watcher",
+ "loginctl-linger": "loginctl-linger",
+ "monitoring": "monitoring",
+ "my-lib": "my-lib",
+ "myuids": "myuids",
+ "nixpkgs": "nixpkgs_5",
+ "secrets": "secrets_2",
+ "ssh": "ssh",
+ "system": "system"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "secrets_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "ssh": {
+ "inputs": {
+ "environment": "environment_3",
+ "secrets": "secrets_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ }
+ },
+ "stable": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "system": {
+ "inputs": {
+ "backports": "backports",
+ "environment": "environment_4",
+ "mypackages": "mypackages",
+ "myuids": "myuids_2",
+ "secrets-public": "secrets-public"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "treefmt-nix": {
+ "inputs": {
+ "nixpkgs": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/systems/dilion/flake.nix b/systems/dilion/flake.nix
new file mode 100644
index 0000000..9747086
--- /dev/null
+++ b/systems/dilion/flake.nix
@@ -0,0 +1,43 @@
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+
+ my-lib.url = "path:../../flakes/lib";
+
+ monitoring.url = "path:../../flakes/private/monitoring";
+ ssh.url = "path:../../flakes/private/ssh";
+ environment.url = "path:../../flakes/private/environment";
+ system.url = "path:../../flakes/private/system";
+
+ myuids.url = "path:../../flakes/myuids";
+ secrets.url = "path:../../flakes/secrets";
+ files-watcher.url = "path:../../flakes/files-watcher";
+ loginctl-linger.url = "path:../../flakes/loginctl-linger";
+ };
+ outputs = inputs@{ self, my-lib, nixpkgs, ...}:
+ my-lib.lib.mkColmenaFlake {
+ name = "dilion";
+ inherit self nixpkgs;
+ system = "x86_64-linux";
+ targetHost = "176.9.10.233";
+ targetUser = "root";
+ nixosModules = {
+ base = ./base.nix;
+ system = inputs.system.nixosModule;
+ monitoring = inputs.monitoring.nixosModule;
+ environment = inputs.environment.nixosModule;
+ ssh = inputs.ssh.nixosModule;
+
+ myuids = inputs.myuids.nixosModule;
+ secrets = inputs.secrets.nixosModule;
+ files-watcher = inputs.files-watcher.nixosModule;
+ loginctl-linger = inputs.loginctl-linger.nixosModule;
+ };
+ moduleArgs = {
+ nixpkgs = inputs.nixpkgs;
+ monitoring = inputs.monitoring;
+ environment = inputs.environment;
+ pkgs-no-overlay = inputs.nixpkgs.legacyPackages.x86_64-linux;
+ };
+ };
+}
diff --git a/systems/dilion/monitoring.nix b/systems/dilion/monitoring.nix
new file mode 100644
index 0000000..af7f224
--- /dev/null
+++ b/systems/dilion/monitoring.nix
@@ -0,0 +1,43 @@
+{ lib, pkgs, config, name, monitoring, ... }:
+let
+ hostFQDN = config.hostEnv.fqdn;
+ zfs_snapshot = name: {
+ service_description = "ZFS snapshot ${name} happened not too long ago";
+ use = "local-service";
+ check_command = ["check_zfs_snapshot" name];
+ __passive_servicegroups = "webstatus-resources";
+ };
+in
+{
+ config.myServices.monitoring.activatedPlugins = [ "memory" "command" "bandwidth" "mdadm" "zfs" "notify-secondary"];
+ config.myServices.monitoring.objects = lib.mkMerge [
+ (monitoring.lib.objectsCommon {
+ inherit hostFQDN;
+ hostName = name;
+ master = false;
+ processWarn = "250"; processAlert = "400";
+ loadWarn = "1.0"; loadAlert = "1.2";
+ interface = builtins.head (builtins.attrNames config.networking.interfaces);
+ })
+
+ {
+ service = [
+ {
+ service_description = "No mdadm array is degraded";
+ use = "local-service";
+ check_command = ["check_mdadm"];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ {
+ service_description = "No ZFS pool is degraded";
+ use = "local-service";
+ check_command = ["check_zfs"];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ (zfs_snapshot "zpool/backup/eldiron/zpool/root")
+ (zfs_snapshot "zpool/backup/eldiron/zpool/root/etc")
+ (zfs_snapshot "zpool/backup/eldiron/zpool/root/var")
+ ];
+ }
+ ];
+}
diff --git a/systems/dilion/ssh_ldap_regular.sh b/systems/dilion/ssh_ldap_regular.sh
new file mode 100644
index 0000000..4c2f47e
--- /dev/null
+++ b/systems/dilion/ssh_ldap_regular.sh
@@ -0,0 +1,19 @@
+### This snippet is not standalone and must be integrated in the global ldap_authorized_keys.sh
+LDAP_MEMBER="cn=users,cn=ssh,ou=services,dc=immae,dc=eu"
+
+ldap_search '(&(memberOf='$LDAP_MEMBER')('$KEY'=*)(uid='$user'))' $KEY | \
+ while read line ;
+ do
+ if [ ! -z "$line" ]; then
+ if [[ $line == dn* ]]; then
+ user=$(sed -n 's/.*uid=\([^,]*\).*/\1/p' <<< "$line")
+ elif [[ $line == $KEY* ]]; then
+ key=$(clean_key_line ssh "$line")
+ if [ ! -z "$key" ]; then
+ if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
+ echo $key
+ fi
+ fi
+ fi
+ fi
+ done
diff --git a/systems/dilion/vms.nix b/systems/dilion/vms.nix
new file mode 100644
index 0000000..189e5ff
--- /dev/null
+++ b/systems/dilion/vms.nix
@@ -0,0 +1,200 @@
+# inspired from https://nixos.wiki/wiki/Virtualization_in_NixOS
+{ config, pkgs, lib, pkgs-no-overlay, ... }@args:
+let
+ toImage = f: "${import ./vms/base_image.nix f (args // { myEnv = config.myEnv; })}/nixos.qcow2";
+in
+{
+ options = {
+ myServices.vms.libvirt-guests = lib.mkOption {
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ network = lib.mkOption { type = lib.types.str; description = "network to attach the guest to"; };
+ pool = lib.mkOption { type = lib.types.str; description = "pool to attach the guest to"; };
+ cpus = lib.mkOption { type = lib.types.int; default = 1; description = "number of cpus to assign"; };
+ memory = lib.mkOption { type = lib.types.int; description = "memory in GiB to assign"; };
+ diskSize = lib.mkOption { type = lib.types.int; description = "disk size in GiB"; };
+ destroyVolumeOnExit = lib.mkOption { type = lib.types.bool; description = "Whether to destroy the volume on exit"; default = false; };
+ extraDevicesXML = lib.mkOption { type = lib.types.lines; description = "Extra device configuration"; default = ""; };
+ preStart = lib.mkOption { type = lib.types.lines; default = ""; description = "Script to run as prestart"; };
+ };
+ });
+ default = {};
+ description = "Libvirt guests to start";
+ };
+ myServices.vms.libvirt-networks = lib.mkOption {
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ bridgeNumber = lib.mkOption { type = lib.types.int; description = "bridge interface to create virbr"; };
+ ipRange = lib.mkOption { type = lib.types.str; example = "192.168.100"; description = "ip4 prefix to use"; };
+ };
+ });
+ description = "Libvirt networks to configure";
+ default = {};
+ };
+ myServices.vms.libvirt-pools = lib.mkOption {
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ type = lib.mkOption { type = lib.types.enum [ "dir" "zfs" ]; description = "Pool type"; };
+ target = lib.mkOption { type = lib.types.nullOr lib.types.path; default = null; description = "where to find images"; };
+ preStart = lib.mkOption { type = lib.types.lines; default = ""; description = "Script to run as prestart"; };
+ xml = lib.mkOption { type = lib.types.lines; default = ""; description = "Additional configuration"; };
+ };
+ });
+ };
+ myServices.vms.libvirt-images = lib.mkOption {
+ type = lib.types.attrsOf lib.types.path;
+ default = {};
+ description = "Attrs of images to create in /etc/libvirtd/base-images";
+ };
+ };
+ config = lib.mkMerge [
+ # Define images
+ {
+ environment.etc = lib.mapAttrs'
+ (n: v: lib.nameValuePair "libvirtd/base-images/${n}.qcow2" { source = toImage v; })
+ config.myServices.vms.libvirt-images;
+ }
+
+ # Define networks
+ {
+ systemd.services = lib.mapAttrs' (name: network: lib.nameValuePair "libvirtd-network-${name}" {
+ after = [ "libvirtd.service" ];
+ requires = [ "libvirtd.service" ];
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ Type = "oneshot";
+ RemainAfterExit = "yes";
+ };
+ path = [ config.boot.zfs.package ];
+ script = let
+ xml = pkgs.writeText "libvirt-network-${name}.xml" ''
+
+ ${name}
+ UUID
+
+
+
+
+
+
+
+
+
+ '';
+ in ''
+ uuid="$(${pkgs.libvirt}/bin/virsh net-uuid '${name}' || true)"
+ ${pkgs.libvirt}/bin/virsh net-define <(sed "s/UUID/$uuid/" '${xml}')
+ ${pkgs.libvirt}/bin/virsh net-start '${name}'
+ '';
+ preStop = ''
+ ${pkgs.libvirt}/bin/virsh net-destroy '${name}'
+ '';
+ }) config.myServices.vms.libvirt-networks;
+ }
+
+ # Define pools
+ {
+ systemd.services = lib.mapAttrs' (name: pool: lib.nameValuePair "libvirtd-pool-${name}" {
+ after = [ "libvirtd.service" ];
+ requires = [ "libvirtd.service" ];
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ Type = "oneshot";
+ RemainAfterExit = "yes";
+ };
+ path = [ config.boot.zfs.package ];
+ script = let
+ xml = pkgs.writeText "libvirt-pool-${name}.xml" ''
+
+ ${name}
+ UUID
+ ${pool.xml}
+ ${if pool.target != null then ''
+
+ ${pool.target}
+
+ '' else ""}
+
+ '';
+ in pool.preStart + ''
+ uuid="$(${pkgs.libvirt}/bin/virsh pool-uuid '${name}' || true)"
+ ${pkgs.libvirt}/bin/virsh pool-define <(sed "s/UUID/$uuid/" '${xml}')
+ ${pkgs.libvirt}/bin/virsh pool-start '${name}' || true
+ '';
+ }) config.myServices.vms.libvirt-pools;
+ }
+
+ # Define guests
+ {
+ systemd.services = lib.mapAttrs' (name: guest: lib.nameValuePair "libvirtd-guest-${name}" {
+ after = [ "libvirtd.service" "libvirtd-pool-${guest.pool}.service" "libvirtd-network-${guest.network}.service" ];
+ requires = [ "libvirtd.service" "libvirtd-pool-${guest.pool}.service" "libvirtd-network-${guest.network}.service" ];
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ Type = "oneshot";
+ RemainAfterExit = "yes";
+ };
+ path = [ config.boot.zfs.package ];
+ script =
+ let
+ xml = pkgs.writeText "libvirt-guest-${name}.xml"
+ ''
+
+ ${name}
+ UUID
+ ${builtins.toString guest.memory}
+ ${builtins.toString guest.cpus}
+
+ hvm
+
+
+ /run/current-system/sw/bin/qemu-system-x86_64
+
+
+
+
+ ${guest.extraDevicesXML}
+
+
+
+
+
+
+
+
+
+
+ '';
+ in
+ guest.preStart + ''
+ if ! ${pkgs.libvirt}/bin/virsh vol-key 'guest-${name}' --pool ${guest.pool} &> /dev/null; then
+ ${pkgs.libvirt}/bin/virsh vol-create-as --pool ${guest.pool} --name 'guest-${name}' --capacity '${builtins.toString guest.diskSize}GiB'
+ volume_path=$(${pkgs.libvirt}/bin/virsh vol-path --pool ${guest.pool} --vol 'guest-${name}')
+ ${pkgs-no-overlay.qemu}/bin/qemu-img convert /etc/libvirtd/base-images/nixos.qcow2 $volume_path
+ fi
+ uuid="$(${pkgs.libvirt}/bin/virsh domuuid '${name}' || true)"
+ ${pkgs.libvirt}/bin/virsh define <(sed "s/UUID/$uuid/" '${xml}')
+ ${pkgs.libvirt}/bin/virsh start '${name}'
+ '';
+ preStop = ''
+ ${pkgs.libvirt}/bin/virsh shutdown '${name}'
+ let "timeout = $(date +%s) + 10"
+ while [ "$(${pkgs.libvirt}/bin/virsh list --name | grep --count '^${name}$')" -gt 0 ]; do
+ if [ "$(date +%s)" -ge "$timeout" ]; then
+ # Meh, we warned it...
+ ${pkgs.libvirt}/bin/virsh destroy '${name}'
+ else
+ # The machine is still running, let's give it some time to shut down
+ sleep 0.5
+ fi
+ done
+ '' + lib.optionalString guest.destroyVolumeOnExit ''
+ if ${pkgs.libvirt}/bin/virsh vol-key 'guest-${name}' --pool ${guest.pool} &> /dev/null; then
+ ${pkgs.libvirt}/bin/virsh vol-wipe --pool ${guest.pool} --vol 'guest-${name}' || true
+ ${pkgs.libvirt}/bin/virsh vol-delete --pool ${guest.pool} --vol 'guest-${name}'
+ fi
+ '';
+ }) config.myServices.vms.libvirt-guests;
+ }
+ ];
+}
diff --git a/systems/dilion/vms/base_configuration.nix b/systems/dilion/vms/base_configuration.nix
new file mode 100644
index 0000000..7b67886
--- /dev/null
+++ b/systems/dilion/vms/base_configuration.nix
@@ -0,0 +1,27 @@
+{ lib, config, environment, ... }@args:
+{
+ options.myEnv = (environment.nixosModule (args // { name = "dummy"; })).options.myEnv;
+ config = {
+ # This value determines the NixOS release with which your system is
+ # to be compatible, in order to avoid breaking some software such as
+ # database servers. You should change this only after NixOS release
+ # notes say you should.
+ # https://nixos.org/nixos/manual/release-notes.html
+ system.stateVersion = lib.mkDefault "23.05"; # Did you read the comment?
+
+ fileSystems."/".device = "/dev/disk/by-label/nixos";
+ boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "virtio_balloon" "virtio_blk" "virtio_pci" "virtio_ring" ];
+ boot.loader = {
+ grub = {
+ device = "/dev/vda";
+ };
+ timeout = 0;
+ };
+ services.openssh.enable = true;
+ networking.firewall.allowedTCPPorts = [ 22 ];
+ users = {
+ mutableUsers = false;
+ users.root.openssh.authorizedKeys.keys = [ config.myEnv.sshd.rootKeys.immae_dilion ];
+ };
+ };
+}
diff --git a/systems/dilion/vms/base_image.nix b/systems/dilion/vms/base_image.nix
new file mode 100644
index 0000000..46b90eb
--- /dev/null
+++ b/systems/dilion/vms/base_image.nix
@@ -0,0 +1,98 @@
+configuration_file: { pkgs, myEnv, nixpkgs, environment, pkgs-no-overlay, ... }:
+let
+ config = (import (nixpkgs + "/nixos/lib/eval-config.nix") {
+ inherit (pkgs) system;
+ modules = [ {
+ _module.args.environment = environment;
+ myEnv = myEnv;
+ imports = [
+ (nixpkgs + "/nixos/modules/profiles/qemu-guest.nix")
+ configuration_file
+ ];
+
+ # We want our template image to be as small as possible, but the deployed image should be able to be
+ # of any size. Hence we resize on the first boot.
+ systemd.services.resize-main-fs = {
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig.Type = "oneshot";
+ script =
+ ''
+ # Resize main partition to fill whole disk
+ echo ", +" | ${pkgs.utillinux}/bin/sfdisk /dev/vda --no-reread -N 1
+ ${pkgs.parted}/bin/partprobe
+ # Resize filesystem
+ ${pkgs.e2fsprogs}/bin/resize2fs /dev/vda1
+ '';
+ };
+ } ];
+ }).config;
+in pkgs-no-overlay.vmTools.runInLinuxVM (
+ pkgs.runCommand "nixos-base-image"
+ {
+ memSize = 768;
+ preVM =
+ ''
+ mkdir $out
+ diskImage=image.qcow2
+ ${pkgs-no-overlay.vmTools.qemu}/bin/qemu-img create -f qcow2 $diskImage 2G
+ mv closure xchg/
+ '';
+ postVM =
+ ''
+ echo compressing VM image...
+ ${pkgs-no-overlay.vmTools.qemu}/bin/qemu-img convert -c $diskImage -O qcow2 $out/nixos.qcow2
+ '';
+ buildInputs = [ pkgs.utillinux pkgs.perl pkgs.parted pkgs.e2fsprogs ];
+ exportReferencesGraph =
+ [ "closure" config.system.build.toplevel ];
+ }
+ ''
+ # Create the partition
+ parted /dev/vda mklabel msdos
+ parted /dev/vda -- mkpart primary ext4 1M -1s
+
+ # Format the partition
+ mkfs.ext4 -L nixos /dev/vda1
+ mkdir /mnt
+ mount /dev/vda1 /mnt
+
+ for dir in dev proc sys; do
+ mkdir /mnt/$dir
+ mount --bind /$dir /mnt/$dir
+ done
+
+ storePaths=$(perl ${pkgs.pathsFromGraph} /tmp/xchg/closure)
+ echo filling Nix store...
+ mkdir -p /mnt/nix/store
+ set -f
+ cp -prd $storePaths /mnt/nix/store
+ # The permissions will be set up incorrectly if the host machine is not running NixOS
+ chown -R 0:30000 /mnt/nix/store
+
+ mkdir -p /mnt/etc/nix
+ echo 'build-users-group = ' > /mnt/etc/nix/nix.conf
+
+ # Register the paths in the Nix database.
+ export USER=root
+ printRegistration=1 perl ${pkgs.pathsFromGraph} /tmp/xchg/closure | \
+ chroot /mnt ${config.nix.package.out}/bin/nix-store --load-db
+
+ # Create the system profile to allow nixos-rebuild to work.
+ chroot /mnt ${config.nix.package.out}/bin/nix-env \
+ -p /nix/var/nix/profiles/system --set ${config.system.build.toplevel}
+
+ # `nixos-rebuild' requires an /etc/NIXOS.
+ mkdir -p /mnt/etc/nixos
+ touch /mnt/etc/NIXOS
+
+ # `switch-to-configuration' requires a /bin/sh
+ mkdir -p /mnt/bin
+ ln -s ${config.system.build.binsh}/bin/sh /mnt/bin/sh
+
+ # Generate the GRUB menu.
+ chroot /mnt ${config.system.build.toplevel}/bin/switch-to-configuration boot
+
+ umount /mnt/{proc,dev,sys}
+ umount /mnt
+ ''
+)
diff --git a/systems/dilion/vms/buildbot_configuration.nix b/systems/dilion/vms/buildbot_configuration.nix
new file mode 100644
index 0000000..622f8ba
--- /dev/null
+++ b/systems/dilion/vms/buildbot_configuration.nix
@@ -0,0 +1,73 @@
+{ pkgs, config, lib, ... }:
+{
+ imports = [
+ ./base_configuration.nix
+ ];
+ # This value determines the NixOS release with which your system is
+ # to be compatible, in order to avoid breaking some software such as
+ # database servers. You should change this only after NixOS release
+ # notes say you should.
+ # https://nixos.org/nixos/manual/release-notes.html
+ system.stateVersion = "23.05"; # Did you read the comment?
+
+ systemd.services.buildbot-worker.serviceConfig.ExecStartPre = let
+ cfg = config.services.buildbot-worker;
+ script = pkgs.writeScript "decode-dmi" ''
+ #!${pkgs.stdenv.shell}
+
+ mkdir -vp "${cfg.buildbotDir}"
+ varfile=${cfg.buildbotDir}/variables
+ rm $varfile || true
+ echo "[DEFAULT]" > $varfile
+ strings=$(${pkgs.dmidecode}/bin/dmidecode --oem-string count)
+ for i in $(seq 1 $strings); do
+ ${pkgs.dmidecode}/bin/dmidecode --oem-string $i >> $varfile
+ done
+ chown -R ${cfg.user}:${cfg.group} ${cfg.buildbotDir}
+ '';
+ in
+ lib.mkForce ["+${script}"];
+ systemd.services.buildbot-worker.serviceConfig.ExecStart = let
+ cfg = config.services.buildbot-worker;
+ tacFile = pkgs.writeText "buildbot-worker.tac" ''
+ import os
+ from io import open
+
+ from buildbot_worker.bot import Worker
+ from twisted.application import service
+
+ basedir = '${cfg.buildbotDir}'
+
+ # note: this line is matched against to check that this is a worker
+ # directory; do not edit it.
+ application = service.Application('buildbot-worker')
+
+ import configparser
+ config = config = configparser.ConfigParser()
+ config.read("${cfg.buildbotDir}/variables")
+ master_url_split = config["DEFAULT"]["buildbot_master_url"].split(':')
+ buildmaster_host = master_url_split[0]
+ port = int(master_url_split[1])
+ workername = config["DEFAULT"]["buildbot_worker_name"]
+
+ with open('${cfg.workerPassFile}', 'r', encoding='utf-8') as passwd_file:
+ passwd = passwd_file.read().strip('\r\n')
+ keepalive = ${toString cfg.keepalive}
+ umask = None
+ maxdelay = 300
+ numcpus = None
+ allow_shutdown = None
+
+ s = Worker(buildmaster_host, port, workername, passwd, basedir,
+ keepalive, umask=umask, maxdelay=maxdelay,
+ numcpus=numcpus, allow_shutdown=allow_shutdown)
+ s.setServiceParent(application)
+ '';
+ in
+ lib.mkForce "${cfg.package.pythonModule.pkgs.twisted}/bin/twistd --nodaemon --pidfile= --logfile - --python ${tacFile}";
+ services.buildbot-worker = {
+ enable = true;
+ workerPass = config.myEnv.buildbot.workerPassword;
+ packages = [ pkgs.git pkgs.gzip pkgs.openssh ];
+ };
+}
diff --git a/systems/eldiron/base.nix b/systems/eldiron/base.nix
new file mode 100644
index 0000000..cda518e
--- /dev/null
+++ b/systems/eldiron/base.nix
@@ -0,0 +1,371 @@
+{ config, pkgs, lib, php, name, secrets, ... }:
+{
+ # ssh-keyscan eldiron | nix-shell -p ssh-to-age --run ssh-to-age
+ secrets.ageKeys = [ "age1dxr5lhvtnjssfaqpnf6qx80h8gfwkxg3tdf35m6n9wljmk7wadfs3kmahj" ];
+ boot = {
+ kernelModules = [ "kvm-intel" ];
+ blacklistedKernelModules = [ "nvidiafb" ];
+ loader.timeout = 1;
+ loader.grub.devices = [ "/dev/sda" "/dev/sdc" ];
+ kernel.sysctl = {
+ # https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-001.md
+ "net.ipv4.tcp_sack" = 0;
+ };
+ supportedFilesystems = [ "zfs" ];
+ kernelParams = ["zfs.zfs_arc_max=6442450944"];
+ kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
+ initrd.availableKernelModules = [ "ahci" "sd_mod" ];
+ initrd.secrets = {
+ "/boot/pass.key" = "/boot/pass.key";
+ };
+ };
+ services.udev.extraRules = ''
+ ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="c8:60:00:56:a0:88", NAME="eth0"
+ '';
+ nix.settings.max-jobs = 8;
+ nixpkgs.config.permittedInsecurePackages = [
+ "python-2.7.18.6" # for nagios-cli
+ "nodejs-16.20.2" # for landing page building
+ ];
+
+ nixpkgs.overlays = [
+ php.overlays.php
+ ];
+ powerManagement.cpuFreqGovernor = "powersave";
+
+ security.acme.certs."${name}".postRun = builtins.concatStringsSep "\n" [
+ (lib.optionalString config.services.websites.env.production.enable "/run/current-system/sw/bin/machinectl shell httpd-production /usr/bin/env systemctl reload httpd.service")
+ (lib.optionalString config.services.websites.env.integration.enable "/run/current-system/sw/bin/machinectl shell httpd-integration /usr/bin/env systemctl reload httpd.service")
+ ];
+
+ fileSystems = {
+ # pools:
+ # zpool: ashift=12
+ # zfast: ashift=12
+ # zfs:
+ # zpool/: acltype=posixacl ; xattr=sa ; atime=off ; mountpoint=legacy
+ # zpool/root: encryption=on ; keyformat=passphrase ; keylocation=file:///boot/pass.key
+ # zpool/root/var: atime=on
+ # zfast/: acltype=posixacl ; xattr=sa ; atime=off ; mountpoint=legacy
+ # zfast/root: encryption=on ; keyformat=passphrase ; keylocation=file:///boot/pass.key
+ # zfast/root/etc: ø
+ # zfast/root/nix: ø
+ # zfast/root/tmp: async=disabled
+ # zfast/root/var: atime=on
+ # zfast/root/var/lib: ø
+ # zfast/root/var/lib/mysql: logbias=throughput ; atime=off ; primarycache=metadata
+ # zfast/root/var/lib/postgresql: recordsize=8K ; atime=off ; logbias=throughput
+ # zfast/root/var/lib/postgresql/11.0: ø
+ # zfast/root/var/lib/postgresql/11.0/pg_wal: ø
+ "/" = { fsType = "zfs"; device = "zpool/root"; };
+ "/boot" = { fsType = "ext4"; device = "/dev/disk/by-uuid/e6bb18fb-ff56-4b5f-ae9f-e60d40dc0622"; };
+ "/etc" = { fsType = "zfs"; device = "zpool/root/etc"; };
+ "/nix" = { fsType = "zfs"; device = "zfast/root/nix"; };
+ "/tmp" = { fsType = "zfs"; device = "zfast/root/tmp"; };
+ "/var" = { fsType = "zfs"; device = "zpool/root/var"; };
+ "/var/lib/mysql" = { fsType = "zfs"; device = "zfast/root/var/lib/mysql"; };
+ "/var/lib/postgresql" = { fsType = "zfs"; device = "zfast/root/var/lib/postgresql"; };
+ "/var/lib/postgresql/11.0" = { fsType = "zfs"; device = "zfast/root/var/lib/postgresql/11.0"; };
+ "/var/lib/postgresql/11.0/pg_wal" = { fsType = "zfs"; device = "zfast/root/var/lib/postgresql/11.0/pg_wal"; };
+ };
+ swapDevices = [ { label = "swap1"; } { label = "swap2"; } ];
+ hardware.enableRedistributableFirmware = true;
+
+ services.zfs = {
+ autoScrub = {
+ enable = false;
+ };
+ };
+ networking = {
+ hostId = "8262ca33"; # generated with head -c4 /dev/urandom | od -A none -t x4
+ firewall.enable = true;
+ firewall.allowedTCPPorts = [ config.myEnv.ports.zrepl_flony ];
+ # FIXME: on next reboot, remove the /27 and the localCommands
+ interfaces."eth0".ipv4.addresses = pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
+ (n: ips: map (ip: { address = ip; prefixLength = 32; }) (ips.ip4 or []))
+ (pkgs.lib.attrsets.filterAttrs (n: v: n != "main") config.hostEnv.ips))
+ ++ [ { address = lib.head config.hostEnv.ips.main.ip4; prefixLength = 27; } ];
+ interfaces."eth0".ipv6.addresses = pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
+ (n: ips: map (ip: { address = ip; prefixLength = (if n == "main" && ip == pkgs.lib.head ips.ip6 then 64 else 128); }) (ips.ip6 or []))
+ config.hostEnv.ips);
+ defaultGateway = "176.9.151.65";
+ localCommands = ''
+ # FIXME: Those commands were added by nixops and may not be
+ # actually needed
+ ip -6 addr add '2a01:4f8:160:3445::/64' dev 'eth0' || true
+ ip -4 route change '176.9.151.64/27' via '176.9.151.65' dev 'eth0' || true
+ ip -6 route add default via 'fe80::1' dev eth0 || true
+ '';
+ nameservers = [
+ "213.133.98.98"
+ "213.133.99.99"
+ "213.133.100.100"
+ "2a01:4f8:0:a0a1::add:1010"
+ "2a01:4f8:0:a102::add:9999"
+ "2a01:4f8:0:a111::add:9898"
+ ];
+ };
+
+ imports = [
+ secrets.nixosModules.users-config-eldiron
+ ./databases
+ ./databases/mariadb.nix
+ ./databases/openldap
+ ./databases/postgresql.nix
+ ./databases/redis.nix
+
+
+ ./monitoring.nix
+ ./ejabberd
+ ./buildbot
+ ./coturn.nix
+ ./dns.nix
+ ./duply_backup.nix
+ ./gemini
+ ./gitolite
+ ./mail
+ ./websites
+ ./webstats
+ ./irc.nix
+ ./pub
+ ./tasks
+ ./ftp.nix
+ ./mpd.nix
+ ./vpn
+ ];
+
+ myServices.buildbot.enable = true;
+ myServices.databases.enable = true;
+ myServices.gitolite.enable = true;
+ myServices.monitoring.enable = true;
+ myServices.irc.enable = true;
+ myServices.pub.enable = true;
+ myServices.tasks.enable = true;
+ myServices.mpd.enable = true;
+ myServices.dns.enable = true;
+ myServices.websites.enable = true;
+ myServices.gemini.enable = true;
+ myServices.mail.enable = true;
+ myServices.ejabberd.enable = true;
+ myServices.vpn.enable = true;
+ myServices.ftp.enable = true;
+
+ myServices.chatonsProperties.hostings.infogerance = {
+ file.datetime = "2022-08-27T18:50:00";
+ hosting = {
+ name = "Infogérance";
+ description = "Administration de serveurs";
+ website = "https://www.immae.eu/";
+ logo = "https://assets.immae.eu/logo.jpg";
+ type = "HOSTEDSERVER";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ };
+
+ services.netdata.enable = true;
+ services.netdata.config.global."memory mode" = "none";
+ services.netdata.config.health."enabled" = "no";
+ services.netdata.config.web.mode = "none";
+ users.users."${config.services.netdata.user}".extraGroups = [ "keys" ];
+ services.netdata.configDir."stream.conf" = config.secrets.fullPaths."netdata-stream.conf";
+ secrets.keys = {
+ "ldap/pam_pgsql" = {
+ user = "root";
+ group = "root";
+ permissions = "0400";
+ text = ''
+ database = immae
+ user = immae_auth_read
+ password = {{ .postgresql.immae_auth_read }}
+ table = ldap_users
+ user_column = login
+ pw_type = function
+ auth_query = SELECT (mechanism = 'SSHA' AND password = encode(digest( %p || salt, 'sha1'), 'hex')) FROM ldap_users WHERE login = %u OR login || '@' || realm = %u
+ #pwd_query = WITH newsalt as (select gen_random_bytes(4)) UPDATE ldap_users SET password = encode(digest( %p || (SELECT * FROM newsalt), 'sha1'), 'hex'), salt = (SELECT * FROM newsalt), mechanism = 'SSHA' WHERE login = %u OR login || '@' || realm = %u
+ '';
+ };
+
+ "netdata-stream.conf" = {
+ user = config.services.netdata.user;
+ group = config.services.netdata.group;
+ permissions = "0400";
+ text = ''
+ [stream]
+ enabled = yes
+ destination = ${config.myEnv.monitoring.netdata_aggregator}
+ api key = ${config.myEnv.monitoring.netdata_keys.eldiron}
+ '';
+ };
+ "zrepl_backup/identity" = {
+ user = "root";
+ group = "root";
+ permissions = "0400";
+ text = config.myEnv.zrepl_backup.ssh_key.private;
+ };
+ "zrepl/${name}.key" = {
+ permissions = "0400";
+ text = config.myEnv.zrepl_backup.certs."${name}".key;
+ user = "root";
+ group = "root";
+ };
+ } // builtins.listToAttrs (map (x: lib.attrsets.nameValuePair "zrepl/certificates/${x}.crt" {
+ permissions = "0400";
+ text = config.myEnv.zrepl_backup.certs."${x}".certificate;
+ user = "root";
+ group = "root";
+ }) (builtins.attrNames config.myEnv.zrepl_backup.certs));
+
+ programs.ssh.knownHosts.dilion = {
+ extraHostNames = ["dilion.immae.eu"];
+ publicKey = config.myEnv.servers.dilion.hostKey;
+ };
+
+ services.cron = {
+ enable = true;
+ mailto = "cron@immae.eu";
+ systemCronJobs = [
+ ''
+ 0 0 * * * root journalctl -q --since="25 hours ago" -u postfix -t postfix/smtpd -g "immae.eu.*Recipient address rejected"
+ # Need a way to blacklist properly
+ # 0 0 * * * root journalctl -q --since="25 hours ago" -u postfix -t postfix/smtpd -g "NOQUEUE:"
+ 0 0 * * * root journalctl -q --since="25 hours ago" -u postfix -t postfix/smtp -g "status=bounced"
+ ''
+ ];
+ };
+
+ environment.systemPackages = [ pkgs.bindfs ];
+
+ environment.etc."mdadm.conf" = {
+ enable = true;
+ mode = "0644";
+ user = "root";
+ text = "MAILADDR ${config.myEnv.monitoring.email}";
+ };
+
+ systemd.services.zrepl.path = [ pkgs.openssh ];
+ services.zrepl = {
+ enable = true;
+ settings = {
+ jobs = [
+ {
+ type = "push";
+ # must not change
+ name = "backup-to-dilion";
+ filesystems."zpool/root" = true;
+ filesystems."zpool/root/etc" = true;
+ filesystems."zpool/root/var<" = true;
+ connect = {
+ address = "dilion.immae.eu:19000";
+ type = "tls";
+ server_cn = "dilion";
+ ca = config.secrets.fullPaths."zrepl/certificates/dilion.crt";
+ cert = config.secrets.fullPaths."zrepl/certificates/eldiron.crt";
+ key = config.secrets.fullPaths."zrepl/eldiron.key";
+ };
+ snapshotting = {
+ type = "periodic";
+ prefix = "zrepl_";
+ interval = "1h";
+ # hooks = [
+ # {
+ # type = "mysql-lock-tables";
+ # dsn = "${config.myEnv.zrepl_backup.mysql.user}:${config.myEnv.zrepl_backup.mysql.password}@tcp(localhost)/";
+ # filesystems."zpool/root/var" = true;
+ # }
+ # {
+ # type = "command";
+ # path = pkgs.writeScript "redis-dump" ''
+ # #!${pkgs.stdenv.shell}
+ # ${pkgs.redis}/bin/redis-cli bgsave
+ # '';
+ # err_is_fatal = false;
+ # filesystems."zpool/root/var" = true;
+ # }
+ # ];
+ };
+ send.encrypted = true;
+ pruning.keep_sender = [
+ { type = "regex"; regex = "^manual_.*"; }
+ { type = "grid"; grid = "24x1h | 7x1d | 4x7d | 6x30d"; regex = "^zrepl_.*"; }
+ ];
+ pruning.keep_receiver = [
+ { type = "regex"; regex = "^manual_.*"; }
+ { type = "grid"; grid = "6x4h | 7x1d | 4x7d | 6x30d"; regex = "^zrepl_.*"; }
+ ];
+ }
+ {
+ type = "source";
+ # must not change
+ name = "backup-to-wd-zpool";
+ serve.type = "tls";
+ serve.listen = ":${builtins.toString config.myEnv.ports.zrepl_flony}";
+ serve.ca = config.secrets.fullPaths."zrepl/certificates/flony.crt";
+ serve.cert = config.secrets.fullPaths."zrepl/certificates/eldiron.crt";
+ serve.key = config.secrets.fullPaths."zrepl/eldiron.key";
+ serve.client_cns = [ "flony" ];
+ filesystems."zpool/root" = true;
+ filesystems."zpool/root/etc" = true;
+ filesystems."zpool/root/var<" = true;
+ filesystems."zfast/root/var<" = true;
+ send.encrypted = true;
+ snapshotting.type = "manual";
+ }
+ ];
+ };
+ };
+
+ environment.etc."fail2ban/filter.d/postgresql.conf".text = ''
+ [Definition]
+ failregex = \S+ FATAL: password authentication failed for user .+$
+ \S+ FATAL: PAM authentication failed for user.+$
+ \S+ FATAL: no pg_hba.conf entry for host.+$
+ '';
+ environment.etc."fail2ban/filter.d/mysqld-auth.local".text = ''
+ [Definition]
+ _daemon = mysql[-\w]*
+ '';
+ services.fail2ban.jails.dovecot = ''
+ enabled = true
+ '';
+ services.fail2ban.jails.postfix-sasl = ''
+ enabled = true
+ '';
+ services.fail2ban.jails.proftpd = ''
+ enabled = true
+ '';
+ services.fail2ban.jails.postgresql = ''
+ enabled = true
+ port = 5432
+ logpath = %(syslog_daemon)s
+ backend = %(default_backend)s
+ journalmatch = _SYSTEMD_UNIT=postgresql.service + _COMM=postgres
+ '';
+ services.fail2ban.jails.mysqld-auth = ''
+ enabled = true
+ journalmatch = _SYSTEMD_UNIT=mysql.service + _COMM=mysqld
+ '';
+ # This value determines the NixOS release with which your system is
+ # to be compatible, in order to avoid breaking some software such as
+ # database servers. You should change this only after NixOS release
+ # notes say you should.
+ # https://nixos.org/nixos/manual/release-notes.html
+ system.stateVersion = "23.05"; # Did you read the comment?
+
+ security.pam.services.ldap.text = ''
+ # Authentication from ldap for pgsql
+ auth required ${pkgs.pam_pgsql}/lib/security/pam_pgsql.so config_file=/var/secrets/ldap/pam_pgsql
+ account required ${pkgs.pam_pgsql}/lib/security/pam_pgsql.so config_file=/var/secrets/ldap/pam_pgsql
+ '';
+ services.saslauthd = {
+ enable = true;
+ mechanism = "pam";
+ };
+ environment.etc."sasl2/slapd.conf".text = ''
+ mech_list: plain
+ pwcheck_method: saslauthd
+ saslauthd_path: /run/saslauthd/mux
+ '';
+}
diff --git a/systems/eldiron/buildbot/default.nix b/systems/eldiron/buildbot/default.nix
new file mode 100644
index 0000000..e86b081
--- /dev/null
+++ b/systems/eldiron/buildbot/default.nix
@@ -0,0 +1,310 @@
+{ lib, pkgs, config, buildbot, ... }:
+let
+ varDir = "/var/lib/buildbot";
+ bb-python = buildbot.pythonModule;
+in
+{
+ options = {
+ myServices.buildbot.enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = ''
+ Whether to enable buildbot.
+ '';
+ };
+ };
+
+ config = lib.mkIf config.myServices.buildbot.enable {
+ myEnv.buildbot.projects.test = {
+ name = "test";
+ workerPort = config.myEnv.ports.buildbot_test;
+ packages = [ pkgs.git pkgs.gzip pkgs.openssh ];
+ pythonPathHome = false;
+ secrets = {
+ apprise_webhooks = builtins.concatStringsSep "\n" [
+ "{{ .apprise_webhooks.matrix_immae_eu_alert }}"
+ ];
+ notify_xmpp_password = "{{ .xmpp.notify_bot }}";
+ };
+ activationScript = ''
+ install -m 0755 -o buildbot -g buildbot -d /var/lib/ftp/release.immae.eu/test
+ '';
+ webhookTokens = [
+ "{{ .buildbot.webhookTokens.Immae }}"
+ "{{ .buildbot.webhookTokens.Immae }}"
+ ];
+ };
+
+ myServices.chatonsProperties.hostings.buildbot = {
+ file.datetime = "2022-08-21T10:37:00";
+ hosting = {
+ name = "Buildbot";
+ description = "Python-based continuous integration testing framework";
+ type = "INSTANCE";
+ website = "https://git.immae.eu";
+ logo = "https://www.buildbot.net/img/icon.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ guide.user = "https://www.immae.eu/docs/forge-logicielle.html";
+ };
+ software = {
+ name = "Buildbot";
+ website = "https://www.buildbot.net/";
+ license.url = "https://github.com/buildbot/buildbot/blob/master/LICENSE";
+ license.name = "GNU General Public License v2.0";
+ version = pkgs.buildbot.version;
+ source.url = "https://github.com/buildbot/buildbot";
+ };
+ };
+ nixpkgs.overlays = [
+ (self: super: {
+ follow-systemd-unit = self.writeScriptBin "follow-systemd-unit" ''
+ #!${self.stdenv.shell}
+
+ set -euo pipefail
+
+ service=$1
+ before_invocation_id=$2
+
+ get_id() {
+ systemctl show -p InvocationID --value "$service"
+ }
+
+ while [ "$(get_id)" = "$before_invocation_id" ]; do sleep 1; done
+
+ invocation_id="$(get_id)"
+ cursor="$(mktemp)"
+ trap "rm -f $cursor" EXIT
+
+ get_logs() {
+ journalctl --quiet --cursor-file=$cursor INVOCATION_ID=$invocation_id + _SYSTEMD_INVOCATION_ID=$invocation_id
+ }
+
+ while [ -n "$(systemctl show -p Job --value "$service")" ]; do
+ get_logs
+ done
+ get_logs
+ '';
+ })
+ ];
+ ids.uids.buildbot = config.myEnv.buildbot.user.uid;
+ ids.gids.buildbot = config.myEnv.buildbot.user.gid;
+
+ users.groups.buildbot.gid = config.ids.gids.buildbot;
+ users.users.buildbot = {
+ name = "buildbot";
+ uid = config.ids.uids.buildbot;
+ group = "buildbot";
+ description = "Buildbot user";
+ home = varDir;
+ extraGroups = [ "keys" "systemd-journal" ];
+ useDefaultShell = true;
+ openssh.authorizedKeys.keys = [ config.myEnv.buildbot.ssh_key.public ];
+ };
+
+ services.websites.env.tools.watchPaths = lib.attrsets.mapAttrsToList
+ (k: project: config.secrets.fullPaths."buildbot/${project.name}/webhook-httpd-include")
+ config.myEnv.buildbot.projects;
+
+ services.websites.env.tools.vhostConfs.git.extraConfig = lib.attrsets.mapAttrsToList (k: project: ''
+ RedirectMatch permanent "^/buildbot/${project.name}$" "/buildbot/${project.name}/"
+ RewriteEngine On
+ RewriteRule ^/buildbot/${project.name}/ws(.*)$ unix:///run/buildbot/${project.name}.sock|ws://git.immae.eu/ws$1 [P,NE,QSA,L]
+ ProxyPass /buildbot/${project.name}/ unix:///run/buildbot/${project.name}.sock|http://${project.name}-git.immae.eu/
+ ProxyPassReverse /buildbot/${project.name}/ unix:///run/buildbot/${project.name}.sock|http://${project.name}-git.immae.eu/
+
+ Use LDAPConnect
+ Require ldap-group cn=users,ou=${project.name},cn=buildbot,ou=services,dc=immae,dc=eu
+
+ SetEnvIf X-Url-Scheme https HTTPS=1
+ ProxyPreserveHost On
+
+
+
+ Require local
+ Require ldap-group cn=users,ou=${project.name},cn=buildbot,ou=services,dc=immae,dc=eu
+ Include ${config.secrets.fullPaths."buildbot/${project.name}/webhook-httpd-include"}
+
+
+ '') config.myEnv.buildbot.projects;
+
+ system.activationScripts = lib.attrsets.mapAttrs' (k: project: lib.attrsets.nameValuePair "buildbot-${project.name}" {
+ deps = [ "users" "wrappers" ];
+ text = ''
+ install -m 755 -o buildbot -g buildbot -d ${varDir}/${project.name}
+
+ ${project.activationScript}
+ '';
+ }) config.myEnv.buildbot.projects;
+
+ secrets.keys = lib.listToAttrs (
+ lib.lists.flatten (
+ lib.attrsets.mapAttrsToList (k: project:
+ lib.attrsets.mapAttrsToList (k: v:
+ (lib.nameValuePair "buildbot/${project.name}/${k}" {
+ permissions = "0600";
+ user = "buildbot";
+ group = "buildbot";
+ text = v;
+ })
+ ) project.secrets
+ ++ [
+ (lib.nameValuePair "buildbot/${project.name}/webhook-httpd-include" {
+ permissions = "0600";
+ user = "wwwrun";
+ group = "wwwrun";
+ text = lib.optionalString (project.webhookTokens != null) ''
+ Require expr "req('Access-Key') in { ${builtins.concatStringsSep ", " (map (x: "'${x}'") project.webhookTokens)} }"
+ '';
+ })
+ (lib.nameValuePair "buildbot/${project.name}/environment_file" {
+ permissions = "0600";
+ user = "buildbot";
+ group = "buildbot";
+ keyDependencies = [ (buildbot.buildbot_config project).src ] ++ project.secretsDeps;
+ text = let
+ project_env = with lib.attrsets;
+ mapAttrs' (k: v: nameValuePair "BUILDBOT_${k}" v) project.environment //
+ {
+ BUILDBOT_PROJECT_DIR = (buildbot.buildbot_config project).src;
+ BUILDBOT_WORKER_PORT = builtins.toString project.workerPort;
+ BUILDBOT_HOST = config.hostEnv.fqdn;
+ BUILDBOT_VIRT_URL = "qemu+ssh://libvirt@dilion.immae.eu/system";
+ };
+ in builtins.concatStringsSep "\n"
+ (lib.mapAttrsToList (envK: envV: "${envK}=${envV}") project_env);
+ })
+ ]
+ ) config.myEnv.buildbot.projects
+ )
+ ) // {
+ "buildbot/ldap" = {
+ permissions = "0600";
+ user = "buildbot";
+ group = "buildbot";
+ text = config.myEnv.buildbot.ldap.password;
+ };
+ "buildbot/worker_password" = {
+ permissions = "0600";
+ user = "buildbot";
+ group = "buildbot";
+ text = config.myEnv.buildbot.workerPassword;
+ };
+ "buildbot/ssh_key" = {
+ permissions = "0600";
+ user = "buildbot";
+ group = "buildbot";
+ text = config.myEnv.buildbot.ssh_key.private;
+ };
+ "buildbot/ssh_known_hosts" = {
+ permissions = "0644";
+ user = "buildbot";
+ group = "buildbot";
+ text = ''
+ git.immae.eu ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIFbhFTl2A2RJn5L51yxJM4XfCS2ZaiSX/jo9jFSdghF
+ eldiron ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIFbhFTl2A2RJn5L51yxJM4XfCS2ZaiSX/jo9jFSdghF
+ phare.normalesup.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN2GomItXICXpCtCFRMT2xuerqx2nLMO/3mNUuWyzFr1
+ '';
+ };
+ };
+
+ services.filesWatcher = lib.attrsets.mapAttrs' (k: project: lib.attrsets.nameValuePair "buildbot-${project.name}" {
+ restart = true;
+ paths = [
+ config.secrets.fullPaths."buildbot/ldap"
+ config.secrets.fullPaths."buildbot/worker_password"
+ config.secrets.fullPaths."buildbot/ssh_key"
+ config.secrets.fullPaths."buildbot/${project.name}/environment_file"
+ ] ++ lib.attrsets.mapAttrsToList (k: v: config.secrets.fullPaths."buildbot/${project.name}/${k}") project.secrets;
+ }) config.myEnv.buildbot.projects;
+
+ systemd.slices.buildbot = {
+ description = "buildbot slice";
+ };
+
+ networking.firewall.allowedTCPPorts = lib.attrsets.mapAttrsToList (k: v: v.workerPort) config.myEnv.buildbot.projects;
+ systemd.services = lib.attrsets.mapAttrs' (k: project: lib.attrsets.nameValuePair "buildbot-${project.name}" {
+ description = "Buildbot Continuous Integration Server ${project.name}.";
+ after = [ "network-online.target" ];
+ wantedBy = [ "multi-user.target" ];
+ path = project.packages;
+ preStart = let
+ master-cfg = "${buildbot.buildbot_common}/${bb-python.pythonForBuild.sitePackages}/buildbot_common/master.cfg";
+ tac_file = pkgs.writeText "buildbot.tac" ''
+ import os
+
+ from twisted.application import service
+ from buildbot.master import BuildMaster
+
+ basedir = '${varDir}/${project.name}'
+ rotateLength = 10000000
+ maxRotatedFiles = 10
+ configfile = '${master-cfg}'
+
+ # Default umask for server
+ umask = None
+
+ # if this is a relocatable tac file, get the directory containing the TAC
+ if basedir == '.':
+ import os
+ basedir = os.path.abspath(os.path.dirname(__file__))
+
+ # note: this line is matched against to check that this is a buildmaster
+ # directory; do not edit it.
+ application = service.Application('buildmaster')
+ from twisted.python.logfile import LogFile
+ from twisted.python.log import ILogObserver, FileLogObserver
+ logfile = LogFile.fromFullPath(os.path.join(basedir, "twistd.log"), rotateLength=rotateLength,
+ maxRotatedFiles=maxRotatedFiles)
+ application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
+
+ m = BuildMaster(basedir, configfile, umask)
+ m.setServiceParent(application)
+ m.log_rotation.rotateLength = rotateLength
+ m.log_rotation.maxRotatedFiles = maxRotatedFiles
+ '';
+ in ''
+ if [ ! -f ${varDir}/${project.name}/buildbot.tac ]; then
+ ${buildbot}/bin/buildbot create-master -c "${master-cfg}" "${varDir}/${project.name}"
+ rm -f ${varDir}/${project.name}/master.cfg.sample
+ rm -f ${varDir}/${project.name}/buildbot.tac
+ fi
+ ln -sf ${tac_file} ${varDir}/${project.name}/buildbot.tac
+ # different buildbots may be trying that simultaneously, add the || true to avoid complaining in case of race
+ install -Dm600 -o buildbot -g buildbot -T ${config.secrets.fullPaths."buildbot/ssh_key"} ${varDir}/buildbot_key || true
+ install -Dm600 -o buildbot -g buildbot -T ${config.secrets.fullPaths."buildbot/ssh_known_hosts"} ${varDir}/buildbot_hosts || true
+ buildbot_secrets=${varDir}/${project.name}/secrets
+ install -m 0700 -o buildbot -g buildbot -d $buildbot_secrets
+ install -Dm600 -o buildbot -g buildbot -T ${config.secrets.fullPaths."buildbot/ldap"} $buildbot_secrets/ldap
+ install -Dm600 -o buildbot -g buildbot -T ${config.secrets.fullPaths."buildbot/worker_password"} $buildbot_secrets/worker_password
+ ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList
+ (k: v: "install -Dm600 -o buildbot -g buildbot -T ${config.secrets.fullPaths."buildbot/${project.name}/${k}"} $buildbot_secrets/${k}") project.secrets
+ )}
+ ${buildbot}/bin/buildbot upgrade-master ${varDir}/${project.name}
+ '';
+ environment = let
+ HOME = "${varDir}/${project.name}";
+ PYTHONPATH = "${bb-python.withPackages (self:
+ buildbot.common_packages self ++
+ [ (buildbot.buildbot_config project) ]
+ )}/${bb-python.sitePackages}${if project.pythonPathHome then ":${varDir}/${project.name}/.local/${bb-python.sitePackages}" else ""}";
+ in { inherit PYTHONPATH HOME; };
+
+ serviceConfig = {
+ Slice = "buildbot.slice";
+ Type = "forking";
+ User = "buildbot";
+ Group = "buildbot";
+ RuntimeDirectory = "buildbot";
+ RuntimeDirectoryPreserve = "yes";
+ StateDirectory = "buildbot";
+ SupplementaryGroups = "keys";
+ WorkingDirectory = "${varDir}/${project.name}";
+ ExecStart = "${buildbot}/bin/buildbot start";
+ EnvironmentFile = config.secrets.fullPaths."buildbot/${project.name}/environment_file";
+ };
+ }) config.myEnv.buildbot.projects;
+ };
+}
diff --git a/systems/eldiron/coturn.nix b/systems/eldiron/coturn.nix
new file mode 100644
index 0000000..d8b02c5
--- /dev/null
+++ b/systems/eldiron/coturn.nix
@@ -0,0 +1,73 @@
+{ config, name, lib, pkgs, ... }:
+{
+ config = lib.mkIf (name == "eldiron") {
+ myServices.chatonsProperties.services.coturn = {
+ file.datetime = "2022-08-27T19:00:00";
+ service = {
+ name = "Coturn";
+ description = "coturn TURN server";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "FULL";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "coturn";
+ website = "https://github.com/coturn/coturn";
+ license.url = "https://github.com/coturn/coturn/blob/master/LICENSE";
+ license.name = "3-Clause BSD License";
+ version = pkgs.coturn.version;
+ source.url = "https://github.com/coturn/coturn";
+ };
+ };
+ networking.firewall.allowedTCPPorts = [
+ config.services.coturn.alt-listening-port
+ config.services.coturn.alt-tls-listening-port
+ config.services.coturn.listening-port
+ config.services.coturn.tls-listening-port
+ ];
+ networking.firewall.allowedTCPPortRanges = [
+ { from = config.services.coturn.min-port; to = config.services.coturn.max-port; }
+ ];
+ networking.firewall.allowedUDPPortRanges = [
+ { from = config.services.coturn.min-port; to = config.services.coturn.max-port; }
+ ];
+ networking.firewall.allowedUDPPorts = [
+ config.services.coturn.alt-listening-port
+ config.services.coturn.alt-tls-listening-port
+ config.services.coturn.listening-port
+ config.services.coturn.tls-listening-port
+ ];
+ #users.users.turnserver.extraGroups = [ "keys" ];
+ services.coturn = {
+ enable = true;
+ no-cli = true;
+ no-tls = true;
+ no-dtls = true;
+ use-auth-secret = true;
+ lt-cred-mech = true;
+ realm = "eldiron.immae.eu";
+ extraConfig = ''
+ fingerprint
+ total-quota=0
+ bps-capacity=0
+ stale-nonce
+ no-multicast-peers
+ '';
+ static-auth-secret = config.myEnv.coturn.auth_access_key;
+ #cert = "/var/lib/acme/eldiron/fullchain.pem";
+ #pkey = "/var/lib/acme/eldiron/key.pem";
+ listening-ips = [
+ "127.0.0.1"
+ "::1"
+ ] ++ config.myEnv.servers.eldiron.ips.main.ip4
+ ++ config.myEnv.servers.eldiron.ips.main.ip6;
+ relay-ips = [
+ "127.0.0.1"
+ "::1"
+ ] ++ config.myEnv.servers.eldiron.ips.main.ip4
+ ++ config.myEnv.servers.eldiron.ips.main.ip6;
+ };
+ };
+}
diff --git a/systems/eldiron/databases/default.nix b/systems/eldiron/databases/default.nix
new file mode 100644
index 0000000..d8d3048
--- /dev/null
+++ b/systems/eldiron/databases/default.nix
@@ -0,0 +1,56 @@
+{ lib, config, secrets, ... }:
+let
+ cfg = config.myServices.databases;
+in
+{
+ options.myServices = {
+ databases.enable = lib.mkEnableOption "my databases service";
+ };
+
+ config.myServices.dns.zones."immae.eu".subdomains.db-1 = lib.mkIf cfg.enable (with config.myServices.dns.helpers; ips servers.eldiron.ips.main);
+ config.myServices.databases = lib.mkIf cfg.enable {
+
+ mariadb = {
+ enable = true;
+ ldapConfig = {
+ inherit (config.myEnv.ldap) host base;
+ inherit (config.myEnv.databases.mysql.pam) dn filter password;
+ };
+ replicationLdapConfig = {
+ inherit (config.myEnv.ldap) host base;
+ inherit (config.myEnv.servers.eldiron.ldap) dn password;
+ };
+ credentials.root = config.myEnv.databases.mysql.systemUsers.root;
+ };
+
+ openldap = {
+ accessFile = secrets.ldap-conf;
+ baseDn = config.myEnv.ldap.base;
+ rootDn = config.myEnv.ldap.root_dn;
+ rootPw = config.myEnv.ldap.root_pw;
+ enable = true;
+ };
+
+ postgresql = {
+ ldapConfig = {
+ inherit (config.myEnv.ldap) host base;
+ inherit (config.myEnv.databases.postgresql.pam) dn filter password;
+ };
+ replicationLdapConfig = {
+ inherit (config.myEnv.ldap) host base;
+ inherit (config.myEnv.servers.eldiron.ldap) dn password;
+ };
+ authorizedHosts = {
+ };
+ replicationHosts = {
+ backup-2 = {
+ ip4 = config.myEnv.servers.backup-2.ips.main.ip4;
+ ip6 = config.myEnv.servers.backup-2.ips.main.ip6;
+ };
+ };
+ enable = true;
+ };
+
+ redis.enable = true;
+ };
+}
diff --git a/systems/eldiron/databases/mariadb.nix b/systems/eldiron/databases/mariadb.nix
new file mode 100644
index 0000000..b4a6917
--- /dev/null
+++ b/systems/eldiron/databases/mariadb.nix
@@ -0,0 +1,188 @@
+{ lib, pkgs, config, ... }:
+let
+ cfg = config.myServices.databases.mariadb;
+in {
+ options.myServices.databases = {
+ mariadb = {
+ enable = lib.mkOption {
+ default = false;
+ example = true;
+ description = "Whether to enable mariadb database";
+ type = lib.types.bool;
+ };
+ package = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.mariadb;
+ description = ''
+ Mariadb package to use.
+ '';
+ };
+ credentials = lib.mkOption {
+ default = {};
+ description = "Credentials";
+ type = lib.types.attrsOf lib.types.str;
+ };
+ ldapConfig = lib.mkOption {
+ description = "LDAP configuration to allow PAM identification via LDAP";
+ type = lib.types.submodule {
+ options = {
+ host = lib.mkOption { type = lib.types.str; };
+ base = lib.mkOption { type = lib.types.str; };
+ dn = lib.mkOption { type = lib.types.str; };
+ password = lib.mkOption { type = lib.types.str; };
+ filter = lib.mkOption { type = lib.types.str; };
+ };
+ };
+ };
+ replicationLdapConfig = lib.mkOption {
+ description = "LDAP configuration to allow replication";
+ type = lib.types.submodule {
+ options = {
+ host = lib.mkOption { type = lib.types.str; };
+ base = lib.mkOption { type = lib.types.str; };
+ dn = lib.mkOption { type = lib.types.str; };
+ password = lib.mkOption { type = lib.types.str; };
+ };
+ };
+ };
+ dataDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/var/lib/mysql";
+ description = ''
+ The directory where Mariadb stores its data.
+ '';
+ };
+ # Output variables
+ socketsDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/run/mysqld";
+ description = ''
+ The directory where Mariadb puts sockets.
+ '';
+ };
+ sockets = lib.mkOption {
+ type = lib.types.attrsOf lib.types.path;
+ default = {
+ mysqld = "${cfg.socketsDir}/mysqld.sock";
+ };
+ readOnly = true;
+ description = ''
+ Mariadb sockets
+ '';
+ };
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ networking.firewall.allowedTCPPorts = [ config.myEnv.databases.mysql.port ];
+
+ # for adminer, ssl is implemented with mysqli only, which is
+ # currently disabled because it’s not compatible with pam.
+ # Thus we need to generate two users for each 'remote': one remote
+ # with SSL, and one localhost without SSL.
+ # User identified by LDAP:
+ # CREATE USER foo@% IDENTIFIED VIA pam USING 'mysql' REQUIRE SSL;
+ # CREATE USER foo@localhost IDENTIFIED VIA pam USING 'mysql';
+
+ # To create a user (host) for replication:
+ # CREATE USER 'host'@'%' IDENTIFIED VIA pam USING 'mysql_replication' REQUIRE SSL;
+ # GRANT REPLICATION SLAVE, REPLICATION CLIENT, RELOAD, LOCK TABLES, SELECT, SHOW VIEW ON *.* TO 'host'@'%';
+ # (the lock/select grant permits to let the replication host handle
+ # the initial fetch of the database)
+ # % should be valid for both localhost (for cron dumps) and the origin host.
+ services.mysql = {
+ enable = true;
+ package = cfg.package;
+ dataDir = cfg.dataDir;
+ settings = {
+ mysqld = {
+ port = config.myEnv.databases.mysql.port;
+ ssl_ca = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
+ ssl_key = "${config.security.acme.certs.mysql.directory}/key.pem";
+ ssl_cert = "${config.security.acme.certs.mysql.directory}/fullchain.pem";
+
+ # for replication
+ log-bin = "mariadb-bin";
+ server-id = "1";
+
+ # this introduces a small delay before storing on disk, but
+ # makes it order of magnitudes quicker
+ innodb_flush_log_at_trx_commit = "0";
+
+ # This is necessary since the default ("dialog") is not
+ # supported by php's mysqlnd plugin (in mysqli). But with that
+ # change only regular login+password schemes can work (no
+ # "fancy" authentication methods like fprintd or keys)
+ pam_use_cleartext_plugin = true;
+ };
+ };
+ };
+
+ users.users.mysql.extraGroups = [ "keys" ];
+ security.acme.certs."mysql" = {
+ group = "mysql";
+ domain = "db-1.immae.eu";
+ postRun = ''
+ systemctl restart mysql.service
+ '';
+ };
+
+ secrets.keys = {
+ "mysql/mysqldump" = {
+ permissions = "0400";
+ user = "root";
+ group = "root";
+ text = ''
+ [mysqldump]
+ user = root
+ password = ${cfg.credentials.root}
+ '';
+ };
+ "mysql/pam" = {
+ permissions = "0400";
+ user = "mysql";
+ group = "mysql";
+ text = with cfg.ldapConfig; ''
+ host ${host}
+ base ${base}
+ binddn ${dn}
+ bindpw ${password}
+ pam_filter ${filter}
+ ssl start_tls
+ '';
+ };
+ "mysql/pam_replication" = {
+ permissions = "0400";
+ user = "mysql";
+ group = "mysql";
+ text = with cfg.replicationLdapConfig; ''
+ host ${host}
+ base ${base}
+ binddn ${dn}
+ bindpw ${password}
+ pam_login_attribute cn
+ ssl start_tls
+ '';
+ };
+ };
+
+ security.pam.services = let
+ pam_ldap = "${pkgs.pam_ldap}/lib/security/pam_ldap.so";
+ in {
+ mysql = {
+ text = ''
+ # https://mariadb.com/kb/en/mariadb/pam-authentication-plugin/
+ auth required ${pam_ldap} config=${config.secrets.fullPaths."mysql/pam"}
+ account required ${pam_ldap} config=${config.secrets.fullPaths."mysql/pam"}
+ '';
+ };
+ mysql_replication = {
+ text = ''
+ auth required ${pam_ldap} config=${config.secrets.fullPaths."mysql/pam_replication"}
+ account required ${pam_ldap} config=${config.secrets.fullPaths."mysql/pam_replication"}
+ '';
+ };
+ };
+
+ };
+}
diff --git a/systems/eldiron/databases/openldap/default.nix b/systems/eldiron/databases/openldap/default.nix
new file mode 100644
index 0000000..7cd15da
--- /dev/null
+++ b/systems/eldiron/databases/openldap/default.nix
@@ -0,0 +1,304 @@
+{ lib, pkgs, config, openldap, ... }:
+let
+ cfg = config.myServices.databases.openldap;
+in
+{
+ options.myServices.databases = {
+ openldap = {
+ enable = lib.mkOption {
+ default = false;
+ example = true;
+ description = "Whether to enable ldap";
+ type = lib.types.bool;
+ };
+ baseDn = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Base DN for LDAP
+ '';
+ };
+ rootDn = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Root DN
+ '';
+ };
+ rootPw = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Root (Hashed) password
+ '';
+ };
+ accessFile = lib.mkOption {
+ type = lib.types.path;
+ description = ''
+ The file path that defines the access
+ '';
+ };
+ dataDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/var/lib/openldap/mdb";
+ description = ''
+ The directory where Openldap stores its data.
+ '';
+ };
+ socketsDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/run/openldap";
+ description = ''
+ The directory where Openldap puts sockets and pid files.
+ '';
+ };
+ # Output variables
+ pids = lib.mkOption {
+ type = lib.types.attrsOf lib.types.path;
+ default = {
+ pid = "${cfg.socketsDir}/slapd.pid";
+ args = "${cfg.socketsDir}/slapd.args";
+ };
+ readOnly = true;
+ description = ''
+ Slapd pid files
+ '';
+ };
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.ldap =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ nixpkgs.overlays = [
+ (self: super: {
+ openldap_libressl_cyrus = (self.openldap.override {
+ openssl = self.libressl;
+ cyrus_sasl = self.cyrus_sasl.overrideAttrs (old: {
+ configureFlags = old.configureFlags ++ [ "--with-configdir=/etc/sasl2" ];
+ });
+ }).overrideAttrs (old: {
+ configureFlags = old.configureFlags ++ [ "--with-cyrus-sasl" "--enable-spasswd" ];
+ });
+ })
+ ];
+
+ secrets.keys = {
+ "ldap/password" = {
+ permissions = "0400";
+ user = "openldap";
+ group = "openldap";
+ text = "${cfg.rootPw}";
+ };
+ "ldap/access" = {
+ permissions = "0400";
+ user = "openldap";
+ group = "openldap";
+ text = builtins.readFile cfg.accessFile;
+ };
+ "ldap" = {
+ permissions = "0500";
+ user = "openldap";
+ group = "openldap";
+ isDir = true;
+ };
+ };
+ users.users.openldap.extraGroups = [ "keys" ];
+ networking.firewall.allowedTCPPorts = [ 636 389 ];
+
+ security.acme.certs."ldap" = {
+ group = "openldap";
+ domain = "ldap.immae.eu";
+ postRun = ''
+ systemctl restart openldap.service
+ '';
+ };
+
+ services.filesWatcher.openldap = {
+ restart = true;
+ paths = [ config.secrets.fullPaths."ldap" ];
+ };
+
+ services.openldap = {
+ enable = true;
+ urlList = [ "ldap://" "ldaps://" ];
+ package = pkgs.openldap_libressl_cyrus;
+ settings = {
+ attrs = {
+ olcPidFile = cfg.pids.pid;
+ olcArgsFile = cfg.pids.args;
+ olcLogLevel = "none";
+ olcTLSCertificateFile = "${config.security.acme.certs.ldap.directory}/cert.pem";
+ olcTLSCertificateKeyFile = "${config.security.acme.certs.ldap.directory}/key.pem";
+ olcTLSCACertificateFile = "${config.security.acme.certs.ldap.directory}/fullchain.pem";
+ olcTLSCACertificatePath = "${pkgs.cacert.unbundled}/etc/ssl/certs/";
+ # This makes openldap crash
+ # olcTLSCipherSuite = "DEFAULT";
+ #olcSaslHost = "kerberos.immae.eu";
+ # Map sasl "dn" to ldap dn
+ #olcAuthzRegexp = ''{0}"uid=([^,]*)(,cn=IMMAE.EU)?,cn=(gssapi|gss-spnego),cn=auth" "uid=$1,ou=users,dc=immae,dc=eu"'';
+ };
+ children = {
+ "cn=module{0}" = {
+ attrs = {
+ cn = "module{0}";
+ objectClass = [ "olcModuleList" ];
+ olcModuleLoad = [ "{0}back_mdb" "{1}memberof" "{2}syncprov" ];
+ };
+ };
+ "cn=schema".includes = map (schema:
+ "${config.services.openldap.package}/etc/schema/${schema}.ldif"
+ ) [ "core" "cosine" "inetorgperson" "nis" ] ++ [
+ "${openldap.immae-ldif}"
+ ];
+ "olcDatabase={0}config" = {
+ attrs = {
+ objectClass = "olcDatabaseConfig";
+ olcDatabase = "{0}config";
+ olcAccess = ["{0}to * by * none"];
+ };
+ };
+ "olcDatabase={1}mdb" = {
+ attrs = {
+ objectClass = [ "olcDatabaseConfig" "olcMdbConfig" ];
+ olcDatabase = "{1}mdb";
+ olcDbIndex = [
+ "objectClass eq"
+ "uid pres,eq"
+ "mail pres,eq,sub"
+ "cn pres,eq,sub"
+ "sn pres,eq,sub"
+ "dc eq"
+ "member eq"
+ "memberOf eq"
+ ];
+ olcAccess = let
+ join = builtins.replaceStrings ["\n"] [" "];
+ in [
+ # First matching "to" + "by" wins
+ #### Replication needs full access
+ (join ''{0}to *
+ by dn.base="uid=ldap_replication,cn=ldap,ou=services,dc=immae,dc=eu" read
+ by * break
+ '')
+ #### Prevent modification of SASL passwords
+ (join ''{1}to attrs=userPassword val.regex="^.SASL..+"
+ by self read
+ by anonymous auth
+ by * none
+ '')
+ #### Oneself needs access to users password
+ (join ''{2}to attrs=userPassword,shadowLastChange
+ by self write
+ by anonymous auth
+ by * none
+ '')
+ #### Should be write, but disabled during migration to psql
+ (join ''{3}to attrs=immaeSshKey
+ by self read
+ by * break
+ '')
+
+ #### Anyone can auth, and I can see myself
+ (join ''{4}to *
+ by self read
+ by anonymous auth
+ by * break
+ '')
+
+ #### Specific access for phpldapadmin
+ (join ''{5}to filter="(uid=*)" attrs=entry,uid
+ by dn.base="cn=phpldapadmin,ou=services,dc=immae,dc=eu" read
+ by * break
+ '')
+
+ #### Hosts
+ # The attributes are available to every host
+ (join ''{6}to dn.one="ou=hosts,dc=immae,dc=eu"
+ by dn.subtree="ou=hosts,dc=immae,dc=eu" read
+ by dn.base="dc=immae,dc=eu" search
+ by * break
+ '')
+ #### /Hosts
+
+ #### Local services
+ # this/-* & user : all your ancestors have access to you
+ # this/memberOf/-* & user : all those whom you belong to (in a group),
+ # and their ancestors, have access to you
+ # user/immaeAccessWriteDn*/member & this : you have write access to the
+ # members of your immaeAccessDn
+ # attributes
+ # user/immaeAccessDn*/member & this : you have access to the members
+ # of your immaeAccessDn attributes
+ # user/immaeAccessReadSubtree* & this/-* : you have access to the
+ # childrens of your immaeAccessReadSubtree
+ # attributes
+ # this/memberOf/-* & user/immaeAccessReadSubtree*: you have access to
+ # the members of the childrens of your
+ # immaeAccessReadSubtree attributes
+ # http://www.openldap.org/faq/data/cache/1133.html
+ (join ''{7}to dn.subtree="dc=immae,dc=eu"
+ by dn.subtree="ou=external_services,dc=immae,dc=eu" break
+ by set.exact="this/-* & user" read
+ by set.exact="this/memberOf/-* & user" read
+ by set.exact="user/immaeAccessWriteDn*/member & this" write
+ by set.exact="user/immaeAccessDn*/member & this" read
+ by set.exact="user/immaeAccessReadSubtree* & this/-*" read
+ by set.exact="this/memberOf/-* & user/immaeAccessReadSubtree*" read
+ by users search
+ by * break
+ '')
+ #### /Local services
+
+ #### External services
+ # http://www.openldap.org/faq/data/cache/429.html
+ # FIXME: Find a way to whitelist?
+ (join ''{8}to attrs=immaeSshKey
+ by dn.subtree="ou=external_services,dc=immae,dc=eu" none
+ '')
+ (join ''{9}to dn.subtree="dc=immae,dc=eu"
+ by set.exact="this/-* & user" read
+ by set.exact="this/memberOf/-* & user" read
+ by set.exact="user/immaeAccessDn*/member & this/-*" read
+ by users search
+ by * none
+ '')
+ #### /External services
+ ];
+ olcDbDirectory = cfg.dataDir;
+ olcRootDN = cfg.rootDn;
+ olcRootPW.path = config.secrets.fullPaths."ldap/password";
+ olcSuffix = cfg.baseDn;
+ };
+ children = {
+ "olcOverlay={0}memberof" = {
+ attrs = {
+ objectClass = [ "olcOverlayConfig" "olcMemberOf" ];
+ olcOverlay = "{0}memberof";
+ };
+ };
+ "olcOverlay={1}syncprov" = {
+ attrs = {
+ objectClass = [ "olcOverlayConfig" "olcSyncProvConfig" ];
+ olcOverlay = "{1}syncprov";
+ olcSpCheckpoint = "100 10";
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+ myServices.monitoring.fromMasterActivatedPlugins = [ "tcp" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "ldap SSL is up to date";
+ host_name = config.hostEnv.fqdn;
+ use = "external-service";
+ check_command = ["check_tcp_ssl" "636"];
+
+ servicegroups = "webstatus-ssl";
+ _webstatus_name = "LDAP";
+ _webstatus_url = "ldap.immae.eu";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/databases/postgresql.nix b/systems/eldiron/databases/postgresql.nix
new file mode 100644
index 0000000..721059a
--- /dev/null
+++ b/systems/eldiron/databases/postgresql.nix
@@ -0,0 +1,236 @@
+{ lib, pkgs, config, ... }:
+let
+ cfg = config.myServices.databases.postgresql;
+in {
+ options.myServices.databases = {
+ postgresql = {
+ enable = lib.mkOption {
+ default = false;
+ example = true;
+ description = "Whether to enable postgresql database";
+ type = lib.types.bool;
+ };
+ package = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.postgresql;
+ description = ''
+ Postgresql package to use.
+ '';
+ };
+ ldapConfig = lib.mkOption {
+ description = "LDAP configuration to allow PAM identification via LDAP";
+ type = lib.types.submodule {
+ options = {
+ host = lib.mkOption { type = lib.types.str; };
+ base = lib.mkOption { type = lib.types.str; };
+ dn = lib.mkOption { type = lib.types.str; };
+ password = lib.mkOption { type = lib.types.str; };
+ filter = lib.mkOption { type = lib.types.str; };
+ };
+ };
+ };
+ replicationLdapConfig = lib.mkOption {
+ description = "LDAP configuration to allow replication";
+ type = lib.types.submodule {
+ options = {
+ host = lib.mkOption { type = lib.types.str; };
+ base = lib.mkOption { type = lib.types.str; };
+ dn = lib.mkOption { type = lib.types.str; };
+ password = lib.mkOption { type = lib.types.str; };
+ };
+ };
+ };
+ authorizedHosts = lib.mkOption {
+ default = {};
+ description = "Hosts to allow connections from";
+ type = lib.types.attrsOf (lib.types.listOf (lib.types.submodule {
+ options = {
+ method = lib.mkOption {
+ default = "md5";
+ type = lib.types.str;
+ };
+ username = lib.mkOption {
+ default = "all";
+ type = lib.types.str;
+ };
+ database = lib.mkOption {
+ default = "all";
+ type = lib.types.str;
+ };
+ ip4 = lib.mkOption {
+ default = [];
+ type = lib.types.listOf lib.types.str;
+ };
+ ip6 = lib.mkOption {
+ default = [];
+ type = lib.types.listOf lib.types.str;
+ };
+ };
+ }));
+ };
+ replicationHosts = lib.mkOption {
+ default = {};
+ description = "Hosts to allow replication from";
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ ip4 = lib.mkOption {
+ type = lib.types.listOf lib.types.str;
+ };
+ ip6 = lib.mkOption {
+ type = lib.types.listOf lib.types.str;
+ };
+ };
+ });
+ };
+ # Output variables
+ socketsDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/run/postgresql";
+ description = ''
+ The directory where Postgresql puts sockets.
+ '';
+ readOnly = true;
+ };
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ networking.firewall.allowedTCPPorts = [ 5432 ];
+
+ security.acme.certs."postgresql" = {
+ group = "postgres";
+ domain = "db-1.immae.eu";
+ postRun = ''
+ systemctl reload postgresql.service
+ '';
+ };
+
+ systemd.services.postgresql.serviceConfig = {
+ SupplementaryGroups = "keys";
+ ExecStartPre = [ ("+" + (pkgs.writeShellScript "postgresql-fix-cert" ''
+ # postgresql complains:
+ # private key file "${config.security.acme.certs.postgresql.directory}/key.pem" must be owned by the database user or root
+ cp -f "${config.security.acme.certs.postgresql.directory}/key.pem" "${config.services.postgresql.dataDir}/key.pem"
+ chown postgres:postgres "${config.services.postgresql.dataDir}/key.pem"
+ chmod go-r "${config.services.postgresql.dataDir}/key.pem"
+ '')) ];
+ };
+ systemd.services.postgresql.postStart = lib.mkAfter ''
+ # This line is already defined in 19.09
+ PSQL="psql --port=5432"
+
+ ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (role: _: ''
+ $PSQL -tAc "SELECT 1 FROM pg_roles WHERE rolname='${role}'" \
+ | grep -q 1 \
+ || $PSQL -tAc 'CREATE USER "${role}" WITH REPLICATION'
+ '') cfg.replicationHosts)}
+
+ ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (role: _:
+ let
+ sname = builtins.replaceStrings ["-"] ["_"] role;
+ in
+ ''
+ $PSQL -tAc "SELECT 1 FROM pg_replication_slots WHERE slot_name='${sname}'" \
+ | grep -q 1 \
+ || $PSQL -tAc "SELECT * FROM pg_create_physical_replication_slot('${sname}')"
+ '') cfg.replicationHosts)}
+ '';
+
+ services.postgresql = {
+ enable = true;
+ package = cfg.package;
+ enableTCPIP = true;
+ checkConfig = false;
+ logLinePrefix = "%h %q%u@%d "; # Default: '%m [%p] ', already stored independently by journald. %h needed for fail2ban
+ settings = {
+ max_connections = 300;
+ wal_level = "logical";
+ shared_buffers = "512MB";
+ work_mem = "10MB";
+ max_wal_size = "1GB";
+ min_wal_size = "80MB";
+ log_timezone = "Europe/Paris";
+ datestyle = "iso, mdy";
+ timezone = "Europe/Paris";
+ lc_messages = "en_US.UTF-8";
+ lc_monetary = "en_US.UTF-8";
+ lc_numeric = "en_US.UTF-8";
+ lc_time = "en_US.UTF-8";
+ default_text_search_config = "pg_catalog.english";
+ # this introduces a small delay before storing on disk, but
+ # makes it order of magnitudes quicker
+ synchronous_commit = "off";
+ ssl = "on";
+ ssl_cert_file = "${config.security.acme.certs.postgresql.directory}/fullchain.pem";
+ ssl_key_file = "${config.services.postgresql.dataDir}/key.pem";
+ };
+ authentication = let
+ hosts = builtins.concatStringsSep "\n" (
+ lib.lists.flatten (lib.mapAttrsToList (k: vs: map (v:
+ map (ip6: "hostssl ${v.database} ${v.username} ${ip6} ${v.method}") v.ip6
+ ++ map (ip4: "hostssl ${v.database} ${v.username} ${ip4}/32 ${v.method}") v.ip4
+ ) vs) cfg.authorizedHosts
+ ));
+ replication = builtins.concatStringsSep "\n" (
+ lib.lists.flatten (lib.mapAttrsToList (k: v:
+ map (ip6: "hostssl replication ${k} ${ip6}/128 pam pamservice=postgresql_replication") v.ip6
+ ++ map (ip4: "hostssl replication ${k} ${ip4}/32 pam pamservice=postgresql_replication") v.ip4
+ ) cfg.replicationHosts
+ ));
+ in ''
+ local all postgres ident
+ local all all md5
+ ${hosts}
+ hostssl all all all pam
+ ${replication}
+ '';
+ };
+
+ secrets.keys = {
+ "postgresql/pam" = {
+ permissions = "0400";
+ group = "postgres";
+ user = "postgres";
+ text = with cfg.ldapConfig; ''
+ host ${host}
+ base ${base}
+ binddn ${dn}
+ bindpw ${password}
+ pam_filter ${filter}
+ ssl start_tls
+ '';
+ };
+ "postgresql/pam_replication" = {
+ permissions = "0400";
+ group = "postgres";
+ user = "postgres";
+ text = with cfg.replicationLdapConfig; ''
+ host ${host}
+ base ${base}
+ binddn ${dn}
+ bindpw ${password}
+ pam_login_attribute cn
+ ssl start_tls
+ '';
+ };
+ };
+
+ security.pam.services = let
+ pam_ldap = "${pkgs.pam_ldap}/lib/security/pam_ldap.so";
+ in {
+ postgresql = {
+ text = ''
+ auth required ${pam_ldap} config=${config.secrets.fullPaths."postgresql/pam"}
+ account required ${pam_ldap} config=${config.secrets.fullPaths."postgresql/pam"}
+ '';
+ };
+ postgresql_replication = {
+ text = ''
+ auth required ${pam_ldap} config=${config.secrets.fullPaths."postgresql/pam_replication"}
+ account required ${pam_ldap} config=${config.secrets.fullPaths."postgresql/pam_replication"}
+ '';
+ };
+ };
+ };
+}
+
diff --git a/systems/eldiron/databases/redis.nix b/systems/eldiron/databases/redis.nix
new file mode 100644
index 0000000..1f57aa9
--- /dev/null
+++ b/systems/eldiron/databases/redis.nix
@@ -0,0 +1,138 @@
+{ lib, config, pkgs, ... }:
+let
+ cfg = config.myServices.databases.redis;
+in {
+ options.myServices.databases.redis = {
+ enable = lib.mkOption {
+ default = false;
+ example = true;
+ description = "Whether to enable redis database";
+ type = lib.types.bool;
+ };
+ socketsDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/run/redis";
+ description = ''
+ The directory where Redis puts sockets.
+ '';
+ };
+ # Output variables
+ sockets = lib.mkOption {
+ type = lib.types.attrsOf lib.types.path;
+ default = {
+ redis = "${cfg.socketsDir}/redis.sock";
+ };
+ readOnly = true;
+ description = ''
+ Redis sockets
+ '';
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ users.users.redis.uid = config.ids.uids.redis;
+ users.groups.redis.gid = config.ids.gids.redis;
+ services.redis.servers."" = {
+ enable = true;
+ bind = "127.0.0.1";
+ unixSocket = cfg.sockets.redis;
+ unixSocketPerm = 777;
+ maxclients = 1024;
+ };
+ systemd.services.redis.serviceConfig.Slice = "redis.slice";
+ systemd.services.redis.serviceConfig.RuntimeDirectoryMode = lib.mkForce "0755";
+ services.redis.servers."php-sessions" = {
+ enable = true;
+ maxclients = 1024;
+ unixSocketPerm = 777;
+ user = "wwwrun";
+ };
+
+ services.spiped = {
+ enable = true;
+ config.redis = {
+ decrypt = true;
+ source = "0.0.0.0:16379";
+ target = "/run/redis/redis.sock";
+ keyfile = config.secrets.fullPaths."redis/spiped_keyfile";
+ };
+ };
+ systemd.services.spiped_redis = {
+ description = "Secure pipe 'redis'";
+ after = [ "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+
+ serviceConfig = {
+ Slice = "redis.slice";
+ Restart = "always";
+ User = "spiped";
+ PermissionsStartOnly = true;
+ SupplementaryGroups = "keys";
+ };
+
+ script = "exec ${pkgs.spiped}/bin/spiped -F `cat /etc/spiped/redis.spec`";
+ };
+
+ #services.filesWatcher.predixy = {
+ # restart = true;
+ # paths = [ config.secrets.fullPaths."redis/predixy.conf" ];
+ #};
+
+ networking.firewall.allowedTCPPorts = [ 16379 ];
+ secrets.keys = {
+ #"redis/predixy.conf" = {
+ # user = "redis";
+ # group = "redis";
+ # permissions = "0400";
+ # text = ''
+ # Name Predixy
+ # Bind 127.0.0.1:7617
+ # ClientTimeout 300
+ # WorkerThreads 1
+
+ # Authority {
+ # Auth "${config.myEnv.databases.redis.predixy.read}" {
+ # Mode read
+ # }
+ # }
+
+ # StandaloneServerPool {
+ # Databases 16
+ # RefreshMethod fixed
+ # Group shard001 {
+ # + ${config.myEnv.databases.redis.socket}
+ # }
+ # }
+ # '';
+ #};
+ "redis/spiped_keyfile" = {
+ user = "spiped";
+ group = "spiped";
+ permissions = "0400";
+ text = config.myEnv.databases.redis.spiped_key;
+ };
+ };
+
+ systemd.slices.redis = {
+ description = "Redis slice";
+ };
+
+ #systemd.services.predixy = {
+ # description = "Redis proxy";
+ # wantedBy = [ "multi-user.target" ];
+ # after = [ "redis.service" ];
+
+ # serviceConfig = {
+ # Slice = "redis.slice";
+ # User = "redis";
+ # Group = "redis";
+ # SupplementaryGroups = "keys";
+ # Type = "simple";
+
+ # ExecStart = "${pkgs.predixy}/bin/predixy ${config.secrets.fullPaths."redis/predixy.conf"}";
+ # };
+
+ #};
+ };
+}
+
diff --git a/systems/eldiron/dns.nix b/systems/eldiron/dns.nix
new file mode 100644
index 0000000..486fcc1
--- /dev/null
+++ b/systems/eldiron/dns.nix
@@ -0,0 +1,290 @@
+{ lib, pkgs, config, dns-nix, ... }:
+{
+ options.myServices.dns = {
+ enable = lib.mkEnableOption "enable DNS resolver";
+ helpers = lib.mkOption {
+ readOnly = true;
+ description = ''
+ Some useful constants or functions for zones definition
+ '';
+ default = rec {
+ servers = config.myEnv.servers;
+ ips = i: { A = i.ip4; AAAA = i.ip6; };
+ letsencrypt = [ { tag = "issue"; value = "letsencrypt.org"; issuerCritical = false; } ];
+ toKV = a: builtins.concatStringsSep ";" (builtins.attrValues (builtins.mapAttrs (n: v: "${n}=${v}") a));
+ mailMX = {
+ hasEmail = true;
+ subdomains = let
+ mxes = lib.filterAttrs (n: v: v ? mx && v.mx.enable) servers;
+ in
+ lib.mapAttrs' (n: v: lib.nameValuePair v.mx.subdomain (ips v.ips.main)) mxes;
+ };
+ zoneHeader = {
+ TTL = 3*60*60;
+ SOA = {
+ # yyyymmdd?? (increment ?? at each change)
+ serial = 2022121902; # Don't change this value, it is replaced automatically!
+ refresh = 10800;
+ retry = 3600;
+ expire = 604800;
+ minimum = 10800; # negative cache ttl
+ adminEmail = "hostmaster@immae.eu"; #email-address s/@/./
+ nameServer = "ns1.immae.eu.";
+ };
+ };
+ mailSend = {
+ # DKIM
+ subdomains._domainkey.subdomains.eldiron.TXT = [
+ (toKV config.myEnv.mail.dkim.eldiron.public)
+ ];
+ # old key, may still be used by verifiers
+ subdomains._domainkey.subdomains.immae_eu.TXT = [
+ (toKV config.myEnv.mail.dkim.immae_eu.public)
+ ];
+ };
+ mailCommon = name: {
+ MX = let
+ mxes = lib.filterAttrs (n: v: v ? mx && v.mx.enable) servers;
+ in
+ lib.mapAttrsToList (n: v: { preference = v.mx.priority; exchange = "${v.mx.subdomain}.${name}."; }) mxes;
+
+ # https://tools.ietf.org/html/rfc6186
+ SRV = [
+ { service = "submission"; proto = "tcp"; priority = 0; weight = 1; port = 587; target = "smtp.immae.eu."; }
+ { service = "submissions"; proto = "tcp"; priority = 0; weight = 1; port = 465; target = "smtp.immae.eu."; }
+
+ { service = "imap"; proto = "tcp"; priority = 0; weight = 1; port = 143; target = "imap.immae.eu."; }
+ { service = "imaps"; proto = "tcp"; priority = 0; weight = 1; port = 993; target = "imap.immae.eu."; }
+ { service = "sieve"; proto = "tcp"; priority = 0; weight = 1; port = 4190; target = "imap.immae.eu."; }
+
+ { service = "pop3"; proto = "tcp"; priority = 10; weight = 1; port = 110; target = "pop3.immae.eu."; }
+ { service = "pop3s"; proto = "tcp"; priority = 10; weight = 1; port = 995; target = "pop3.immae.eu."; }
+ ];
+
+ subdomains = {
+ # MTA-STS
+ # https://blog.delouw.ch/2018/12/16/using-mta-sts-to-enhance-email-transport-security-and-privacy/
+ # https://support.google.com/a/answer/9261504
+ _mta-sts.TXT = [ (toKV { v = "STSv1"; id = "20200109150200Z"; }) ]; # Don't change this value, it is updated automatically!
+ _tls.subdomains._smtp.TXT = [ (toKV { v = "TLSRPTv1"; "rua" = "mailto:postmaster+mta-sts@immae.eu"; }) ];
+ mta-sts = ips servers.eldiron.ips.main;
+
+ # DMARC
+ _dmarc.TXT = [ (toKV { v = "DMARC1"; p = "none"; adkim = "r"; aspf = "r"; fo = "1"; rua = "mailto:postmaster+rua@immae.eu"; ruf = "mailto:postmaster+ruf@immae.eu"; }) ];
+ };
+
+ # SPF
+ TXT = [ (toKV { v = "spf1 mx ~all"; }) ];
+ };
+ };
+ };
+ zones = lib.mkOption {
+ type = lib.types.attrsOf (dns-nix.lib.types.zone.substSubModules (
+ dns-nix.lib.types.zone.getSubModules ++ [
+ ({ name, ... }: {
+ options = {
+ hasEmail = lib.mkEnableOption "This domain has e-mails configuration";
+ emailPolicies = lib.mkOption {
+ default = {};
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ receive = lib.mkEnableOption "Configure this domain to receive e-mail";
+ };
+ });
+ apply = builtins.mapAttrs (n: v: v // {
+ domain = name;
+ fqdn = if n == "" then name else "${n}.${name}";
+ });
+ };
+ extraConfig = lib.mkOption {
+ type = lib.types.lines;
+ description = "Extra zone configuration for bind";
+ example = ''
+ notify yes;
+ '';
+ default = "";
+ };
+ slaves = lib.mkOption {
+ type = lib.types.listOf lib.types.str;
+ description = "NS slave groups of this zone";
+ default = [];
+ };
+ ns = lib.mkOption {
+ type = lib.types.listOf lib.types.str;
+ default = [];
+ };
+ };
+ })
+ ]));
+ apply = let
+ toNS = n: builtins.map (d: "${d}.") (builtins.concatMap (s: builtins.attrNames config.myEnv.dns.ns."${s}") n);
+ in
+ builtins.mapAttrs (n: v: v // { NS = v.NS or [] ++ toNS (v.ns); });
+ default = {};
+ description = ''
+ attrset of zones to configure
+ '';
+ };
+ };
+ config = let
+ cfg = config.services.bind;
+ in lib.mkIf config.myServices.dns.enable {
+ myServices.chatonsProperties.hostings.dns-secondaire = {
+ file.datetime = "2022-08-22T02:00:00";
+ hosting = {
+ name = "DNS secondaire";
+ description = "DNS secondaire";
+ website = "ns1.immae.eu";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "bind9";
+ website = pkgs.bind.meta.homepage;
+ license.url = pkgs.bind.meta.license.url;
+ license.name = pkgs.bind.meta.license.fullName;
+ version = pkgs.bind.version;
+ source.url = "https://www.isc.org/download/";
+ };
+ };
+ myServices.dns.zones = with config.myServices.dns.helpers; {
+ "imsite.eu" = lib.mkMerge [
+ zoneHeader
+ (ips servers.eldiron.ips.main)
+ {
+ ns = [ "immae" ];
+ CAA = letsencrypt;
+ }
+ ];
+ "immae.dev" = lib.mkMerge [
+ {
+ extraConfig = ''
+ notify yes;
+ '';
+ slaves = [ "raito" ];
+ }
+ zoneHeader
+ (ips servers.eldiron.ips.integration)
+ {
+ ns = [ "immae" "raito" ];
+ CAA = letsencrypt;
+ }
+ ];
+ "immae.eu" = lib.mkMerge [
+ {
+ extraConfig = ''
+ notify yes;
+ '';
+ slaves = [ "raito" ];
+ }
+ zoneHeader
+ (ips servers.eldiron.ips.production)
+ {
+ ns = [ "immae" "raito" ];
+ CAA = letsencrypt;
+
+ # ns1 has glue records in gandi.net
+ subdomains.ns1 = ips servers.eldiron.ips.main;
+ # raito / kurisu.dual.lahfa.xyz ; replace with eldiron in case of problem
+ subdomains.ns2.A = builtins.map (address: { inherit address; ttl = 600; }) servers.eldiron.ips.main.ip4;
+ subdomains.ns2.AAAA = builtins.map (address: { inherit address; ttl = 600; }) servers.eldiron.ips.main.ip6;
+ }
+ {
+ # Machines local users
+ emailPolicies.localhost.receive = false;
+ subdomains.localhost = lib.mkMerge [ (mailCommon "immae.eu") mailSend ];
+ emailPolicies.eldiron.receive = true;
+ subdomains.eldiron = lib.mkMerge [ (mailCommon "immae.eu") mailSend ];
+ }
+ {
+ # For each server "server" and each server ip group "ipgroup",
+ # define ipgroup.server.immae.eu
+ # "main" is set as server.immae.eu instead
+ # if main has an "alias", it is duplicated with this alias.
+ # If the server is a vm, use the v.immae.eu namespace (only main is created)
+ subdomains = let
+ vms = lib.filterAttrs (n: v: v.isVm) servers;
+ bms = lib.filterAttrs (n: v: !v.isVm) servers;
+ toIps = type: builtins.mapAttrs (n: v: ips v.ips."${type}");
+ in
+ lib.mkMerge [
+ (toIps "main" bms)
+
+ { v.subdomains = toIps "main" vms; }
+
+ (lib.mapAttrs (_: v: {
+ subdomains = lib.mapAttrs'
+ (n': v': lib.nameValuePair "${if v'.alias == null then n' else v'.alias}" (ips v'))
+ (lib.filterAttrs (n': v': n' != "main" || v'.alias != null) v.ips);
+ }) bms)
+ ];
+ }
+ {
+ # Outils
+ subdomains = {
+ status = ips servers.monitoring-1.ips.main;
+ };
+ }
+ ];
+ };
+ networking.firewall.allowedUDPPorts = [ 53 ];
+ networking.firewall.allowedTCPPorts = [ 53 ];
+ users.users.named.extraGroups = [ "keys" ];
+ services.bind = {
+ enable = true;
+ cacheNetworks = ["any"];
+ extraOptions = ''
+ allow-recursion { 127.0.0.1; };
+ allow-transfer { none; };
+
+ notify-source ${lib.head config.myEnv.servers.eldiron.ips.main.ip4};
+ notify-source-v6 ${lib.head config.myEnv.servers.eldiron.ips.main.ip6};
+ version none;
+ hostname none;
+ server-id none;
+ '';
+ zones =
+ builtins.mapAttrs (name: v: {
+ master = true;
+ extraConfig = v.extraConfig;
+ masters = [];
+ slaves =
+ lib.flatten (map (n: builtins.attrValues config.myEnv.dns.ns.${n}) v.slaves);
+ file = pkgs.runCommand "${name}.zone" {
+ text = v;
+ passAsFile = [ "text" ];
+ # Automatically change the increment when relevant change
+ # happened (both serial and mta-sts)
+ } ''
+ mv "$textPath" $out
+ increment=$(( 100*($(date -u +%-H) * 60 + $(date -u +%-M))/1440 ))
+ sed -i -e "s/2022121902/$(date -u +%Y%m%d)$increment/g" $out
+ sed -i -e "s/20200109150200Z/$(date -u +%Y%m%d%H%M%SZ)/g" $out
+ '';
+ }) config.myServices.dns.zones;
+ };
+ myServices.monitoring.fromMasterActivatedPlugins = [ "dns" ];
+ myServices.monitoring.fromMasterObjects.service = lib.mkMerge (lib.mapAttrsToList (name: z:
+ lib.optional (builtins.elem "immae" z.ns) {
+ service_description = "eldiron dns is active and authoritative for ${name}";
+ host_name = config.hostEnv.fqdn;
+ use = "dns-service";
+ check_command = ["check_dns" name "-A"];
+
+ servicegroups = "webstatus-dns";
+ _webstatus_name = name;
+ } ++
+ lib.optional (builtins.elem "raito" z.ns) {
+ service_description = "raito dns is active and authoritative for ${name}";
+ host_name = config.hostEnv.fqdn;
+ use = "dns-service";
+ check_command = ["check_external_dns" "kurisu.dual.lahfa.xyz" name "-A"];
+
+ servicegroups = "webstatus-dns";
+ _webstatus_name = "${name} (Secondary DNS Raito)";
+ }
+ ) config.myServices.dns.zones);
+ };
+}
diff --git a/systems/eldiron/duply_backup.nix b/systems/eldiron/duply_backup.nix
new file mode 100644
index 0000000..590d125
--- /dev/null
+++ b/systems/eldiron/duply_backup.nix
@@ -0,0 +1,151 @@
+{ lib, pkgs, config, name, ... }:
+
+let
+ cfg = config.myEnv.backup;
+ varDir = "/var/lib/duply";
+ duplyProfile = profile: remote: prefix: ''
+ GPG_PW="${cfg.password}"
+ TARGET="${cfg.remotes.${remote}.remote profile.bucket}${prefix}"
+ export AWS_ACCESS_KEY_ID="${cfg.remotes.${remote}.accessKeyId}"
+ export AWS_SECRET_ACCESS_KEY="${cfg.remotes.${remote}.secretAccessKey}"
+ SOURCE="${profile.rootDir}"
+ FILENAME=".duplicity-ignore"
+ DUPL_PARAMS="$DUPL_PARAMS --exclude-if-present '$FILENAME'"
+ VERBOSITY=4
+ ARCH_DIR="${varDir}/caches"
+
+ # Do a full backup after 1 month
+ MAX_FULLBKP_AGE=1M
+ DUPL_PARAMS="$DUPL_PARAMS --allow-source-mismatch --exclude-other-filesystems --full-if-older-than $MAX_FULLBKP_AGE "
+ # Backups older than 2months are deleted
+ MAX_AGE=2M
+ # Keep 2 full backups
+ MAX_FULL_BACKUPS=2
+ MAX_FULLS_WITH_INCRS=2
+ '';
+ action = "bkp_purge_purgeFull_purgeIncr";
+ varName = k: remoteName:
+ if remoteName == "eriomem" then k else remoteName + "_" + k;
+in
+{
+ options = {
+ services.duplyBackup.enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = ''
+ Whether to enable remote backups.
+ '';
+ };
+ services.duplyBackup.profiles = lib.mkOption {
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ rootDir = lib.mkOption {
+ type = lib.types.path;
+ description = ''
+ Path to backup
+ '';
+ };
+ bucket = lib.mkOption {
+ type = lib.types.str;
+ default = "immae-${name}";
+ description = ''
+ Bucket to use
+ '';
+ };
+ remotes = lib.mkOption {
+ type = lib.types.listOf lib.types.str;
+ default = ["eriomem"];
+ description = ''
+ Remotes to use for backup
+ '';
+ };
+ excludeFile = lib.mkOption {
+ type = lib.types.lines;
+ default = "";
+ description = ''
+ Content to put in exclude file
+ '';
+ };
+ };
+ });
+ };
+ };
+
+ config = lib.mkIf config.services.duplyBackup.enable {
+ system.activationScripts.backup = ''
+ install -m 0700 -o root -g root -d ${varDir} ${varDir}/caches
+ '';
+ secrets.keys = lib.listToAttrs (lib.flatten (lib.mapAttrsToList (k: v:
+ map (remote: [
+ (lib.nameValuePair "backup/${varName k remote}/conf" {
+ permissions = "0400";
+ text = duplyProfile v remote "${k}/";
+ })
+ (lib.nameValuePair "backup/${varName k remote}/exclude" {
+ permissions = "0400";
+ text = v.excludeFile;
+ })
+ (lib.nameValuePair "backup/${varName k remote}" {
+ permissions = "0500";
+ isDir = true;
+ })
+ ]) v.remotes) config.services.duplyBackup.profiles));
+
+ services.cron = {
+ enable = true;
+ systemCronJobs = let
+ backups = pkgs.writeScript "backups" ''
+ #!${pkgs.stdenv.shell}
+
+ ${builtins.concatStringsSep "\n" (lib.flatten (lib.mapAttrsToList (k: v:
+ map (remote: [
+ ''
+ touch ${varDir}/${varName k remote}.log
+ ${pkgs.duply}/bin/duply ${config.secrets.fullPaths."backup/${varName k remote}"}/ ${action} --force >> ${varDir}/${varName k remote}.log
+ [[ $? = 0 ]] || echo -e "Error when doing backup for ${varName k remote}, see above\n---------------------------------------" >&2
+ ''
+ ]) v.remotes
+ ) config.services.duplyBackup.profiles))}
+ '';
+ in
+ [
+ "0 2 * * * root ${backups}"
+ ];
+
+ };
+
+ security.pki.certificateFiles = [
+ (pkgs.fetchurl {
+ url = "http://downloads.e.eriomem.net/eriomemca.pem";
+ sha256 = "1ixx4c6j3m26j8dp9a3dkvxc80v1nr5aqgmawwgs06bskasqkvvh";
+ })
+ ];
+
+ myServices.monitoring.fromMasterActivatedPlugins = [ "eriomem" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "eriomem backup is up and not full";
+ host_name = config.hostEnv.fqdn;
+ use = "external-service";
+ check_command = "check_backup_eriomem";
+
+ check_interval = 120;
+ notification_interval = "1440";
+
+ servicegroups = "webstatus-backup";
+ }
+
+ {
+ service_description = "ovh backup is up and not full";
+ host_name = config.hostEnv.fqdn;
+ use = "external-service";
+ check_command = "check_ok";
+
+ check_interval = 120;
+ notification_interval = "1440";
+
+ servicegroups = "webstatus-backup";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/ejabberd/default.nix b/systems/eldiron/ejabberd/default.nix
new file mode 100644
index 0000000..5268516
--- /dev/null
+++ b/systems/eldiron/ejabberd/default.nix
@@ -0,0 +1,141 @@
+{ lib, pkgs, config, mypackages-lib, ... }:
+let
+ cfg = config.myServices.ejabberd;
+in
+{
+ options.myServices = {
+ ejabberd.enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = ''
+ Whether to enable ejabberd service.
+ '';
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.fr" = with config.myServices.dns.helpers;
+ lib.mkMerge [
+ {
+ extraConfig = ''
+ notify yes;
+ '';
+ slaves = [ "raito" ];
+ emailPolicies."".receive = true;
+ }
+ zoneHeader
+ mailMX
+ (mailCommon "immae.fr")
+ (ips servers.eldiron.ips.main)
+ {
+ ns = [ "immae" "raito" ];
+ CAA = letsencrypt;
+ subdomains.www = ips servers.eldiron.ips.production;
+ subdomains.im = ips servers.eldiron.ips.main;
+ subdomains.conference = ips servers.eldiron.ips.main;
+ subdomains.pubsub = ips servers.eldiron.ips.main;
+ subdomains.proxy = ips servers.eldiron.ips.main;
+ subdomains.upload = ips servers.eldiron.ips.main;
+ subdomains._xmppconnect.TXT = [
+ "_xmpp-client-xbosh=https://im.immae.fr/bosh"
+ "_xmpp-client-websocket=wss://im.immae.fr/ws"
+ ];
+ }
+ ];
+
+ security.acme.certs = {
+ "ejabberd" = {
+ group = "ejabberd";
+ domain = "eldiron.immae.eu";
+ keyType = "rsa4096";
+ postRun = ''
+ systemctl restart ejabberd.service
+ '';
+ extraDomainNames = [ "immae.fr" "conference.immae.fr" "proxy.immae.fr" "pubsub.immae.fr" "upload.immae.fr" ];
+ };
+ };
+ networking.firewall.allowedTCPPorts = [ 5222 5269 ];
+ myServices.websites.tools.im.enable = true;
+ systemd.services.ejabberd.postStop = ''
+ rm /var/log/ejabberd/erl_crash*.dump
+ '';
+ secrets.keys = {
+ "ejabberd/psql.yml" = {
+ permissions = "0400";
+ user = "ejabberd";
+ group = "ejabberd";
+ text = ''
+ sql_type: pgsql
+ sql_server: "localhost"
+ sql_database: "${config.myEnv.jabber.postgresql.database}"
+ sql_username: "${config.myEnv.jabber.postgresql.user}"
+ sql_password: "${config.myEnv.jabber.postgresql.password}"
+ '';
+ };
+ "ejabberd/host.yml" = {
+ permissions = "0400";
+ user = "ejabberd";
+ group = "ejabberd";
+ text = ''
+ host_config:
+ "immae.fr":
+ domain_certfile: "${config.security.acme.certs.ejabberd.directory}/full.pem"
+ auth_method: [ldap]
+ ldap_servers: ["${config.myEnv.jabber.ldap.host}"]
+ ldap_encrypt: tls
+ ldap_rootdn: "${config.myEnv.jabber.ldap.dn}"
+ ldap_password: "${config.myEnv.jabber.ldap.password}"
+ ldap_base: "${config.myEnv.jabber.ldap.base}"
+ ldap_uids:
+ uid: "%u"
+ immaeXmppUid: "%u"
+ ldap_filter: "${config.myEnv.jabber.ldap.filter}"
+ '';
+ };
+ };
+ users.users.ejabberd.extraGroups = [ "keys" ];
+ services.ejabberd = {
+ package = pkgs.ejabberd.override { withPgsql = true; };
+ imagemagick = true;
+ enable = true;
+ ctlConfig = ''
+ ERLANG_NODE=ejabberd@localhost
+ '';
+ configFile = pkgs.runCommand "ejabberd.yml" {
+ certificatePrivateKeyAndFullChain = "${config.security.acme.certs.ejabberd.directory}/full.pem";
+ certificateCA = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
+ sql_config_file = config.secrets.fullPaths."ejabberd/psql.yml";
+ host_config_file = config.secrets.fullPaths."ejabberd/host.yml";
+ } ''
+ substituteAll ${./ejabberd.yml} $out
+ '';
+ };
+ secrets.keys."postfix/scripts/ejabberd-env" = {
+ user = "postfixscripts";
+ group = "root";
+ permissions = "0400";
+ text = builtins.toJSON {
+ jid = "notify_bot@immae.fr";
+ password = "{{ .xmpp.notify_bot }}";
+ };
+ };
+ services.postfix.extraAliases = let
+ nixpkgs = builtins.fetchTarball {
+ url = "https://github.com/NixOS/nixpkgs/archive/840c782d507d60aaa49aa9e3f6d0b0e780912742.tar.gz";
+ sha256 = "14q3kvnmgz19pgwyq52gxx0cs90ddf24pnplmq33pdddbb6c51zn";
+ };
+ pkgs' = import nixpkgs { inherit (pkgs) system; overlays = []; };
+ warn_xmpp_email = scriptEnv: pkgs'.runCommand "warn_xmpp_email" {
+ inherit scriptEnv;
+ pythonEnv = pkgs'.python3.withPackages (ps: [
+ ps.unidecode ps.slixmpp
+ ]);
+ } ''
+ substituteAll ${./warn_xmpp_email.py} $out
+ chmod a+x $out
+ '';
+ in ''
+ ejabberd: "|${mypackages-lib.postfixScript pkgs "ejabberd" (warn_xmpp_email config.secrets.fullPaths."postfix/scripts/ejabberd-env")}"
+ '';
+ };
+}
diff --git a/systems/eldiron/ejabberd/ejabberd.yml b/systems/eldiron/ejabberd/ejabberd.yml
new file mode 100644
index 0000000..82ac35b
--- /dev/null
+++ b/systems/eldiron/ejabberd/ejabberd.yml
@@ -0,0 +1,231 @@
+###
+### ejabberd configuration file
+###
+### The parameters used in this configuration file are explained at
+###
+### https://docs.ejabberd.im/admin/configuration
+###
+### The configuration file is written in YAML.
+### *******************************************************
+### ******* !!! WARNING !!! *******
+### ******* YAML IS INDENTATION SENSITIVE *******
+### ******* MAKE SURE YOU INDENT SECTIONS CORRECTLY *******
+### *******************************************************
+### Refer to http://en.wikipedia.org/wiki/YAML for the brief description.
+### However, ejabberd treats different literals as different types:
+###
+### - unquoted or single-quoted strings. They are called "atoms".
+### Example: dog, 'Jupiter', '3.14159', YELLOW
+###
+### - numeric literals. Example: 3, -45.0, .0
+###
+### - quoted or folded strings.
+### Examples of quoted string: "Lizzard", "orange".
+### Example of folded string:
+### > Art thou not Romeo,
+### and a Montague?
+###
+
+hosts:
+ - "immae.fr"
+
+loglevel: 4
+log_rotate_size: 10485760
+log_rotate_date: ""
+log_rotate_count: 1
+log_rate_limit: 100
+
+certfiles:
+ - "@certificatePrivateKeyAndFullChain@"
+
+listen:
+ -
+ port: 5222
+ ip: "::"
+ module: ejabberd_c2s
+ max_stanza_size: 262144
+ shaper: c2s_shaper
+ access: c2s
+ starttls_required: true
+ -
+ port: 5269
+ ip: "::"
+ module: ejabberd_s2s_in
+ max_stanza_size: 524288
+ -
+ port: 5280
+ ip: "127.0.0.1"
+ module: ejabberd_http
+ request_handlers:
+ "/admin": ejabberd_web_admin
+ "/api": mod_http_api
+ "/bosh": mod_bosh
+ "/captcha": ejabberd_captcha
+ "/upload": mod_http_upload
+ "/ws": ejabberd_http_ws
+ tls: false
+
+s2s_use_starttls: optional
+s2s_cafile: "@certificateCA@"
+
+default_db: sql
+include_config_file: @sql_config_file@
+include_config_file: @host_config_file@
+new_sql_schema: true
+
+acl:
+ admin:
+ - user: "ismael@immae.fr"
+ local:
+ user_regexp: ""
+ loopback:
+ ip:
+ - "127.0.0.0/8"
+ - "::1/128"
+ - "::FFFF:127.0.0.1/128"
+
+access_rules:
+ local:
+ - allow: local
+ c2s:
+ - deny: blocked
+ - allow
+ announce:
+ - allow: admin
+ configure:
+ - allow: admin
+ muc_admin:
+ - allow: admin
+ muc_create:
+ - allow: local
+ muc:
+ - allow
+ pubsub_createnode:
+ - allow: local
+ register:
+ - deny
+ trusted_network:
+ - allow: loopback
+
+api_permissions:
+ "console commands":
+ from:
+ - ejabberd_ctl
+ who: all
+ what: "*"
+ "admin access":
+ who:
+ - acl: admin
+ - oauth:
+ - scope: "ejabberd:admin"
+ - acl: admin
+ what:
+ - "*"
+ - "!stop"
+ - "!start"
+ "public commands":
+ who:
+ - ip:
+ - "0.0.0.0"
+ - "::"
+ what:
+ - "status"
+ - "connected_users_number"
+
+shaper:
+ normal: 1000
+ fast: 50000
+
+shaper_rules:
+ max_user_sessions: 10
+ max_user_offline_messages:
+ - 5000: admin
+ - 100
+ c2s_shaper:
+ - none: admin
+ - normal
+ s2s_shaper: fast
+
+modules:
+ mod_adhoc: {}
+ mod_admin_extra: {}
+ mod_announce:
+ access: announce
+ mod_avatar: {}
+ mod_blocking: {}
+ mod_bosh: {}
+ mod_caps: {}
+ mod_carboncopy: {}
+ mod_client_state: {}
+ mod_configure: {}
+ mod_disco: {}
+ mod_fail2ban: {}
+ mod_http_api: {}
+ mod_http_upload:
+ put_url: "https://im.immae.fr/upload"
+ custom_headers:
+ "Access-Control-Allow-Origin": "*"
+ "Access-Control-Allow-Methods": "OPTIONS, HEAD, GET, PUT, POST"
+ "Access-Control-Allow-Headers": "Content-Type"
+ mod_last: {}
+ mod_mam:
+ default: always
+ mod_muc:
+ access:
+ - allow
+ access_admin:
+ - allow: admin
+ access_create: muc_create
+ access_persistent: muc_create
+ default_room_options:
+ mam: true
+ mod_muc_admin: {}
+ mod_offline:
+ access_max_user_messages: max_user_offline_messages
+ mod_ping: {}
+ mod_privacy: {}
+ mod_private: {}
+ mod_proxy65:
+ access: local
+ max_connections: 5
+ mod_pubsub:
+ access_createnode: pubsub_createnode
+ plugins:
+ - "flat"
+ - "pep"
+ force_node_config:
+ ## Change from "whitelist" to "open" to enable OMEMO support
+ ## See https://github.com/processone/ejabberd/issues/2425
+ "eu.siacs.conversations.axolotl.*":
+ access_model: open
+ ## Avoid buggy clients to make their bookmarks public
+ "storage:bookmarks":
+ access_model: whitelist
+ mod_push: {}
+ mod_push_keepalive: {}
+ mod_register:
+ ## Only accept registration requests from the "trusted"
+ ## network (see access_rules section above).
+ ## Think twice before enabling registration from any
+ ## address. See the Jabber SPAM Manifesto for details:
+ ## https://github.com/ge0rg/jabber-spam-fighting-manifesto
+ ip_access: trusted_network
+ access: register
+ mod_roster:
+ versioning: true
+ mod_s2s_dialback: {}
+ mod_shared_roster: {}
+ mod_stats: {}
+ mod_stream_mgmt:
+ resend_on_timeout: if_offline
+ mod_time: {}
+ mod_vcard: {}
+ mod_vcard_xupdate: {}
+ mod_version:
+ show_os: false
+
+### Local Variables:
+### mode: yaml
+### End:
+### vim: set filetype=yaml tabstop=8
+
diff --git a/systems/eldiron/ejabberd/warn_xmpp_email.py b/systems/eldiron/ejabberd/warn_xmpp_email.py
new file mode 100755
index 0000000..d482b43
--- /dev/null
+++ b/systems/eldiron/ejabberd/warn_xmpp_email.py
@@ -0,0 +1,112 @@
+#!@pythonEnv@/bin/python3
+
+import sys
+import json
+import slixmpp
+import asyncio
+import logging
+import io
+
+CONFIG = json.load(open("@scriptEnv@", "r"))
+
+def sanitize(string):
+ import re
+ from unidecode import unidecode
+ return re.compile(r"[^-.A-Za-z0-9_]").sub("_", unidecode(string))
+
+def parse_email():
+ import email
+ from email.header import decode_header
+
+ mail = email.message_from_file(sys.stdin)
+ try:
+ d = decode_header(mail["subject"])[0]
+ if d[1] is not None:
+ subject = d[0].decode(d[1])
+ else:
+ subject = d[0]
+ except Exception as e:
+ subject = mail["subject"]
+ sender = mail["from"]
+ recipient = mail["X-Original-To"]
+
+ body = ""
+ html = None
+ files = {}
+ for part in mail.walk():
+ if part.get_content_type() == "text/plain":
+ body += "\n-------------------\n"
+ try:
+ body += part.get_payload(decode=True).decode(encoding=part.get_content_charset() or "utf-8")
+ except Exception as e:
+ body += part.get_payload(decode=False)
+ elif part.get_content_type() == "text/html":
+ html = part.get_payload(decode=True)
+ elif part.get_content_type() != "text/html" and\
+ part.get_content_maintype() != "multipart":
+
+ filename = part.get_filename() or "{}.dat".format(part["Content-ID"])
+ files[sanitize(filename)] = (part.get_content_type(), part.get_payload(decode=True))
+
+ return [body, html, subject, sender, recipient, files]
+
+[body, html, subject, sender, recipient, files] = parse_email()
+
+class Bot(slixmpp.ClientXMPP):
+ def __init__(self, jid, password, body, html, subject, sender, recipient, files):
+ super().__init__(jid, password)
+
+ self.got_error = False
+ self.body = body
+ self.html = html
+ self.subject = subject
+ self.sender = sender
+ self.recipient = recipient
+ self.files = files
+ self.register_plugin('xep_0363')
+ self.add_event_handler("session_start", self.session_start)
+ self.add_event_handler("message", self.message)
+
+ @asyncio.coroutine
+ def session_start(self, event):
+ files = []
+ if self.html is not None:
+ url = yield from self['xep_0363'].upload_file(
+ "mail.html",
+ content_type="text/html",
+ input_file=io.BytesIO(self.html))
+ files.append(("HTML version", url))
+ for f in self.files:
+ url = yield from self['xep_0363'].upload_file(
+ f,
+ content_type=self.files[f][0],
+ input_file=io.BytesIO(self.files[f][1])
+ )
+ files.append((f, url))
+
+ text = """
+New e-mail message from {sender}
+Subject: {subject}
+{body}
+""".format(sender=self.sender, subject=self.subject, body=self.body)
+ if len(files) > 0:
+ text += "\n\nAttachments:"
+ for f in files:
+ text += "\n{}: {}".format(f[0], f[1])
+ self.send_message(mto=self.recipient, mbody=text, msubject=self.subject, mtype='message')
+ yield from asyncio.sleep(5)
+ self.disconnect()
+
+ @asyncio.coroutine
+ def message(self, msg):
+ if msg["type"] == "error":
+ self.got_error = True
+
+logging.basicConfig(level=logging.DEBUG, format='%(levelname)-8s %(message)s')
+xmpp = Bot(CONFIG["jid"], CONFIG["password"], body, html, subject, sender, recipient, files)
+xmpp.connect()
+xmpp.process(forever=False)
+if xmpp.got_error:
+ sys.exit(1)
+else:
+ sys.exit(0)
diff --git a/systems/eldiron/flake.lock b/systems/eldiron/flake.lock
new file mode 100644
index 0000000..99a5c92
--- /dev/null
+++ b/systems/eldiron/flake.lock
@@ -0,0 +1,2758 @@
+{
+ "nodes": {
+ "backports": {
+ "inputs": {
+ "flake-utils": "flake-utils_12",
+ "nixpkgs": "nixpkgs_15"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "buildslist": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585697026,
+ "narHash": "sha256-7CO89q6Bmg59eN5tFGYaqJR/rpJrLu7dpulXgJUv/0E=",
+ "ref": "master",
+ "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0",
+ "revCount": 4,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
+ }
+ },
+ "colmena": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils_2",
+ "nixpkgs": "nixpkgs",
+ "stable": "stable"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "copanier": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1633895178,
+ "narHash": "sha256-0xrh12eBSVpgVeniSbKQAuGBhIyVB/rB/H3Tt7EJ1vQ=",
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "rev": "d1b92cc639f4d25ad31baf4a6579a33c44a0d837",
+ "type": "github"
+ },
+ "original": {
+ "owner": "spiral-project",
+ "repo": "copanier",
+ "type": "github"
+ }
+ },
+ "diaspora": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1551139311,
+ "narHash": "sha256-Fyv7Af68YccJL2OGz6l9d71UmnLB+LstlWbOlgFZtgo=",
+ "owner": "diaspora",
+ "repo": "diaspora",
+ "rev": "663da1ef2573863eb870e0edbd50050f261f3d30",
+ "type": "github"
+ },
+ "original": {
+ "owner": "diaspora",
+ "ref": "v0.7.10.0",
+ "repo": "diaspora",
+ "type": "github"
+ }
+ },
+ "disko": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_2"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "dns-nix": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1635273082,
+ "narHash": "sha256-EHiDP2jEa7Ai5ZwIf5uld9RVFcV77+2SUxjQXwJsJa0=",
+ "owner": "kirelagin",
+ "repo": "dns.nix",
+ "rev": "c7b9645da9c0ddce4f9de4ef27ec01bb8108039a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "kirelagin",
+ "repo": "dns.nix",
+ "type": "github"
+ }
+ },
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "etherpad-lite": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1587951095,
+ "narHash": "sha256-PjAkvkC7tJzRECUqOvuWfoZTz8QqDXk6oXEN3ig24rQ=",
+ "owner": "ether",
+ "repo": "etherpad-lite",
+ "rev": "62101147a0c3495dc80daa87ab53a3366321a205",
+ "type": "github"
+ },
+ "original": {
+ "owner": "ether",
+ "ref": "1.8.3",
+ "repo": "etherpad-lite",
+ "type": "github"
+ }
+ },
+ "files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../files-watcher",
+ "type": "path"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_3"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_3": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_4"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_4": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_5"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_5": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_6"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_6": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_7"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1614513358,
+ "narHash": "sha256-LakhOx3S1dRjnh0b5Dg3mbZyH0ToC9I8Y2wKSkBaTzU=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5466c5bbece17adaab2d82fae80b46e807611bf3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_10": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_11": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_12": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_13": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_14": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_15": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_16": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_17": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_18": {
+ "locked": {
+ "lastModified": 1649676176,
+ "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_19": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_20": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_21": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_22": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_23": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_3": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_4": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_5": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_6": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_7": {
+ "locked": {
+ "lastModified": 1609246779,
+ "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_8": {
+ "locked": {
+ "lastModified": 1631561581,
+ "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_9": {
+ "locked": {
+ "lastModified": 1610051610,
+ "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "grocy": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1585166193,
+ "narHash": "sha256-rq1Fma/VgU01qXQmCghrt5k+LXWYt8z9b0NvGA7+/Y8=",
+ "owner": "grocy",
+ "repo": "grocy",
+ "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "grocy",
+ "repo": "grocy",
+ "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
+ "type": "github"
+ }
+ },
+ "mastodon": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1582790581,
+ "narHash": "sha256-YImWfvsJQzJHyKoWI6OP6BA+NvmHF2RiwJqOg0NUN/U=",
+ "owner": "tootsuite",
+ "repo": "mastodon",
+ "rev": "9bace2dd88d127d396794375c8fcb2132619a799",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tootsuite",
+ "ref": "v2.9.4",
+ "repo": "mastodon",
+ "type": "github"
+ }
+ },
+ "mediagoblin": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1531090939,
+ "narHash": "sha256-vSajRbuE/bu2HVsUZm25fkm/vNLXKDIK7Xn8kyKJ5Ps=",
+ "ref": "stable",
+ "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
+ "revCount": 4805,
+ "submodules": true,
+ "type": "git",
+ "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
+ },
+ "original": {
+ "ref": "stable",
+ "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
+ "submodules": true,
+ "type": "git",
+ "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
+ }
+ },
+ "my-lib": {
+ "inputs": {
+ "colmena": "colmena",
+ "disko": "disko",
+ "flake-parts": "flake-parts",
+ "nixos-anywhere": "nixos-anywhere",
+ "nixpkgs": "nixpkgs_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_2",
+ "nixpkgs": "nixpkgs_16",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_2": {
+ "inputs": {
+ "flake-parts": "flake-parts_3",
+ "nixpkgs": "nixpkgs_19",
+ "webapps-ttrss": "webapps-ttrss_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_3": {
+ "inputs": {
+ "flake-parts": "flake-parts_4",
+ "nixpkgs": "nixpkgs_21",
+ "webapps-ttrss": "webapps-ttrss_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "mypackages_4": {
+ "inputs": {
+ "flake-parts": "flake-parts_6",
+ "nixpkgs": "nixpkgs_29",
+ "webapps-ttrss": "webapps-ttrss_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../mypackages",
+ "type": "path"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_10": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_11": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_12": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_13": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_14": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_6": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_7": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_8": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_9": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "naemon": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "nixos-2305": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere": {
+ "inputs": {
+ "disko": [
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305",
+ "nixos-images": "nixos-images",
+ "nixpkgs": "nixpkgs_3",
+ "treefmt-nix": "treefmt-nix"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-images": {
+ "inputs": {
+ "nixos-2305": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_2": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_3": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_4": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_5": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_6": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_7": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_10": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_11": {
+ "locked": {
+ "lastModified": 1631570365,
+ "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_12": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_13": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_14": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_15": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_16": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_17": {
+ "locked": {
+ "lastModified": 1633901457,
+ "narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "f358794824b4595d77fec93732485d329ed7b0e0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_18": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_19": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_20": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_21": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_22": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_23": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_24": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_25": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_26": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_27": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_28": {
+ "locked": {
+ "lastModified": 1611097871,
+ "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_29": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_30": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_31": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_6": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_7": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_8": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_9": {
+ "locked": {
+ "lastModified": 1597943282,
+ "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "openarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_4",
+ "myuids": "myuids",
+ "nixpkgs": "nixpkgs_7",
+ "openarc": "openarc_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_3": {
+ "inputs": {
+ "flake-utils": "flake-utils_6",
+ "myuids": "myuids_3",
+ "nixpkgs": "nixpkgs_9",
+ "openarc": "openarc_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../openarc",
+ "type": "path"
+ }
+ },
+ "openarc_4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "openarc_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1537545083,
+ "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "trusteddomainproject",
+ "repo": "OpenARC",
+ "type": "github"
+ }
+ },
+ "opendmarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_5",
+ "myuids": "myuids_2",
+ "nixpkgs": "nixpkgs_8"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "opendmarc_2": {
+ "inputs": {
+ "flake-utils": "flake-utils_7",
+ "myuids": "myuids_4",
+ "nixpkgs": "nixpkgs_10"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../opendmarc",
+ "type": "path"
+ }
+ },
+ "paste": {
+ "inputs": {
+ "flake-utils": "flake-utils_8",
+ "nixpkgs": "nixpkgs_11"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
+ "path": "../../paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../paste",
+ "type": "path"
+ }
+ },
+ "peertube": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1611184594,
+ "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=",
+ "ref": "gitolite_local/open_instance",
+ "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3",
+ "revCount": 6316,
+ "type": "git",
+ "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_3": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1610436329,
+ "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
+ "owner": "Chocobozzz",
+ "repo": "PeerTube",
+ "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Chocobozzz",
+ "ref": "v3.0.1",
+ "repo": "PeerTube",
+ "type": "github"
+ }
+ },
+ "peertube_open_instance": {
+ "inputs": {
+ "flake-utils": "flake-utils_9",
+ "myuids": "myuids_5",
+ "nixpkgs": "nixpkgs_12",
+ "peertube": "peertube"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./../../peertube",
+ "type": "path"
+ }
+ },
+ "peertube_origin": {
+ "inputs": {
+ "flake-utils": "flake-utils_10",
+ "myuids": "myuids_6",
+ "nixpkgs": "nixpkgs_13",
+ "peertube": "peertube_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "./../../peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "./../../peertube",
+ "type": "path"
+ }
+ },
+ "private-buildbot": {
+ "inputs": {
+ "buildslist": "buildslist",
+ "flake-utils": "flake-utils_3",
+ "nixpkgs": "nixpkgs_6"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-LZRLA37RiN1VyKRqoAdZa9oc61PfQX7dCANSFuwuSa8=",
+ "path": "../../flakes/private/buildbot",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/buildbot",
+ "type": "path"
+ }
+ },
+ "private-chatons": {
+ "inputs": {
+ "environment": "environment"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ }
+ },
+ "private-environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "private-milters": {
+ "inputs": {
+ "environment": "environment_2",
+ "files-watcher": "files-watcher",
+ "openarc": "openarc",
+ "opendmarc": "opendmarc",
+ "secrets": "secrets"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/milters",
+ "type": "path"
+ }
+ },
+ "private-monitoring": {
+ "inputs": {
+ "environment": "environment_3",
+ "naemon": "naemon",
+ "nixpkgs-lib": "nixpkgs-lib_2",
+ "secrets": "secrets_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "private-openarc": {
+ "inputs": {
+ "files-watcher": "files-watcher_2",
+ "openarc": "openarc_3",
+ "secrets": "secrets_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openarc",
+ "type": "path"
+ }
+ },
+ "private-opendmarc": {
+ "inputs": {
+ "environment": "environment_4",
+ "files-watcher": "files-watcher_3",
+ "opendmarc": "opendmarc_2",
+ "secrets": "secrets_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/opendmarc",
+ "type": "path"
+ }
+ },
+ "private-openldap": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/openldap",
+ "type": "path"
+ }
+ },
+ "private-paste": {
+ "inputs": {
+ "paste": "paste"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-w8WnrSJj05Y8hJsJfY46sI6PUSg2xo5h9t0zWP4woog=",
+ "path": "../../flakes/private/paste",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/paste",
+ "type": "path"
+ }
+ },
+ "private-peertube": {
+ "inputs": {
+ "peertube_open_instance": "peertube_open_instance",
+ "peertube_origin": "peertube_origin"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-1MpzxwaZ+TZJzBf+Do/PFdI9khD1GSvfjuSC0h2Hk58=",
+ "path": "../../flakes/private/peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/peertube",
+ "type": "path"
+ }
+ },
+ "private-php": {
+ "inputs": {
+ "flake-utils": "flake-utils_11",
+ "nixpkgs": "nixpkgs_14",
+ "nixpkgs-4": "nixpkgs-4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "../../flakes/private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/php",
+ "type": "path"
+ }
+ },
+ "private-ssh": {
+ "inputs": {
+ "environment": "environment_5",
+ "secrets": "secrets_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/ssh",
+ "type": "path"
+ }
+ },
+ "private-system": {
+ "inputs": {
+ "backports": "backports",
+ "environment": "environment_6",
+ "mypackages": "mypackages",
+ "myuids": "myuids_7",
+ "secrets-public": "secrets-public"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "public-copanier": {
+ "inputs": {
+ "copanier": "copanier",
+ "flake-utils": "flake-utils_13",
+ "nixpkgs": "nixpkgs_17"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-v7ZhvU3UAmA7EtPWutYddHE84qbqWx/ugtFAEgpD4H0=",
+ "path": "../../flakes/copanier",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/copanier",
+ "type": "path"
+ }
+ },
+ "public-diaspora": {
+ "inputs": {
+ "diaspora": "diaspora",
+ "flake-utils": "flake-utils_14",
+ "myuids": "myuids_8",
+ "nixpkgs": "nixpkgs_18"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-S+ZZI5/WNGE9m5yRkOM3LlJUTrjtjzcBRLNrHi0fx6M=",
+ "path": "../../flakes/diaspora",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/diaspora",
+ "type": "path"
+ }
+ },
+ "public-etherpad-lite": {
+ "inputs": {
+ "etherpad-lite": "etherpad-lite",
+ "flake-utils": "flake-utils_15",
+ "mypackages": "mypackages_2",
+ "nixpkgs": "nixpkgs_20"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-j6p9rVNwD0C3VN65VdnF3yG8fy5S8aAsi2kRXWPd3VE=",
+ "path": "../../flakes/etherpad-lite",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/etherpad-lite",
+ "type": "path"
+ }
+ },
+ "public-fiche": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-oIMKN1dD4K+5pOGugNaNNdJme5NYlYtnNd3ivvyVoJI=",
+ "path": "../../flakes/fiche",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/fiche",
+ "type": "path"
+ }
+ },
+ "public-files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "public-grocy": {
+ "inputs": {
+ "flake-utils": "flake-utils_16",
+ "grocy": "grocy",
+ "mypackages": "mypackages_3",
+ "nixpkgs": "nixpkgs_22"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Xv5wFz3A1f+jkJ1hxb6DwisBwsZxaQccp/Kwe5lqwy0=",
+ "path": "../../flakes/grocy",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/grocy",
+ "type": "path"
+ }
+ },
+ "public-loginctl-linger": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "public-mastodon": {
+ "inputs": {
+ "flake-utils": "flake-utils_17",
+ "mastodon": "mastodon",
+ "myuids": "myuids_9",
+ "nixpkgs": "nixpkgs_23"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5bh3eTXdSac7Kw17+6EVmjNZpPIdGc7a3E5lb7wYn2U=",
+ "path": "../../flakes/mastodon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/mastodon",
+ "type": "path"
+ }
+ },
+ "public-mediagoblin": {
+ "inputs": {
+ "flake-utils": "flake-utils_18",
+ "mediagoblin": "mediagoblin",
+ "myuids": "myuids_10",
+ "nixpkgs": "nixpkgs_24"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-CVFwdH+i6K9dxyniI6nUeLiNZoD17uKT1Q8/4MaiTGU=",
+ "path": "../../flakes/mediagoblin",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/mediagoblin",
+ "type": "path"
+ }
+ },
+ "public-multi-apache-container": {
+ "inputs": {
+ "files-watcher": "files-watcher_4",
+ "myuids": "myuids_11"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ }
+ },
+ "public-mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_5",
+ "nixpkgs": "nixpkgs_25",
+ "webapps-ttrss": "webapps-ttrss_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../flakes/mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/mypackages",
+ "type": "path"
+ }
+ },
+ "public-myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "public-openarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_19",
+ "myuids": "myuids_12",
+ "nixpkgs": "nixpkgs_26",
+ "openarc": "openarc_5"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
+ "path": "../../flakes/openarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/openarc",
+ "type": "path"
+ }
+ },
+ "public-opendmarc": {
+ "inputs": {
+ "flake-utils": "flake-utils_20",
+ "myuids": "myuids_13",
+ "nixpkgs": "nixpkgs_27"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
+ "path": "../../flakes/opendmarc",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/opendmarc",
+ "type": "path"
+ }
+ },
+ "public-peertube": {
+ "inputs": {
+ "flake-utils": "flake-utils_21",
+ "myuids": "myuids_14",
+ "nixpkgs": "nixpkgs_28",
+ "peertube": "peertube_3"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
+ "path": "../../flakes/peertube",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/peertube",
+ "type": "path"
+ }
+ },
+ "public-secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "public-surfer": {
+ "inputs": {
+ "flake-utils": "flake-utils_22",
+ "mypackages": "mypackages_4",
+ "nixpkgs": "nixpkgs_30",
+ "surfer": "surfer"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-67TqavMsANZI6X15AFUQZ2zHSmoWJc80XaXwEGhWsRg=",
+ "path": "../../flakes/surfer",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/surfer",
+ "type": "path"
+ }
+ },
+ "public-taskwarrior-web": {
+ "inputs": {
+ "flake-utils": "flake-utils_23",
+ "nixpkgs": "nixpkgs_31",
+ "taskwarrior-web": "taskwarrior-web"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-0u83WrBwbIpuyy82UK3EUqC/dgoCoDzptRe+G4VhKXo=",
+ "path": "../../flakes/taskwarrior-web",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/taskwarrior-web",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "dns-nix": "dns-nix",
+ "my-lib": "my-lib",
+ "nixpkgs": "nixpkgs_5",
+ "private-buildbot": "private-buildbot",
+ "private-chatons": "private-chatons",
+ "private-environment": "private-environment",
+ "private-milters": "private-milters",
+ "private-monitoring": "private-monitoring",
+ "private-openarc": "private-openarc",
+ "private-opendmarc": "private-opendmarc",
+ "private-openldap": "private-openldap",
+ "private-paste": "private-paste",
+ "private-peertube": "private-peertube",
+ "private-php": "private-php",
+ "private-ssh": "private-ssh",
+ "private-system": "private-system",
+ "public-copanier": "public-copanier",
+ "public-diaspora": "public-diaspora",
+ "public-etherpad-lite": "public-etherpad-lite",
+ "public-fiche": "public-fiche",
+ "public-files-watcher": "public-files-watcher",
+ "public-grocy": "public-grocy",
+ "public-loginctl-linger": "public-loginctl-linger",
+ "public-mastodon": "public-mastodon",
+ "public-mediagoblin": "public-mediagoblin",
+ "public-multi-apache-container": "public-multi-apache-container",
+ "public-mypackages": "public-mypackages",
+ "public-myuids": "public-myuids",
+ "public-openarc": "public-openarc",
+ "public-opendmarc": "public-opendmarc",
+ "public-peertube": "public-peertube",
+ "public-secrets": "public-secrets",
+ "public-surfer": "public-surfer",
+ "public-taskwarrior-web": "public-taskwarrior-web"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "stable": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "surfer": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1588637864,
+ "narHash": "sha256-B1Sbu1YSHj+ONSoT5v6bVlAHJWtceUV4O5huGhc8b0U=",
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "revCount": 318,
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ },
+ "original": {
+ "rev": "476177380452c9c7c5b1624805feedc824c5995e",
+ "type": "git",
+ "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
+ }
+ },
+ "taskwarrior-web": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546434241,
+ "narHash": "sha256-BLPBglkV1HCJECSIdyMEergChiV+rwNOClYJnzlZGQk=",
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "theunraveler",
+ "repo": "taskwarrior-web",
+ "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
+ "type": "github"
+ }
+ },
+ "treefmt-nix": {
+ "inputs": {
+ "nixpkgs": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_3": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ },
+ "webapps-ttrss_5": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/systems/eldiron/flake.nix b/systems/eldiron/flake.nix
new file mode 100644
index 0000000..790b638
--- /dev/null
+++ b/systems/eldiron/flake.nix
@@ -0,0 +1,90 @@
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ dns-nix.url = "github:kirelagin/dns.nix";
+ dns-nix.inputs.nixpkgs.follows = "nixpkgs";
+
+ my-lib.url = "path:../../flakes/lib";
+
+ public-etherpad-lite.url = "path:../../flakes/etherpad-lite";
+ public-grocy.url = "path:../../flakes/grocy";
+ public-openarc.url = "path:../../flakes/openarc";
+ public-opendmarc.url = "path:../../flakes/opendmarc";
+ public-peertube.url = "path:../../flakes/peertube";
+ public-diaspora.url = "path:../../flakes/diaspora";
+ public-mastodon.url = "path:../../flakes/mastodon";
+ public-mediagoblin.url = "path:../../flakes/mediagoblin";
+ public-surfer.url = "path:../../flakes/surfer";
+ public-myuids.url = "path:../../flakes/myuids";
+ public-copanier.url = "path:../../flakes/copanier";
+ public-secrets.url = "path:../../flakes/secrets";
+ public-files-watcher.url = "path:../../flakes/files-watcher";
+ public-fiche.url = "path:../../flakes/fiche";
+ public-mypackages.url = "path:../../flakes/mypackages";
+ public-loginctl-linger.url = "path:../../flakes/loginctl-linger";
+ public-multi-apache-container.url = "path:../../flakes/multi-apache-container";
+ public-taskwarrior-web.url = "path:../../flakes/taskwarrior-web";
+
+ private-peertube.url = "path:../../flakes/private/peertube";
+ private-buildbot.url = "path:../../flakes/private/buildbot";
+ private-php.url = "path:../../flakes/private/php";
+ private-environment.url = "path:../../flakes/private/environment";
+ private-openarc.url = "path:../../flakes/private/openarc";
+ private-openldap.url = "path:../../flakes/private/openldap";
+ private-opendmarc.url = "path:../../flakes/private/opendmarc";
+ private-milters.url = "path:../../flakes/private/milters";
+ private-monitoring.url = "path:../../flakes/private/monitoring";
+ private-paste.url = "path:../../flakes/private/paste";
+ private-ssh.url = "path:../../flakes/private/ssh";
+ private-chatons.url = "path:../../flakes/private/chatons";
+ private-system.url = "path:../../flakes/private/system";
+ };
+ outputs = inputs@{ self, my-lib, nixpkgs, dns-nix, ...}:
+ my-lib.lib.mkColmenaFlake {
+ name = "eldiron";
+ inherit self nixpkgs;
+ system = "x86_64-linux";
+ targetHost = "176.9.151.89";
+ targetUser = "root";
+ nixosModules = with inputs; {
+ base = ./base.nix;
+ myuids = public-myuids.nixosModule;
+ secrets = public-secrets.nixosModule;
+ loginctl-linger = public-loginctl-linger.nixosModule;
+ files-watcher = public-files-watcher.nixosModule;
+ multi-apache-container = public-multi-apache-container.nixosModule;
+ etherpad-lite = public-etherpad-lite.nixosModule;
+ mastodon = public-mastodon.nixosModule;
+ mediagoblin = public-mediagoblin.nixosModule;
+ peertube = public-peertube.nixosModule;
+ diaspora = public-diaspora.nixosModule;
+ fiche = public-fiche.nixosModule;
+
+ environment = private-environment.nixosModule;
+ openarc = private-openarc.nixosModule;
+ opendmarc = private-opendmarc.nixosModule;
+ ssh = private-ssh.nixosModule;
+ chatons = private-chatons.nixosModule;
+ system = private-system.nixosModule;
+ monitoring = private-monitoring.nixosModule;
+ paste = private-paste.nixosModule;
+ milters = private-milters.nixosModule;
+ };
+ moduleArgs = with inputs; {
+ dns-nix = dns-nix;
+ nixpkgsRaw = nixpkgs.legacyPackages.x86_64-linux;
+ mypackages-lib = public-mypackages.lib.x86_64-linux;
+ etherpad-lite = public-etherpad-lite.defaultPackage.x86_64-linux;
+ taskwarrior-web = public-taskwarrior-web.defaultPackage.x86_64-linux;
+ copanier = public-copanier.defaultPackage.x86_64-linux;
+ grocy = public-grocy.defaultPackage.x86_64-linux;
+ surfer = public-surfer.defaultPackage.x86_64-linux;
+ mediagoblin = public-mediagoblin.defaultPackage.x86_64-linux;
+ buildbot = private-buildbot.packages.x86_64-linux.buildbot-full;
+ openldap = private-openldap;
+ monitoring = private-monitoring;
+ peertube = private-peertube.packages.x86_64-linux;
+ php = private-php;
+ };
+ };
+}
diff --git a/systems/eldiron/ftp.nix b/systems/eldiron/ftp.nix
new file mode 100644
index 0000000..6aa1afc
--- /dev/null
+++ b/systems/eldiron/ftp.nix
@@ -0,0 +1,339 @@
+{ lib, pkgs, config, ... }:
+let
+ package = pkgs.pure-ftpd.override { ldapFtpId = "immaeFtp"; };
+ pure-ftpd-enabled = config.myServices.ftp.pure-ftpd.enable;
+ proftpd-enabled = config.myServices.ftp.proftpd.enable;
+in
+{
+ options = {
+ myServices.ftp.enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = ''
+ Whether to enable ftp.
+ '';
+ };
+ myServices.ftp.pure-ftpd.enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = ''
+ Whether to enable pure-ftpd.
+ '';
+ };
+ myServices.ftp.proftpd.enable = lib.mkOption {
+ type = lib.types.bool;
+ default = true;
+ description = ''
+ Whether to enable proftpd.
+ '';
+ };
+ };
+
+ config = lib.mkIf config.myServices.ftp.enable {
+ myServices.dns.zones."immae.eu".subdomains.ftp =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.espace-de-stockage = {
+ file.datetime = "2022-08-22T01:00:00";
+ service = {
+ name = "Espace de stockage";
+ description = "Compte FTP/SFTP";
+ logo = if pure-ftpd-enabled
+ then "https://www.pureftpd.org/project/pure-ftpd/images/favicon.png"
+ else if proftpd-enabled
+ then "http://proftpd.org/proftpd.png"
+ else "";
+ website = "ftp.immae.eu";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = if pure-ftpd-enabled then {
+ name = "Pure-ftpd";
+ website = "https://www.pureftpd.org/project/pure-ftpd/";
+ license.url = "https://github.com/jedisct1/pure-ftpd/blob/master/COPYING";
+ license.name = "MIT Licence";
+ version = package.version;
+ source.url = "https://github.com/jedisct1/pure-ftpd/";
+ modules = "openssh";
+ } else if proftpd-enabled then {
+ name = "ProFTPD";
+ website = "http://proftpd.org/";
+ license.url = "https://github.com/proftpd/proftpd/blob/master/COPYING";
+ license.name = "GNU General Public License v2.0";
+ version = pkgs.proftpd.version;
+ source.url = "https://github.com/proftpd/proftpd/";
+ modules = "openssh";
+ } else {};
+ };
+ #myServices.chatonsProperties.services.ftp = {
+ # file.datetime = "2022-08-22T01:00:00";
+ # service = {
+ # name = "Comptes FTP";
+ # description = "Compte FTP/SFTP";
+ # logo = if pure-ftpd-enabled
+ # then "https://www.pureftpd.org/project/pure-ftpd/images/favicon.png"
+ # else if proftpd-enabled
+ # then "http://proftpd.org/proftpd.png"
+ # else "";
+ # website = "ftp.immae.eu";
+ # status.level = "OK";
+ # status.description = "OK";
+ # registration."" = ["MEMBER" "CLIENT"];
+ # registration.load = "OPEN";
+ # install.type = "PACKAGE";
+ # };
+ # software = if pure-ftpd-enabled then {
+ # name = "Pure-ftpd";
+ # website = "https://www.pureftpd.org/project/pure-ftpd/";
+ # license.url = "https://github.com/jedisct1/pure-ftpd/blob/master/COPYING";
+ # license.name = "MIT Licence";
+ # version = package.version;
+ # source.url = "https://github.com/jedisct1/pure-ftpd/";
+ # } else if proftpd-enabled then {
+ # name = "ProFTPD";
+ # website = "http://proftpd.org/";
+ # license.url = "https://github.com/proftpd/proftpd/blob/master/COPYING";
+ # license.name = "GNU General Public License v2.0";
+ # version = pkgs.proftpd.version;
+ # source.url = "https://github.com/proftpd/proftpd/";
+ # } else {};
+ #};
+ security.acme.certs."ftp" = {
+ domain = "eldiron.immae.eu";
+ # FIXME: make it global
+ extraLegoRunFlags = ["--preferred-chain" "ISRG Root X1"];
+ extraLegoRenewFlags = ["--preferred-chain" "ISRG Root X1"];
+ postRun = (lib.optionalString pure-ftpd-enabled ''
+ systemctl restart pure-ftpd.service
+ '') + (lib.optionalString proftpd-enabled ''
+ systemctl restart proftpd.service
+ '');
+ extraDomainNames = [ "ftp.immae.eu" ];
+ };
+
+ networking = {
+ firewall = {
+ allowedTCPPorts = [ 21 115 ];
+ allowedTCPPortRanges = [ { from = 40000; to = 50000; } ];
+ };
+ };
+
+ users.users.ftp = {
+ uid = config.ids.uids.ftp; # 8
+ group = "ftp";
+ description = "Anonymous FTP user";
+ home = "/homeless-shelter";
+ extraGroups = [ "keys" ];
+ };
+
+ users.groups.ftp.gid = config.ids.gids.ftp;
+
+ system.activationScripts.ftp = ''
+ install -m 0755 -o ftp -g ftp -d /var/lib/ftp
+ '' + (lib.optionalString proftpd-enabled ''
+ install -m 0755 -o nobody -g nogroup -d /var/lib/proftpd/authorized_keys
+ '');
+
+ secrets.keys."pure-ftpd-ldap" = lib.mkIf pure-ftpd-enabled {
+ permissions = "0400";
+ user = "ftp";
+ group = "ftp";
+ text = ''
+ LDAPServer ${config.myEnv.ftp.ldap.host}
+ LDAPPort 389
+ LDAPUseTLS True
+ LDAPBaseDN ${config.myEnv.ftp.ldap.base}
+ LDAPBindDN ${config.myEnv.ftp.ldap.dn}
+ LDAPBindPW ${config.myEnv.ftp.ldap.password}
+ LDAPDefaultUID 500
+ LDAPForceDefaultUID False
+ LDAPDefaultGID 100
+ LDAPForceDefaultGID False
+ LDAPFilter ${config.myEnv.ftp.ldap.pure-ftpd_filter}
+
+ LDAPAuthMethod BIND
+
+ # Pas de possibilite de donner l'Uid/Gid !
+ # Compile dans pure-ftpd directement avec immaeFtpUid / immaeFtpGid
+ LDAPHomeDir immaeFtpDirectory
+ '';
+ };
+ secrets.keys."proftpd-ldap.conf" = lib.mkIf proftpd-enabled {
+ permissions = "0400";
+ user = "ftp";
+ group = "ftp";
+ text = ''
+ LDAPServer ldaps://${config.myEnv.ftp.ldap.host}:636/??sub
+ LDAPUseTLS on
+ LDAPAuthBinds on
+ LDAPBindDN "${config.myEnv.ftp.ldap.dn}" "${config.myEnv.ftp.ldap.password}"
+ LDAPSearchScope subtree
+ LDAPAuthBinds on
+ LDAPDefaultGID 100
+ LDAPDefaultUID 500
+ LDAPForceDefaultUID off
+ LDAPForceDefaultGID off
+ LDAPAttr gidNumber immaeFtpGid
+ LDAPAttr uidNumber immaeFtpUid
+ LDAPAttr homeDirectory immaeFtpDirectory
+ LDAPUsers "${config.myEnv.ftp.ldap.base}" "${config.myEnv.ftp.ldap.proftpd_filter}"
+ LDAPGroups "${config.myEnv.ftp.ldap.base}"
+ '';
+ };
+
+ services.filesWatcher.pure-ftpd = lib.mkIf pure-ftpd-enabled {
+ restart = true;
+ paths = [ config.secrets.fullPaths."pure-ftpd-ldap" ];
+ };
+ services.filesWatcher.proftpd = lib.mkIf proftpd-enabled {
+ restart = true;
+ paths = [ config.secrets.fullPaths."proftpd-ldap.conf" ];
+ };
+
+ systemd.services.pure-ftpd = let
+ configFile = pkgs.writeText "pure-ftpd.conf" ''
+ PassivePortRange 40000 50000
+ Bind 42
+ ChrootEveryone yes
+ CreateHomeDir yes
+ BrokenClientsCompatibility yes
+ MaxClientsNumber 50
+ Daemonize yes
+ MaxClientsPerIP 8
+ VerboseLog no
+ DisplayDotFiles yes
+ AnonymousOnly no
+ NoAnonymous no
+ SyslogFacility ftp
+ DontResolve yes
+ MaxIdleTime 15
+ LDAPConfigFile ${config.secrets.fullPaths."pure-ftpd-ldap"}
+ LimitRecursion 10000 8
+ AnonymousCanCreateDirs no
+ MaxLoad 4
+ AntiWarez yes
+ Umask 133:022
+ # ftp
+ MinUID 8
+ AllowUserFXP no
+ AllowAnonymousFXP no
+ ProhibitDotFilesWrite no
+ ProhibitDotFilesRead no
+ AutoRename no
+ AnonymousCantUpload no
+ MaxDiskUsage 99
+ CustomerProof yes
+ TLS 1
+ CertFile ${config.security.acme.certs.ftp.directory}/full.pem
+ '';
+ in lib.mkIf pure-ftpd-enabled {
+ description = "Pure-FTPd server";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+
+ serviceConfig.ExecStart = "${package}/bin/pure-ftpd ${configFile}";
+ serviceConfig.Type = "forking";
+ serviceConfig.PIDFile = "/run/pure-ftpd.pid";
+ };
+
+ systemd.services.proftpd = let
+ configFile = pkgs.writeText "proftpd.conf" ''
+ ServerName "ProFTPD"
+ ServerType standalone
+ DefaultServer on
+
+ Port 21
+ UseIPv6 on
+ Umask 022
+ MaxInstances 30
+ MaxClients 50
+ MaxClientsPerHost 8
+
+ # Set the user and group under which the server will run.
+ User ftp
+ Group ftp
+
+ CreateHome on
+ DefaultRoot ~
+
+ AllowOverwrite on
+
+ TLSEngine on
+ TLSRequired off
+ TLSProtocol TLSv1.1 TLSv1.2 TLSv1.3
+
+ TLSCertificateChainFile ${config.security.acme.certs.ftp.directory}/fullchain.pem
+ TLSECCertificateFile ${config.security.acme.certs.ftp.directory}/cert.pem
+ TLSECCertificateKeyFile ${config.security.acme.certs.ftp.directory}/key.pem
+ TLSRenegotiate none
+ PidFile /run/proftpd/proftpd.pid
+
+ ScoreboardFile /run/proftpd/proftpd.scoreboard
+
+ PassivePorts 40000 50000
+ #DebugLevel 10
+ Include ${config.secrets.fullPaths."proftpd-ldap.conf"}
+
+ RequireValidShell off
+
+ # Bar use of SITE CHMOD by default
+
+ DenyAll
+
+
+
+ Umask 022
+ Port 115
+ SFTPEngine on
+ CreateHome on
+ DefaultRoot ~
+
+ AllowOverwrite on
+
+ SFTPHostKey /etc/ssh/ssh_host_ed25519_key
+ SFTPHostKey /etc/ssh/ssh_host_rsa_key
+ Include ${config.secrets.fullPaths."proftpd-ldap.conf"}
+ RequireValidShell off
+ SFTPAuthorizedUserKeys file:/var/lib/proftpd/authorized_keys/%u
+ SFTPAuthMethods password publickey
+
+ SFTPOptions IgnoreSFTPSetOwners
+ AllowChrootSymlinks off
+
+ '';
+ in lib.mkIf proftpd-enabled {
+ description = "ProFTPD server";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+
+ serviceConfig.ExecStart = "${pkgs.proftpd}/bin/proftpd -c ${configFile}";
+ serviceConfig.Type = "forking";
+ serviceConfig.PIDFile = "/run/proftpd/proftpd.pid";
+ serviceConfig.RuntimeDirectory = "proftpd";
+ };
+
+ services.cron.systemCronJobs = lib.mkIf proftpd-enabled [
+ "*/2 * * * * nobody ${./ftp_sync.sh}"
+ ];
+
+ myServices.monitoring.fromMasterActivatedPlugins = [ "ftp" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "ftp has access to database for authentication";
+ host_name = config.hostEnv.fqdn;
+ use = "external-service";
+ check_command = "check_ftp_database";
+
+ servicegroups = "webstatus-remote-services";
+ _webstatus_name = "FTP";
+ _webstatus_url = "ftp.immae.eu";
+ }
+
+ ];
+
+ };
+
+}
diff --git a/systems/eldiron/ftp_sync.sh b/systems/eldiron/ftp_sync.sh
new file mode 100755
index 0000000..aff7178
--- /dev/null
+++ b/systems/eldiron/ftp_sync.sh
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+
+LDAPSEARCH=ldapsearch
+
+LDAP_BIND="cn=ssh,ou=services,dc=immae,dc=eu"
+LDAP_PASS=$(cat /etc/ssh/ldap_password)
+LDAP_HOST="ldap://ldap.immae.eu"
+LDAP_BASE="dc=immae,dc=eu"
+LDAP_FILTER="(memberOf=cn=users,cn=ftp,ou=services,dc=immae,dc=eu)"
+
+handle_keys() {
+ uids="$1"
+ keys="$2"
+ if [ -n "$uids" ]; then
+ for uid in $uids; do
+ echo "$keys" | while read key; do
+ if [ -n "$key" ]; then
+ ssh-keygen -e -f <(echo "$key")
+ fi
+ done > /var/lib/proftpd/authorized_keys/$uid
+ done
+ fi
+}
+
+mkdir -p /var/lib/proftpd/authorized_keys
+
+while read i; do
+ if [[ "$i" =~ ^dn: ]]; then
+ handle_keys "$uids" "$keys"
+ uids=""
+ keys=""
+ fi;
+ if [[ "$i" =~ ^uid: ]]; then
+ uids="$uids ${i#uid: }"
+ fi
+ if [[ "$i" =~ ^immaeSshKey: ]]; then
+ key="${i#immaeSshKey: }"
+ if [[ "$key" =~ ^ssh- ]]; then
+ keys="$keys
+$key"
+ elif echo "$key" | cut -d" " -f1 | grep -q "\bftp\b"; then
+ keys="$keys
+$(echo "$key" | cut -d" " -f2-)"
+ fi
+ fi
+done < <(ldapsearch -H "$LDAP_HOST" -ZZ -LLL -D "$LDAP_BIND" -w "$LDAP_PASS" -b "$LDAP_BASE" -x -o ldif-wrap=no "$LDAP_FILTER" uid immaeSshKey)
+handle_keys "$uids" "$keys"
diff --git a/systems/eldiron/gemini/default.nix b/systems/eldiron/gemini/default.nix
new file mode 100644
index 0000000..600afbc
--- /dev/null
+++ b/systems/eldiron/gemini/default.nix
@@ -0,0 +1,50 @@
+{ lib, config, pkgs, ... }:
+let
+ configFile = pkgs.writeText "config.yaml" ''
+ listen: ":1965"
+ hosts:
+ immae.eu:
+ cert: /var/lib/acme/immae/full.pem
+ key: /var/lib/acme/immae/key.pem
+ paths:
+ - path: /
+ root: ${./public}
+ '';
+in
+{
+ options.myServices.gemini.enable = lib.mkEnableOption "enable Gemini capsule";
+ config = lib.mkIf config.myServices.gemini.enable {
+ security.acme.certs.immae.postRun = ''
+ systemctl restart gemini.service
+ '';
+ myServices.chatonsProperties.hostings.gemini = {
+ file.datetime = "2022-08-27T18:00:00";
+ hosting = {
+ name = "Hébergement Gemini";
+ description = "Hébergement de capsules Gemini";
+ type = "INSTANCE";
+ website = "gemini://immae.eu";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "twins";
+ website = "https://code.rocketnine.space/tslocum/twins";
+ license.url = "https://code.rocketnine.space/tslocum/twins/src/branch/master/LICENSE";
+ license.name = "MIT License";
+ version = pkgs.twins.version;
+ source.url = "https://code.rocketnine.space/tslocum/twins";
+ };
+ };
+ networking.firewall.allowedTCPPorts = [ 1965 ];
+ systemd.services.gemini = {
+ description = "Gemini capsule server";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+ serviceConfig.ExecStart = "${pkgs.twins}/bin/twins -config ${configFile}";
+ serviceConfig.Type = "simple";
+ };
+ };
+}
diff --git a/systems/eldiron/gemini/public/index.gmi b/systems/eldiron/gemini/public/index.gmi
new file mode 100644
index 0000000..034a0d9
--- /dev/null
+++ b/systems/eldiron/gemini/public/index.gmi
@@ -0,0 +1,70 @@
+# Immae
+
+## Présentation
+
+Dans le but de promouvoir la décentralisation des données personnelles et l’usage de logiciels open source, je propose un hébergement de divers services utiles. Ces services sont basés sur du code libre et déployés sur des systèmes libres également.
+
+Je suis un particulier, et dans la mesure de mes capacités, j’essaye toujours de fournir des services à ma famille et à mes amis proches en remplacement de services non libres fournis par les géants du web. J’ai décidé de faire le nécessaire pour étendre ces services à un public plus large, avec pour but de conserver une qualité suffisante.
+
+Lorsque c’est possible, les programmes que je développe sont également libres de droits (ce n’est pas toujours dépendant de ma volonté ou tributaire de ma disponibilité pour rendre le code accessible)
+
+Depuis juin 2019 je fais partie du collectif CHATONS, dont je respecte en particulier la charte:
+=> https://chatons.org CHATONS
+
+## Tarifs
+
+Je ne cherche pas à faire de profits en proposant ces services. Cependant, l’hébergement de ces services n’est pas gratuit, et maintenir ces services à un niveau de qualité suffisant demande de l’investissement en temps. Ainsi, selon l’usage désiré, le niveau de personnalisation et support dont vous avez besoin et les moyens à votre disposition et votre volonté, une participation pourra être demandée afin d’y accéder.
+=> https://www.immae.eu/licences_et_tip.html Tips
+
+## Services proposés
+
+Voici une liste non exhaustive de services que je propose :
+
+* Mastodon
+* Nextcloud
+* Calendrier/Contacts et synchronisation
+* Hébergement de vidéos (Mediagoblin)
+* Hébergement de vidéos (Peertube)
+* Kanboard
+* Flux RSS
+* "Lire plus tard" (wallabag)
+* Partage de liens (Shaarli)
+* Raccourcisseur d’URLs
+* Édition de texte collaborative
+* Réseau social
+* Hébergement de dépôts git privés et publics, gestion d’issues
+* Messagerie instantanée (XMPP/Jabber)
+* Comptes e-mails avec domaines personnalisés, IMAP/SMTP, MX backup
+* Hébergement et administration de sites web privés
+* Comptes shell protégés
+
+Un tableau de bord des services est disponible :
+=> https://tools.immae.eu Tableau de bord des services
+
+Je propose également de l’aide à distance (ou de visu si la distance est faible), pour l’usage de ces outils ou d’autres problèmes liés à l’informatique.
+
+Si vous ne voyez pas ce que vous voulez dans la liste, nous pourrons essayer de trouver une solution ensemble. Je suis ouvert aussi bien sûr à la création de nouveaux services (la liste est encore incomplète et d’autres services sont déjà prévus), dans le cadre défini en haut : basé sur des applications libres.
+
+=> https://status.immae.eu État des services
+
+## Comment faire ?
+
+Vous devez commencer par accepter les conditions générales dgutilisation :
+=> https://www.immae.eu/CGU Conditions générales d’utilisation
+Elles ne contiennent rien d’inhabituel mais elles ont été écrites par moi-même, donc sans jargon juridique. Elles vous permettront de décider si les garanties proposées sont en accord avec ce que vous pouvez vous permettre.
+
+Ensuite, contactez-moi avec vos vœux :
+=> https://www.immae.eu/contacts_fr.html Page de contact
+
+## Infrastructure et open source
+
+Dans le but de pouvoir décemment offrir une qualité de service suffisante sans pour autant y passer mes journées, l’installation des services est gérée via NixOS, permettant d’assurer la reproductibilité et l’automatisation des installations.
+
+Cette configuration est stockée publiquement dans un dépôt git, réutilisable et améliorable librement (avec probablement quelques ajustements).
+=> https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/ Dépôt git de la configuration
+
+
+=> https://www.immae.eu/contacts_fr.html Page de contact
+=> https://www.immae.eu/CGU Conditions générales d’utilisation
+=> https://www.immae.eu/mentions.html Mentions légales
+=> https://www.immae.eu/licences_et_tip.html Quelques informations sur les licences utilisées et tips
diff --git a/systems/eldiron/gitolite/default.nix b/systems/eldiron/gitolite/default.nix
new file mode 100644
index 0000000..1885234
--- /dev/null
+++ b/systems/eldiron/gitolite/default.nix
@@ -0,0 +1,127 @@
+{ lib, pkgs, config, ... }:
+let
+ cfg = config.myServices.gitolite;
+in {
+ options.myServices.gitolite = {
+ enable = lib.mkEnableOption "my gitolite service";
+ gitoliteDir = lib.mkOption {
+ type = lib.types.str;
+ default = "/var/lib/gitolite";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.git =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.gitolite = {
+ file.datetime = "2022-08-21T10:01:00";
+ service = {
+ name = "Gitolite";
+ description = "Gitolite allows you to setup git hosting on a central server, with fine-grained access control and many more powerful features.";
+ website = "https://git.immae.eu";
+ logo = "https://git.immae.eu/cgit-css/favicon.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ guide.user = "https://www.immae.eu/docs/forge-logicielle.html";
+ };
+ software = {
+ name = "Gitolite";
+ website = "https://gitolite.com/gitolite/";
+ license.url = "https://github.com/sitaramc/gitolite/blob/master/COPYING";
+ license.name = "GNU General Public License v2.0";
+ version = pkgs.gitolite.version;
+ source.url = "https://github.com/sitaramc/gitolite";
+ };
+ };
+ myServices.ssh.modules.gitolite = {
+ snippet = builtins.readFile ./ldap_gitolite.sh;
+ dependencies = [ pkgs.gitolite ];
+ vars.ldap_group = "cn=users,cn=gitolite,ou=services,dc=immae,dc=eu";
+ vars.shell_path = "${pkgs.gitolite}/bin/gitolite-shell";
+ vars.services = let
+ toLine = login: key: ''command="${pkgs.gitolite}/bin/gitolite-shell ${login}",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ${key}'';
+ in builtins.concatStringsSep "\n" [
+ (toLine "naemon" config.myEnv.monitoring.ssh_public_key)
+ (toLine "buildbot" config.myEnv.buildbot.ssh_key.public)
+ ];
+ };
+ networking.firewall.allowedTCPPorts = [ 9418 ];
+
+ secrets.keys."gitolite/ldap_password" = {
+ user = "gitolite";
+ group = "gitolite";
+ permissions = "0400";
+ text = config.myEnv.tools.gitolite.ldap.password;
+ };
+
+ services.gitDaemon = {
+ enable = true;
+ user = "gitolite";
+ group = "gitolite";
+ basePath = "${cfg.gitoliteDir}/repositories";
+ };
+
+ system.activationScripts.gitolite = let
+ deps = [ pkgs.openldap pkgs.stdenv.shellPackage pkgs.gnugrep pkgs.coreutils ];
+ gitolite_ldap_groups = pkgs.runCommand "gitolite_ldap_groups.sh" {
+ buildInputs = [ pkgs.makeWrapper ];
+ } ''
+ makeWrapper "${./gitolite_ldap_groups.sh}" "$out" \
+ --prefix PATH : ${lib.makeBinPath deps} \
+ --set LDAP_PASS_PATH ${config.secrets.fullPaths."gitolite/ldap_password"}
+ '';
+ in {
+ deps = [ "users" ];
+ text = ''
+ if [ -d ${cfg.gitoliteDir} ]; then
+ ln -sf ${gitolite_ldap_groups} ${cfg.gitoliteDir}/gitolite_ldap_groups.sh
+ chmod g+rx ${cfg.gitoliteDir}
+ fi
+ if [ -f ${cfg.gitoliteDir}/projects.list ]; then
+ chmod g+r ${cfg.gitoliteDir}/projects.list
+ fi
+ '';
+ };
+
+ users.users.wwwrun.extraGroups = [ "gitolite" ];
+ users.users.gitolite.extraGroups = [ "keys" ];
+
+ users.users.gitolite.packages = let
+ python-packages = python-packages: with python-packages; [
+ simplejson
+ apprise
+ sleekxmpp
+ urllib3
+ pyyaml
+ ];
+ in
+ [
+ # For some reason it absolutely wants to include "doc" output
+ ((pkgs.python39.withPackages python-packages) // { doc = ""; })
+ pkgs.nettools
+ pkgs.findutils
+ ];
+ # Installation: https://git.immae.eu/mantisbt/view.php?id=93
+ services.gitolite = {
+ enable = true;
+ adminPubkey = config.myEnv.sshd.rootKeys.immae_dilion;
+ };
+ myServices.monitoring.fromMasterActivatedPlugins = [ "git" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "gitolite is working";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = "check_git";
+
+ servicegroups = "webstatus-remote-services";
+ _webstatus_name = "Git";
+ _webstatus_url = "git.immae.eu";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/gitolite/gitolite_ldap_groups.sh b/systems/eldiron/gitolite/gitolite_ldap_groups.sh
new file mode 100755
index 0000000..ffa2dab
--- /dev/null
+++ b/systems/eldiron/gitolite/gitolite_ldap_groups.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+
+uid_param="$1"
+ldap_host="ldap://ldap.immae.eu"
+ldap_binddn="cn=gitolite,ou=services,dc=immae,dc=eu"
+ldap_bindpw="$(cat $LDAP_PASS_PATH)"
+ldap_searchbase="dc=immae,dc=eu"
+ldap_scope="subtree"
+
+ldap_options="-H ${ldap_host} -ZZ -x -D ${ldap_binddn} -w ${ldap_bindpw} -b ${ldap_searchbase} -s ${ldap_scope}"
+
+ldap_filter="(&(memberOf=cn=groups,cn=gitolite,ou=services,dc=immae,dc=eu)(|(member=uid=${uid_param},ou=users,dc=immae,dc=eu)(member=uid=${uid_param},ou=group_users,dc=immae,dc=eu)))"
+ldap_result=$(ldapsearch ${ldap_options} -LLL "${ldap_filter}" cn | grep 'cn:' | cut -d' ' -f2)
+
+echo "$ldap_result"
diff --git a/systems/eldiron/gitolite/ldap_gitolite.sh b/systems/eldiron/gitolite/ldap_gitolite.sh
new file mode 100644
index 0000000..75a39bf
--- /dev/null
+++ b/systems/eldiron/gitolite/ldap_gitolite.sh
@@ -0,0 +1,28 @@
+### This snippet is not standalone and must be integrated in the global ldap_authorized_keys.sh
+LDAP_GITOLITE_MEMBER="@gitolite_ldap_group@"
+GITOLITE_SHELL="@gitolite_shell_path@"
+
+if [[ $user == gitolite ]]; then
+ allowed_logins=$(LDAP_BASE=$USER_LDAP_BASE \
+ ldap_search '(memberOf='$LDAP_GITOLITE_MEMBER')' '' \
+ | grep ^dn \
+ | sed -e "s/^dn: uid=\([^,]*\),.*$USER_LDAP_BASE$/'\1'/" \
+ | paste -sd,)
+
+ psql_search "SELECT login, key FROM ldap_users_ssh_keys WHERE realm = 'immae' AND 'git' = ANY(usage) AND login IN ($allowed_logins);" | while IFS='|' read user key; do
+ if [[ $user == "immae" ]] || [[ $user == "denise" ]]; then
+ # Capitalize first letter (backward compatibility)
+ user=$(sed -r 's/^([a-z])/\U\1/' <<< "$user")
+ fi
+ if [ ! -z "$key" ]; then
+ if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
+ echo -n 'command="'$GITOLITE_SHELL' '$user'",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty '
+ echo $key
+ fi
+ fi
+ done
+cat <&1 > /dev/null | grep -v "Mailbox doesn't exist:" | grep -v "Info: Opening DB"
+ ${pkgs.dovecot}/bin/doveadm expunge -A MAILBOX Junk SEEN NOT FLAGGED BEFORE 4w 2>&1 > /dev/null | grep -v "Mailbox doesn't exist:" | grep -v "Info: Opening DB"
+ ${pkgs.dovecot}/bin/doveadm expunge -A MAILBOX Trash NOT FLAGGED BEFORE 4w 2>&1 > /dev/null | grep -v "Mailbox doesn't exist:" | grep -v "Info: Opening DB"
+ '';
+ in
+ [
+ "0 2 * * * root ${cron_script}/bin/cleanup-imap-folders"
+ ];
+ security.acme.certs."mail-rsa" = {
+ postRun = ''
+ systemctl restart dovecot2.service
+ '';
+ extraDomainNames = [ "imap.immae.eu" "pop3.immae.eu" ];
+ };
+ security.acme.certs."mail" = {
+ postRun = ''
+ systemctl restart dovecot2.service
+ '';
+ extraDomainNames = [ "imap.immae.eu" "pop3.immae.eu" ];
+ };
+ myServices.monitoring.fromMasterActivatedPlugins = [ "imap" "tcp" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "imap connection works";
+ host_name = config.hostEnv.fqdn;
+ use = "external-service";
+ check_command = "check_imap_connection";
+
+ servicegroups = "webstatus-remote-services,webstatus-email";
+ _webstatus_name = "IMAP";
+ _webstatus_url = "imap.immae.eu";
+ }
+
+ {
+ service_description = "imap SSL is up to date";
+ host_name = config.hostEnv.fqdn;
+ use = "external-service";
+ check_command = ["check_tcp_ssl" "993"];
+
+ servicegroups = "webstatus-ssl";
+ _webstatus_name = "IMAP";
+ _webstatus_url = "imap.immae.eu";
+ }
+
+ ];
+ };
+}
+
diff --git a/systems/eldiron/mail/postfix.nix b/systems/eldiron/mail/postfix.nix
new file mode 100644
index 0000000..f95ee1b
--- /dev/null
+++ b/systems/eldiron/mail/postfix.nix
@@ -0,0 +1,497 @@
+{ lib, pkgs, config, options, ... }:
+let
+ getDomains = p: lib.mapAttrsToList (n: v: v.fqdn) (lib.filterAttrs (n: v: v.receive) p.emailPolicies);
+ bydomain = builtins.mapAttrs (n: getDomains) config.myServices.dns.zones;
+ receiving_domains = lib.flatten (builtins.attrValues bydomain);
+in
+{
+ options.services.postfix.submissionOptions' = options.services.postfix.submissionOptions // {
+ type = with lib.types; attrsOf (either str (listOf str));
+ apply = builtins.mapAttrs (n: v: if builtins.isList v then builtins.concatStringsSep "," v else v);
+ };
+ config = lib.mkIf config.myServices.mail.enable {
+ myServices.dns.zones."immae.eu" = with config.myServices.dns.helpers; lib.mkMerge [
+ mailMX
+ (mailCommon "immae.eu")
+ mailSend
+ {
+ # Virtual forwards and mailboxes for real users
+ emailPolicies."mail".receive = true;
+ # multi-domain generic mails:
+ # hostmaster, cron, httpd, naemon, postmaster
+ # system virtual mailboxes:
+ # devnull, printer, testconnect
+ emailPolicies."".receive = true;
+ subdomains.mail = lib.mkMerge [ (mailCommon "immae.eu") mailSend ];
+ subdomains.smtp = ips servers.eldiron.ips.main;
+
+ # DMARC reports
+ subdomains._dmarc.subdomains._report.subdomains = let
+ getDomains = p: lib.mapAttrsToList (n: v: v.fqdn) p.emailPolicies;
+ bydomain = builtins.mapAttrs (n: getDomains) config.myServices.dns.zones;
+ hostsWithMail = lib.flatten (builtins.attrValues bydomain);
+ nvpairs = builtins.map (e: { name = e; value = { TXT = [ "v=DMARC1;" ]; }; }) hostsWithMail;
+ in
+ builtins.listToAttrs nvpairs;
+ }
+ ];
+
+ myServices.chatonsProperties.hostings.mx-backup = {
+ file.datetime = "2022-08-22T01:00:00";
+ hosting = {
+ name = "MX Backup";
+ description = "Serveur e-mail secondaire";
+ logo = "https://www.postfix.org/favicon.ico";
+ website = "https://mail.immae.eu/";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Postfix";
+ website = "http://www.postfix.org/";
+ license.url = "http://postfix.mirrors.ovh.net/postfix-release/LICENSE";
+ license.name = "Eclipse Public license (EPL 2.0) and IBM Public License (IPL 1.0)";
+ version = pkgs.postfix.version;
+ source.url = "http://www.postfix.org/download.html";
+ };
+ };
+ secrets.keys = {
+ "postfix/mysql_alias_maps" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ # We need to specify that option to trigger ssl connection
+ tls_ciphers = TLSv1.2
+ user = ${config.myEnv.mail.postfix.mysql.user}
+ password = ${config.myEnv.mail.postfix.mysql.password}
+ hosts = unix:${config.myEnv.mail.postfix.mysql.socket}
+ dbname = ${config.myEnv.mail.postfix.mysql.database}
+ query = SELECT DISTINCT destination
+ FROM forwardings
+ WHERE
+ ((regex = 1 AND '%s' REGEXP CONCAT('^',source,'$') ) OR (regex = 0 AND source = '%s'))
+ AND active = 1
+ AND '%s' NOT IN
+ (
+ SELECT source
+ FROM forwardings_blacklisted
+ WHERE source = '%s'
+ ) UNION
+ SELECT 'devnull@immae.eu'
+ FROM forwardings_blacklisted
+ WHERE source = '%s'
+ '';
+ };
+ "postfix/ldap_mailboxes" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ server_host = ldaps://${config.myEnv.mail.dovecot.ldap.host}:636
+ search_base = ${config.myEnv.mail.dovecot.ldap.base}
+ query_filter = ${config.myEnv.mail.dovecot.ldap.postfix_mailbox_filter}
+ bind_dn = ${config.myEnv.mail.dovecot.ldap.dn}
+ bind_pw = ${config.myEnv.mail.dovecot.ldap.password}
+ result_attribute = immaePostfixAddress
+ result_format = dummy
+ version = 3
+ '';
+ };
+ "postfix/mysql_sender_login_maps" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ # We need to specify that option to trigger ssl connection
+ tls_ciphers = TLSv1.2
+ user = ${config.myEnv.mail.postfix.mysql.user}
+ password = ${config.myEnv.mail.postfix.mysql.password}
+ hosts = unix:${config.myEnv.mail.postfix.mysql.socket}
+ dbname = ${config.myEnv.mail.postfix.mysql.database}
+ query = SELECT DISTINCT destination
+ FROM forwardings
+ WHERE
+ (
+ (regex = 1 AND CONCAT(SUBSTRING_INDEX('%u', '+', 1), '@%d') REGEXP CONCAT('^',source,'$') )
+ OR
+ (regex = 0 AND source = CONCAT(SUBSTRING_INDEX('%u', '+', 1), '@%d'))
+ )
+ AND active = 1
+ UNION SELECT CONCAT(SUBSTRING_INDEX('%u', '+', 1), '@%d') AS destination
+ '';
+ };
+ "postfix/mysql_sender_relays_maps" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ # We need to specify that option to trigger ssl connection
+ tls_ciphers = TLSv1.2
+ user = ${config.myEnv.mail.postfix.mysql.user}
+ password = ${config.myEnv.mail.postfix.mysql.password}
+ hosts = unix:${config.myEnv.mail.postfix.mysql.socket}
+ dbname = ${config.myEnv.mail.postfix.mysql.database}
+ # INSERT INTO sender_relays
+ # (`from`, owner, relay, login, password, regex, active)
+ # VALUES
+ # ( 'sender@otherhost.org'
+ # , 'me@mail.immae.eu'
+ # , '[otherhost.org]:587'
+ # , 'otherhostlogin'
+ # , AES_ENCRYPT('otherhostpassword', '${config.myEnv.mail.postfix.mysql.password_encrypt}')
+ # , '0'
+ # , '1');
+
+ query = SELECT DISTINCT `owner`
+ FROM sender_relays
+ WHERE
+ ((regex = 1 AND '%s' REGEXP CONCAT('^',`from`,'$') ) OR (regex = 0 AND `from` = '%s'))
+ AND active = 1
+ '';
+ };
+ "postfix/mysql_sender_relays_hosts" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ # We need to specify that option to trigger ssl connection
+ tls_ciphers = TLSv1.2
+ user = ${config.myEnv.mail.postfix.mysql.user}
+ password = ${config.myEnv.mail.postfix.mysql.password}
+ hosts = unix:${config.myEnv.mail.postfix.mysql.socket}
+ dbname = ${config.myEnv.mail.postfix.mysql.database}
+
+ query = SELECT DISTINCT relay
+ FROM sender_relays
+ WHERE
+ ((regex = 1 AND '%s' REGEXP CONCAT('^',`from`,'$') ) OR (regex = 0 AND `from` = '%s'))
+ AND active = 1
+ '';
+ };
+ "postfix/mysql_sender_relays_creds" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ # We need to specify that option to trigger ssl connection
+ tls_ciphers = TLSv1.2
+ user = ${config.myEnv.mail.postfix.mysql.user}
+ password = ${config.myEnv.mail.postfix.mysql.password}
+ hosts = unix:${config.myEnv.mail.postfix.mysql.socket}
+ dbname = ${config.myEnv.mail.postfix.mysql.database}
+
+ query = SELECT DISTINCT CONCAT(`login`, ':', AES_DECRYPT(`password`, '${config.myEnv.mail.postfix.mysql.password_encrypt}'))
+ FROM sender_relays
+ WHERE
+ ((regex = 1 AND '%s' REGEXP CONCAT('^',`from`,'$') ) OR (regex = 0 AND `from` = '%s'))
+ AND active = 1
+ '';
+ };
+ "postfix/ldap_ejabberd_users_immae_fr" = {
+ user = config.services.postfix.user;
+ group = config.services.postfix.group;
+ permissions = "0440";
+ text = ''
+ server_host = ldaps://${config.myEnv.jabber.ldap.host}:636
+ search_base = ${config.myEnv.jabber.ldap.base}
+ query_filter = ${config.myEnv.jabber.postfix_user_filter}
+ domain = immae.fr
+ bind_dn = ${config.myEnv.jabber.ldap.dn}
+ bind_pw = ${config.myEnv.jabber.ldap.password}
+ result_attribute = immaeXmppUid
+ result_format = ejabberd@localhost
+ version = 3
+ '';
+ };
+ };
+
+ networking.firewall.allowedTCPPorts = [ 25 465 587 ];
+
+ users.users.postfixscripts = {
+ group = "keys";
+ uid = config.ids.uids.postfixscripts;
+ description = "Postfix scripts user";
+ };
+ users.users."${config.services.postfix.user}".extraGroups = [ "keys" ];
+ services.filesWatcher.postfix = {
+ restart = true;
+ paths = [
+ config.secrets.fullPaths."postfix/mysql_alias_maps"
+ config.secrets.fullPaths."postfix/ldap_mailboxes"
+ config.secrets.fullPaths."postfix/mysql_sender_login_maps"
+ config.secrets.fullPaths."postfix/ldap_ejabberd_users_immae_fr"
+ ];
+ };
+ services.postfix = {
+ extraAliases = let
+ testmail = pkgs.writeScript "testmail" ''
+ #! ${pkgs.stdenv.shell}
+ ${pkgs.coreutils}/bin/touch \
+ "/var/lib/naemon/checks/email/$(${pkgs.procmail}/bin/formail -x To: | ${pkgs.coreutils}/bin/tr -d ' <>')"
+ '';
+ in
+ ''testmail: "|${testmail}"'';
+ mapFiles = let
+ virtual_map = {
+ virtual = let
+ cfg = config.myEnv.monitoring.email_check.eldiron;
+ address = "${cfg.mail_address}@${cfg.mail_domain}";
+ aliases = config.myEnv.mail.postfix.common_aliases;
+ admins = builtins.concatStringsSep "," config.myEnv.mail.postfix.admins;
+ in pkgs.writeText "postfix-virtual" (
+ builtins.concatStringsSep "\n" (
+ [ "${address} testmail@localhost"
+ ] ++
+ map (a: "${a} ${admins}") config.myEnv.mail.postfix.other_aliases
+ ++ lib.lists.flatten (
+ map (domain:
+ map (alias: "${alias}@${domain} ${admins}") aliases
+ ) receiving_domains
+ )
+ ));
+ };
+ sasl_access = {
+ host_sender_login = with lib.attrsets; let
+ addresses = zipAttrs (lib.flatten (mapAttrsToList
+ (n: v: (map (e: { "${e}" = "${n}@immae.eu"; }) v.emails)) config.myEnv.servers));
+ aliases = config.myEnv.mail.postfix.common_aliases;
+ joined = builtins.concatStringsSep ",";
+ admins = joined config.myEnv.mail.postfix.admins;
+ in pkgs.writeText "host-sender-login"
+ (builtins.concatStringsSep "\n" (
+ mapAttrsToList (n: v: "${n} ${joined v}") addresses
+ ++ lib.lists.flatten (
+ map (domain:
+ map (alias: "${alias}@${domain} ${admins}") aliases
+ ) receiving_domains
+ )
+ ++ map (a: "${a} ${admins}") config.myEnv.mail.postfix.other_aliases
+ ));
+ };
+ in
+ virtual_map // sasl_access;
+ config = {
+ ### postfix module overrides
+ readme_directory = "${pkgs.postfix}/share/postfix/doc";
+ smtp_tls_CAfile = lib.mkForce "";
+ smtp_tls_cert_file = lib.mkForce "";
+ smtp_tls_key_file = lib.mkForce "";
+
+ message_size_limit = "1073741824"; # Don't put 0 here, it's not equivalent to "unlimited"
+ mailbox_size_limit = "1073741825"; # Workaround, local delivered mails should all go through scripts
+ alias_database = "\$alias_maps";
+
+ ### Aliases scripts user
+ default_privs = "postfixscripts";
+
+ ### Virtual mailboxes config
+ virtual_alias_maps = [
+ "hash:/etc/postfix/virtual"
+ "mysql:${config.secrets.fullPaths."postfix/mysql_alias_maps"}"
+ "ldap:${config.secrets.fullPaths."postfix/ldap_ejabberd_users_immae_fr"}"
+ ];
+ virtual_mailbox_domains = receiving_domains;
+ virtual_mailbox_maps = [
+ "ldap:${config.secrets.fullPaths."postfix/ldap_mailboxes"}"
+ ];
+ dovecot_destination_recipient_limit = "1";
+ virtual_transport = "dovecot";
+
+ ### Relay domains
+ smtpd_relay_restrictions = [
+ "defer_unauth_destination"
+ ];
+
+ ### Additional smtpd configuration
+ smtpd_tls_received_header = "yes";
+ smtpd_tls_loglevel = "1";
+
+ ### Email sending configuration
+ smtp_tls_security_level = "may";
+ smtp_tls_loglevel = "1";
+
+ ### Force ip bind for smtp
+ smtp_bind_address = builtins.head config.hostEnv.ips.main.ip4;
+ smtp_bind_address6 = builtins.head config.hostEnv.ips.main.ip6;
+
+ # Use some relays when authorized senders are not myself
+ smtp_sasl_mechanism_filter = [
+ "plain"
+ "login"
+ ]; # GSSAPI Not correctly supported by postfix
+ smtp_sasl_auth_enable = "yes";
+ smtp_sasl_password_maps = [
+ "mysql:${config.secrets.fullPaths."postfix/mysql_sender_relays_creds"}"
+ ];
+ smtp_sasl_security_options = "noanonymous";
+ smtp_sender_dependent_authentication = "yes";
+ sender_dependent_relayhost_maps = [
+ "mysql:${config.secrets.fullPaths."postfix/mysql_sender_relays_hosts"}"
+ ];
+
+ ### opendkim, opendmarc, openarc milters
+ non_smtpd_milters = [
+ "unix:${config.myServices.mail.milters.sockets.opendkim}"
+ ];
+ smtpd_milters = [
+ "unix:${config.myServices.mail.milters.sockets.opendkim}"
+ "unix:${config.myServices.mail.milters.sockets.openarc}"
+ "unix:${config.myServices.mail.milters.sockets.opendmarc}"
+ ];
+
+ smtp_use_tls = true;
+ smtpd_use_tls = true;
+ smtpd_tls_chain_files = [
+ "/var/lib/acme/mail/full.pem"
+ "/var/lib/acme/mail-rsa/full.pem"
+ ];
+
+ maximal_queue_lifetime = "6w";
+ bounce_queue_lifetime = "6w";
+ };
+ enable = true;
+ enableSmtp = true;
+ enableSubmission = true;
+ submissionOptions = config.services.postfix.submissionOptions';
+ submissionOptions' = {
+ # Don’t use "long form", only commas (cf
+ # http://www.postfix.org/master.5.html long form is not handled
+ # well by the submission function)
+ smtpd_tls_security_level = "encrypt";
+ smtpd_sasl_auth_enable = "yes";
+ smtpd_tls_auth_only = "yes";
+ smtpd_sasl_tls_security_options = "noanonymous";
+ smtpd_sasl_type = "dovecot";
+ smtpd_sasl_path = "private/auth";
+ smtpd_reject_unlisted_recipient = "no";
+ smtpd_client_restrictions = [
+ "permit_sasl_authenticated"
+ "reject"
+ ];
+ smtpd_relay_restrictions = [
+ "permit_sasl_authenticated"
+ "reject"
+ ];
+ # Refuse to send e-mails with a From that is not handled
+ smtpd_sender_restrictions = [
+ "reject_sender_login_mismatch"
+ "reject_unlisted_sender"
+ "permit_sasl_authenticated,reject"
+ ];
+ smtpd_sender_login_maps = [
+ "hash:/etc/postfix/host_sender_login"
+ "mysql:${config.secrets.fullPaths."postfix/mysql_sender_relays_maps"}"
+ "mysql:${config.secrets.fullPaths."postfix/mysql_sender_login_maps"}"
+ ];
+ smtpd_recipient_restrictions = [
+ "permit_sasl_authenticated"
+ "reject"
+ ];
+ milter_macro_daemon_name = "ORIGINATING";
+ smtpd_milters = [
+ # FIXME: put it back when opensmtpd is upgraded and able to
+ # rewrite the from header
+ #"unix:/run/milter_verify_from/verify_from.sock"
+ "unix:${config.myServices.mail.milters.sockets.opendkim}"
+ ];
+ };
+ destination = ["localhost"];
+ # This needs to reverse DNS
+ hostname = config.hostEnv.fqdn;
+ setSendmail = true;
+ recipientDelimiter = "+";
+ masterConfig = {
+ submissions = {
+ type = "inet";
+ private = false;
+ command = "smtpd";
+ args = ["-o" "smtpd_tls_wrappermode=yes" ] ++ (let
+ mkKeyVal = opt: val: [ "-o" (opt + "=" + val) ];
+ in lib.concatLists (lib.mapAttrsToList mkKeyVal config.services.postfix.submissionOptions)
+ );
+ };
+ dovecot = {
+ type = "unix";
+ privileged = true;
+ chroot = false;
+ command = "pipe";
+ args = let
+ # rspamd could be used as a milter, but then it cannot apply
+ # its checks "per user" (milter is not yet dispatched to
+ # users), so we wrap dovecot-lda inside rspamc per recipient
+ # here.
+ rspamc_dovecot = pkgs.writeScriptBin "rspamc_dovecot" ''
+ #! ${pkgs.stdenv.shell}
+ set -o pipefail
+ sender="$1"
+ original_recipient="$2"
+ user="$3"
+
+ ${pkgs.coreutils}/bin/cat - | \
+ ${pkgs.rspamd}/bin/rspamc -h ${config.myServices.mail.rspamd.sockets.worker-controller} -c bayes -d "$user" --mime | \
+ ${pkgs.dovecot}/libexec/dovecot/dovecot-lda -f "$sender" -a "$original_recipient" -d "$user"
+ if echo ''${PIPESTATUS[@]} | ${pkgs.gnugrep}/bin/grep -qE '^[0 ]+$'; then
+ exit 0
+ else
+ # src/global/sys_exits.h to retry
+ exit 75
+ fi
+ '';
+ in [
+ "flags=ODRhu" "user=vhost:vhost"
+ "argv=${rspamc_dovecot}/bin/rspamc_dovecot \${sender} \${original_recipient} \${user}@\${nexthop}"
+ ];
+ };
+ };
+ };
+ security.acme.certs."mail" = {
+ postRun = ''
+ systemctl restart postfix.service
+ '';
+ extraDomainNames = [ "smtp.immae.eu" ];
+ };
+ security.acme.certs."mail-rsa" = {
+ postRun = ''
+ systemctl restart postfix.service
+ '';
+ extraDomainNames = [ "smtp.immae.eu" ];
+ };
+ system.activationScripts.testmail = {
+ deps = [ "users" ];
+ text = let
+ allCfg = config.myEnv.monitoring.email_check;
+ cfg = allCfg.eldiron;
+ reverseTargets = builtins.attrNames (lib.attrsets.filterAttrs (k: v: builtins.elem "eldiron" v.targets) allCfg);
+ to_email = cfg': host':
+ let sep = if lib.strings.hasInfix "+" cfg'.mail_address then "_" else "+";
+ in "${cfg'.mail_address}${sep}${host'}@${cfg'.mail_domain}";
+ mails_to_receive = builtins.concatStringsSep " " (map (to_email cfg) reverseTargets);
+ in ''
+ install -m 0555 -o postfixscripts -g keys -d /var/lib/naemon/checks/email
+ for f in ${mails_to_receive}; do
+ if [ ! -f /var/lib/naemon/checks/email/$f ]; then
+ install -m 0644 -o postfixscripts -g keys /dev/null -T /var/lib/naemon/checks/email/$f
+ touch -m -d @0 /var/lib/naemon/checks/email/$f
+ fi
+ done
+ '';
+ };
+ systemd.services.postfix.serviceConfig.Slice = "mail.slice";
+
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "postfix SSL is up to date";
+ host_name = config.hostEnv.fqdn;
+ use = "external-service";
+ check_command = "check_smtp";
+
+ servicegroups = "webstatus-ssl";
+ _webstatus_name = "SMTP";
+ _webstatus_url = "smtp.immae.eu";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/mail/rspamd.nix b/systems/eldiron/mail/rspamd.nix
new file mode 100644
index 0000000..a300cc5
--- /dev/null
+++ b/systems/eldiron/mail/rspamd.nix
@@ -0,0 +1,88 @@
+{ lib, pkgs, config, ... }:
+{
+ options.myServices.mail.rspamd.sockets = lib.mkOption {
+ type = lib.types.attrsOf lib.types.path;
+ default = {
+ worker-controller = "/run/rspamd/worker-controller.sock";
+ };
+ readOnly = true;
+ description = ''
+ rspamd sockets
+ '';
+ };
+ config = lib.mkIf config.myServices.mail.enable {
+ services.cron.systemCronJobs = let
+ cron_script = pkgs.runCommand "cron_script" {
+ buildInputs = [ pkgs.makeWrapper ];
+ } ''
+ mkdir -p $out
+ cp ${./scan_reported_mails} $out/scan_reported_mails
+ patchShebangs $out
+ for i in $out/*; do
+ wrapProgram "$i" --prefix PATH : ${lib.makeBinPath [ pkgs.coreutils pkgs.rspamd pkgs.flock ]}
+ done
+ '';
+ in
+ [ "*/20 * * * * vhost ${cron_script}/scan_reported_mails" ];
+
+ systemd.services.rspamd.serviceConfig.Slice = "mail.slice";
+ systemd.services.rspamd.serviceConfig.SupplementaryGroups = [ "vhost" ];
+ services.rspamd = {
+ enable = true;
+ debug = false;
+ overrides = {
+ "actions.conf".text = ''
+ reject = null;
+ add_header = 6;
+ greylist = null;
+ '';
+ "milter_headers.conf".text = ''
+ extended_spam_headers = true;
+ '';
+ };
+ locals = {
+ "redis.conf".text = ''
+ servers = "${config.myEnv.mail.rspamd.redis.socket}";
+ db = "${config.myEnv.mail.rspamd.redis.db}";
+ '';
+ "classifier-bayes.conf".text = ''
+ users_enabled = true;
+ backend = "redis";
+ servers = "${config.myEnv.mail.rspamd.redis.socket}";
+ database = "${config.myEnv.mail.rspamd.redis.db}";
+ autolearn = true;
+ cache {
+ backend = "redis";
+ }
+ new_schema = true;
+ statfile {
+ BAYES_HAM {
+ spam = false;
+ }
+ BAYES_SPAM {
+ spam = true;
+ }
+ }
+ '';
+ };
+ workers = {
+ controller = {
+ extraConfig = ''
+ enable_password = "${config.myEnv.mail.rspamd.write_password_hashed}";
+ password = "${config.myEnv.mail.rspamd.read_password_hashed}";
+ '';
+ bindSockets = [ {
+ socket = config.myServices.mail.rspamd.sockets.worker-controller;
+ mode = "0660";
+ owner = config.services.rspamd.user;
+ group = "vhost";
+ } ];
+ };
+ };
+ postfix = {
+ enable = true;
+ config = {};
+ };
+ };
+ };
+}
diff --git a/systems/eldiron/mail/scan_reported_mails b/systems/eldiron/mail/scan_reported_mails
new file mode 100755
index 0000000..fe9f4d6
--- /dev/null
+++ b/systems/eldiron/mail/scan_reported_mails
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+( flock -n 9 || exit 1
+shopt -s nullglob
+for spool in /var/lib/vhost/.rspamd/*/pending; do
+ rspamd_folder=$(dirname $spool)
+ mail_user=$(basename $rspamd_folder)
+ mv $rspamd_folder/pending $rspamd_folder/processing
+
+ for mtype in ham spam; do
+ if [ -d $rspamd_folder/processing/$mtype ]; then
+ output="$(rspamc -h /run/rspamd/worker-controller.sock -c bayes -d $mail_user learn_$mtype $rspamd_folder/processing/$mtype/*)"
+ echo "[$mtype: $mail_user]" ${output} >> /var/lib/vhost/.rspamd/rspamd.log
+ mkdir -p $rspamd_folder/processed/$mtype
+ cp $rspamd_folder/processing/$mtype/* $rspamd_folder/processed/$mtype/
+ fi
+ done
+
+ rm -rf $rspamd_folder/processing
+done
+) 9>/var/lib/vhost/scan_reported_mails.lock
diff --git a/systems/eldiron/mail/sieve_bin/imapsieve_copy b/systems/eldiron/mail/sieve_bin/imapsieve_copy
new file mode 100755
index 0000000..2ca1f23
--- /dev/null
+++ b/systems/eldiron/mail/sieve_bin/imapsieve_copy
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+# Inspired from https://docs.iredmail.org/dovecot.imapsieve.html
+
+MSG_TYPE="$1"
+OUTPUT_DIR="/var/lib/vhost/.rspamd/${USER}/pending/${MSG_TYPE}"
+FILE="${OUTPUT_DIR}/$(date +%Y%m%d%H%M%S)-${RANDOM}${RANDOM}.eml"
+mkdir -p "${OUTPUT_DIR}"
+cat > ${FILE} < /dev/stdin
diff --git a/systems/eldiron/mail/sieve_scripts/backup.sieve b/systems/eldiron/mail/sieve_scripts/backup.sieve
new file mode 100644
index 0000000..3014c0a
--- /dev/null
+++ b/systems/eldiron/mail/sieve_scripts/backup.sieve
@@ -0,0 +1,7 @@
+# vim: filetype=sieve
+require ["copy","mailbox","fileinto","regex"];
+if header :is "X-Spam" "Yes" {
+ fileinto :create :copy "Backup/Spam";
+} else {
+ fileinto :create :copy "Backup/Ham";
+}
diff --git a/systems/eldiron/mail/sieve_scripts/report_ham.sieve b/systems/eldiron/mail/sieve_scripts/report_ham.sieve
new file mode 100644
index 0000000..f9b8481
--- /dev/null
+++ b/systems/eldiron/mail/sieve_scripts/report_ham.sieve
@@ -0,0 +1,11 @@
+require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];
+
+if environment :matches "imap.mailbox" "*" {
+ set "mailbox" "${1}";
+}
+
+if string "${mailbox}" "Trash" {
+ stop;
+}
+
+pipe :copy "imapsieve_copy" [ "ham" ];
diff --git a/systems/eldiron/mail/sieve_scripts/report_spam.sieve b/systems/eldiron/mail/sieve_scripts/report_spam.sieve
new file mode 100644
index 0000000..9a1f794
--- /dev/null
+++ b/systems/eldiron/mail/sieve_scripts/report_spam.sieve
@@ -0,0 +1,3 @@
+require ["vnd.dovecot.pipe", "copy", "imapsieve" ];
+
+pipe :copy "imapsieve_copy" [ "spam" ];
diff --git a/systems/eldiron/mail/sympa.nix b/systems/eldiron/mail/sympa.nix
new file mode 100644
index 0000000..8e801dd
--- /dev/null
+++ b/systems/eldiron/mail/sympa.nix
@@ -0,0 +1,232 @@
+{ lib, pkgs, config, ... }:
+let
+ domain = "lists.immae.eu";
+ sympaConfig = config.myEnv.mail.sympa;
+in
+{
+ config = lib.mkIf config.myServices.mail.enable {
+ myServices.dns.zones."immae.eu".emailPolicies."lists".receive = true;
+ myServices.dns.zones."immae.eu".subdomains.lists =
+ with config.myServices.dns.helpers; lib.mkMerge [
+ (ips servers.eldiron.ips.main)
+ (mailCommon "immae.eu")
+ mailSend
+ ];
+
+ myServices.chatonsProperties.services.sympa = {
+ file.datetime = "2022-08-22T00:50:00";
+ service = {
+ name = "Sympa";
+ description = "Mailing lists service";
+ website = "https://mail.immae.eu/sympa";
+ logo = "https://mail.immae.eu/static-sympa/icons/favicon_sympa.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Sympa";
+ website = "https://www.sympa.org/";
+ license.url = "https://github.com/sympa-community/sympa/blob/sympa-6.2/COPYING";
+ license.name = "GNU General Public License v2.0";
+ version = pkgs.sympa.version;
+ source.url = "https://github.com/sympa-community/sympa/";
+ };
+ };
+ myServices.databases.postgresql.authorizedHosts = {
+ backup-2 = [
+ {
+ username = "sympa";
+ database = "sympa";
+ ip4 = config.myEnv.servers.backup-2.ips.main.ip4;
+ ip6 = map (v: "${v}/128") config.myEnv.servers.backup-2.ips.main.ip6;
+ }
+ ];
+ };
+ services.websites.env.tools.vhostConfs.mail = {
+ extraConfig = lib.mkAfter [
+ ''
+ Alias /static-sympa/ /var/lib/sympa/static_content/
+
+ Require all granted
+ AllowOverride none
+
+
+ SetHandler "proxy:unix:/run/sympa/wwsympa.socket|fcgi://"
+ Require all granted
+
+ ''
+ ];
+ };
+
+ secrets.keys = {
+ "sympa/db_password" = {
+ permissions = "0400";
+ group = "sympa";
+ user = "sympa";
+ text = sympaConfig.postgresql.password;
+ };
+ }
+ // lib.mapAttrs' (n: v: lib.nameValuePair "sympa/data_sources/${n}.incl" {
+ permissions = "0400"; group = "sympa"; user = "sympa"; text = v;
+ }) sympaConfig.data_sources
+ // lib.mapAttrs' (n: v: lib.nameValuePair "sympa/scenari/${n}" {
+ permissions = "0400"; group = "sympa"; user = "sympa"; text = v;
+ }) sympaConfig.scenari;
+ users.users.sympa.extraGroups = [ "keys" ];
+ systemd.slices.mail-sympa = {
+ description = "Sympa slice";
+ };
+
+ systemd.services.sympa.serviceConfig.SupplementaryGroups = [ "keys" ];
+ systemd.services.sympa-archive.serviceConfig.SupplementaryGroups = [ "keys" ];
+ systemd.services.sympa-bounce.serviceConfig.SupplementaryGroups = [ "keys" ];
+ systemd.services.sympa-bulk.serviceConfig.SupplementaryGroups = [ "keys" ];
+ systemd.services.sympa-task.serviceConfig.SupplementaryGroups = [ "keys" ];
+
+ systemd.services.sympa.serviceConfig.Slice = "mail-sympa.slice";
+ systemd.services.sympa-archive.serviceConfig.Slice = "mail-sympa.slice";
+ systemd.services.sympa-bounce.serviceConfig.Slice = "mail-sympa.slice";
+ systemd.services.sympa-bulk.serviceConfig.Slice = "mail-sympa.slice";
+ systemd.services.sympa-task.serviceConfig.Slice = "mail-sympa.slice";
+
+ # https://github.com/NixOS/nixpkgs/pull/84202
+ systemd.services.sympa.serviceConfig.ProtectKernelModules = lib.mkForce false;
+ systemd.services.sympa-archive.serviceConfig.ProtectKernelModules = lib.mkForce false;
+ systemd.services.sympa-bounce.serviceConfig.ProtectKernelModules = lib.mkForce false;
+ systemd.services.sympa-bulk.serviceConfig.ProtectKernelModules = lib.mkForce false;
+ systemd.services.sympa-task.serviceConfig.ProtectKernelModules = lib.mkForce false;
+ systemd.services.sympa.serviceConfig.ProtectKernelTunables = lib.mkForce false;
+ systemd.services.sympa-archive.serviceConfig.ProtectKernelTunables = lib.mkForce false;
+ systemd.services.sympa-bounce.serviceConfig.ProtectKernelTunables = lib.mkForce false;
+ systemd.services.sympa-bulk.serviceConfig.ProtectKernelTunables = lib.mkForce false;
+ systemd.services.sympa-task.serviceConfig.ProtectKernelTunables = lib.mkForce false;
+
+ systemd.services.wwsympa = {
+ wantedBy = [ "multi-user.target" ];
+ after = [ "sympa.service" ];
+ serviceConfig = {
+ Slice = "mail-sympa.slice";
+ Type = "forking";
+ PIDFile = "/run/sympa/wwsympa.pid";
+ Restart = "always";
+ ExecStart = ''${pkgs.spawn_fcgi}/bin/spawn-fcgi \
+ -u sympa \
+ -g sympa \
+ -U wwwrun \
+ -M 0600 \
+ -F 2 \
+ -P /run/sympa/wwsympa.pid \
+ -s /run/sympa/wwsympa.socket \
+ -- ${pkgs.sympa}/lib/sympa/cgi/wwsympa.fcgi
+ '';
+ StateDirectory = "sympa";
+ ProtectHome = true;
+ ProtectSystem = "full";
+ ProtectControlGroups = true;
+ };
+ };
+
+ services.postfix = {
+ mapFiles = {
+ # Update relay list when changing one of those
+ sympa_virtual = pkgs.writeText "virtual.sympa" ''
+ sympa-request@${domain} postmaster@immae.eu
+ sympa-owner@${domain} postmaster@immae.eu
+ '';
+ sympa_transport = pkgs.writeText "transport.sympa" ''
+ ${domain} error:User unknown in recipient table
+ sympa@${domain} sympa:sympa@${domain}
+ listmaster@${domain} sympa:listmaster@${domain}
+ bounce@${domain} sympabounce:sympa@${domain}
+ abuse-feedback-report@${domain} sympabounce:sympa@${domain}
+ '';
+ };
+ config = {
+ transport_maps = lib.mkAfter [
+ "hash:/etc/postfix/sympa_transport"
+ "hash:/var/lib/sympa/sympa_transport"
+ ];
+ virtual_alias_maps = lib.mkAfter [
+ "hash:/etc/postfix/sympa_virtual"
+ ];
+ virtual_mailbox_maps = lib.mkAfter [
+ "hash:/etc/postfix/sympa_transport"
+ "hash:/var/lib/sympa/sympa_transport"
+ "hash:/etc/postfix/sympa_virtual"
+ ];
+ };
+ masterConfig = {
+ sympa = {
+ type = "unix";
+ privileged = true;
+ chroot = false;
+ command = "pipe";
+ args = [
+ "flags=hqRu"
+ "user=sympa"
+ "argv=${pkgs.sympa}/libexec/queue"
+ "\${nexthop}"
+ ];
+ };
+ sympabounce = {
+ type = "unix";
+ privileged = true;
+ chroot = false;
+ command = "pipe";
+ args = [
+ "flags=hqRu"
+ "user=sympa"
+ "argv=${pkgs.sympa}/libexec/bouncequeue"
+ "\${nexthop}"
+ ];
+ };
+ };
+ };
+ services.sympa = {
+ enable = true;
+ listMasters = sympaConfig.listmasters;
+ mainDomain = domain;
+ domains = {
+ "${domain}" = {
+ webHost = "mail.immae.eu";
+ webLocation = "/sympa";
+ };
+ };
+
+ database = {
+ type = "PostgreSQL";
+ user = sympaConfig.postgresql.user;
+ host = sympaConfig.postgresql.socket;
+ name = sympaConfig.postgresql.database;
+ passwordFile = config.secrets.fullPaths."sympa/db_password";
+ createLocally = false;
+ };
+ settings = {
+ sendmail = "/run/wrappers/bin/sendmail";
+ log_smtp = "on";
+ sendmail_aliases = "/var/lib/sympa/sympa_transport";
+ aliases_program = "${pkgs.postfix}/bin/postmap";
+ create_list = "listmaster";
+ };
+ settingsFile = {
+ "virtual.sympa".enable = false;
+ "transport.sympa".enable = false;
+ } // lib.mapAttrs' (n: v: lib.nameValuePair
+ "etc/${domain}/data_sources/${n}.incl"
+ { source = config.secrets.fullPaths."sympa/data_sources/${n}.incl"; }) sympaConfig.data_sources
+ // lib.mapAttrs' (n: v: lib.nameValuePair
+ "etc/${domain}/scenari/${n}"
+ { source = config.secrets.fullPaths."sympa/scenari/${n}"; }) sympaConfig.scenari;
+ web = {
+ server = "none";
+ };
+
+ mta = {
+ type = "none";
+ };
+ };
+ };
+}
diff --git a/systems/eldiron/monitoring.nix b/systems/eldiron/monitoring.nix
new file mode 100644
index 0000000..2aa7f8f
--- /dev/null
+++ b/systems/eldiron/monitoring.nix
@@ -0,0 +1,51 @@
+{ config, pkgs, lib, name, monitoring, ... }:
+let
+ hostFQDN = config.hostEnv.fqdn;
+ emailCheck = monitoring.lib.emailCheck config.myEnv.monitoring.email_check;
+in
+{
+ config.myServices.monitoring.activatedPlugins = [ "memory" "command" "bandwidth" "emails" "mdadm" "postfix" "postgresql" "zfs" "notify-secondary"];
+ config.myServices.monitoring.pluginsArgs.postgresql.package = config.myServices.databases.postgresql.package;
+ config.myServices.monitoring.objects = lib.mkMerge [
+ (monitoring.lib.objectsCommon {
+ inherit hostFQDN;
+ hostName = name;
+ master = false;
+ processWarn = "550"; processAlert = "650";
+ loadWarn = "1.0"; loadAlert = "1.2";
+ interface = builtins.head (builtins.attrNames config.networking.interfaces);
+ })
+
+ {
+ service = [
+ {
+ service_description = "No mdadm array is degraded";
+ use = "local-service";
+ check_command = ["check_mdadm"];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ {
+ service_description = "Postgresql replication for backup-2 is up to date";
+ use = "local-service";
+ check_command = ["check_postgresql_replication" "backup-2" "/run/postgresql" "5432"];
+ __passive_servicegroups = "webstatus-databases";
+ }
+ {
+ service_description = "No ZFS pool is degraded";
+ use = "local-service";
+ check_command = ["check_zfs"];
+ __passive_servicegroups = "webstatus-resources";
+ }
+ {
+ service_description = "mailq is empty";
+ use = "local-service";
+ check_command = ["check_mailq"];
+ __passive_servicegroups = "webstatus-email";
+ }
+ (emailCheck "eldiron" hostFQDN // {
+ __passive_servicegroups = "webstatus-email";
+ })
+ ];
+ }
+ ];
+}
diff --git a/systems/eldiron/mpd.nix b/systems/eldiron/mpd.nix
new file mode 100644
index 0000000..640b001
--- /dev/null
+++ b/systems/eldiron/mpd.nix
@@ -0,0 +1,60 @@
+{ lib, pkgs, config, ... }:
+{
+ options.myServices.mpd.enable = lib.mkEnableOption "enable MPD";
+ config = lib.mkIf config.myServices.mpd.enable {
+ secrets.keys = {
+ "mpd" = {
+ permissions = "0400";
+ text = config.myEnv.mpd.password;
+ };
+ "mpd-config" = {
+ permissions = "0400";
+ user = "mpd";
+ group = "mpd";
+ text = ''
+ password "${config.myEnv.mpd.password}@read,add,control,admin"
+ '';
+ };
+ };
+ networking.firewall.allowedTCPPorts = [ 6600 ];
+ users.users.mpd.extraGroups = [ "wwwrun" "keys" ];
+ systemd.services.mpd.serviceConfig.RuntimeDirectory = "mpd";
+ services.filesWatcher.mpd = {
+ restart = true;
+ paths = [ config.secrets.fullPaths."mpd-config" ];
+ };
+
+ services.mpd = {
+ enable = true;
+ network.listenAddress = "any";
+ musicDirectory = config.myEnv.mpd.folder;
+ extraConfig = ''
+ include "${config.secrets.fullPaths."mpd-config"}"
+ audio_output {
+ type "null"
+ name "No Output"
+ mixer_type "none"
+ }
+ audio_output {
+ type "httpd"
+ name "OGG"
+ encoder "vorbis"
+ bind_to_address "/run/mpd/ogg.sock"
+ quality "5.0"
+ format "44100:16:1"
+ }
+ audio_output {
+ type "httpd"
+ name "MP3"
+ encoder "lame"
+ bind_to_address "/run/mpd/mp3.sock"
+ quality "5.0"
+ format "44100:16:1"
+ }
+
+
+ '';
+ };
+ };
+}
+
diff --git a/systems/eldiron/pub/default.nix b/systems/eldiron/pub/default.nix
new file mode 100644
index 0000000..ca8122a
--- /dev/null
+++ b/systems/eldiron/pub/default.nix
@@ -0,0 +1,100 @@
+{ lib, pkgs, config, ... }:
+let
+ restrict = pkgs.runCommand "restrict" {
+ file = ./restrict;
+ buildInputs = [ pkgs.makeWrapper ];
+ } ''
+ mkdir -p $out/bin
+ cp $file $out/bin/restrict
+ chmod a+x $out/bin/restrict
+ patchShebangs $out/bin/restrict
+ wrapProgram $out/bin/restrict \
+ --prefix PATH : ${lib.makeBinPath [ pkgs.bubblewrap pkgs.rrsync ]} \
+ --set TMUX_RESTRICT ${./tmux.restrict.conf}
+ '';
+in
+{
+ options = {
+ myServices.pub.enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = ''
+ Whether to enable pub user.
+ '';
+ };
+ myServices.pub.usersProfiles = lib.mkOption {
+ type = lib.types.attrsOf (lib.types.listOf lib.types.package);
+ default = {};
+ description = ''
+ specific user profile
+ '';
+ };
+ myServices.pub.restrictCommand = lib.mkOption {
+ type = lib.types.path;
+ readOnly = true;
+ default = "${restrict}/bin/restrict";
+ description = ''
+ path to the restrict shell
+ '';
+ };
+ };
+
+ config = lib.mkIf config.myServices.pub.enable {
+ myServices.dns.zones."immae.eu".subdomains.pub =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.vm-like = {
+ file.datetime = "2022-08-22T01:00:00";
+ service = {
+ name = "Comptes shell";
+ description = "Compte shell cloisonné";
+ logo = "https://www.openssh.com/favicon.ico";
+ website = "pub.immae.eu";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Openssh";
+ website = "https://www.openssh.com/";
+ license.url = "https://github.com/openssh/openssh-portable/blob/master/LICENCE";
+ license.name = "BSD Licence";
+ version = pkgs.openssh.version;
+ source.url = "https://github.com/openssh/openssh-portable";
+ };
+ };
+ myServices.ssh.modules.pub = {
+ snippet = builtins.readFile ./ldap_pub.sh;
+ dependencies = [ pkgs.coreutils ];
+ vars.ldap_forward_group = "cn=forward,cn=pub,ou=services,dc=immae,dc=eu";
+ vars.ldap_pub_group = "cn=restrict,cn=pub,ou=services,dc=immae,dc=eu";
+ vars.echo_command = "${pkgs.coreutils}/bin/echo";
+ vars.restrict_command = "${restrict}/bin/restrict";
+ };
+
+ system.extraSystemBuilderCmds = let
+ toPath = u: paths: pkgs.buildEnv {
+ name = "${u}-profile";
+ inherit paths;
+ };
+ in ''
+ mkdir -p $out/pub
+ ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (u: m: "ln -s ${toPath u m} $out/pub/${u}") config.myServices.pub.usersProfiles)}
+ '';
+ users.users.pub = let
+ in {
+ createHome = true;
+ description = "Restricted shell user";
+ home = "/var/lib/pub";
+ uid = config.myEnv.users.pub.uid;
+ isNormalUser = true;
+ group = "nogroup";
+ useDefaultShell = true;
+ packages = [
+ pkgs.tmux
+ ];
+ };
+ };
+}
diff --git a/systems/eldiron/pub/ldap_pub.sh b/systems/eldiron/pub/ldap_pub.sh
new file mode 100644
index 0000000..9f03ffe
--- /dev/null
+++ b/systems/eldiron/pub/ldap_pub.sh
@@ -0,0 +1,38 @@
+### This snippet is not standalone and must be integrated in the global ldap_authorized_keys.sh
+LDAP_PUB_RESTRICT_MEMBER="@pub_ldap_pub_group@"
+LDAP_PUB_FORWARD_MEMBER="@pub_ldap_forward_group@"
+ECHO="@pub_echo_command@"
+
+if [[ $user == pub ]]; then
+ allowed_logins=$(LDAP_BASE=$USER_LDAP_BASE \
+ ldap_search '(memberOf='$LDAP_PUB_RESTRICT_MEMBER')' '' \
+ | grep ^dn \
+ | sed -e "s/^dn: uid=\([^,]*\),.*$USER_LDAP_BASE$/'\1'/" \
+ | paste -sd,)
+
+ allowed_forwards=$(LDAP_BASE=$USER_LDAP_BASE \
+ ldap_search '(memberOf='$LDAP_PUB_FORWARD_MEMBER')' '' \
+ | grep ^dn \
+ | sed -e "s/^dn: uid=\([^,]*\),.*$USER_LDAP_BASE$/'\1'/" \
+ | paste -sd,)
+
+ psql_search "SELECT login, key FROM ldap_users_ssh_keys WHERE realm = 'immae' AND 'pub' = ANY(usage) AND login IN ($allowed_logins);" | while IFS='|' read user key; do
+ if [ ! -z "$key" ]; then
+ if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
+ echo -n 'command="@pub_restrict_command@ '$user'" '
+ echo $key
+ fi
+ fi
+ done
+
+ psql_search "SELECT login, key FROM ldap_users_ssh_keys WHERE realm = 'immae' AND 'forward' = ANY(usage) AND login IN ($allowed_logins,$allowed_forwards);" | while IFS='|' read user key; do
+ if [ ! -z "$key" ]; then
+ if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
+ echo -n 'no-pty,no-X11-forwarding,command="'$ECHO' forward only" '
+ echo $key
+ fi
+ fi
+ done
+ exit 0
+fi
+
diff --git a/systems/eldiron/pub/restrict b/systems/eldiron/pub/restrict
new file mode 100644
index 0000000..698e394
--- /dev/null
+++ b/systems/eldiron/pub/restrict
@@ -0,0 +1,71 @@
+#!/usr/bin/env bash
+user="$1"
+rootuser="$HOME/$user/"
+mkdir -p $rootuser
+
+orig="$SSH_ORIGINAL_COMMAND"
+if [ -z "$orig" ]; then
+ orig="/bin/bash -l"
+fi
+if [ "${orig:0:7}" = "command" ]; then
+ orig="${orig:8}"
+fi
+
+case "$orig" in
+rsync*)
+ rrsync $HOME/$user/
+ ;;
+*)
+ nix_store_paths() {
+ nix-store -q -R \
+ /run/current-system/sw \
+ /etc/profiles/per-user/pub \
+ /etc/ssl/certs/ca-bundle.crt \
+ | while read i; do
+ printf '%s--ro-bind\0'$i'\0'$i'\0' ''
+ done
+ if [ -e "/run/current-system/pub/$user" ]; then
+ nix-store -q -R "/run/current-system/pub/$user" \
+ | while read i; do
+ printf '%s--ro-bind\0'$i'\0'$i'\0' ''
+ done
+ printf '%s--ro-bind\0/run/current-system/pub/'$user'/bin\0/bin-pub-'$user'\0' ''
+ fi
+ }
+
+ set -euo pipefail
+ (exec -c bwrap --ro-bind /usr /usr \
+ --args 10 \
+ --dir /tmp \
+ --dir /var \
+ --symlink ../tmp var/tmp \
+ --proc /proc \
+ --dev /dev \
+ --ro-bind /etc/resolv.conf /etc/resolv.conf \
+ --ro-bind /etc/zoneinfo /etc/zoneinfo \
+ --ro-bind /etc/ssl /etc/ssl \
+ --ro-bind /etc/static/ssl/certs /etc/static/ssl/certs \
+ --ro-bind /run/current-system/sw/lib/locale/locale-archive /etc/locale-archive \
+ --ro-bind /run/current-system/sw/bin /bin \
+ --ro-bind /etc/profiles/per-user/pub/bin /bin-pub \
+ --bind /var/lib/pub/$user /var/lib/pub \
+ --dir /var/lib/commons \
+ --ro-bind $TMUX_RESTRICT /var/lib/commons/tmux.restrict.conf \
+ --chdir /var/lib/pub \
+ --unshare-all \
+ --share-net \
+ --dir /run/user/$(id -u) \
+ --setenv TERM "$TERM" \
+ --setenv LOCALE_ARCHIVE "/etc/locale-archive" \
+ --setenv XDG_RUNTIME_DIR "/run/user/`id -u`" \
+ --setenv PS1 "$user@pub $ " \
+ --setenv PATH "/bin-pub-$user:/bin:/bin-pub" \
+ --setenv HOME "/var/lib/pub" \
+ --file 11 /etc/passwd \
+ --file 12 /etc/group \
+ -- $orig) \
+ 10< <(nix_store_paths | sort | uniq) \
+ 11< <(getent passwd $UID 65534) \
+ 12< <(getent group $(id -g) 65534)
+ ;;
+esac
diff --git a/systems/eldiron/pub/tmux.restrict.conf b/systems/eldiron/pub/tmux.restrict.conf
new file mode 100644
index 0000000..5aefd1c
--- /dev/null
+++ b/systems/eldiron/pub/tmux.restrict.conf
@@ -0,0 +1,43 @@
+# Pour les nostalgiques de screen
+# comme les raccourcis ne sont pas les mêmes, j'évite
+set -g prefix C-a
+unbind-key C-b
+
+unbind-key -a
+bind-key -n C-h list-keys
+bind-key C-d detach
+bind-key & confirm-before -p "kill-window #W? (y/n)" kill-window
+
+# même hack que sur screen lorsqu'on veut profiter du scroll du terminal
+# (xterm ...)
+set -g terminal-overrides 'xterm*:smcup@:rmcup@'
+
+#Pour les ctrl+arrow
+set-option -g xterm-keys on
+
+# c'est un minimum (defaut 2000)
+set-option -g history-limit 10000
+
+# lorsque j'ai encore un tmux ailleurs seule
+# sa fenetre active réduit la taille de ma fenetre locale
+setw -g aggressive-resize on
+
+# Pour etre alerté sur un changement dans une autre fenêtre
+setw -g monitor-activity on
+#set -g visual-activity on
+#set -g visual-bell on
+
+set -g base-index 1
+
+# repercuter le contenu de la fenetre dans la barre de titre
+# reference des string : man tmux (status-left)
+set -g set-titles on
+set -g set-titles-string '#H #W #T' # host window command
+
+#Dans les valeurs par defaut deja, avec le ssh-agent
+set -g update-environment "DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY PATH"
+
+set -g status off
+set -g status-left ''
+set -g status-right ''
+
diff --git a/systems/eldiron/tasks/default.nix b/systems/eldiron/tasks/default.nix
new file mode 100644
index 0000000..0772a5f
--- /dev/null
+++ b/systems/eldiron/tasks/default.nix
@@ -0,0 +1,384 @@
+{ lib, pkgs, config, taskwarrior-web, ... }:
+let
+ cfg = config.myServices.tasks;
+ server_vardir = config.services.taskserver.dataDir;
+ fqdn = "task.immae.eu";
+ user = config.services.taskserver.user;
+ env = config.myEnv.tools.task;
+ group = config.services.taskserver.group;
+ taskserver-user-certs = pkgs.runCommand "taskserver-user-certs" {} ''
+ mkdir -p $out/bin
+ cat > $out/bin/taskserver-user-certs <<"EOF"
+ #!/usr/bin/env bash
+
+ user=$1
+
+ silent_certtool() {
+ if ! output="$("${pkgs.gnutls.bin}/bin/certtool" "$@" 2>&1)"; then
+ echo "GNUTLS certtool invocation failed with output:" >&2
+ echo "$output" >&2
+ fi
+ }
+
+ silent_certtool -p \
+ --bits 4096 \
+ --outfile "${server_vardir}/userkeys/$user.key.pem"
+ ${pkgs.gnused}/bin/sed -i -n -e '/^-----BEGIN RSA PRIVATE KEY-----$/,$p' "${server_vardir}/userkeys/$user.key.pem"
+
+ silent_certtool -c \
+ --template "${pkgs.writeText "taskserver-ca.template" ''
+ tls_www_client
+ encryption_key
+ signing_key
+ expiration_days = 3650
+ ''}" \
+ --load-ca-certificate "${server_vardir}/keys/ca.cert" \
+ --load-ca-privkey "${server_vardir}/keys/ca.key" \
+ --load-privkey "${server_vardir}/userkeys/$user.key.pem" \
+ --outfile "${server_vardir}/userkeys/$user.cert.pem"
+ EOF
+ chmod a+x $out/bin/taskserver-user-certs
+ patchShebangs $out/bin/taskserver-user-certs
+ '';
+ socketsDir = "/run/taskwarrior-web";
+ varDir = "/var/lib/taskwarrior-web";
+ taskwebPages = let
+ uidPages = lib.attrsets.zipAttrs (
+ lib.lists.flatten
+ (lib.attrsets.mapAttrsToList (k: c: map (v: { "${v}" = k; }) c.uid) env.taskwarrior-web)
+ );
+ pages = lib.attrsets.mapAttrs (uid: items:
+ if lib.lists.length items == 1 then
+ ''
+
+
+
+
+
+
+ ''
+ else
+ ''
+
+
+ To-do list disponibles
+
+
+
+
+
+ ${builtins.concatStringsSep "\n" (map (item: "${item} ") items)}
+
+
+
+ ''
+ ) uidPages;
+ in
+ pkgs.runCommand "taskwerver-pages" {} ''
+ mkdir -p $out/
+ ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (k: v: "cp ${pkgs.writeText k v} $out/${k}.html") pages)}
+ echo "Please login" > $out/index.html
+ '';
+in {
+ options.myServices.tasks = {
+ enable = lib.mkEnableOption "my tasks service";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.task =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.taskwarrior = {
+ file.datetime = "2022-08-22T00:00:00";
+ service = {
+ name = "Taskwarrior";
+ description = "Taskwarrior is Free and Open Source Software that manages your TODO list from the command line. Web interface and synchronization server";
+ website = "https://task.immae.eu/";
+ logo = "https://taskwarrior.org/favicon.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Taskwarrior";
+ website = "https://taskwarrior.org/";
+ license.url = "https://github.com/GothenburgBitFactory/taskwarrior/blob/develop/LICENSE";
+ license.name = "MIT License";
+ version = taskwarrior-web.version;
+ source.url = "https://taskwarrior.org/download/";
+ };
+ };
+ secrets.keys = {
+ "webapps/tools-taskwarrior-web" = {
+ user = "wwwrun";
+ group = "wwwrun";
+ permissions = "0400";
+ text = ''
+ SetEnv TASKD_HOST "${fqdn}:${toString config.services.taskserver.listenPort}"
+ SetEnv TASKD_VARDIR "${server_vardir}"
+ SetEnv TASKD_LDAP_HOST "ldaps://${env.ldap.host}"
+ SetEnv TASKD_LDAP_DN "${env.ldap.dn}"
+ SetEnv TASKD_LDAP_PASSWORD "${env.ldap.password}"
+ SetEnv TASKD_LDAP_BASE "${env.ldap.base}"
+ SetEnv TASKD_LDAP_FILTER "${env.ldap.filter}"
+ '';
+ };
+ } // (lib.mapAttrs' (name: userConfig: lib.nameValuePair "webapps/tools-taskwarrior/${name}-taskrc" (
+ let
+ credentials = "${userConfig.org}/${name}/${userConfig.key}";
+ dateFormat = userConfig.date;
+ cacert = pkgs.writeText "ca.cert" ''
+ -----BEGIN CERTIFICATE-----
+ MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
+ TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
+ cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
+ WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
+ ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
+ MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
+ h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
+ 0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
+ A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
+ T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
+ B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
+ B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
+ KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
+ OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
+ jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
+ qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
+ rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
+ HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
+ hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
+ ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
+ 3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
+ NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
+ ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
+ TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
+ jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
+ oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
+ 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
+ mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
+ emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
+ -----END CERTIFICATE-----'';
+ in {
+ inherit user group;
+ permissions = "0400";
+ text = ''
+ data.location=${varDir}/${name}
+ taskd.certificate=${server_vardir}/userkeys/taskwarrior-web.cert.pem
+ taskd.key=${server_vardir}/userkeys/taskwarrior-web.key.pem
+ # IdenTrust DST Root CA X3
+ # obtained here: https://letsencrypt.org/fr/certificates/
+ taskd.ca=${cacert}
+ taskd.server=${fqdn}:${toString config.services.taskserver.listenPort}
+ taskd.credentials=${credentials}
+ dateformat=${dateFormat}
+ '';
+ keyDependencies = [ cacert ];
+ })) env.taskwarrior-web);
+ security.acme.certs.eldiron.extraDomainNames = [ "task.immae.eu" ];
+ services.websites.env.tools.watchPaths = [ config.secrets.fullPaths."webapps/tools-taskwarrior-web" ];
+ services.websites.env.tools.modules = [ "proxy_fcgi" "sed" ];
+ services.websites.env.tools.vhostConfs.task = {
+ certName = "eldiron";
+ hosts = [ "task.immae.eu" ];
+ root = ./www;
+ extraConfig = [ ''
+
+ DirectoryIndex index.php
+ Use LDAPConnect
+ Require ldap-group cn=users,cn=taskwarrior,ou=services,dc=immae,dc=eu
+
+ SetHandler "proxy:unix:${config.services.phpfpm.pools.tasks.socket}|fcgi://localhost"
+
+ Include ${config.secrets.fullPaths."webapps/tools-taskwarrior-web"}
+
+ ''
+ ''
+
+ ProxyPass "unix://${socketsDir}/%{folderName}.sock|http://localhost-%{folderName}/"
+ ProxyPassReverse "unix://${socketsDir}/%{folderName}.sock|http://localhost-%{folderName}/"
+ ProxyPassReverse http://${fqdn}/
+
+ SetOutputFilter Sed
+ OutputSed "s|/ajax|/taskweb/%{folderName}/ajax|g"
+ OutputSed "s|\([^x]\)/tasks|\1/taskweb/%{folderName}/tasks|g"
+ OutputSed "s|\([^x]\)/projects|\1/taskweb/%{folderName}/projects|g"
+ OutputSed "s|http://${fqdn}/|/taskweb/%{folderName}/|g"
+ OutputSed "s|/img/relax.jpg|/taskweb/%{folderName}/img/relax.jpg|g"
+
+ ''
+ ''
+ Alias /taskweb ${taskwebPages}
+
+ DirectoryIndex index.html
+ Require all granted
+
+
+ RewriteEngine on
+ RewriteRule ^/taskweb$ /taskweb/ [R=301,L]
+ RedirectMatch permanent ^/taskweb/([^/]+)$ /taskweb/$1/
+
+ RewriteCond %{LA-U:REMOTE_USER} !=""
+ RewriteCond ${taskwebPages}/%{LA-U:REMOTE_USER}.html -f
+ RewriteRule ^/taskweb/?$ ${taskwebPages}/%{LA-U:REMOTE_USER}.html [L]
+
+
+ Use LDAPConnect
+ Require ldap-group cn=users,cn=taskwarrior,ou=services,dc=immae,dc=eu
+
+ ''
+ ] ++ (lib.attrsets.mapAttrsToList (k: v: ''
+
+ ${builtins.concatStringsSep "\n" (map (uid: "Require ldap-attribute uid=${uid}") v.uid)}
+
+ Use Taskwarrior ${k}
+
+ '') env.taskwarrior-web);
+ };
+ services.phpfpm.pools = {
+ tasks = {
+ user = user;
+ group = group;
+ settings = {
+ "listen.owner" = "wwwrun";
+ "listen.group" = "wwwrun";
+ "pm" = "dynamic";
+ "pm.max_children" = "60";
+ "pm.start_servers" = "2";
+ "pm.min_spare_servers" = "1";
+ "pm.max_spare_servers" = "10";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "TaskPHPSESSID";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Task:'";
+ "php_admin_value[open_basedir]" = "${./www}:/tmp:${server_vardir}:/etc/profiles/per-user/${user}/bin/";
+ };
+ phpEnv = {
+ PATH = "/etc/profiles/per-user/${user}/bin";
+ };
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [ all.redis ]);
+ };
+ };
+
+ security.acme.certs."task" = {
+ inherit group;
+ domain = fqdn;
+ postRun = ''
+ systemctl restart taskserver.service
+ '';
+ };
+
+ users.users.${user} = {
+ extraGroups = [ "keys" ];
+ packages = [ taskserver-user-certs ];
+ };
+
+ system.activationScripts.taskserver = {
+ deps = [ "users" ];
+ text = ''
+ install -m 0750 -o ${user} -g ${group} -d ${server_vardir}
+ install -m 0750 -o ${user} -g ${group} -d ${server_vardir}/userkeys
+ install -m 0750 -o ${user} -g ${group} -d ${server_vardir}/keys
+
+ if [ ! -e "${server_vardir}/keys/ca.key" ]; then
+ silent_certtool() {
+ if ! output="$("${pkgs.gnutls.bin}/bin/certtool" "$@" 2>&1)"; then
+ echo "GNUTLS certtool invocation failed with output:" >&2
+ echo "$output" >&2
+ fi
+ }
+
+ silent_certtool -p \
+ --bits 4096 \
+ --outfile "${server_vardir}/keys/ca.key"
+
+ silent_certtool -s \
+ --template "${pkgs.writeText "taskserver-ca.template" ''
+ cn = ${fqdn}
+ expiration_days = -1
+ cert_signing_key
+ ca
+ ''}" \
+ --load-privkey "${server_vardir}/keys/ca.key" \
+ --outfile "${server_vardir}/keys/ca.cert"
+
+ chown :${group} "${server_vardir}/keys/ca.key"
+ chmod g+r "${server_vardir}/keys/ca.key"
+ fi
+ '';
+ };
+
+ services.taskserver = {
+ enable = true;
+ allowedClientIDs = [ "^task [2-9]" "^Mirakel [1-9]" ];
+ inherit fqdn;
+ listenHost = "::";
+ pki.manual.ca.cert = "${server_vardir}/keys/ca.cert";
+ pki.manual.server.cert = "${config.security.acme.certs.task.directory}/fullchain.pem";
+ pki.manual.server.crl = "${config.security.acme.certs.task.directory}/invalid.crl";
+ pki.manual.server.key = "${config.security.acme.certs.task.directory}/key.pem";
+ requestLimit = 104857600;
+ };
+
+ system.activationScripts.taskwarrior-web = {
+ deps = [ "users" ];
+ text = ''
+ if [ ! -f ${server_vardir}/userkeys/taskwarrior-web.cert.pem ]; then
+ ${taskserver-user-certs}/bin/taskserver-user-certs taskwarrior-web
+ chown taskd:taskd ${server_vardir}/userkeys/taskwarrior-web.cert.pem ${server_vardir}/userkeys/taskwarrior-web.key.pem
+ fi
+ '';
+ };
+
+ systemd.slices.taskwarrior = {
+ description = "Taskwarrior slice";
+ };
+
+ systemd.services = (lib.attrsets.mapAttrs' (name: userConfig:
+ lib.attrsets.nameValuePair "taskwarrior-web-${name}" {
+ description = "Taskwarrior webapp for ${name}";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+ path = [ pkgs.taskwarrior ];
+
+ environment.TASKRC = config.secrets.fullPaths."webapps/tools-taskwarrior/${name}-taskrc";
+ environment.BUNDLE_PATH = "${taskwarrior-web.gems}/${taskwarrior-web.gems.ruby.gemPath}";
+ environment.BUNDLE_GEMFILE = "${taskwarrior-web.gems.confFiles}/Gemfile";
+ environment.LC_ALL = "fr_FR.UTF-8";
+
+ script = ''
+ exec ${taskwarrior-web.gems}/${taskwarrior-web.gems.ruby.gemPath}/bin/bundle exec thin start -R config.ru -S ${socketsDir}/${name}.sock
+ '';
+
+ serviceConfig = {
+ Slice = "taskwarrior.slice";
+ User = user;
+ PrivateTmp = true;
+ Restart = "always";
+ TimeoutSec = 60;
+ Type = "simple";
+ WorkingDirectory = taskwarrior-web;
+ StateDirectoryMode = 0750;
+ StateDirectory = assert lib.strings.hasPrefix "/var/lib/" varDir;
+ (lib.strings.removePrefix "/var/lib/" varDir + "/${name}");
+ RuntimeDirectoryPreserve = "yes";
+ RuntimeDirectory = assert lib.strings.hasPrefix "/run/" socketsDir;
+ lib.strings.removePrefix "/run/" socketsDir;
+ };
+
+ unitConfig.RequiresMountsFor = varDir;
+ }) env.taskwarrior-web) // {
+ taskserver-ca.postStart = ''
+ chown :${group} "${server_vardir}/keys/ca.key"
+ chmod g+r "${server_vardir}/keys/ca.key"
+ '';
+ taskserver-ca.serviceConfig.Slice = "taskwarrior.slice";
+ taskserver-init.serviceConfig.Slice = "taskwarrior.slice";
+ taskserver.serviceConfig.Slice = "taskwarrior.slice";
+ };
+
+ };
+}
diff --git a/systems/eldiron/tasks/www/index.php b/systems/eldiron/tasks/www/index.php
new file mode 100644
index 0000000..bde773d
--- /dev/null
+++ b/systems/eldiron/tasks/www/index.php
@@ -0,0 +1,168 @@
+ $value) {
+ if ($key !== "count") {
+ $entries[] = explode(":", $value);
+ }
+}
+
+if (isset($_GET["file"])) {
+ $basecert = $vardir . "/userkeys/" . $ldap_user;
+ if (!file_exists($basecert . ".cert.pem")) {
+ exec("taskserver-user-certs $ldap_user");
+ }
+ $certificate = file_get_contents($basecert . ".cert.pem");
+ $cert_key = file_get_contents($basecert . ".key.pem");
+
+ // IdenTrust DST Root CA X3
+ // obtained here: https://letsencrypt.org/fr/certificates/
+ $server_cert = "-----BEGIN CERTIFICATE-----
+MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
+TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
+cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
+WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
+ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
+MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
+h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
+0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
+A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
+T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
+B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
+B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
+KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
+OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
+jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
+qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
+rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
+hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
+ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
+3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
+NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
+ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
+TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
+jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
+oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
+4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
+mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
+emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
+-----END CERTIFICATE-----";
+
+ $file = $_GET["file"];
+ switch($file) {
+ case "ca.cert.pem":
+ $content = $server_cert;
+ $name = "ca.cert.pem";
+ $type = "application/x-x509-ca-cert";
+ break;
+ case "cert.pem":
+ $content = $certificate;
+ $name = $ldap_user . ".cert.pem";
+ $type = "application/x-x509-ca-cert";
+ break;
+ case "key.pem":
+ $content = $cert_key;
+ $name = $ldap_user . ".key.pem";
+ $type = "application/x-x509-ca-cert";
+ break;
+ case "mirakel";
+ foreach ($entries as $entry) {
+ list($org, $user, $key) = $entry;
+ if ($key == $_GET["key"]) { break; }
+ }
+ $name = $user . ".mirakel";
+ $type = "text/plain";
+ $content = "username: $user
+org: $org
+user key: $key
+server: $host
+client.cert:
+$certificate
+Client.key:
+$cert_key
+ca.cert:
+$server_cert
+";
+ break;
+ default:
+ die("invalid file name");
+ break;
+ }
+
+ header("Content-Type: $type");
+ header('Content-Disposition: attachment; filename="' . $name . '"');
+ header('Content-Transfer-Encoding: binary');
+ header('Accept-Ranges: bytes');
+ header('Cache-Control: private');
+ header('Pragma: private');
+ echo $content;
+ exit;
+}
+?>
+
+
+ Taskwarrior configuration
+
+
+
+For command line interface, download the files, put them near your Taskwarrior
+configuration files, and add that to your Taskwarrior configuration:
+
+taskd.certificate=/path/to/.cert.pem
+taskd.key=/path/to/.key.pem
+taskd.server=
+taskd.ca=/path/to/ca.cert.pem
+ 1) {
+ echo "# Chose one of them\n";
+ foreach($entries as $entry) {
+ list($org, $user, $key) = $entry;
+ echo "# taskd.credentials=$org/$user/$key\n";
+ }
+} else { ?>
+taskd.credentials=//
+
+
+For Mirakel, download and import the file:
+
+For Android Taskwarrior app, see instructions here .
+
+
+
diff --git a/systems/eldiron/vpn/default.nix b/systems/eldiron/vpn/default.nix
new file mode 100644
index 0000000..df56249
--- /dev/null
+++ b/systems/eldiron/vpn/default.nix
@@ -0,0 +1,92 @@
+{ config, pkgs, lib, ... }:
+let
+ cfg = config.myServices.vpn;
+in
+{
+ options.myServices = {
+ vpn.enable = lib.mkEnableOption "Enable vpn service";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.vpn = with config.myServices.dns.helpers;
+ ips servers.eldiron.ips.main // {
+ subdomains.gw.AAAA = [ "${config.myEnv.vpn.eldiron.prefix}:0:ffff:1" ];
+ # Fake address to designate the subnet
+ subdomains.sn.AAAA = [ "${config.myEnv.vpn.eldiron.prefix}::" ];
+ };
+ myServices.chatonsProperties.hostings.vpn = {
+ file.datetime = "2022-08-27T18:00:00";
+ hosting = {
+ name = "VPN";
+ description = "VPN";
+ website = "https://vpn.immae.eu";
+ logo = "https://tinc-vpn.org/favicon.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "FULL";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "tinc";
+ website = "https://tinc-vpn.org/";
+ license.url = "https://www.gnu.org/licenses/old-licenses/gpl-2.0.html";
+ license.name = "GNU General Public License v2.0";
+ version = pkgs.tinc.version;
+ source.url = "https://tinc-vpn.org/git/browse?p=tinc";
+ };
+ };
+ secrets.keys = {
+ "tinc/key.priv" = {
+ user = "root";
+ group = "root";
+ permissions = "0400";
+ text = config.myEnv.vpn.eldiron.privateKey;
+ };
+ "tinc/key.pub" = {
+ user = "root";
+ group = "root";
+ permissions = "0400";
+ text = config.myEnv.vpn.eldiron.publicKey;
+ };
+ };
+ networking.firewall.allowedTCPPorts = [ 655 1194 ];
+ system.activationScripts.tinc = let
+ configFiles = pkgs.runCommand "tinc-files" {
+ mainInterface = "eth0";
+ hostName = "ImmaeEu";
+ network = "Immae";
+ keyFile = config.secrets.fullPaths."tinc/key.priv";
+ } ''
+ mkdir -p $out
+ for i in ${./tinc}/*; do
+ substituteAll $i $out/$(basename $i)
+ done
+ '';
+ in ''
+ install -m750 -o root -g root -d /var/lib/tinc/ /var/lib/tinc/Immae
+ install -m700 -o root -g root -t /var/lib/tinc/Immae ${configFiles}/{host-*,tinc-*}
+ install -m400 -o root -g root -t /var/lib/tinc/Immae ${configFiles}/tinc.conf
+ if [ ! -d /var/lib/tinc/Immae/hosts ]; then
+ ${pkgs.git}/bin/git clone -b master https://git.immae.eu/perso/Immae/Config/tinc/hosts /var/lib/tinc/Immae/hosts
+ fi
+ '';
+
+ systemd.slices.tinc = {
+ description = "Tinc slice";
+ };
+
+ systemd.services.tinc-Immae = {
+ description = "Tinc Daemon - Immae";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+ path = [ pkgs.getent pkgs.tinc pkgs.bashInteractive pkgs.iproute pkgs.gnused pkgs.gawk pkgs.git pkgs.glibc ];
+ serviceConfig = {
+ Slice = "tinc.slice";
+ Type = "simple";
+ Restart = "always";
+ RestartSec = "3";
+ ExecStart = "${pkgs.tinc}/bin/tincd -d1 -D -c /var/lib/tinc/Immae --pidfile /run/tinc.Immae.pid";
+ };
+ };
+ };
+}
diff --git a/systems/eldiron/vpn/tinc/host-down b/systems/eldiron/vpn/tinc/host-down
new file mode 100755
index 0000000..1e79bd3
--- /dev/null
+++ b/systems/eldiron/vpn/tinc/host-down
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+SUBDOMAIN=$(echo "$NODE" | sed -e "s/\([A-Z][a-z0-9]*\)/\L\1 /g;" | awk '{ for (i=NF; i>1; i--) printf("%s.",$i); print $1; }')
+NODEIPS=`getent hosts ${SUBDOMAIN}.immae.eu | cut -d' ' -f1 | tr "\\n" ' '`
+for NODEIP in $NODEIPS; do
+ ip neigh del proxy $NODEIP dev @mainInterface@
+done
diff --git a/systems/eldiron/vpn/tinc/host-up b/systems/eldiron/vpn/tinc/host-up
new file mode 100755
index 0000000..2f7cee2
--- /dev/null
+++ b/systems/eldiron/vpn/tinc/host-up
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+SUBDOMAIN=$(echo "$NODE" | sed -e "s/\([A-Z][a-z0-9]*\)/\L\1 /g;" | awk '{ for (i=NF; i>1; i--) printf("%s.",$i); print $1; }')
+while [ -z "$NODEIPS" ]; do
+ NODEIPS=`getent hosts ${SUBDOMAIN}.immae.eu | cut -d' ' -f1 | tr "\\n" ' '`
+ sleep 5
+done
+for NODEIP in $NODEIPS; do
+ ip neigh add proxy $NODEIP dev @mainInterface@
+done
+(cd /var/lib/tinc/@network@/hosts && git pull -q origin master) || true
diff --git a/systems/eldiron/vpn/tinc/tinc-down b/systems/eldiron/vpn/tinc/tinc-down
new file mode 100755
index 0000000..1cc45c0
--- /dev/null
+++ b/systems/eldiron/vpn/tinc/tinc-down
@@ -0,0 +1,12 @@
+#!/bin/sh
+# This file closes down the tap device.
+
+echo 0 > /proc/sys/net/ipv6/conf/@mainInterface@/proxy_ndp
+echo 0 > /proc/sys/net/ipv6/conf/all/forwarding
+
+GWIP=`getent hosts gw.vpn.immae.eu | head -n1 | cut -d' ' -f1`
+
+ip neigh del proxy $GWIP dev eth0
+
+ip -6 addr del $GWIP/96 dev $INTERFACE
+ip -6 link set $INTERFACE down
diff --git a/systems/eldiron/vpn/tinc/tinc-up b/systems/eldiron/vpn/tinc/tinc-up
new file mode 100755
index 0000000..26c1ec3
--- /dev/null
+++ b/systems/eldiron/vpn/tinc/tinc-up
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+echo 1 > /proc/sys/net/ipv6/conf/@mainInterface@/proxy_ndp
+echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
+
+SUBNET=`getent hosts sn.vpn.immae.eu | head -n1 | cut -d' ' -f1`
+GWIP=`getent hosts gw.vpn.immae.eu | head -n1 | cut -d' ' -f1`
+
+ip -6 link set $INTERFACE up mtu 1280 txqueuelen 1000
+
+ip -6 addr add $GWIP/96 dev $INTERFACE
+ip -6 route add $SUBNET/80 dev $INTERFACE
+
+ip neigh add proxy $GWIP dev @mainInterface@
diff --git a/systems/eldiron/vpn/tinc/tinc.conf b/systems/eldiron/vpn/tinc/tinc.conf
new file mode 100644
index 0000000..7a4f103
--- /dev/null
+++ b/systems/eldiron/vpn/tinc/tinc.conf
@@ -0,0 +1,11 @@
+BindToAddress = * 655
+BindToAddress = * 1194
+
+Name = @hostName@
+Interface = vpn6
+
+Mode = switch
+
+Device = /dev/net/tun
+GraphDumpFile = /var/lib/tinc/@network@/tinc_graph
+PrivateKeyFile = @keyFile@
diff --git a/systems/eldiron/websites/_www/googleb6d69446ff4ca3e5.html b/systems/eldiron/websites/_www/googleb6d69446ff4ca3e5.html
new file mode 100644
index 0000000..ff6dbf3
--- /dev/null
+++ b/systems/eldiron/websites/_www/googleb6d69446ff4ca3e5.html
@@ -0,0 +1 @@
+google-site-verification: googleb6d69446ff4ca3e5.html
\ No newline at end of file
diff --git a/systems/eldiron/websites/_www/index.htm b/systems/eldiron/websites/_www/index.htm
new file mode 100644
index 0000000..0274251
--- /dev/null
+++ b/systems/eldiron/websites/_www/index.htm
@@ -0,0 +1,9 @@
+
+
+
+ Hello World HTML
+
+
+ It works!
+
+
diff --git a/systems/eldiron/websites/_www/maintenance_immae.html b/systems/eldiron/websites/_www/maintenance_immae.html
new file mode 100644
index 0000000..90f265f
--- /dev/null
+++ b/systems/eldiron/websites/_www/maintenance_immae.html
@@ -0,0 +1,58 @@
+
+
+
+ Maintenance
+
+
+
+
+
+
+ Erreur serveur ou maintenance en cours !
+
+
Une mise à jour ou une opération de maintenance est en cours sur le site. Retentez dans quelques instants ou patientez, la page se rechargera automatiquement.
+
+
+
+
+ Server error or website in maintenance!
+
+
An update or a maintenance is on track on the website. Please try again in a few seconds or wait, the page will reload automatically.
+
+
+
+
diff --git a/systems/eldiron/websites/_www/nossl.html b/systems/eldiron/websites/_www/nossl.html
new file mode 100644
index 0000000..4401a80
--- /dev/null
+++ b/systems/eldiron/websites/_www/nossl.html
@@ -0,0 +1,11 @@
+
+
+
+ No SSL site
+
+
+ No SSL on this site
+ Use for wifi networks with login page that doesn't work well with
+ https.
+
+
diff --git a/systems/eldiron/websites/assets/default.nix b/systems/eldiron/websites/assets/default.nix
new file mode 100644
index 0000000..02a4952
--- /dev/null
+++ b/systems/eldiron/websites/assets/default.nix
@@ -0,0 +1,98 @@
+{ lib, pkgs, config, ... }:
+let
+ cfg = config.myServices.websites.tools.assets;
+ fetchFont = v: pkgs.runCommand "fetch-font" {
+ outputHashAlgo = "sha256";
+ outputHashMode = "recursive";
+ outputHash = v.sha256;
+ } ''
+ mkdir -p $out
+ ${pkgs.curl}/bin/curl -k --output $out/font.css -H "User-Agent: Firefox/100.0" "${v.url}"
+ cat $out/font.css | grep -o "https://[^ )]*" | while read url; do
+ filename=$(echo "$url" | sed -e "s@.*/@@g")
+ ${pkgs.curl}/bin/curl -k --output "$out/$filename" "$url"
+ sed -i -e "s@$url@./$filename@" "$out/font.css"
+ done
+ '';
+ fetchTgz = v: pkgs.runCommand "fetch-tgz" {
+ outputHashAlgo = "sha256";
+ outputHashMode = "recursive";
+ outputHash = v.sha256;
+ } ''
+ mkdir -p $out
+ cd $out
+ ${pkgs.curl}/bin/curl -L -k "${v.url}" | tar -xz --strip-components=${builtins.toString v.tgzRemoveComponents}
+ '';
+ fetchAsset = v:
+ if v.assetType == "googleFont"
+ then fetchFont v
+ else if v.assetType == "tgz"
+ then fetchTgz v
+ else pkgs.fetchurl { url = v.url; sha256 = v.sha256; };
+ assets_urls = lib.mapAttrs (k: fetchAsset) config.myEnv.tools.assets;
+ assets = pkgs.runCommand "assets" {} (''
+ mkdir -p $out
+ cp -a ${./static}/* $out/
+ '' + builtins.concatStringsSep "\n"
+ (lib.mapAttrsToList (k: v: ''
+ if [ -d "${v}" ]; then
+ mkdir -p "$out/$(dirname "${k}")"
+ cp -a "${v}" "$out/${k}"
+ chmod -R u+rwX "$out/${k}"
+ else
+ install -D -m644 -T "${v}" "$out/${k}"
+ fi
+ '') assets_urls));
+in
+{
+ options.myServices.websites.tools.assets = {
+ enable = lib.mkEnableOption "Enable assets website";
+ };
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.assets =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ services.websites.env.production.bindMounts."/run/imgproxy" = {};
+ security.acme.certs.eldiron.extraDomainNames = [ "assets.immae.eu" ];
+ services.websites.env.tools.vhostConfs.assets = {
+ certName = "eldiron";
+ hosts = [ "assets.immae.eu" ];
+ root = assets;
+ extraConfig = [
+ ''
+ Use Apaxy "${assets}" "title"
+
+ Options Indexes FollowSymlinks
+ AllowOverride None
+ Require all granted
+ Header always set Last-Modified "Tue, 01 Jan 2020 00:00:00 GMT"
+ Header always set Cache-Control "public, max-age=31536000, immutable"
+ Header always set Access-Control-Allow-Origin "*"
+ Header always set Access-Control-Expose-Headers "*"
+
+
+ MergeSlashes OFF
+
+ ProxyPass unix:///run/imgproxy/imgproxy.sock|http://assets.immae.eu
+ ProxyPassReverse unix:///run/imgproxy/imgproxy.sock|http://assets.immae.eu
+
+ ''
+ ];
+ };
+ systemd.services.imgproxy = {
+ description = "IMG proxy";
+ wantedBy = [ "multi-user.target" ];
+
+ environment = {
+ IMGPROXY_NETWORK = "unix";
+ IMGPROXY_BIND = "%t/imgproxy/imgproxy.sock";
+ };
+ serviceConfig = {
+ User = "wwwrun";
+ Group = "wwwrun";
+ RuntimeDirectory = "imgproxy";
+ ExecStart = "${pkgs.imgproxy}/bin/imgproxy";
+ };
+ };
+ };
+}
diff --git a/systems/eldiron/websites/assets/static/favicon.png b/systems/eldiron/websites/assets/static/favicon.png
new file mode 100644
index 0000000..1caf5a4
Binary files /dev/null and b/systems/eldiron/websites/assets/static/favicon.png differ
diff --git a/systems/eldiron/websites/assets/static/logger.png b/systems/eldiron/websites/assets/static/logger.png
new file mode 100644
index 0000000..d9579fb
Binary files /dev/null and b/systems/eldiron/websites/assets/static/logger.png differ
diff --git a/systems/eldiron/websites/assets/static/logger.txt b/systems/eldiron/websites/assets/static/logger.txt
new file mode 100644
index 0000000..50dccc6
--- /dev/null
+++ b/systems/eldiron/websites/assets/static/logger.txt
@@ -0,0 +1,3 @@
+Downloaded from https://commons.wikimedia.org/wiki/File:Ghost2.svg
+Licence Creative Commons Attribution-Share Alike 4.0 International
+https://creativecommons.org/licenses/by-sa/4.0/deed.en
diff --git a/systems/eldiron/websites/assets/static/logo.jpg b/systems/eldiron/websites/assets/static/logo.jpg
new file mode 100644
index 0000000..a89172d
Binary files /dev/null and b/systems/eldiron/websites/assets/static/logo.jpg differ
diff --git a/systems/eldiron/websites/assets/static/logo.txt b/systems/eldiron/websites/assets/static/logo.txt
new file mode 100644
index 0000000..327e62a
--- /dev/null
+++ b/systems/eldiron/websites/assets/static/logo.txt
@@ -0,0 +1,7 @@
+size: 2
+dpi: 72
+background: white
+plot_type: fullcolor
+center: "whole"
+whitespace: 0.5
+format: jpg
diff --git a/systems/eldiron/websites/assets/static/logo_big.jpg b/systems/eldiron/websites/assets/static/logo_big.jpg
new file mode 100644
index 0000000..45448f2
Binary files /dev/null and b/systems/eldiron/websites/assets/static/logo_big.jpg differ
diff --git a/systems/eldiron/websites/assets/static/logo_big.txt b/systems/eldiron/websites/assets/static/logo_big.txt
new file mode 100644
index 0000000..ce92c09
--- /dev/null
+++ b/systems/eldiron/websites/assets/static/logo_big.txt
@@ -0,0 +1,7 @@
+size: 4
+dpi: 72
+background: white
+plot_type: fullcolor
+center: "whole"
+whitespace: 0.5
+format: jpg
diff --git a/systems/eldiron/websites/assets/static/logo_center.jpg b/systems/eldiron/websites/assets/static/logo_center.jpg
new file mode 100644
index 0000000..6b177e0
Binary files /dev/null and b/systems/eldiron/websites/assets/static/logo_center.jpg differ
diff --git a/systems/eldiron/websites/assets/static/logo_center.txt b/systems/eldiron/websites/assets/static/logo_center.txt
new file mode 100644
index 0000000..60a8f1c
--- /dev/null
+++ b/systems/eldiron/websites/assets/static/logo_center.txt
@@ -0,0 +1,8 @@
+size: 4
+dpi: 72
+background: white
+plot_type: fullcolor
+center: "center"
+whitespace: 0.5
+format: jpg
+
diff --git a/systems/eldiron/websites/assets/static/monitoring.png b/systems/eldiron/websites/assets/static/monitoring.png
new file mode 100644
index 0000000..0024fee
Binary files /dev/null and b/systems/eldiron/websites/assets/static/monitoring.png differ
diff --git a/systems/eldiron/websites/assets/static/monitoring.txt b/systems/eldiron/websites/assets/static/monitoring.txt
new file mode 100644
index 0000000..9f3e13a
--- /dev/null
+++ b/systems/eldiron/websites/assets/static/monitoring.txt
@@ -0,0 +1,3 @@
+Downloaded from https://commons.wikimedia.org/wiki/File:Magnifying_Glass2.svg
+Licence Creative Commons CC0 1.0 Universal Public Domain Dedication
+https://creativecommons.org/publicdomain/zero/1.0/deed.en
diff --git a/systems/eldiron/websites/assets/static/photos/ct.jpg b/systems/eldiron/websites/assets/static/photos/ct.jpg
new file mode 100644
index 0000000..ab7876b
Binary files /dev/null and b/systems/eldiron/websites/assets/static/photos/ct.jpg differ
diff --git a/systems/eldiron/websites/assets/static/photos/fretlink.jpg b/systems/eldiron/websites/assets/static/photos/fretlink.jpg
new file mode 100644
index 0000000..c941e1d
Binary files /dev/null and b/systems/eldiron/websites/assets/static/photos/fretlink.jpg differ
diff --git a/systems/eldiron/websites/assets/static/photos/raton.jpg b/systems/eldiron/websites/assets/static/photos/raton.jpg
new file mode 100644
index 0000000..a859e1c
Binary files /dev/null and b/systems/eldiron/websites/assets/static/photos/raton.jpg differ
diff --git a/systems/eldiron/websites/cloud/add-htaccess.php b/systems/eldiron/websites/cloud/add-htaccess.php
new file mode 100644
index 0000000..e11d943
--- /dev/null
+++ b/systems/eldiron/websites/cloud/add-htaccess.php
@@ -0,0 +1,70 @@
+a = $a;
+ }
+ public function getValue($val, $default) {
+ if(isset($this->a[$val])) {
+ return $this->a[$val];
+ } else {
+ return $default;
+ }
+ }
+ }
+}
+
+namespace {
+ class NServer {
+ private $argv;
+ public function __construct($argv) {
+ $this->argv = $argv;
+ }
+ public function getSystemConfig() {
+ return new OC\SystemConfig(Array(
+ 'htaccess.RewriteBase' => $this->argv[1],
+ ));
+ }
+
+ public function get($c) {
+ return new $c();
+ }
+ public function getL10N() {
+ return new \OCP\IL10N();
+ }
+ public function query($c) {
+ return new $c();
+ }
+ public function getSecureRandom() {
+ return new \OCP\Security\ISecureRandom();
+ }
+ }
+
+ class OC {
+ public static Bool $CLI = false;
+ public static $SERVERROOT = '.';
+ public static $WEBROOT;
+ public static \NServer $server;
+ }
+
+ \OC::$server = new NServer($argv);
+ \OC::$WEBROOT = $argv[1];
+
+ require "./lib/private/Setup.php";
+ $result = \OC\Setup::updateHtaccess();
+ if ($result) {
+ echo "done";
+ };
+}
diff --git a/systems/eldiron/websites/cloud/default.nix b/systems/eldiron/websites/cloud/default.nix
new file mode 100644
index 0000000..e1df883
--- /dev/null
+++ b/systems/eldiron/websites/cloud/default.nix
@@ -0,0 +1,151 @@
+{ lib, pkgs, config, ... }:
+let
+ ncfg = config.myServices.tools.cloud.farm.instances.immae;
+ env = config.myEnv.tools.nextcloud;
+ cfg = config.myServices.websites.tools.cloud;
+in {
+ options.myServices.websites.tools.cloud = {
+ enable = lib.mkEnableOption "enable cloud website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.cloud =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.hostings.nextcloud = {
+ file.datetime = "2022-08-21T19:50:00";
+ hosting = {
+ name = "Nextcloud";
+ description = "The self-hosted productivity platform that keeps you in control";
+ website = "https://cloud.immae.eu/";
+ logo = "https://cloud.immae.eu/core/img/favicon.ico";
+ type = "INSTANCE";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ };
+ myServices.chatonsProperties.services.nextcloud = {
+ file.datetime = "2022-08-21T19:50:00";
+ service = {
+ name = "Nextcloud";
+ description = "The self-hosted productivity platform that keeps you in control";
+ website = "https://cloud.immae.eu/";
+ logo = "https://cloud.immae.eu/core/img/favicon.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ guide.user = "https://www.immae.eu/docs/nextcloud.html";
+ };
+ software = {
+ name = "Nextcloud";
+ website = "https://nextcloud.com/";
+ license.url = "https://github.com/nextcloud/server/blob/master/COPYING";
+ license.name = "GNU Affero General Public License v3.0";
+ version = ncfg.rootDir.version;
+ source.url = "https://github.com/nextcloud/server";
+ modules = map (a: a.appName) ncfg.rootDir.apps;
+ };
+ };
+
+ myServices.tools.cloud.farm.instances.immae = {
+ nextcloud = pkgs.webapps-nextcloud_27.override ({
+ # Allow /index.php redirects
+ postInstall = ''
+ cd $out
+ ${pkgs.php81}/bin/php ${./add-htaccess.php} /
+ '';
+ });
+ apps = a: [
+ a.side_menu a.audioplayer a.bookmarks a.calendar a.carnet a.contacts
+ a.cookbook a.deck a.extract a.files_markdown a.files_mindmap
+ a.gpxpod a.keeweb a.maps a.metadata a.music
+ a.notes a.passman a.polls a.spreed a.tasks
+ ];
+ varDir = "/var/lib/nextcloud";
+ secretsPath = "webapps/tools-nextcloud";
+ phpPackage = pkgs.php81;
+ # Be careful when editing that: config from here takes
+ # precedence over the regular one, but if a key got removed, it my
+ # still exist in the default config file
+ config = let
+ env = config.myEnv.tools.nextcloud;
+ in {
+ "dbtype" = "pgsql";
+ "dbname" = env.postgresql.database;
+ "dbhost" = env.postgresql.socket;
+ "dbport" = "";
+ "dbtableprefix" = "oc_";
+ "dbuser" = env.postgresql.user;
+ "dbpassword" = env.postgresql.password;
+
+ "instanceid" = env.instance_id;
+ "passwordsalt" = env.password_salt;
+ "secret" = env.secret;
+
+ "trusted_domains" = [ "cloud.immae.eu" ];
+ "overwrite.cli.url" = "https://cloud.immae.eu";
+
+ "lost_password_link" = "disabled";
+
+ "remember_login_cookie_lifetime" = 60*60*24*30;
+ "session_keepalive" = true;
+ "session_lifefime" = 60*60*24*30;
+
+ "maxZipInputSize" = 0;
+ "allowZipDownload" = true;
+
+ # set by Carnet
+ "has_rebuilt_cache" = true;
+
+ "memcache.distributed" = "\\OC\\Memcache\\Redis";
+ "memcache.locking" = "\\OC\\Memcache\\Redis";
+ "filelocking.enabled" = true;
+ "redis" = {
+ "host" = env.redis.socket;
+ "port" = 0;
+ "dbindex" = env.redis.db;
+ };
+
+ "ldapIgnoreNamingRules" = false;
+ "ldapProviderFactory" = "\\OCA\\User_LDAP\\LDAPProviderFactory";
+
+ "mail_smtpmode" = "sendmail";
+ "mail_smtphost" = "127.0.0.1";
+ "mail_smtpname" = "";
+ "mail_smtppassword" = "";
+ "mail_from_address" = "nextcloud";
+ "mail_smtpauth" = false;
+ "mail_domain" = "tools.immae.eu";
+ };
+ };
+ services.websites.env.tools.modules = [ "proxy_fcgi" ];
+
+ security.acme.certs.eldiron.extraDomainNames = [ "cloud.immae.eu" ];
+ services.websites.env.tools.vhostConfs.cloud = {
+ certName = "eldiron";
+ hosts = ["cloud.immae.eu" ];
+ root = ncfg.rootDir;
+ extraConfig = [
+ ncfg.vhost
+ ];
+ };
+
+ myServices.monitoring.fromMasterActivatedPlugins = [ "http" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "owncloud website is running on cloud.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "cloud.immae.eu" "/" "a safe home for all your data"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Nextcloud";
+ _webstatus_url = "https://cloud.immae.eu";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/websites/cloud/farm.nix b/systems/eldiron/websites/cloud/farm.nix
new file mode 100644
index 0000000..df24cba
--- /dev/null
+++ b/systems/eldiron/websites/cloud/farm.nix
@@ -0,0 +1,221 @@
+{ lib, pkgs, config, ... }:
+let
+ scfg = config.secrets.fullPaths;
+ cfg = config.myServices.tools.cloud.farm;
+ apacheUser = config.services.websites.env.production.user;
+ apacheGroup = config.services.websites.env.production.group;
+ additionalConfs = icfg: lib.attrsets.mapAttrs (n: v: pkgs.writeText "${n}.json" (builtins.toJSON v)) icfg.rootDir.otherConfig;
+ overrideConfig = icfg: pkgs.writeText "override.config.php" ''
+
+ AcceptPathInfo On
+ DirectoryIndex index.php
+ Options FollowSymlinks
+ Require all granted
+ AllowOverride all
+
+
+ Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
+
+
+ CGIPassAuth on
+ SetHandler "proxy:unix:${config.services.phpfpm.pools.${icfg.phpPoolName}.socket}|fcgi://localhost"
+
+
+
+ '';
+in
+{
+ options.myServices.tools.cloud.farm = {
+ instances = lib.mkOption {
+ description = "Instances names for the nextcloud Farm";
+ default = {};
+ type = lib.types.attrsOf (lib.types.submodule ({ name, config, ... }: {
+ options = {
+ nextcloud = lib.mkOption {
+ description = "Nextcloud version to use";
+ default = pkgs.webapps-nextcloud_27;
+ type = lib.types.package;
+ };
+ apps = lib.mkOption {
+ description = "Applications to use";
+ default = a: [];
+ #type = functionTo (listOf packages)
+ type = lib.types.unspecified;
+ };
+ config = lib.mkOption {
+ description = "Config keys";
+ default = {};
+ type = lib.types.attrsOf lib.types.unspecified;
+ };
+ secretsPath = lib.mkOption {
+ description = "Path in secrets to nextcloud config file";
+ default = "websites/${name}/nextcloud";
+ type = lib.types.str;
+ };
+ configOverride = lib.mkOption {
+ description = "Path to config override";
+ readOnly = true;
+ default = scfg."${config.secretsPath}";
+ type = lib.types.path;
+ };
+ phpPackage = lib.mkOption {
+ description = "PHP package to use";
+ default = pkgs.php81;
+ type = lib.types.package;
+ apply = v: (v.withExtensions({ enabled, all }: enabled ++ [ all.redis all.apcu all.opcache all.imagick all.sysvsem ])).override { extraConfig = ''
+ apc.enable_cli = 1
+ apc.enabled = 1
+ '';
+ };
+ };
+ rootDir = lib.mkOption {
+ description = "Instance root dirs";
+ readOnly = true;
+ type = lib.types.package;
+ default = config.nextcloud.withApps config.apps;
+ };
+ phpPoolName = lib.mkOption {
+ description = "Php pool name for the instance";
+ readOnly = true;
+ type = lib.types.str;
+ default = "nextcloud_farm_" + name;
+ };
+ phpBaseDir = lib.mkOption {
+ description = "Php basedir for the instance";
+ readOnly = true;
+ type = lib.types.str;
+ default = builtins.concatStringsSep ":" (
+ [ config.rootDir config.varDir ]
+ ++ config.rootDir.apps
+ ++ [ config.configOverride (overrideConfig config) ]
+ ++ (builtins.attrValues (additionalConfs config))
+ );
+ };
+ varDir = lib.mkOption {
+ description = "Instance var dir";
+ type = lib.types.path;
+ default = "/var/lib/nextcloud_farm/${name}";
+ };
+ vhost = lib.mkOption {
+ description = "Instance vhost config";
+ readOnly = true;
+ type = lib.types.str;
+ default = toVhost config;
+ };
+ };
+ }));
+ };
+ };
+
+ config = lib.mkIf (builtins.length (builtins.attrNames cfg.instances) > 0) {
+ systemd.services = lib.mapAttrs' (k: v: lib.nameValuePair ("phpfpm-" + v.phpPoolName) {
+ after = lib.mkAfter [ "postgresql.service" ];
+ wants = [ "postgresql.service" ];
+ serviceConfig.ExecStartPre =
+ "+${pkgs.writeScript "phpfpm-nextcloud-${k}-pre-start" ''
+ #!${pkgs.stdenv.shell}
+
+ install -m 0755 -o wwwrun -g wwwrun -d ${v.varDir} -d ${v.varDir}/config
+ ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (n: f:
+ "ln -sf ${f} ${v.varDir}/config/${n}.json"
+ ) (additionalConfs v))}
+ ln -sf ${overrideConfig v} ${v.varDir}/config/override.config.php
+ ''}";
+ }) cfg.instances;
+ services.phpfpm.pools = lib.mapAttrs' (k: v: lib.nameValuePair v.phpPoolName {
+ user = apacheUser;
+ group = apacheGroup;
+ settings = {
+ "listen.owner" = apacheUser;
+ "listen.group" = apacheGroup;
+ "pm" = "dynamic";
+ "pm.max_children" = "60";
+ "pm.start_servers" = "3";
+ "pm.min_spare_servers" = "3";
+ "pm.max_spare_servers" = "3";
+ "pm.process_idle_timeout" = "60";
+
+ "php_admin_value[output_buffering]" = "0";
+ "php_admin_value[max_execution_time]" = "1800";
+ "php_admin_value[zend_extension]" = "opcache";
+ "php_value[apc.enable_cli]" = "1";
+ "php_value[apc.enabled]" = "1";
+ #already enabled by default?
+ #"php_value[opcache.enable]" = "1";
+ "php_value[opcache.enable_cli]" = "1";
+ "php_value[opcache.interned_strings_buffer]" = "32";
+ "php_value[opcache.max_accelerated_files]" = "10000";
+ "php_value[opcache.memory_consumption]" = "128";
+ "php_value[opcache.save_comments]" = "1";
+ "php_value[opcache.revalidate_freq]" = "1";
+ "php_admin_value[memory_limit]" = "512M";
+
+ "php_admin_value[open_basedir]" = "/run/wrappers/bin/sendmail:${v.phpBaseDir}:/proc/cpuinfo:/proc/meminfo:/dev/urandom:/proc/self/fd:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:NextcloudFarm:${k}:'";
+ };
+ phpPackage = v.phpPackage;
+ }) cfg.instances;
+ environment.systemPackages = let
+ toOcc = name: icfg: pkgs.writeScriptBin "nextcloud-occ-${name}" ''
+ #! ${pkgs.stdenv.shell}
+ cd ${icfg.rootDir}
+ NEXTCLOUD_CONFIG_DIR="${icfg.varDir}/config" \
+ exec \
+ sudo -E -u wwwrun ${icfg.phpPackage}/bin/php \
+ -d memory_limit=512M \
+ -c ${icfg.phpPackage}/etc/php.ini \
+ occ $*
+ '';
+ in lib.mapAttrsToList toOcc cfg.instances;
+ services.cron = {
+ enable = true;
+ systemCronJobs = let
+ toScript = name: icfg: pkgs.writeScriptBin "nextcloud-cron" ''
+ #! ${pkgs.stdenv.shell}
+ export LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive
+ export PATH=/run/wrappers/bin:$PATH
+ export NEXTCLOUD_CONFIG_DIR="${icfg.varDir}/config"
+ ${icfg.phpPackage}/bin/php -c ${icfg.phpPackage}/etc/php.ini -d memory_limit=512M -f ${icfg.rootDir}/cron.php
+ '';
+ toLine = name: icfg: ''
+ */5 * * * * wwwrun ${toScript name icfg}/bin/nextcloud-cron
+ '';
+ in lib.mapAttrsToList toLine cfg.instances;
+ };
+
+ secrets.keys = lib.mapAttrs' (name: v: lib.nameValuePair "${v.secretsPath}" {
+ user = "wwwrun";
+ group = "wwwrun";
+ permissions = "0600";
+ # Be careful when editing that: config from this file takes
+ # precedence over the regular one, but if a key got removed, it my
+ # still exist in the default config file
+ text = builtins.toJSON ( {
+ "datadirectory" = if name == "immae" then v.varDir else "${v.varDir}/data";
+
+ "appstoreenabled" = false;
+ "integrity.check.disabled" = true;
+ "updater.release.channel" = "stable";
+ "upgrade.disable-web" = true;
+
+ "memcache.local" = "\\OC\\Memcache\\APCu";
+
+ "htaccess.RewriteBase" = "/";
+
+ "loglevel" = 2;
+ "logtimezone" = "Europe/Paris";
+
+ "default_phone_region" = "FR";
+ "skeletondirectory" = "";
+ "theme" = "";
+ } // v.config);
+ }) cfg.instances;
+ };
+}
diff --git a/systems/eldiron/websites/commento/default.nix b/systems/eldiron/websites/commento/default.nix
new file mode 100644
index 0000000..c5131b8
--- /dev/null
+++ b/systems/eldiron/websites/commento/default.nix
@@ -0,0 +1,84 @@
+{ lib, pkgs, config, ... }:
+let
+ cfg = config.myServices.websites.tools.commento;
+ env = config.myEnv.tools.commento;
+ webPort = "${host}:${port}";
+ port = toString env.listenPort;
+ host = "localhost";
+ postgresql_url = "postgres://${env.postgresql.user}:${env.postgresql.password}@localhost:${env.postgresql.port}/${env.postgresql.database}?sslmode=disable";
+in
+{
+ options.myServices.websites.tools.commento = {
+ enable = lib.mkEnableOption "Enable commento website";
+ };
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.commento =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.commento = {
+ file.datetime = "2022-08-21T01:11:00";
+ service = {
+ name = "Commento";
+ description = "Commento is a fast, privacy-focused commenting platform";
+ website = "https://commento.immae.eu";
+ logo = "https://commento.immae.eu/images/logo.svg";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Commento";
+ website = "https://www.commento.io/";
+ license.url = "https://gitlab.com/commento/commento/-/blob/master/LICENSE";
+ license.name = "MIT License";
+ version = pkgs.commento.version;
+ source.url = "https://gitlab.com/commento/commento";
+ };
+ };
+ secrets.keys = {
+ "commento/env" = {
+ permissions = "0400";
+ text = ''
+ COMMENTO_ORIGIN=https://commento.immae.eu/
+ COMMENTO_PORT=${port}
+ COMMENTO_POSTGRES=${postgresql_url}
+ COMMENTO_FORBID_NEW_OWNERS=true
+ COMMENTO_BIND_ADDRESS=${host}
+ COMMENTO_GZIP_STATIC=true
+ COMMENTO_SMTP_HOST=${env.smtp.host}
+ COMMENTO_SMTP_PORT=${env.smtp.port}
+ COMMENTO_SMTP_USERNAME=${env.smtp.email}
+ COMMENTO_SMTP_PASSWORD=${env.smtp.password}
+ COMMENTO_SMTP_FROM_ADDRESS=${env.smtp.email}
+ '';
+ };
+ };
+
+ security.acme.certs.eldiron.extraDomainNames = [ "commento.immae.eu" ];
+ services.websites.env.tools.vhostConfs.commento = {
+ certName = "eldiron";
+ hosts = [ "commento.immae.eu" ];
+ root = null;
+ extraConfig = [
+ ''
+ ProxyPass / http://${webPort}/
+ ProxyPassReverse / http://${webPort}/
+ ProxyPreserveHost On
+ ''
+ ];
+ };
+ systemd.services.commento = {
+ description = "Commento";
+ wantedBy = [ "multi-user.target" ];
+ requires = ["postgresql.service"];
+ after = ["network.target" "postgresql.service"];
+ serviceConfig = {
+ User = "wwwrun";
+ ExecStart = "${pkgs.commento}/commento";
+ EnvironmentFile = config.secrets.fullPaths."commento/env";
+ };
+ };
+ };
+}
diff --git a/systems/eldiron/websites/cryptpad/default.nix b/systems/eldiron/websites/cryptpad/default.nix
new file mode 100644
index 0000000..4635548
--- /dev/null
+++ b/systems/eldiron/websites/cryptpad/default.nix
@@ -0,0 +1,89 @@
+{ config, pkgs, lib, ... }:
+let
+ cfg = config.myServices.websites.tools.cryptpad;
+ envCfg = config.myEnv.tools.cryptpad;
+ domain = "cryptpad.immae.eu";
+ port = envCfg.port;
+ configFile = pkgs.writeText "config.js" ''
+ // ${pkgs.cryptpad}/lib/node_modules/cryptpad/config/config.example.js
+ module.exports = {
+ httpUnsafeOrigin: 'https://${domain}',
+ httpPort: ${toString port},
+ adminEmail: '${envCfg.email}',
+ filePath: './datastore/',
+ archivePath: './data/archive',
+ pinPath: './data/pins',
+ taskPath: './data/tasks',
+ blockPath: './block',
+ blobPath: './blob',
+ blobStagingPath: './data/blobstage',
+ decreePath: './data/decrees',
+ logPath: './data/logs',
+ logToStdout: false,
+ logLevel: 'info',
+ logFeedback: false,
+ verbose: false,
+ inactiveTime: false,
+ maxUploadSize: 100 * 1024 * 1024,
+ adminKeys: ${builtins.toJSON envCfg.admins},
+ };
+ '';
+in
+{
+ options.myServices.websites.tools.cryptpad.enable = lib.mkEnableOption "Enable Cryptpad";
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.cryptpad =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.hostings.cryptpad = {
+ file.datetime = "2022-08-21T01:20:00";
+ hosting = {
+ name = "Cryptpad";
+ description = "Collaboration suite, encrypted and open-source";
+ website = "https://cryptpad.immae.eu/";
+ logo = "https://cryptpad.immae.eu/customize/favicon/main-favicon.png";
+ type = "INSTANCE";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ };
+ myServices.chatonsProperties.services.cryptpad = {
+ file.datetime = "2022-08-21T01:20:00";
+ service = {
+ name = "Cryptpad";
+ description = "Collaboration suite, encrypted and open-source";
+ website = "https://cryptpad.immae.eu/";
+ logo = "https://cryptpad.immae.eu/customize/favicon/main-favicon.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["NONE" "FREE" "MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Cryptpad";
+ website = "https://cryptpad.org/";
+ license.url = "https://github.com/xwiki-labs/cryptpad/blob/main/LICENSE";
+ license.name = "GNU Affero General Public License v3.0";
+ version = pkgs.cryptpad.version;
+ source.url = "https://github.com/xwiki-labs/cryptpad";
+ };
+ };
+ myServices.tools.cryptpad.farm.hosts.immaeEu = {
+ inherit domain port;
+ config = configFile;
+ };
+ services.websites.env.tools.modules = [ "proxy_wstunnel" ];
+ security.acme.certs.eldiron.extraDomainNames = [ domain ];
+ services.websites.env.tools.vhostConfs.cryptpad = {
+ certName = "eldiron";
+ hosts = [domain];
+ root = config.myServices.tools.cryptpad.farm.vhostRoots.immaeEu;
+ extraConfig = [
+ config.myServices.tools.cryptpad.farm.vhosts.immaeEu
+ ];
+ };
+ };
+}
diff --git a/systems/eldiron/websites/cryptpad/farm.nix b/systems/eldiron/websites/cryptpad/farm.nix
new file mode 100644
index 0000000..58393ab
--- /dev/null
+++ b/systems/eldiron/websites/cryptpad/farm.nix
@@ -0,0 +1,186 @@
+{ pkgs, config, lib, ... }:
+let
+ cfg = config.myServices.tools.cryptpad.farm;
+ toService = name:
+ let
+ inherit (cfg.hosts.${name}) package config;
+ in {
+ description = "Cryptpad ${name} Service";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "networking.target" ];
+ serviceConfig = {
+ User = "cryptpad";
+ Group = "cryptpad";
+ Environment = [
+ "CRYPTPAD_CONFIG=${config}"
+ "HOME=%S/cryptpad/${name}"
+ ];
+ ExecStart = "${package}/bin/cryptpad";
+ PrivateTmp = true;
+ Restart = "always";
+ StateDirectory = "cryptpad/${name}";
+ WorkingDirectory = "%S/cryptpad/${name}";
+ };
+ };
+ toVhostRoot = name: "${cfg.hosts.${name}.package}/lib/node_modules/cryptpad";
+ toVhost = name:
+ let
+ inherit (cfg.hosts.${name}) package domain port;
+ api_domain = domain;
+ files_domain = domain;
+ in ''
+ RewriteEngine On
+
+ Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
+ Header set X-XSS-Protection "1; mode=block"
+ Header set X-Content-Type-Options "nosniff"
+ Header set Access-Control-Allow-Origin "*"
+ Header set Permissions-Policy "interest-cohort=()"
+
+ Header set Cross-Origin-Resource-Policy "cross-origin"
+
+ Header set Cross-Origin-Opener-Policy "same-origin"
+
+ Header set Cross-Origin-Embedder-Policy "require-corp"
+
+ ErrorDocument 404 /customize.dist/404.html
+
+
+ Header set Cache-Control "max-age=31536000"
+
+
+ Header set Cache-Control "no-cache"
+
+
+ SetEnv styleSrc "'unsafe-inline' 'self' ${domain}"
+ SetEnv connectSrc "'self' https://${domain} ${domain} https://${api_domain} blob: wss://${api_domain} ${api_domain} ${files_domain}"
+ SetEnv fontSrc "'self' data: ${domain}"
+ SetEnv imgSrc "'self' data: * blob: ${domain}"
+ SetEnv frameSrc "'self' blob:"
+ SetEnv mediaSrc "'self' data: * blob: ${domain}"
+ SetEnv childSrc "https://${domain}"
+ SetEnv workerSrc "https://${domain}"
+ SetEnv scriptSrc "'self' 'unsafe-eval' 'unsafe-inline' resource: ${domain}"
+
+ Header set Content-Security-Policy "default-src 'none'; child-src %{childSrc}e; worker-src %{workerSrc}e; media-src %{mediaSrc}e; style-src %{styleSrc}e; script-src %{scriptSrc}e; connect-src %{connectSrc}e; font-src %{fontSrc}e; img-src %{imgSrc}e; frame-src %{frameSrc}e;"
+
+ RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
+ RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
+ RewriteRule .* ws://localhost:${toString port}%{REQUEST_URI} [P,NE,QSA,L]
+
+ RewriteRule ^/customize/(.*)$ /customize.dist/$1 [L]
+
+ ProxyPassMatch "^/(api/(config|broadcast).*)$" "http://localhost:${toString port}/$1"
+ ProxyPassReverse /api http://localhost:${toString port}/api
+ ProxyPreserveHost On
+ RequestHeader set X-Real-IP %{REMOTE_ADDR}s
+
+ Alias /blob /var/lib/cryptpad/${name}/blob
+
+ Require all granted
+ AllowOverride None
+
+ Alias /block /var/lib/cryptpad/${name}/block
+
+ Require all granted
+ AllowOverride None
+
+
+ Header set Cache-Control "max-age=31536000"
+ Header set Access-Control-Allow-Origin "*"
+ Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
+ Header set Access-Control-Allow-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Content-Length"
+ Header set Access-Control-Expose-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Content-Length"
+
+ RewriteCond %{REQUEST_METHOD} OPTIONS
+ RewriteRule ^(.*)$ $1 [R=204,L]
+
+
+
+ Header set Cache-Control "max-age=0"
+
+
+ RewriteRule ^/(register|login|settings|user|pad|drive|poll|slide|code|whiteboard|file|media|profile|contacts|todo|filepicker|debug|kanban|sheet|support|admin|notifications|teams|calendar|presentation|doc)$ $1/ [R=302,L]
+
+ RewriteCond %{DOCUMENT_ROOT}/www/%{REQUEST_URI} -f
+ RewriteRule (.*) /www/$1 [L]
+
+ RewriteCond %{DOCUMENT_ROOT}/www/%{REQUEST_URI}/index.html -f
+ RewriteRule (.*) /www/$1/index.html [L]
+
+ RewriteCond %{DOCUMENT_ROOT}/customize.dist/%{REQUEST_URI} -f
+ RewriteRule (.*) /customize.dist/$1 [L]
+
+
+ AllowOverride None
+ Require all granted
+ DirectoryIndex index.html
+
+
+ AllowOverride None
+ Require all granted
+ DirectoryIndex index.html
+
+ '';
+in
+{
+ options.myServices.tools.cryptpad.farm = {
+ hosts = lib.mkOption {
+ default = {};
+ description = "Hosts to install";
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ port = lib.mkOption {
+ type = lib.types.port;
+ };
+ package = lib.mkOption {
+ type = lib.types.package;
+ description = "Cryptpad package to use";
+ default = pkgs.cryptpad;
+ };
+ domain = lib.mkOption {
+ type = lib.types.str;
+ description = "Domain for main host";
+ };
+ config = lib.mkOption {
+ type = lib.types.path;
+ description = "Path to configuration";
+ };
+ };
+ });
+ };
+ vhosts = lib.mkOption {
+ description = "Instance vhosts configs";
+ readOnly = true;
+ type = lib.types.attrsOf lib.types.str;
+ default = lib.genAttrs (builtins.attrNames cfg.hosts) toVhost;
+ };
+ vhostRoots = lib.mkOption {
+ description = "Instance vhosts document roots";
+ readOnly = true;
+ type = lib.types.attrsOf lib.types.path;
+ default = lib.genAttrs (builtins.attrNames cfg.hosts) toVhostRoot;
+ };
+ vhostVarDirs = lib.mkOption {
+ description = "Instance vhosts var dirs";
+ readOnly = true;
+ type = lib.types.attrsOf lib.types.path;
+ default = lib.genAttrs (builtins.attrNames cfg.hosts) (n: "/var/lib/cryptpad/${n}");
+ };
+ };
+ config = {
+ users.users = lib.optionalAttrs (cfg.hosts != {}) {
+ cryptpad = {
+ uid = config.ids.uids.cryptpad;
+ group = "cryptpad";
+ description = "Cryptpad user";
+ };
+ };
+ users.groups = lib.optionalAttrs (cfg.hosts != {}) {
+ cryptpad = {
+ gid = config.ids.gids.cryptpad;
+ };
+ };
+ systemd.services = lib.listToAttrs (map (n: lib.nameValuePair "cryptpad-${n}" (toService n)) (builtins.attrNames cfg.hosts));
+ };
+}
diff --git a/systems/eldiron/websites/dav/davical.nix b/systems/eldiron/websites/dav/davical.nix
new file mode 100644
index 0000000..b418cb8
--- /dev/null
+++ b/systems/eldiron/websites/dav/davical.nix
@@ -0,0 +1,128 @@
+{ stdenv, fetchurl, gettext, writeText, env, awl, davical, config }:
+rec {
+ keys."webapps/dav-davical" = {
+ user = apache.user;
+ group = apache.group;
+ permissions = "0400";
+ text = ''
+ pg_connect[] = "dbname=${env.postgresql.database} user=${env.postgresql.user} host=${env.postgresql.socket} password=${env.postgresql.password}";
+
+ $c->readonly_webdav_collections = false;
+
+ $c->admin_email ='davical@tools.immae.eu';
+
+ $c->restrict_setup_to_admin = true;
+
+ $c->collections_always_exist = false;
+
+ $c->external_refresh = 60;
+
+ $c->enable_scheduling = true;
+
+ $c->iMIP = (object) array("send_email" => true);
+
+ $c->authenticate_hook['optional'] = false;
+ $c->authenticate_hook['call'] = 'LDAP_check';
+ $c->authenticate_hook['config'] = array(
+ 'host' => '${env.ldap.host}',
+ 'port' => '389',
+ 'startTLS' => 'yes',
+ 'bindDN'=> '${env.ldap.dn}',
+ 'passDN'=> '${env.ldap.password}',
+ 'protocolVersion' => '3',
+ 'baseDNUsers'=> array('ou=users,${env.ldap.base}', 'ou=group_users,${env.ldap.base}'),
+ 'filterUsers' => '${env.ldap.filter}',
+ 'baseDNGroups' => 'ou=groups,${env.ldap.base}',
+ 'filterGroups' => 'memberOf=cn=groups,${env.ldap.dn}',
+ 'mapping_field' => array(
+ "username" => "uid",
+ "fullname" => "cn",
+ "email" => "mail",
+ "modified" => "modifyTimestamp",
+ ),
+ 'format_updated'=> array('Y' => array(0,4),'m' => array(4,2),'d'=> array(6,2),'H' => array(8,2),'M'=>array(10,2),'S' => array(12,2)),
+ /** used to set default value for all users, will be overcharged by ldap if defined also in mapping_field **/
+ // 'default_value' => array("date_format_type" => "E","locale" => "fr_FR"),
+ 'group_mapping_field' => array(
+ "username" => "cn",
+ "updated" => "modifyTimestamp",
+ "fullname" => "givenName",
+ "displayname" => "givenName",
+ "members" => "memberUid",
+ "email" => "mail",
+ ),
+ );
+
+ $c->do_not_sync_from_ldap = array('admin' => true);
+ include('drivers_ldap.php');
+ '';
+ };
+ webapp = davical.override { davical_config = config.secrets.fullPaths."webapps/dav-davical"; };
+ webRoot = "${webapp}/htdocs";
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /davical "${root}"
+ Alias /caldav.php "${root}/caldav.php"
+
+ DirectoryIndex index.php index.html
+ AcceptPathInfo On
+ AllowOverride None
+ Require all granted
+
+
+ CGIPassAuth on
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ RewriteEngine On
+
+ Header unset Access-Control-Allow-Origin
+ Header unset Access-Control-Allow-Methods
+ Header unset Access-Control-Allow-Headers
+ Header unset Access-Control-Allow-Credentials
+ Header unset Access-Control-Expose-Headers
+
+ Header always set Access-Control-Allow-Origin "*"
+ Header always set Access-Control-Allow-Methods "GET,POST,OPTIONS,PROPFIND,PROPPATCH,REPORT,PUT,MOVE,DELETE,LOCK,UNLOCK"
+ Header always set Access-Control-Allow-Headers "User-Agent,Authorization,Content-type,Depth,If-match,If-None-Match,Lock-Token,Timeout,Destination,Overwrite,Prefer,X-client,X-Requested-With"
+ Header always set Access-Control-Allow-Credentials false
+ Header always set Access-Control-Expose-Headers "Etag,Preference-Applied"
+
+ RewriteCond %{HTTP:Access-Control-Request-Method} !^$
+ RewriteCond %{REQUEST_METHOD} OPTIONS
+ RewriteRule ^(.*)$ $1 [R=200,L]
+
+
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "postgresql.service" "openldap.service" ];
+ basedir = builtins.concatStringsSep ":" [ webapp config.secrets.fullPaths."webapps/dav-davical" awl ];
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "dynamic";
+ "pm.max_children" = "60";
+ "pm.start_servers" = "2";
+ "pm.min_spare_servers" = "1";
+ "pm.max_spare_servers" = "10";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "DavicalPHPSESSID";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[include_path]" = "${awl}/inc:${webapp}/inc";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Davical:'";
+ "php_flag[magic_quotes_gpc]" = "Off";
+ "php_flag[register_globals]" = "Off";
+ "php_admin_value[error_reporting]" = "E_ALL & ~E_NOTICE";
+ "php_admin_value[default_charset]" = "utf-8";
+ "php_flag[magic_quotes_runtime]" = "Off";
+ };
+ };
+}
diff --git a/systems/eldiron/websites/dav/default.nix b/systems/eldiron/websites/dav/default.nix
new file mode 100644
index 0000000..109715d
--- /dev/null
+++ b/systems/eldiron/websites/dav/default.nix
@@ -0,0 +1,140 @@
+{ lib, pkgs, config, ... }:
+let
+ infcloud = rec {
+ root = pkgs.webapps-infcloud;
+ vhostConf = ''
+ Alias /carddavmate ${root}
+ Alias /caldavzap ${root}
+ Alias /infcloud ${root}
+
+ AllowOverride All
+ Options FollowSymlinks
+ Require all granted
+ DirectoryIndex index.html
+
+ '';
+ };
+ davical = pkgs.callPackage ./davical.nix {
+ env = config.myEnv.tools.davical;
+ davical = pkgs.webapps-davical;
+ awl = pkgs.webapps-awl;
+ inherit config;
+ };
+
+ cfg = config.myServices.websites.tools.dav;
+in {
+ options.myServices.websites.tools.dav = {
+ enable = lib.mkEnableOption "enable dav website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.dav =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services = {
+ davical = {
+ file.datetime = "2022-08-21T01:33:00";
+ service = {
+ name = "Davical";
+ description = "DAViCal is a server for calendar sharing";
+ website = "https://dav.immae.eu";
+ logo = "https://www.davical.org/images/logo.gif";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Davical";
+ website = "https://www.davical.org/";
+ license.url = "https://gitlab.com/davical-project/davical/-/blob/master/COPYING";
+ license.name = "GNU General Public License Version 2";
+ version = pkgs.webapps-davical.version;
+ source.url = "https://gitlab.com/davical-project/davical/";
+ modules = "infcloud";
+ };
+ };
+ #calendar = {
+ # file.datetime = "2022-08-22T00:00:00";
+ # service = {
+ # name = "Calendar";
+ # description = "Opensource CalDAV web client";
+ # website = "https://dav.immae.eu/caldavzap/";
+ # logo = "https://dav.immae.eu/caldavzap/images/infcloud_logo.svg";
+ # status.level = "OK";
+ # status.description = "OK";
+ # registration."" = ["MEMBER" "CLIENT"];
+ # registration.load = "OPEN";
+ # install.type = "PACKAGE";
+ # };
+ # software = {
+ # name = "InfCloud";
+ # website = "https://inf-it.com/open-source/clients/infcloud/";
+ # license.url = "https://www.gnu.org/licenses/agpl-3.0.en.html";
+ # license.name = "GNU Affero General Public License (version 3.0)";
+ # version = pkgs.webapps-infcloud.version;
+ # source.url = "https://inf-it.com/open-source/clients/infcloud/";
+ # };
+ #};
+ #contacts = {
+ # file.datetime = "2022-08-22T00:00:00";
+ # service = {
+ # name = "Contacts";
+ # description = "Opensource Carddav web client";
+ # website = "https://dav.immae.eu/carddavmate/";
+ # logo = "https://dav.immae.eu/caldavzap/images/infcloud_logo.svg";
+ # status.level = "OK";
+ # status.description = "OK";
+ # registration."" = ["MEMBER" "CLIENT"];
+ # registration.load = "OPEN";
+ # install.type = "PACKAGE";
+ # };
+ # software = {
+ # name = "InfCloud";
+ # website = "https://inf-it.com/open-source/clients/infcloud/";
+ # license.url = "https://www.gnu.org/licenses/agpl-3.0.en.html";
+ # license.name = "GNU Affero General Public License (version 3.0)";
+ # version = pkgs.webapps-infcloud.version;
+ # source.url = "https://inf-it.com/open-source/clients/infcloud/";
+ # };
+ #};
+ };
+ secrets.keys = davical.keys;
+ services.websites.env.tools.modules = davical.apache.modules;
+
+ security.acme.certs.eldiron.extraDomainNames = [ "dav.immae.eu" ];
+ services.websites.env.tools.vhostConfs.dav = {
+ certName = "eldiron";
+ hosts = ["dav.immae.eu" ];
+ root = ./www;
+ extraConfig = [
+ infcloud.vhostConf
+ (davical.apache.vhostConf config.services.phpfpm.pools.davical.socket)
+ ];
+ };
+
+ services.phpfpm.pools = {
+ davical = {
+ user = config.services.websites.env.tools.user;
+ group = config.services.websites.env.tools.group;
+ settings = davical.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ };
+ myServices.monitoring.fromMasterActivatedPlugins = [ "http" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "davical website is running on dav.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "dav.immae.eu" "/davical/" "Log On Please"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Davical";
+ _webstatus_url = "https://dav.immae.eu/davical";
+ }
+ ];
+ };
+}
+
diff --git a/systems/eldiron/websites/dav/www/index.html b/systems/eldiron/websites/dav/www/index.html
new file mode 100644
index 0000000..91c25ba
--- /dev/null
+++ b/systems/eldiron/websites/dav/www/index.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+ Dav configuration
+
+
+
+
+ Dav configuration:
+
+ Server: https://dav.immae.eu/caldav.php
+
+
+
+ Clients:
+
+
+
+
+
diff --git a/systems/eldiron/websites/db/default.nix b/systems/eldiron/websites/db/default.nix
new file mode 100644
index 0000000..339948f
--- /dev/null
+++ b/systems/eldiron/websites/db/default.nix
@@ -0,0 +1,32 @@
+{ lib, pkgs, config, ... }:
+let
+ cfg = config.myServices.websites.tools.db;
+in {
+ options.myServices.websites.tools.db = {
+ enable = lib.mkEnableOption "enable database's website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ services.websites.env.tools.modules = [ "proxy_fcgi" ];
+ security.acme.certs.eldiron.extraDomainNames = [ "db-1.immae.eu" ];
+ services.websites.env.tools.vhostConfs.db-1 = {
+ certName = "eldiron";
+ hosts = ["db-1.immae.eu" ];
+ root = null;
+ extraConfig = [ ''
+ Alias /adminer ${pkgs.webapps-adminer}
+
+ DirectoryIndex index.php
+
+ SetHandler "proxy:unix:${config.services.phpfpm.pools.adminer.socket}|fcgi://localhost"
+
+
+ Use LDAPConnect
+ Require ldap-group cn=users,cn=mysql,cn=pam,ou=services,dc=immae,dc=eu
+ Require ldap-group cn=users,cn=postgresql,cn=pam,ou=services,dc=immae,dc=eu
+
+ ''
+ ];
+ };
+ };
+}
diff --git a/systems/eldiron/websites/default.nix b/systems/eldiron/websites/default.nix
new file mode 100644
index 0000000..68205de
--- /dev/null
+++ b/systems/eldiron/websites/default.nix
@@ -0,0 +1,319 @@
+{ lib, pkgs, config, mypackages-lib, ... }:
+let
+ www_root = ./_www;
+ theme_root = (mypackages-lib.apache-theme {}).theme;
+ apacheConfig = {
+ shutdownconfig = {
+ # Only give 5 seconds to workers to finish their work
+ extraConfig = ''
+ GracefulShutdownTimeout 5
+ '';
+ };
+ cache = {
+ # This setting permits to ignore time-based cache for files in the
+ # nix store:
+ # If a client requires an If-Modified-Since from timestamp 1, then
+ # this header is removed, and if the response contains a
+ # too old Last-Modified tag, then it is removed too
+ extraConfig = ''
+
+ RequestHeader unset If-Modified-Since
+
+ Header unset Last-Modified "expr=%{LAST_MODIFIED} < 19991231235959"
+ '';
+ };
+ gzip = {
+ modules = [ "deflate" "filter" ];
+ extraConfig = ''
+ AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
+ '';
+ };
+ macros = {
+ modules = [ "macro" ];
+ };
+ stats = {
+ extraConfig = ''
+
+ Alias /webstats ${config.services.webstats.dataDir}/%{domain}
+
+ DirectoryIndex index.html
+ AllowOverride None
+ Require all granted
+
+
+ Use LDAPConnect
+ Require ldap-group cn=%{domain},ou=stats,cn=httpd,ou=services,dc=immae,dc=eu
+
+
+ '';
+ };
+ ldap = {
+ modules = [ "ldap" "authnz_ldap" ];
+ extraConfig = ''
+
+ LDAPSharedCacheSize 500000
+ LDAPCacheEntries 1024
+ LDAPCacheTTL 600
+ LDAPOpCacheEntries 1024
+ LDAPOpCacheTTL 600
+
+
+ Include ${config.secrets.fullPaths."apache-ldap"}
+ '';
+ };
+ global = {
+ extraConfig = ''
+ ErrorDocument 500 /maintenance_immae.html
+ ErrorDocument 501 /maintenance_immae.html
+ ErrorDocument 502 /maintenance_immae.html
+ ErrorDocument 503 /maintenance_immae.html
+ ErrorDocument 504 /maintenance_immae.html
+ Alias /maintenance_immae.html ${www_root}/maintenance_immae.html
+ ProxyPass /maintenance_immae.html !
+
+ AliasMatch "(.*)/googleb6d69446ff4ca3e5.html" ${www_root}/googleb6d69446ff4ca3e5.html
+
+ AllowOverride None
+ Require all granted
+
+ '';
+ };
+ apaxy = {
+ extraConfig = (mypackages-lib.apache-theme { inherit theme_root; }).apacheConfig;
+ };
+ http2 = {
+ modules = [ "http2" ];
+ extraConfig = ''
+ Protocols h2 http/1.1
+ '';
+ };
+ customLog = {
+ extraConfig = ''
+ LogFormat "%{Host}i:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedVhost
+ '';
+ };
+ };
+ makeModules = lib.lists.flatten (lib.attrsets.mapAttrsToList (n: v: v.modules or []) apacheConfig);
+ makeExtraConfig = (builtins.filter (x: x != null) (lib.attrsets.mapAttrsToList (n: v: v.extraConfig or null) apacheConfig));
+ moomin = let
+ lines = lib.splitString "\n" (lib.fileContents ./moomin.txt);
+ pad = width: str: let
+ padWidth = width - lib.stringLength str;
+ padding = lib.concatStrings (lib.genList (lib.const "0") padWidth);
+ in lib.optionalString (padWidth > 0) padding + str;
+ in
+ lib.imap0 (i: e: ''Header always set "X-Moomin-${pad 2 (builtins.toString i)}" "${e}"'') lines;
+in
+{
+ imports = [
+ ./immae/production.nix
+ ./immae/release.nix
+
+ # Tools
+ ./assets
+ ./cloud
+ ./cloud/farm.nix
+ ./cryptpad
+ ./cryptpad/farm.nix
+ ./commento
+ ./dav
+ ./vpn
+ ./db
+ ./diaspora
+ ./ether
+ ./git
+ ./im
+ ./mastodon
+ ./mgoblin
+ ./peertube
+ ./performance
+ ./tools
+ ./mail
+ ./stats
+ ./visio
+ ./kanboard/farm.nix
+
+ # Games
+ ./games/codenames
+ ./games/terraforming-mars
+ ];
+
+ options.myServices.websites.enable = lib.mkEnableOption "enable websites";
+
+ config = lib.mkIf config.myServices.websites.enable {
+ myServices.dns.zones."immae.eu".subdomains = with config.myServices.dns.helpers;
+ {
+ games = ips servers.eldiron.ips.main;
+ nossl = ips servers.eldiron.ips.main;
+ };
+
+ myServices.chatonsProperties.hostings.web = {
+ file.datetime = "2022-08-22T01:30:00";
+ hosting = {
+ name = "Hébergement Web";
+ description = "Service d'hébergement web avec php/mysql/postgresql";
+ website = "https://www.immae.eu";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Apache Httpd";
+ website = "https://httpd.apache.org/";
+ license.url = "https://www.apache.org/licenses/";
+ license.name = "Apache License Version 2";
+ version = pkgs.apacheHttpd.version;
+ source.url = "https://httpd.apache.org/download.cgi";
+ modules = "openssh,pure-ftpd";
+ };
+ };
+ users.users.wwwrun.extraGroups = [ "keys" ];
+ networking.firewall.allowedTCPPorts = [ 80 443 ];
+
+ secrets.keys."apache-ldap" = {
+ user = "wwwrun";
+ group = "wwwrun";
+ permissions = "0400";
+ text = ''
+
+
+ AuthLDAPURL ldap://ldap.immae.eu:389/dc=immae,dc=eu STARTTLS
+ AuthLDAPBindDN cn=httpd,ou=services,dc=immae,dc=eu
+ AuthLDAPBindPassword "${config.myEnv.httpd.ldap.password}"
+ AuthType Basic
+ AuthName "Authentification requise (Acces LDAP)"
+ AuthBasicProvider ldap
+
+
+ '';
+ };
+
+ system.activationScripts = {
+ httpd = ''
+ install -d -m 0755 /var/lib/acme/acme-challenges
+ install -d -m 0750 -o wwwrun -g wwwrun /var/lib/php/sessions
+ '';
+ };
+
+ services.phpfpm = {
+ phpOptions = ''
+ session.save_path = "/var/lib/php/sessions"
+ post_max_size = 20M
+ ; 15 days (seconds)
+ session.gc_maxlifetime = 1296000
+ ; 30 days (minutes)
+ session.cache_expire = 43200
+ '';
+ settings = {
+ log_level = "notice";
+ };
+ };
+
+ services.websites.env.production = {
+ enable = true;
+ moduleType = "container";
+ adminAddr = "httpd@immae.eu";
+ bindMounts."/var/lib/ftp" = {};
+ # FIXME: Bind directly the needed files
+ bindMounts."/var/secrets" = {};
+ bindMounts."/var/lib/goaccess" = {};
+ bindMounts."/var/lib/acme" = {};
+ bindMounts."/run/phpfpm" = {};
+ ips =
+ let ips = config.myEnv.servers.eldiron.ips.production;
+ in (ips.ip4 or []) ++ (ips.ip6 or []);
+ modules = makeModules;
+ extraConfig = makeExtraConfig;
+ fallbackVhost = {
+ certName = "eldiron";
+ hosts = ["eldiron.immae.eu" ];
+ root = www_root;
+ extraConfig = [ "DirectoryIndex index.htm" ];
+ };
+ };
+
+ services.websites.env.integration = {
+ enable = true;
+ moduleType = "container";
+ adminAddr = "httpd@immae.eu";
+ bindMounts."/var/lib/ftp" = {};
+ bindMounts."/var/secrets" = {};
+ bindMounts."/var/lib/goaccess" = {};
+ bindMounts."/var/lib/acme" = {};
+ bindMounts."/run/phpfpm" = {};
+ ips =
+ let ips = config.myEnv.servers.eldiron.ips.integration;
+ in (ips.ip4 or []) ++ (ips.ip6 or []);
+ modules = makeModules;
+ extraConfig = makeExtraConfig ++ moomin;
+ fallbackVhost = {
+ certName = "integration";
+ hosts = ["eldiron.immae.eu" ];
+ root = www_root;
+ extraConfig = [ "DirectoryIndex index.htm" ];
+ };
+ watchPaths = [ config.secrets.fullPaths."apache-ldap" ];
+ };
+
+ services.websites.env.tools = {
+ enable = true;
+ moduleType = "main";
+ adminAddr = "httpd@immae.eu";
+ ips =
+ let ips = config.myEnv.servers.eldiron.ips.main;
+ in (ips.ip4 or []) ++ (ips.ip6 or []);
+ modules = makeModules;
+ extraConfig = makeExtraConfig ++
+ [ ''
+ RedirectMatch ^/licen[cs]es?_et_tip(ping)?$ https://www.immae.eu/licences_et_tip.html
+ RedirectMatch ^/licen[cs]es?_and_tip(ping)?$ https://www.immae.eu/licenses_and_tipping.html
+ RedirectMatch ^/licen[cs]es?$ https://www.immae.eu/licenses_and_tipping.html
+ RedirectMatch ^/tip(ping)?$ https://www.immae.eu/licenses_and_tipping.html
+ RedirectMatch ^/(mentions|mentions_legales|legal)$ https://www.immae.eu/mentions.html
+ RedirectMatch ^/CGU$ https://www.immae.eu/CGU
+ ''
+ ];
+ nosslVhost = {
+ enable = true;
+ host = "nossl.immae.eu";
+ root = ./nossl;
+ };
+ fallbackVhost = {
+ certName = "eldiron";
+ hosts = ["eldiron.immae.eu" ];
+ root = www_root;
+ extraConfig = [ "DirectoryIndex index.htm" ];
+ };
+ watchPaths = [ config.secrets.fullPaths."apache-ldap" ];
+ };
+
+ myServices.websites = {
+ immae = {
+ production.enable = true;
+ release.enable = true;
+ };
+
+ tools.assets.enable = true;
+ tools.cloud.enable = true;
+ tools.commento.enable = true;
+ tools.cryptpad.enable = true;
+ tools.dav.enable = true;
+ tools.db.enable = true;
+ tools.diaspora.enable = true;
+ tools.etherpad-lite.enable = true;
+ tools.git.enable = true;
+ tools.mastodon.enable = true;
+ tools.mediagoblin.enable = true;
+ tools.peertube.enable = true;
+ tools.performance.enable = true;
+ tools.tools.enable = true;
+ tools.email.enable = true;
+ tools.stats.enable = false;
+ tools.visio.enable = true;
+
+ games.codenames.enable = true;
+ games.terraforming-mars.enable = true;
+ };
+ };
+}
diff --git a/systems/eldiron/websites/diaspora/default.nix b/systems/eldiron/websites/diaspora/default.nix
new file mode 100644
index 0000000..c536446
--- /dev/null
+++ b/systems/eldiron/websites/diaspora/default.nix
@@ -0,0 +1,224 @@
+{ lib, pkgs, config, ... }:
+let
+ env = config.myEnv.tools.diaspora;
+ root = "${dcfg.workdir}/public/";
+ cfg = config.myServices.websites.tools.diaspora;
+ dcfg = config.services.diaspora;
+in {
+ options.myServices.websites.tools.diaspora = {
+ enable = lib.mkEnableOption "enable diaspora's website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.diaspora =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.diaspora = {
+ file.datetime = "2022-08-21T01:39:00";
+ service = {
+ name = "Diaspora";
+ description = "The online social world where you are in control";
+ website = "https://diaspora.immae.eu";
+ logo = "https://diaspora.immae.eu/assets/apple-touch-icon-9f7c9cc3923b4817fbb25bfeb0dd5fd34638827fd9c82b5a03f7b68e6e90806f.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Diaspora*";
+ website = "https://diasporafoundation.org/";
+ license.url = "https://github.com/diaspora/diaspora/blob/develop/LICENSE";
+ license.name = "GNU Affero General Public License v3.0";
+ version = dcfg.package.version;
+ source.url = "https://github.com/diaspora/diaspora";
+ };
+ };
+ users.users.diaspora.extraGroups = [ "keys" ];
+
+ secrets.keys = {
+ "webapps/diaspora" = {
+ isDir = true;
+ user = "diaspora";
+ group = "diaspora";
+ permissions = "0500";
+ };
+ "webapps/diaspora/diaspora.yml" = {
+ user = "diaspora";
+ group = "diaspora";
+ permissions = "0400";
+ keyDependencies = [ pkgs.cacert ];
+ text = ''
+ configuration:
+ environment:
+ url: "https://diaspora.immae.eu/"
+ certificate_authorities: '${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt'
+ redis: 'redis://${env.redis.host}:${env.redis.port}/${env.redis.db}'
+ sidekiq:
+ s3:
+ assets:
+ logging:
+ logrotate:
+ debug:
+ server:
+ listen: '${dcfg.sockets.rails}'
+ rails_environment: 'production'
+ chat:
+ server:
+ bosh:
+ log:
+ map:
+ mapbox:
+ privacy:
+ piwik:
+ statistics:
+ camo:
+ settings:
+ enable_registrations: false
+ welcome_message:
+ invitations:
+ open: false
+ paypal_donations:
+ community_spotlight:
+ captcha:
+ enable: false
+ terms:
+ maintenance:
+ remove_old_users:
+ default_metas:
+ csp:
+ services:
+ twitter:
+ tumblr:
+ wordpress:
+ mail:
+ enable: true
+ sender_address: 'diaspora@tools.immae.eu'
+ method: 'sendmail'
+ smtp:
+ sendmail:
+ location: '/run/wrappers/bin/sendmail'
+ admins:
+ account: "ismael"
+ podmin_email: 'diaspora@tools.immae.eu'
+ relay:
+ outbound:
+ inbound:
+ ldap:
+ enable: true
+ host: ${env.ldap.host}
+ port: 636
+ only_ldap: true
+ mail_attribute: mail
+ skip_email_confirmation: true
+ use_bind_dn: true
+ bind_dn: "${env.ldap.dn}"
+ bind_pw: "${env.ldap.password}"
+ search_base: "${env.ldap.base}"
+ search_filter: "${env.ldap.filter}"
+ production:
+ environment:
+ development:
+ environment:
+ '';
+ };
+ "webapps/diaspora/database.yml" = {
+ user = "diaspora";
+ group = "diaspora";
+ permissions = "0400";
+ text = ''
+ postgresql: &postgresql
+ adapter: postgresql
+ host: "${env.postgresql.socket}"
+ port: "${env.postgresql.port}"
+ username: "${env.postgresql.user}"
+ password: "${env.postgresql.password}"
+ encoding: unicode
+ common: &common
+ <<: *postgresql
+ combined: &combined
+ <<: *common
+ development:
+ <<: *combined
+ database: diaspora_development
+ production:
+ <<: *combined
+ database: ${env.postgresql.database}
+ test:
+ <<: *combined
+ database: "diaspora_test"
+ integration1:
+ <<: *combined
+ database: diaspora_integration1
+ integration2:
+ <<: *combined
+ database: diaspora_integration2
+ '';
+ };
+ "webapps/diaspora/secret_token.rb" = {
+ user = "diaspora";
+ group = "diaspora";
+ permissions = "0400";
+ text = ''
+ Diaspora::Application.config.secret_key_base = '${env.secret_token}'
+ '';
+ };
+ };
+
+ services.diaspora = {
+ enable = true;
+ withLdap = true;
+ dataDir = "/var/lib/diaspora_immae";
+ adminEmail = "diaspora@tools.immae.eu";
+ configDir = config.secrets.fullPaths."webapps/diaspora";
+ };
+
+ services.filesWatcher.diaspora = {
+ restart = true;
+ paths = [ dcfg.configDir ];
+ };
+
+ services.websites.env.tools.modules = [
+ "headers" "proxy" "proxy_http"
+ ];
+ security.acme.certs.eldiron.extraDomainNames = [ "diaspora.immae.eu" ];
+ services.websites.env.tools.vhostConfs.diaspora = {
+ certName = "eldiron";
+ hosts = [ "diaspora.immae.eu" ];
+ root = root;
+ extraConfig = [ ''
+ RewriteEngine On
+ RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
+ RewriteRule ^/(.*)$ unix://${dcfg.sockets.rails}|http://diaspora.immae.eu/%{REQUEST_URI} [P,NE,QSA,L]
+
+ ProxyRequests Off
+ ProxyVia On
+ ProxyPreserveHost On
+ RequestHeader set X_FORWARDED_PROTO https
+
+
+ Require all granted
+
+
+
+ Require all granted
+ Options -MultiViews
+
+ '' ];
+ };
+ myServices.monitoring.fromMasterActivatedPlugins = [ "http" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "diaspora website is running on diaspora.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "diaspora.immae.eu" "/" "is the online social world where you are in control"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Diaspora";
+ _webstatus_url = "https://diaspora.immae.eu/";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/websites/ether/default.nix b/systems/eldiron/websites/ether/default.nix
new file mode 100644
index 0000000..3993553
--- /dev/null
+++ b/systems/eldiron/websites/ether/default.nix
@@ -0,0 +1,251 @@
+{ lib, pkgs, config, nixpkgsRaw, etherpad-lite, ... }:
+let
+ env = config.myEnv.tools.etherpad-lite;
+ cfg = config.myServices.websites.tools.etherpad-lite;
+ # Make sure we’re not rebuilding whole libreoffice just because of a
+ # dependency
+ libreoffice = nixpkgsRaw.libreoffice-fresh;
+ ecfg = config.services.etherpad-lite;
+in {
+ options.myServices.websites.tools.etherpad-lite = {
+ enable = lib.mkEnableOption "enable etherpad's website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.ether =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.etherpad = {
+ file.datetime = "2021-01-04T00:01:00";
+ service = {
+ name = "Etherpad";
+ description = "Éditeur de texte collaboratif en temps réel. on peut y écrire simultanément.";
+ website = "https://ether.immae.eu";
+ logo = "https://ether.immae.eu/favicon.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["NONE" "MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Etherpad";
+ website = "https://etherpad.org/";
+ license.url = "https://github.com/ether/etherpad-lite/blob/develop/LICENSE";
+ license.name = "Apache License Version 2.0";
+ version = ecfg.package.version;
+ source.url = "https://github.com/ether/etherpad-lite";
+ modules = ecfg.package.moduleNames;
+ };
+ };
+ secrets.keys = {
+ "webapps/tools-etherpad-apikey" = {
+ permissions = "0400";
+ text = env.api_key;
+ };
+ "webapps/tools-etherpad-sessionkey" = {
+ permissions = "0400";
+ text = env.session_key;
+ };
+ "webapps/tools-etherpad" = {
+ permissions = "0400";
+ keyDependencies = [ libreoffice ];
+ text = ''
+ {
+ "title": "Etherpad",
+ "favicon": "favicon.ico",
+ "skinName": "colibris",
+ "skinVariants": "dark-toolbar light-background super-light-editor full-width-editor",
+
+ "ip": "",
+ "port" : "${ecfg.sockets.node}",
+ "showSettingsInAdminPage" : false,
+ "dbType" : "postgres",
+ "dbSettings" : {
+ "user" : "${env.postgresql.user}",
+ "host" : "${env.postgresql.socket}",
+ "password": "${env.postgresql.password}",
+ "database": "${env.postgresql.database}",
+ "charset" : "utf8mb4"
+ },
+
+ "defaultPadText" : "Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at http:\/\/etherpad.org\n",
+ "padOptions": {
+ "noColors": false,
+ "showControls": true,
+ "showChat": true,
+ "showLineNumbers": true,
+ "useMonospaceFont": false,
+ "userName": false,
+ "userColor": false,
+ "rtl": false,
+ "alwaysShowChat": false,
+ "chatAndUsers": false,
+ "lang": "fr"
+ },
+
+ "suppressErrorsInPadText" : false,
+ "requireSession" : false,
+ "editOnly" : false,
+ "sessionNoPassword" : false,
+ "minify" : false,
+ "maxAge" : 21600,
+ "abiword" : null,
+ "soffice" : "${libreoffice}/bin/soffice",
+ "tidyHtml" : "",
+ "allowUnknownFileEnds" : true,
+ "requireAuthentication" : false,
+ "requireAuthorization" : false,
+ "trustProxy" : true,
+ "disableIPlogging" : false,
+ "automaticReconnectionTimeout" : 0,
+ "scrollWhenFocusLineIsOutOfViewport": {
+ "percentage": {
+ "editionAboveViewport": 0,
+ "editionBelowViewport": 0
+ },
+ "duration": 0,
+ "scrollWhenCaretIsInTheLastLineOfViewport": false,
+ "percentageToScrollWhenUserPressesArrowUp": 0
+ },
+ "users": {
+ "admin": {
+ "password": "${env.adminPassword}",
+ "is_admin": true
+ },
+ "ldapauth": {
+ "hash": "invalid",
+ "url": "ldaps://${env.ldap.host}",
+ "accountBase": "${env.ldap.base}",
+ "accountPattern": "${env.ldap.filter}",
+ "displayNameAttribute": "cn",
+ "searchDN": "${env.ldap.dn}",
+ "searchPWD": "${env.ldap.password}",
+ "groupSearchBase": "${env.ldap.base}",
+ "groupAttribute": "member",
+ "groupAttributeIsDN": true,
+ "searchScope": "sub",
+ "groupSearch": "${env.ldap.group_filter}",
+ "anonymousReadonly": false
+ }
+ },
+ "ep_mypads": {
+ "warning": "This hash is stored in database, changing anything here will not have any consequence",
+ "ldap": {
+ "url": "ldaps://${env.ldap.host}",
+ "bindDN": "${env.ldap.dn}",
+ "bindCredentials": "${env.ldap.password}",
+ "searchBase": "${env.ldap.base}",
+ "searchFilter": "${env.ldap.filter}",
+ "properties": {
+ "login": "uid",
+ "email": "mail",
+ "firstname": "givenName",
+ "lastname": "sn"
+ },
+ "defaultLang": "fr"
+ }
+ },
+ "ep_comments_page": {
+ "displayCommentAsIcon": true,
+ "highlightSelectedText": true
+ },
+ "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
+ "loadTest": false,
+ "indentationOnNewLine": false,
+ "toolbar": {
+ "left": [
+ ["bold", "italic", "underline", "strikethrough"],
+ ["orderedlist", "unorderedlist", "indent", "outdent"],
+ ["undo", "redo"],
+ ["clearauthorship"]
+ ],
+ "right": [
+ ["importexport", "timeslider", "savedrevision"],
+ ["settings", "embed"],
+ ["showusers"]
+ ],
+ "timeslider": [
+ ["timeslider_export", "timeslider_returnToPad"]
+ ]
+ },
+ "loglevel": "INFO",
+ "logconfig" : { "appenders": [ { "type": "console" } ] }
+ }
+ '';
+ };
+ };
+ services.etherpad-lite = {
+ enable = true;
+ package = etherpad-lite.withModules (p: [
+ p.ep_align p.ep_bookmark p.ep_colors p.ep_comments_page
+ p.ep_cursortrace p.ep_delete_empty_pads p.ep_embedmedia
+ p.ep_font_size p.ep_headings2 p.ep_immae_buttons p.ep_ldapauth
+ p.ep_line_height p.ep_markdown p.ep_mypads p.ep_page_view
+ p.ep_previewimages p.ep_ruler p.ep_scrollto
+ p.ep_set_title_on_pad p.ep_subscript_and_superscript
+ p.ep_timesliderdiff
+ ]);
+ modules = [];
+ sessionKeyFile = config.secrets.fullPaths."webapps/tools-etherpad-sessionkey";
+ apiKeyFile = config.secrets.fullPaths."webapps/tools-etherpad-apikey";
+ configFile = config.secrets.fullPaths."webapps/tools-etherpad";
+ };
+
+ systemd.services.etherpad-lite.serviceConfig.SupplementaryGroups = "keys";
+ systemd.services.etherpad-lite-cleanup.serviceConfig.SupplementaryGroups = "keys";
+ # Needed so that they get in the closure
+ systemd.services.etherpad-lite.path = [ libreoffice pkgs.html-tidy ];
+
+ services.filesWatcher.etherpad-lite = {
+ restart = true;
+ paths = [ ecfg.sessionKeyFile ecfg.apiKeyFile ecfg.configFile ];
+ };
+
+ services.websites.env.tools.modules = [
+ "headers" "proxy" "proxy_http" "proxy_wstunnel"
+ ];
+ security.acme.certs.eldiron.extraDomainNames = [ "ether.immae.eu" ];
+ services.websites.env.tools.vhostConfs.etherpad-lite = {
+ certName = "eldiron";
+ hosts = [ "ether.immae.eu" ];
+ root = null;
+ extraConfig = [ ''
+ Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains;"
+ RequestHeader set X-Forwarded-Proto "https"
+
+ RewriteEngine On
+
+ RewriteCond %{REQUEST_URI} ^/socket.io [NC]
+ RewriteCond %{QUERY_STRING} transport=websocket [NC]
+ RewriteRule /(.*) unix://${ecfg.sockets.node}|ws://ether.immae.eu/$1 [P,NE,QSA,L]
+
+
+ ProxyVia On
+ ProxyRequests Off
+ ProxyPreserveHost On
+ ProxyPass / unix://${ecfg.sockets.node}|http://ether.immae.eu/
+ ProxyPassReverse / unix://${ecfg.sockets.node}|http://ether.immae.eu/
+
+ Options FollowSymLinks MultiViews
+ AllowOverride None
+ Require all granted
+
+
+ '' ];
+ };
+ myServices.monitoring.fromMasterActivatedPlugins = [ "http" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "etherpad website is running on ether.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "ether.immae.eu" "/" "Etherpad"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Etherpad";
+ _webstatus_url = "https://ether.immae.eu/";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/websites/games/codenames/codenames.patch b/systems/eldiron/websites/games/codenames/codenames.patch
new file mode 100644
index 0000000..9faf069
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/codenames.patch
@@ -0,0 +1,8306 @@
+diff --git a/elm.json b/elm.json
+index a0d276b..1b73a46 100644
+--- a/elm.json
++++ b/elm.json
+@@ -3,7 +3,7 @@
+ "source-directories": [
+ "src"
+ ],
+- "elm-version": "0.19.0",
++ "elm-version": "0.19.1",
+ "dependencies": {
+ "direct": {
+ "elm/browser": "1.0.1",
+@@ -15,12 +15,11 @@
+ "perzanko/elm-loading": "2.0.4"
+ },
+ "indirect": {
+- "Skinney/murmur3": "2.0.8",
+ "elm/bytes": "1.0.8",
+ "elm/file": "1.0.5",
+ "elm/time": "1.0.0",
+ "elm/virtual-dom": "1.0.2",
+- "rtfeldman/elm-css": "16.0.1",
++ "rtfeldman/elm-css": "16.1.0",
+ "rtfeldman/elm-hex": "1.0.0"
+ }
+ },
+@@ -32,4 +31,4 @@
+ "elm/random": "1.0.0"
+ }
+ }
+-}
+\ No newline at end of file
++}
+diff --git a/package-lock.json b/package-lock.json
+index 778b061..05a22ab 100644
+--- a/package-lock.json
++++ b/package-lock.json
+@@ -4,196 +4,7963 @@
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
++ "@babel/code-frame": {
++ "version": "7.0.0",
++ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
++ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
++ "dev": true,
++ "requires": {
++ "@babel/highlight": "^7.0.0"
++ }
++ },
++ "@babel/core": {
++ "version": "7.3.4",
++ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz",
++ "integrity": "sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.0.0",
++ "@babel/generator": "^7.3.4",
++ "@babel/helpers": "^7.2.0",
++ "@babel/parser": "^7.3.4",
++ "@babel/template": "^7.2.2",
++ "@babel/traverse": "^7.3.4",
++ "@babel/types": "^7.3.4",
++ "convert-source-map": "^1.1.0",
++ "debug": "^4.1.0",
++ "json5": "^2.1.0",
++ "lodash": "^4.17.11",
++ "resolve": "^1.3.2",
++ "semver": "^5.4.1",
++ "source-map": "^0.5.0"
++ },
++ "dependencies": {
++ "json5": {
++ "version": "2.1.3",
++ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
++ "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
++ "dev": true,
++ "requires": {
++ "minimist": "^1.2.5"
++ }
++ },
++ "source-map": {
++ "version": "0.5.7",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
++ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
++ "dev": true
++ }
++ }
++ },
++ "@babel/generator": {
++ "version": "7.3.4",
++ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz",
++ "integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.3.4",
++ "jsesc": "^2.5.1",
++ "lodash": "^4.17.11",
++ "source-map": "^0.5.0",
++ "trim-right": "^1.0.1"
++ },
++ "dependencies": {
++ "source-map": {
++ "version": "0.5.7",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
++ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
++ "dev": true
++ }
++ }
++ },
++ "@babel/helper-annotate-as-pure": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz",
++ "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-builder-binary-assignment-operator-visitor": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz",
++ "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-explode-assignable-expression": "^7.8.3",
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-builder-react-jsx": {
++ "version": "7.9.0",
++ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz",
++ "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-annotate-as-pure": "^7.8.3",
++ "@babel/types": "^7.9.0"
++ },
++ "dependencies": {
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-create-regexp-features-plugin": {
++ "version": "7.8.8",
++ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz",
++ "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-annotate-as-pure": "^7.8.3",
++ "@babel/helper-regex": "^7.8.3",
++ "regexpu-core": "^4.7.0"
++ }
++ },
++ "@babel/helper-define-map": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz",
++ "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-function-name": "^7.8.3",
++ "@babel/types": "^7.8.3",
++ "lodash": "^4.17.13"
++ },
++ "dependencies": {
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-explode-assignable-expression": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz",
++ "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==",
++ "dev": true,
++ "requires": {
++ "@babel/traverse": "^7.8.3",
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/code-frame": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
++ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
++ "dev": true,
++ "requires": {
++ "@babel/highlight": "^7.8.3"
++ }
++ },
++ "@babel/generator": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
++ "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.9.5",
++ "jsesc": "^2.5.1",
++ "lodash": "^4.17.13",
++ "source-map": "^0.5.0"
++ }
++ },
++ "@babel/parser": {
++ "version": "7.9.4",
++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
++ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
++ "dev": true
++ },
++ "@babel/traverse": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
++ "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/generator": "^7.9.5",
++ "@babel/helper-function-name": "^7.9.5",
++ "@babel/helper-split-export-declaration": "^7.8.3",
++ "@babel/parser": "^7.9.0",
++ "@babel/types": "^7.9.5",
++ "debug": "^4.1.0",
++ "globals": "^11.1.0",
++ "lodash": "^4.17.13"
++ }
++ },
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ },
++ "source-map": {
++ "version": "0.5.7",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
++ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
++ "dev": true
++ }
++ }
++ },
++ "@babel/helper-function-name": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz",
++ "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-get-function-arity": "^7.8.3",
++ "@babel/template": "^7.8.3",
++ "@babel/types": "^7.9.5"
++ },
++ "dependencies": {
++ "@babel/code-frame": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
++ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
++ "dev": true,
++ "requires": {
++ "@babel/highlight": "^7.8.3"
++ }
++ },
++ "@babel/parser": {
++ "version": "7.9.4",
++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
++ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
++ "dev": true
++ },
++ "@babel/template": {
++ "version": "7.8.6",
++ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
++ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/parser": "^7.8.6",
++ "@babel/types": "^7.8.6"
++ }
++ },
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-get-function-arity": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
++ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-hoist-variables": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz",
++ "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-member-expression-to-functions": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz",
++ "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-module-imports": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz",
++ "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-module-transforms": {
++ "version": "7.9.0",
++ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz",
++ "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-module-imports": "^7.8.3",
++ "@babel/helper-replace-supers": "^7.8.6",
++ "@babel/helper-simple-access": "^7.8.3",
++ "@babel/helper-split-export-declaration": "^7.8.3",
++ "@babel/template": "^7.8.6",
++ "@babel/types": "^7.9.0",
++ "lodash": "^4.17.13"
++ },
++ "dependencies": {
++ "@babel/code-frame": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
++ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
++ "dev": true,
++ "requires": {
++ "@babel/highlight": "^7.8.3"
++ }
++ },
++ "@babel/parser": {
++ "version": "7.9.4",
++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
++ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
++ "dev": true
++ },
++ "@babel/template": {
++ "version": "7.8.6",
++ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
++ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/parser": "^7.8.6",
++ "@babel/types": "^7.8.6"
++ }
++ },
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-optimise-call-expression": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz",
++ "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-plugin-utils": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
++ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
++ "dev": true
++ },
++ "@babel/helper-regex": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz",
++ "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==",
++ "dev": true,
++ "requires": {
++ "lodash": "^4.17.13"
++ }
++ },
++ "@babel/helper-remap-async-to-generator": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz",
++ "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-annotate-as-pure": "^7.8.3",
++ "@babel/helper-wrap-function": "^7.8.3",
++ "@babel/template": "^7.8.3",
++ "@babel/traverse": "^7.8.3",
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/code-frame": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
++ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
++ "dev": true,
++ "requires": {
++ "@babel/highlight": "^7.8.3"
++ }
++ },
++ "@babel/generator": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
++ "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.9.5",
++ "jsesc": "^2.5.1",
++ "lodash": "^4.17.13",
++ "source-map": "^0.5.0"
++ }
++ },
++ "@babel/parser": {
++ "version": "7.9.4",
++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
++ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
++ "dev": true
++ },
++ "@babel/template": {
++ "version": "7.8.6",
++ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
++ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/parser": "^7.8.6",
++ "@babel/types": "^7.8.6"
++ }
++ },
++ "@babel/traverse": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
++ "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/generator": "^7.9.5",
++ "@babel/helper-function-name": "^7.9.5",
++ "@babel/helper-split-export-declaration": "^7.8.3",
++ "@babel/parser": "^7.9.0",
++ "@babel/types": "^7.9.5",
++ "debug": "^4.1.0",
++ "globals": "^11.1.0",
++ "lodash": "^4.17.13"
++ }
++ },
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ },
++ "source-map": {
++ "version": "0.5.7",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
++ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
++ "dev": true
++ }
++ }
++ },
++ "@babel/helper-replace-supers": {
++ "version": "7.8.6",
++ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz",
++ "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-member-expression-to-functions": "^7.8.3",
++ "@babel/helper-optimise-call-expression": "^7.8.3",
++ "@babel/traverse": "^7.8.6",
++ "@babel/types": "^7.8.6"
++ },
++ "dependencies": {
++ "@babel/code-frame": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
++ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
++ "dev": true,
++ "requires": {
++ "@babel/highlight": "^7.8.3"
++ }
++ },
++ "@babel/generator": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
++ "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.9.5",
++ "jsesc": "^2.5.1",
++ "lodash": "^4.17.13",
++ "source-map": "^0.5.0"
++ }
++ },
++ "@babel/parser": {
++ "version": "7.9.4",
++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
++ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
++ "dev": true
++ },
++ "@babel/traverse": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
++ "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/generator": "^7.9.5",
++ "@babel/helper-function-name": "^7.9.5",
++ "@babel/helper-split-export-declaration": "^7.8.3",
++ "@babel/parser": "^7.9.0",
++ "@babel/types": "^7.9.5",
++ "debug": "^4.1.0",
++ "globals": "^11.1.0",
++ "lodash": "^4.17.13"
++ }
++ },
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ },
++ "source-map": {
++ "version": "0.5.7",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
++ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
++ "dev": true
++ }
++ }
++ },
++ "@babel/helper-simple-access": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz",
++ "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==",
++ "dev": true,
++ "requires": {
++ "@babel/template": "^7.8.3",
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/code-frame": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
++ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
++ "dev": true,
++ "requires": {
++ "@babel/highlight": "^7.8.3"
++ }
++ },
++ "@babel/parser": {
++ "version": "7.9.4",
++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
++ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
++ "dev": true
++ },
++ "@babel/template": {
++ "version": "7.8.6",
++ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
++ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/parser": "^7.8.6",
++ "@babel/types": "^7.8.6"
++ }
++ },
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-split-export-declaration": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
++ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ }
++ }
++ },
++ "@babel/helper-validator-identifier": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz",
++ "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==",
++ "dev": true
++ },
++ "@babel/helper-wrap-function": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz",
++ "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-function-name": "^7.8.3",
++ "@babel/template": "^7.8.3",
++ "@babel/traverse": "^7.8.3",
++ "@babel/types": "^7.8.3"
++ },
++ "dependencies": {
++ "@babel/code-frame": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
++ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
++ "dev": true,
++ "requires": {
++ "@babel/highlight": "^7.8.3"
++ }
++ },
++ "@babel/generator": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
++ "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.9.5",
++ "jsesc": "^2.5.1",
++ "lodash": "^4.17.13",
++ "source-map": "^0.5.0"
++ }
++ },
++ "@babel/parser": {
++ "version": "7.9.4",
++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
++ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
++ "dev": true
++ },
++ "@babel/template": {
++ "version": "7.8.6",
++ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
++ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/parser": "^7.8.6",
++ "@babel/types": "^7.8.6"
++ }
++ },
++ "@babel/traverse": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
++ "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/generator": "^7.9.5",
++ "@babel/helper-function-name": "^7.9.5",
++ "@babel/helper-split-export-declaration": "^7.8.3",
++ "@babel/parser": "^7.9.0",
++ "@babel/types": "^7.9.5",
++ "debug": "^4.1.0",
++ "globals": "^11.1.0",
++ "lodash": "^4.17.13"
++ }
++ },
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ },
++ "source-map": {
++ "version": "0.5.7",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
++ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
++ "dev": true
++ }
++ }
++ },
++ "@babel/helpers": {
++ "version": "7.9.2",
++ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz",
++ "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==",
++ "dev": true,
++ "requires": {
++ "@babel/template": "^7.8.3",
++ "@babel/traverse": "^7.9.0",
++ "@babel/types": "^7.9.0"
++ },
++ "dependencies": {
++ "@babel/code-frame": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
++ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
++ "dev": true,
++ "requires": {
++ "@babel/highlight": "^7.8.3"
++ }
++ },
++ "@babel/generator": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
++ "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
++ "dev": true,
++ "requires": {
++ "@babel/types": "^7.9.5",
++ "jsesc": "^2.5.1",
++ "lodash": "^4.17.13",
++ "source-map": "^0.5.0"
++ }
++ },
++ "@babel/parser": {
++ "version": "7.9.4",
++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
++ "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
++ "dev": true
++ },
++ "@babel/template": {
++ "version": "7.8.6",
++ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
++ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/parser": "^7.8.6",
++ "@babel/types": "^7.8.6"
++ }
++ },
++ "@babel/traverse": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
++ "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.8.3",
++ "@babel/generator": "^7.9.5",
++ "@babel/helper-function-name": "^7.9.5",
++ "@babel/helper-split-export-declaration": "^7.8.3",
++ "@babel/parser": "^7.9.0",
++ "@babel/types": "^7.9.5",
++ "debug": "^4.1.0",
++ "globals": "^11.1.0",
++ "lodash": "^4.17.13"
++ }
++ },
++ "@babel/types": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
++ "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.5",
++ "lodash": "^4.17.13",
++ "to-fast-properties": "^2.0.0"
++ }
++ },
++ "source-map": {
++ "version": "0.5.7",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
++ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
++ "dev": true
++ }
++ }
++ },
++ "@babel/highlight": {
++ "version": "7.9.0",
++ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz",
++ "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-validator-identifier": "^7.9.0",
++ "chalk": "^2.0.0",
++ "js-tokens": "^4.0.0"
++ }
++ },
++ "@babel/parser": {
++ "version": "7.3.4",
++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz",
++ "integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==",
++ "dev": true
++ },
++ "@babel/plugin-proposal-async-generator-functions": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz",
++ "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "@babel/helper-remap-async-to-generator": "^7.8.3",
++ "@babel/plugin-syntax-async-generators": "^7.8.0"
++ }
++ },
++ "@babel/plugin-proposal-json-strings": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz",
++ "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "@babel/plugin-syntax-json-strings": "^7.8.0"
++ }
++ },
++ "@babel/plugin-proposal-object-rest-spread": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz",
++ "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
++ "@babel/plugin-transform-parameters": "^7.9.5"
++ }
++ },
++ "@babel/plugin-proposal-optional-catch-binding": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz",
++ "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
++ }
++ },
++ "@babel/plugin-proposal-unicode-property-regex": {
++ "version": "7.8.8",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz",
++ "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-create-regexp-features-plugin": "^7.8.8",
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-syntax-async-generators": {
++ "version": "7.8.4",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
++ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.0"
++ }
++ },
++ "@babel/plugin-syntax-flow": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz",
++ "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-syntax-json-strings": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
++ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.0"
++ }
++ },
++ "@babel/plugin-syntax-jsx": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz",
++ "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-syntax-object-rest-spread": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
++ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.0"
++ }
++ },
++ "@babel/plugin-syntax-optional-catch-binding": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
++ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.0"
++ }
++ },
++ "@babel/plugin-transform-arrow-functions": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz",
++ "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-async-to-generator": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz",
++ "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-module-imports": "^7.8.3",
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "@babel/helper-remap-async-to-generator": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-block-scoped-functions": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz",
++ "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-block-scoping": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz",
++ "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "lodash": "^4.17.13"
++ }
++ },
++ "@babel/plugin-transform-classes": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz",
++ "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-annotate-as-pure": "^7.8.3",
++ "@babel/helper-define-map": "^7.8.3",
++ "@babel/helper-function-name": "^7.9.5",
++ "@babel/helper-optimise-call-expression": "^7.8.3",
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "@babel/helper-replace-supers": "^7.8.6",
++ "@babel/helper-split-export-declaration": "^7.8.3",
++ "globals": "^11.1.0"
++ }
++ },
++ "@babel/plugin-transform-computed-properties": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz",
++ "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-destructuring": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz",
++ "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-dotall-regex": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz",
++ "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-create-regexp-features-plugin": "^7.8.3",
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-duplicate-keys": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz",
++ "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-exponentiation-operator": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz",
++ "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3",
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-flow-strip-types": {
++ "version": "7.3.4",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.3.4.tgz",
++ "integrity": "sha512-PmQC9R7DwpBFA+7ATKMyzViz3zCaMNouzZMPZN2K5PnbBbtL3AXFYTkDk+Hey5crQq2A90UG5Uthz0mel+XZrA==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.0.0",
++ "@babel/plugin-syntax-flow": "^7.2.0"
++ }
++ },
++ "@babel/plugin-transform-for-of": {
++ "version": "7.9.0",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz",
++ "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-function-name": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz",
++ "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-function-name": "^7.8.3",
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-literals": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz",
++ "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-modules-amd": {
++ "version": "7.9.0",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz",
++ "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-module-transforms": "^7.9.0",
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "babel-plugin-dynamic-import-node": "^2.3.0"
++ }
++ },
++ "@babel/plugin-transform-modules-commonjs": {
++ "version": "7.2.0",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz",
++ "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-module-transforms": "^7.1.0",
++ "@babel/helper-plugin-utils": "^7.0.0",
++ "@babel/helper-simple-access": "^7.1.0"
++ }
++ },
++ "@babel/plugin-transform-modules-systemjs": {
++ "version": "7.9.0",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz",
++ "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-hoist-variables": "^7.8.3",
++ "@babel/helper-module-transforms": "^7.9.0",
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "babel-plugin-dynamic-import-node": "^2.3.0"
++ }
++ },
++ "@babel/plugin-transform-modules-umd": {
++ "version": "7.9.0",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz",
++ "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-module-transforms": "^7.9.0",
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-named-capturing-groups-regex": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz",
++ "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-create-regexp-features-plugin": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-new-target": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz",
++ "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-object-super": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz",
++ "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "@babel/helper-replace-supers": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-parameters": {
++ "version": "7.9.5",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz",
++ "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-get-function-arity": "^7.8.3",
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-react-jsx": {
++ "version": "7.3.0",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz",
++ "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-builder-react-jsx": "^7.3.0",
++ "@babel/helper-plugin-utils": "^7.0.0",
++ "@babel/plugin-syntax-jsx": "^7.2.0"
++ }
++ },
++ "@babel/plugin-transform-regenerator": {
++ "version": "7.8.7",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz",
++ "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==",
++ "dev": true,
++ "requires": {
++ "regenerator-transform": "^0.14.2"
++ }
++ },
++ "@babel/plugin-transform-shorthand-properties": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz",
++ "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-spread": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz",
++ "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-sticky-regex": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz",
++ "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3",
++ "@babel/helper-regex": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-template-literals": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz",
++ "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-annotate-as-pure": "^7.8.3",
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-typeof-symbol": {
++ "version": "7.8.4",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz",
++ "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/plugin-transform-unicode-regex": {
++ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz",
++ "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-create-regexp-features-plugin": "^7.8.3",
++ "@babel/helper-plugin-utils": "^7.8.3"
++ }
++ },
++ "@babel/preset-env": {
++ "version": "7.3.4",
++ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.4.tgz",
++ "integrity": "sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==",
++ "dev": true,
++ "requires": {
++ "@babel/helper-module-imports": "^7.0.0",
++ "@babel/helper-plugin-utils": "^7.0.0",
++ "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
++ "@babel/plugin-proposal-json-strings": "^7.2.0",
++ "@babel/plugin-proposal-object-rest-spread": "^7.3.4",
++ "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
++ "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
++ "@babel/plugin-syntax-async-generators": "^7.2.0",
++ "@babel/plugin-syntax-json-strings": "^7.2.0",
++ "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
++ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
++ "@babel/plugin-transform-arrow-functions": "^7.2.0",
++ "@babel/plugin-transform-async-to-generator": "^7.3.4",
++ "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
++ "@babel/plugin-transform-block-scoping": "^7.3.4",
++ "@babel/plugin-transform-classes": "^7.3.4",
++ "@babel/plugin-transform-computed-properties": "^7.2.0",
++ "@babel/plugin-transform-destructuring": "^7.2.0",
++ "@babel/plugin-transform-dotall-regex": "^7.2.0",
++ "@babel/plugin-transform-duplicate-keys": "^7.2.0",
++ "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
++ "@babel/plugin-transform-for-of": "^7.2.0",
++ "@babel/plugin-transform-function-name": "^7.2.0",
++ "@babel/plugin-transform-literals": "^7.2.0",
++ "@babel/plugin-transform-modules-amd": "^7.2.0",
++ "@babel/plugin-transform-modules-commonjs": "^7.2.0",
++ "@babel/plugin-transform-modules-systemjs": "^7.3.4",
++ "@babel/plugin-transform-modules-umd": "^7.2.0",
++ "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0",
++ "@babel/plugin-transform-new-target": "^7.0.0",
++ "@babel/plugin-transform-object-super": "^7.2.0",
++ "@babel/plugin-transform-parameters": "^7.2.0",
++ "@babel/plugin-transform-regenerator": "^7.3.4",
++ "@babel/plugin-transform-shorthand-properties": "^7.2.0",
++ "@babel/plugin-transform-spread": "^7.2.0",
++ "@babel/plugin-transform-sticky-regex": "^7.2.0",
++ "@babel/plugin-transform-template-literals": "^7.2.0",
++ "@babel/plugin-transform-typeof-symbol": "^7.2.0",
++ "@babel/plugin-transform-unicode-regex": "^7.2.0",
++ "browserslist": "^4.3.4",
++ "invariant": "^2.2.2",
++ "js-levenshtein": "^1.1.3",
++ "semver": "^5.3.0"
++ }
++ },
++ "@babel/runtime": {
++ "version": "7.3.4",
++ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz",
++ "integrity": "sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==",
++ "dev": true,
++ "requires": {
++ "regenerator-runtime": "^0.12.0"
++ },
++ "dependencies": {
++ "regenerator-runtime": {
++ "version": "0.12.1",
++ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
++ "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==",
++ "dev": true
++ }
++ }
++ },
++ "@babel/template": {
++ "version": "7.2.2",
++ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz",
++ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.0.0",
++ "@babel/parser": "^7.2.2",
++ "@babel/types": "^7.2.2"
++ }
++ },
++ "@babel/traverse": {
++ "version": "7.3.4",
++ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz",
++ "integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.0.0",
++ "@babel/generator": "^7.3.4",
++ "@babel/helper-function-name": "^7.1.0",
++ "@babel/helper-split-export-declaration": "^7.0.0",
++ "@babel/parser": "^7.3.4",
++ "@babel/types": "^7.3.4",
++ "debug": "^4.1.0",
++ "globals": "^11.1.0",
++ "lodash": "^4.17.11"
++ }
++ },
++ "@babel/types": {
++ "version": "7.3.4",
++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz",
++ "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==",
++ "dev": true,
++ "requires": {
++ "esutils": "^2.0.2",
++ "lodash": "^4.17.11",
++ "to-fast-properties": "^2.0.0"
++ }
++ },
++ "@iarna/toml": {
++ "version": "2.2.5",
++ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
++ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
++ "dev": true
++ },
++ "@mrmlnc/readdir-enhanced": {
++ "version": "2.2.1",
++ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
++ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
++ "dev": true,
++ "requires": {
++ "call-me-maybe": "^1.0.1",
++ "glob-to-regexp": "^0.3.0"
++ }
++ },
++ "@nodelib/fs.stat": {
++ "version": "1.1.3",
++ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
++ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
++ "dev": true
++ },
++ "@parcel/fs": {
++ "version": "1.11.0",
++ "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz",
++ "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==",
++ "dev": true,
++ "requires": {
++ "@parcel/utils": "^1.11.0",
++ "mkdirp": "^0.5.1",
++ "rimraf": "^2.6.2"
++ }
++ },
++ "@parcel/logger": {
++ "version": "1.11.1",
++ "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz",
++ "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==",
++ "dev": true,
++ "requires": {
++ "@parcel/workers": "^1.11.0",
++ "chalk": "^2.1.0",
++ "grapheme-breaker": "^0.3.2",
++ "ora": "^2.1.0",
++ "strip-ansi": "^4.0.0"
++ }
++ },
++ "@parcel/utils": {
++ "version": "1.11.0",
++ "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz",
++ "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==",
++ "dev": true
++ },
++ "@parcel/watcher": {
++ "version": "1.12.1",
++ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz",
++ "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==",
++ "dev": true,
++ "requires": {
++ "@parcel/utils": "^1.11.0",
++ "chokidar": "^2.1.5"
++ }
++ },
++ "@parcel/workers": {
++ "version": "1.11.0",
++ "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz",
++ "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==",
++ "dev": true,
++ "requires": {
++ "@parcel/utils": "^1.11.0",
++ "physical-cpu-count": "^2.0.0"
++ }
++ },
++ "@types/q": {
++ "version": "1.5.2",
++ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz",
++ "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==",
++ "dev": true
++ },
++ "abab": {
++ "version": "2.0.3",
++ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz",
++ "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==",
++ "dev": true
++ },
++ "abbrev": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
++ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
++ "dev": true
++ },
++ "acorn": {
++ "version": "7.1.1",
++ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
++ "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
++ "dev": true
++ },
++ "acorn-globals": {
++ "version": "4.3.4",
++ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz",
++ "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
++ "dev": true,
++ "requires": {
++ "acorn": "^6.0.1",
++ "acorn-walk": "^6.0.1"
++ },
++ "dependencies": {
++ "acorn": {
++ "version": "6.4.1",
++ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
++ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
++ "dev": true
++ }
++ }
++ },
++ "acorn-walk": {
++ "version": "6.2.0",
++ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
++ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
++ "dev": true
++ },
++ "ajv": {
++ "version": "6.12.2",
++ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
++ "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
++ "requires": {
++ "fast-deep-equal": "^3.1.1",
++ "fast-json-stable-stringify": "^2.0.0",
++ "json-schema-traverse": "^0.4.1",
++ "uri-js": "^4.2.2"
++ }
++ },
++ "alphanum-sort": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
++ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
++ "dev": true
++ },
++ "ansi-regex": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
++ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
++ "dev": true
++ },
++ "ansi-styles": {
++ "version": "3.2.1",
++ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
++ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
++ "dev": true,
++ "requires": {
++ "color-convert": "^1.9.0"
++ }
++ },
++ "ansi-to-html": {
++ "version": "0.6.14",
++ "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz",
++ "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==",
++ "dev": true,
++ "requires": {
++ "entities": "^1.1.2"
++ },
++ "dependencies": {
++ "entities": {
++ "version": "1.1.2",
++ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
++ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
++ "dev": true
++ }
++ }
++ },
++ "anymatch": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
++ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
++ "dev": true,
++ "requires": {
++ "micromatch": "^3.1.4",
++ "normalize-path": "^2.1.1"
++ },
++ "dependencies": {
++ "normalize-path": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
++ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
++ "dev": true,
++ "requires": {
++ "remove-trailing-separator": "^1.0.1"
++ }
++ }
++ }
++ },
++ "argparse": {
++ "version": "1.0.10",
++ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
++ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
++ "dev": true,
++ "requires": {
++ "sprintf-js": "~1.0.2"
++ }
++ },
++ "arr-diff": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
++ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
++ "dev": true
++ },
++ "arr-flatten": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
++ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
++ "dev": true
++ },
++ "arr-union": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
++ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
++ "dev": true
++ },
++ "array-equal": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
++ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
++ "dev": true
++ },
++ "array-unique": {
++ "version": "0.3.2",
++ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
++ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
++ "dev": true
++ },
++ "asn1": {
++ "version": "0.2.4",
++ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
++ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
++ "requires": {
++ "safer-buffer": "~2.1.0"
++ }
++ },
++ "asn1.js": {
++ "version": "4.10.1",
++ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
++ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
++ "dev": true,
++ "requires": {
++ "bn.js": "^4.0.0",
++ "inherits": "^2.0.1",
++ "minimalistic-assert": "^1.0.0"
++ }
++ },
++ "assert": {
++ "version": "1.5.0",
++ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
++ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
++ "dev": true,
++ "requires": {
++ "object-assign": "^4.1.1",
++ "util": "0.10.3"
++ },
++ "dependencies": {
++ "inherits": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
++ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
++ "dev": true
++ },
++ "util": {
++ "version": "0.10.3",
++ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
++ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
++ "dev": true,
++ "requires": {
++ "inherits": "2.0.1"
++ }
++ }
++ }
++ },
++ "assert-plus": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
++ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
++ },
++ "assign-symbols": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
++ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
++ "dev": true
++ },
++ "async-each": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
++ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
++ "dev": true
++ },
++ "async-limiter": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
++ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
++ "dev": true
++ },
++ "asynckit": {
++ "version": "0.4.0",
++ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
++ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
++ },
++ "atob": {
++ "version": "2.1.2",
++ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
++ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
++ "dev": true
++ },
++ "aws-sign2": {
++ "version": "0.7.0",
++ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
++ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
++ },
++ "aws4": {
++ "version": "1.9.1",
++ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
++ "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
++ },
++ "babel-plugin-dynamic-import-node": {
++ "version": "2.3.3",
++ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
++ "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
++ "dev": true,
++ "requires": {
++ "object.assign": "^4.1.0"
++ }
++ },
++ "babel-runtime": {
++ "version": "6.26.0",
++ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
++ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
++ "dev": true,
++ "requires": {
++ "core-js": "^2.4.0",
++ "regenerator-runtime": "^0.11.0"
++ },
++ "dependencies": {
++ "regenerator-runtime": {
++ "version": "0.11.1",
++ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
++ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
++ "dev": true
++ }
++ }
++ },
++ "babel-types": {
++ "version": "6.26.0",
++ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
++ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
++ "dev": true,
++ "requires": {
++ "babel-runtime": "^6.26.0",
++ "esutils": "^2.0.2",
++ "lodash": "^4.17.4",
++ "to-fast-properties": "^1.0.3"
++ },
++ "dependencies": {
++ "to-fast-properties": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
++ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
++ "dev": true
++ }
++ }
++ },
++ "babylon-walk": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz",
++ "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=",
++ "dev": true,
++ "requires": {
++ "babel-runtime": "^6.11.6",
++ "babel-types": "^6.15.0",
++ "lodash.clone": "^4.5.0"
++ }
++ },
+ "balanced-match": {
+ "version": "1.0.0",
+- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
++ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
++ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
++ "dev": true
++ },
++ "base": {
++ "version": "0.11.2",
++ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
++ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
++ "dev": true,
++ "requires": {
++ "cache-base": "^1.0.1",
++ "class-utils": "^0.3.5",
++ "component-emitter": "^1.2.1",
++ "define-property": "^1.0.0",
++ "isobject": "^3.0.1",
++ "mixin-deep": "^1.2.0",
++ "pascalcase": "^0.1.1"
++ },
++ "dependencies": {
++ "define-property": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
++ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
++ "dev": true,
++ "requires": {
++ "is-descriptor": "^1.0.0"
++ }
++ },
++ "is-accessor-descriptor": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
++ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
++ "dev": true,
++ "requires": {
++ "kind-of": "^6.0.0"
++ }
++ },
++ "is-data-descriptor": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
++ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
++ "dev": true,
++ "requires": {
++ "kind-of": "^6.0.0"
++ }
++ },
++ "is-descriptor": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
++ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
++ "dev": true,
++ "requires": {
++ "is-accessor-descriptor": "^1.0.0",
++ "is-data-descriptor": "^1.0.0",
++ "kind-of": "^6.0.2"
++ }
++ }
++ }
++ },
++ "base64-js": {
++ "version": "1.3.1",
++ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
++ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
++ "dev": true
++ },
++ "bcrypt-pbkdf": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
++ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
++ "requires": {
++ "tweetnacl": "^0.14.3"
++ }
++ },
++ "binary-extensions": {
++ "version": "1.13.1",
++ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
++ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
++ "dev": true
++ },
++ "bindings": {
++ "version": "1.5.0",
++ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
++ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
++ "dev": true,
++ "requires": {
++ "file-uri-to-path": "1.0.0"
++ }
++ },
++ "bn.js": {
++ "version": "4.11.8",
++ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
++ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
++ "dev": true
++ },
++ "boolbase": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
++ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
++ "dev": true
++ },
++ "brace-expansion": {
++ "version": "1.1.11",
++ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
++ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
++ "dev": true,
++ "requires": {
++ "balanced-match": "^1.0.0",
++ "concat-map": "0.0.1"
++ }
++ },
++ "braces": {
++ "version": "2.3.2",
++ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
++ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
++ "dev": true,
++ "requires": {
++ "arr-flatten": "^1.1.0",
++ "array-unique": "^0.3.2",
++ "extend-shallow": "^2.0.1",
++ "fill-range": "^4.0.0",
++ "isobject": "^3.0.1",
++ "repeat-element": "^1.1.2",
++ "snapdragon": "^0.8.1",
++ "snapdragon-node": "^2.0.1",
++ "split-string": "^3.0.2",
++ "to-regex": "^3.0.1"
++ },
++ "dependencies": {
++ "extend-shallow": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
++ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
++ "dev": true,
++ "requires": {
++ "is-extendable": "^0.1.0"
++ }
++ }
++ }
++ },
++ "brfs": {
++ "version": "1.6.1",
++ "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz",
++ "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==",
++ "dev": true,
++ "requires": {
++ "quote-stream": "^1.0.1",
++ "resolve": "^1.1.5",
++ "static-module": "^2.2.0",
++ "through2": "^2.0.0"
++ }
++ },
++ "brorand": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
++ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
++ "dev": true
++ },
++ "browser-process-hrtime": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
++ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
++ "dev": true
++ },
++ "browserify-aes": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
++ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
++ "dev": true,
++ "requires": {
++ "buffer-xor": "^1.0.3",
++ "cipher-base": "^1.0.0",
++ "create-hash": "^1.1.0",
++ "evp_bytestokey": "^1.0.3",
++ "inherits": "^2.0.1",
++ "safe-buffer": "^5.0.1"
++ }
++ },
++ "browserify-cipher": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
++ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
++ "dev": true,
++ "requires": {
++ "browserify-aes": "^1.0.4",
++ "browserify-des": "^1.0.0",
++ "evp_bytestokey": "^1.0.0"
++ }
++ },
++ "browserify-des": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
++ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
++ "dev": true,
++ "requires": {
++ "cipher-base": "^1.0.1",
++ "des.js": "^1.0.0",
++ "inherits": "^2.0.1",
++ "safe-buffer": "^5.1.2"
++ }
++ },
++ "browserify-rsa": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
++ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
++ "dev": true,
++ "requires": {
++ "bn.js": "^4.1.0",
++ "randombytes": "^2.0.1"
++ }
++ },
++ "browserify-sign": {
++ "version": "4.0.4",
++ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
++ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
++ "dev": true,
++ "requires": {
++ "bn.js": "^4.1.1",
++ "browserify-rsa": "^4.0.0",
++ "create-hash": "^1.1.0",
++ "create-hmac": "^1.1.2",
++ "elliptic": "^6.0.0",
++ "inherits": "^2.0.1",
++ "parse-asn1": "^5.0.0"
++ }
++ },
++ "browserify-zlib": {
++ "version": "0.2.0",
++ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
++ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
++ "dev": true,
++ "requires": {
++ "pako": "~1.0.5"
++ },
++ "dependencies": {
++ "pako": {
++ "version": "1.0.11",
++ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
++ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
++ "dev": true
++ }
++ }
++ },
++ "browserslist": {
++ "version": "4.12.0",
++ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz",
++ "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==",
++ "dev": true,
++ "requires": {
++ "caniuse-lite": "^1.0.30001043",
++ "electron-to-chromium": "^1.3.413",
++ "node-releases": "^1.1.53",
++ "pkg-up": "^2.0.0"
++ }
++ },
++ "buffer": {
++ "version": "4.9.2",
++ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
++ "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
++ "dev": true,
++ "requires": {
++ "base64-js": "^1.0.2",
++ "ieee754": "^1.1.4",
++ "isarray": "^1.0.0"
++ }
++ },
++ "buffer-equal": {
++ "version": "0.0.1",
++ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
++ "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=",
++ "dev": true
++ },
++ "buffer-from": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
++ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
++ "dev": true
++ },
++ "buffer-xor": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
++ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
++ "dev": true
++ },
++ "builtin-status-codes": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
++ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
++ "dev": true
++ },
++ "cache-base": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
++ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
++ "dev": true,
++ "requires": {
++ "collection-visit": "^1.0.0",
++ "component-emitter": "^1.2.1",
++ "get-value": "^2.0.6",
++ "has-value": "^1.0.0",
++ "isobject": "^3.0.1",
++ "set-value": "^2.0.0",
++ "to-object-path": "^0.3.0",
++ "union-value": "^1.0.0",
++ "unset-value": "^1.0.0"
++ }
++ },
++ "call-me-maybe": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
++ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
++ "dev": true
++ },
++ "caller-callsite": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
++ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
++ "dev": true,
++ "requires": {
++ "callsites": "^2.0.0"
++ }
++ },
++ "caller-path": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
++ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
++ "dev": true,
++ "requires": {
++ "caller-callsite": "^2.0.0"
++ }
++ },
++ "callsites": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
++ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
++ "dev": true
++ },
++ "camelcase": {
++ "version": "5.3.1",
++ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
++ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
++ "dev": true
++ },
++ "caniuse-api": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
++ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
++ "dev": true,
++ "requires": {
++ "browserslist": "^4.0.0",
++ "caniuse-lite": "^1.0.0",
++ "lodash.memoize": "^4.1.2",
++ "lodash.uniq": "^4.5.0"
++ }
++ },
++ "caniuse-lite": {
++ "version": "1.0.30001048",
++ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz",
++ "integrity": "sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg==",
++ "dev": true
++ },
++ "caseless": {
++ "version": "0.12.0",
++ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
++ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
++ },
++ "chalk": {
++ "version": "2.4.2",
++ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
++ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
++ "dev": true,
++ "requires": {
++ "ansi-styles": "^3.2.1",
++ "escape-string-regexp": "^1.0.5",
++ "supports-color": "^5.3.0"
++ },
++ "dependencies": {
++ "supports-color": {
++ "version": "5.5.0",
++ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
++ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
++ "dev": true,
++ "requires": {
++ "has-flag": "^3.0.0"
++ }
++ }
++ }
++ },
++ "chokidar": {
++ "version": "2.1.8",
++ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
++ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
++ "dev": true,
++ "requires": {
++ "anymatch": "^2.0.0",
++ "async-each": "^1.0.1",
++ "braces": "^2.3.2",
++ "fsevents": "^1.2.7",
++ "glob-parent": "^3.1.0",
++ "inherits": "^2.0.3",
++ "is-binary-path": "^1.0.0",
++ "is-glob": "^4.0.0",
++ "normalize-path": "^3.0.0",
++ "path-is-absolute": "^1.0.0",
++ "readdirp": "^2.2.1",
++ "upath": "^1.1.1"
++ },
++ "dependencies": {
++ "fsevents": {
++ "version": "1.2.12",
++ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
++ "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "bindings": "^1.5.0",
++ "nan": "^2.12.1",
++ "node-pre-gyp": "*"
++ },
++ "dependencies": {
++ "abbrev": {
++ "version": "1.1.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "ansi-regex": {
++ "version": "2.1.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "aproba": {
++ "version": "1.2.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "are-we-there-yet": {
++ "version": "1.1.5",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "delegates": "^1.0.0",
++ "readable-stream": "^2.0.6"
++ }
++ },
++ "balanced-match": {
++ "version": "1.0.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "brace-expansion": {
++ "version": "1.1.11",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "balanced-match": "^1.0.0",
++ "concat-map": "0.0.1"
++ }
++ },
++ "chownr": {
++ "version": "1.1.4",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "code-point-at": {
++ "version": "1.1.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "concat-map": {
++ "version": "0.0.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "console-control-strings": {
++ "version": "1.1.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "core-util-is": {
++ "version": "1.0.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "debug": {
++ "version": "3.2.6",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "ms": "^2.1.1"
++ }
++ },
++ "deep-extend": {
++ "version": "0.6.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "delegates": {
++ "version": "1.0.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "detect-libc": {
++ "version": "1.0.3",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "fs-minipass": {
++ "version": "1.2.7",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "minipass": "^2.6.0"
++ }
++ },
++ "fs.realpath": {
++ "version": "1.0.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "gauge": {
++ "version": "2.7.4",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "aproba": "^1.0.3",
++ "console-control-strings": "^1.0.0",
++ "has-unicode": "^2.0.0",
++ "object-assign": "^4.1.0",
++ "signal-exit": "^3.0.0",
++ "string-width": "^1.0.1",
++ "strip-ansi": "^3.0.1",
++ "wide-align": "^1.1.0"
++ }
++ },
++ "glob": {
++ "version": "7.1.6",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "fs.realpath": "^1.0.0",
++ "inflight": "^1.0.4",
++ "inherits": "2",
++ "minimatch": "^3.0.4",
++ "once": "^1.3.0",
++ "path-is-absolute": "^1.0.0"
++ }
++ },
++ "has-unicode": {
++ "version": "2.0.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "iconv-lite": {
++ "version": "0.4.24",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "safer-buffer": ">= 2.1.2 < 3"
++ }
++ },
++ "ignore-walk": {
++ "version": "3.0.3",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "minimatch": "^3.0.4"
++ }
++ },
++ "inflight": {
++ "version": "1.0.6",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "once": "^1.3.0",
++ "wrappy": "1"
++ }
++ },
++ "inherits": {
++ "version": "2.0.4",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "ini": {
++ "version": "1.3.5",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "is-fullwidth-code-point": {
++ "version": "1.0.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "number-is-nan": "^1.0.0"
++ }
++ },
++ "isarray": {
++ "version": "1.0.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "minimatch": {
++ "version": "3.0.4",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "brace-expansion": "^1.1.7"
++ }
++ },
++ "minimist": {
++ "version": "1.2.5",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "minipass": {
++ "version": "2.9.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "safe-buffer": "^5.1.2",
++ "yallist": "^3.0.0"
++ }
++ },
++ "minizlib": {
++ "version": "1.3.3",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "minipass": "^2.9.0"
++ }
++ },
++ "mkdirp": {
++ "version": "0.5.3",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "minimist": "^1.2.5"
++ }
++ },
++ "ms": {
++ "version": "2.1.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "needle": {
++ "version": "2.3.3",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "debug": "^3.2.6",
++ "iconv-lite": "^0.4.4",
++ "sax": "^1.2.4"
++ }
++ },
++ "node-pre-gyp": {
++ "version": "0.14.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "detect-libc": "^1.0.2",
++ "mkdirp": "^0.5.1",
++ "needle": "^2.2.1",
++ "nopt": "^4.0.1",
++ "npm-packlist": "^1.1.6",
++ "npmlog": "^4.0.2",
++ "rc": "^1.2.7",
++ "rimraf": "^2.6.1",
++ "semver": "^5.3.0",
++ "tar": "^4.4.2"
++ }
++ },
++ "nopt": {
++ "version": "4.0.3",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "abbrev": "1",
++ "osenv": "^0.1.4"
++ }
++ },
++ "npm-bundled": {
++ "version": "1.1.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "npm-normalize-package-bin": "^1.0.1"
++ }
++ },
++ "npm-normalize-package-bin": {
++ "version": "1.0.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "npm-packlist": {
++ "version": "1.4.8",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "ignore-walk": "^3.0.1",
++ "npm-bundled": "^1.0.1",
++ "npm-normalize-package-bin": "^1.0.1"
++ }
++ },
++ "npmlog": {
++ "version": "4.1.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "are-we-there-yet": "~1.1.2",
++ "console-control-strings": "~1.1.0",
++ "gauge": "~2.7.3",
++ "set-blocking": "~2.0.0"
++ }
++ },
++ "number-is-nan": {
++ "version": "1.0.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "object-assign": {
++ "version": "4.1.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "once": {
++ "version": "1.4.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "wrappy": "1"
++ }
++ },
++ "os-homedir": {
++ "version": "1.0.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "os-tmpdir": {
++ "version": "1.0.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "osenv": {
++ "version": "0.1.5",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "os-homedir": "^1.0.0",
++ "os-tmpdir": "^1.0.0"
++ }
++ },
++ "path-is-absolute": {
++ "version": "1.0.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "process-nextick-args": {
++ "version": "2.0.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "rc": {
++ "version": "1.2.8",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "deep-extend": "^0.6.0",
++ "ini": "~1.3.0",
++ "minimist": "^1.2.0",
++ "strip-json-comments": "~2.0.1"
++ }
++ },
++ "readable-stream": {
++ "version": "2.3.7",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "core-util-is": "~1.0.0",
++ "inherits": "~2.0.3",
++ "isarray": "~1.0.0",
++ "process-nextick-args": "~2.0.0",
++ "safe-buffer": "~5.1.1",
++ "string_decoder": "~1.1.1",
++ "util-deprecate": "~1.0.1"
++ }
++ },
++ "rimraf": {
++ "version": "2.7.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "glob": "^7.1.3"
++ }
++ },
++ "safe-buffer": {
++ "version": "5.1.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "safer-buffer": {
++ "version": "2.1.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "sax": {
++ "version": "1.2.4",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "semver": {
++ "version": "5.7.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "set-blocking": {
++ "version": "2.0.0",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "signal-exit": {
++ "version": "3.0.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "string-width": {
++ "version": "1.0.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "code-point-at": "^1.0.0",
++ "is-fullwidth-code-point": "^1.0.0",
++ "strip-ansi": "^3.0.0"
++ }
++ },
++ "string_decoder": {
++ "version": "1.1.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "safe-buffer": "~5.1.0"
++ }
++ },
++ "strip-ansi": {
++ "version": "3.0.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "ansi-regex": "^2.0.0"
++ }
++ },
++ "strip-json-comments": {
++ "version": "2.0.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "tar": {
++ "version": "4.4.13",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "chownr": "^1.1.1",
++ "fs-minipass": "^1.2.5",
++ "minipass": "^2.8.6",
++ "minizlib": "^1.2.1",
++ "mkdirp": "^0.5.0",
++ "safe-buffer": "^5.1.2",
++ "yallist": "^3.0.3"
++ }
++ },
++ "util-deprecate": {
++ "version": "1.0.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "wide-align": {
++ "version": "1.1.3",
++ "bundled": true,
++ "dev": true,
++ "optional": true,
++ "requires": {
++ "string-width": "^1.0.2 || 2"
++ }
++ },
++ "wrappy": {
++ "version": "1.0.2",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ },
++ "yallist": {
++ "version": "3.1.1",
++ "bundled": true,
++ "dev": true,
++ "optional": true
++ }
++ }
++ }
++ }
++ },
++ "cipher-base": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
++ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
++ "dev": true,
++ "requires": {
++ "inherits": "^2.0.1",
++ "safe-buffer": "^5.0.1"
++ }
++ },
++ "class-utils": {
++ "version": "0.3.6",
++ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
++ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
++ "dev": true,
++ "requires": {
++ "arr-union": "^3.1.0",
++ "define-property": "^0.2.5",
++ "isobject": "^3.0.0",
++ "static-extend": "^0.1.1"
++ },
++ "dependencies": {
++ "define-property": {
++ "version": "0.2.5",
++ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
++ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
++ "dev": true,
++ "requires": {
++ "is-descriptor": "^0.1.0"
++ }
++ }
++ }
++ },
++ "cli-cursor": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
++ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
++ "dev": true,
++ "requires": {
++ "restore-cursor": "^2.0.0"
++ }
++ },
++ "cli-spinners": {
++ "version": "1.3.1",
++ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz",
++ "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==",
++ "dev": true
++ },
++ "cliui": {
++ "version": "5.0.0",
++ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
++ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
++ "dev": true,
++ "requires": {
++ "string-width": "^3.1.0",
++ "strip-ansi": "^5.2.0",
++ "wrap-ansi": "^5.1.0"
++ },
++ "dependencies": {
++ "ansi-regex": {
++ "version": "4.1.0",
++ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
++ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
++ "dev": true
++ },
++ "strip-ansi": {
++ "version": "5.2.0",
++ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
++ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
++ "dev": true,
++ "requires": {
++ "ansi-regex": "^4.1.0"
++ }
++ }
++ }
++ },
++ "clone": {
++ "version": "2.1.2",
++ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
++ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
++ "dev": true
++ },
++ "clones": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/clones/-/clones-1.2.0.tgz",
++ "integrity": "sha512-FXDYw4TjR8wgPZYui2LeTqWh1BLpfQ8lB6upMtlpDF6WlOOxghmTTxWyngdKTgozqBgKnHbTVwTE+hOHqAykuQ==",
++ "dev": true
++ },
++ "coa": {
++ "version": "2.0.2",
++ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
++ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
++ "dev": true,
++ "requires": {
++ "@types/q": "^1.5.1",
++ "chalk": "^2.4.1",
++ "q": "^1.1.2"
++ }
++ },
++ "collection-visit": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
++ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
++ "dev": true,
++ "requires": {
++ "map-visit": "^1.0.0",
++ "object-visit": "^1.0.0"
++ }
++ },
++ "color": {
++ "version": "3.1.2",
++ "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz",
++ "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==",
++ "dev": true,
++ "requires": {
++ "color-convert": "^1.9.1",
++ "color-string": "^1.5.2"
++ }
++ },
++ "color-convert": {
++ "version": "1.9.3",
++ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
++ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
++ "dev": true,
++ "requires": {
++ "color-name": "1.1.3"
++ }
++ },
++ "color-name": {
++ "version": "1.1.3",
++ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
++ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
++ "dev": true
++ },
++ "color-string": {
++ "version": "1.5.3",
++ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
++ "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
++ "dev": true,
++ "requires": {
++ "color-name": "^1.0.0",
++ "simple-swizzle": "^0.2.2"
++ }
++ },
++ "combined-stream": {
++ "version": "1.0.8",
++ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
++ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
++ "requires": {
++ "delayed-stream": "~1.0.0"
++ }
++ },
++ "command-exists": {
++ "version": "1.2.9",
++ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
++ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
++ "dev": true
++ },
++ "commander": {
++ "version": "2.20.3",
++ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
++ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
++ "dev": true
++ },
++ "component-emitter": {
++ "version": "1.3.0",
++ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
++ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
++ "dev": true
++ },
++ "concat-map": {
++ "version": "0.0.1",
++ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
++ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
++ "dev": true
++ },
++ "concat-stream": {
++ "version": "1.6.2",
++ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
++ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
++ "dev": true,
++ "requires": {
++ "buffer-from": "^1.0.0",
++ "inherits": "^2.0.3",
++ "readable-stream": "^2.2.2",
++ "typedarray": "^0.0.6"
++ }
++ },
++ "config-chain": {
++ "version": "1.1.12",
++ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
++ "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
++ "dev": true,
++ "requires": {
++ "ini": "^1.3.4",
++ "proto-list": "~1.2.1"
++ }
++ },
++ "console-browserify": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
++ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
++ "dev": true
++ },
++ "constants-browserify": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
++ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
++ "dev": true
++ },
++ "convert-source-map": {
++ "version": "1.7.0",
++ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
++ "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
++ "dev": true,
++ "requires": {
++ "safe-buffer": "~5.1.1"
++ }
++ },
++ "copy-descriptor": {
++ "version": "0.1.1",
++ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
++ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
++ "dev": true
++ },
++ "core-js": {
++ "version": "2.6.11",
++ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
++ "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==",
++ "dev": true
++ },
++ "core-util-is": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
++ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
++ },
++ "cosmiconfig": {
++ "version": "5.2.1",
++ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
++ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
++ "dev": true,
++ "requires": {
++ "import-fresh": "^2.0.0",
++ "is-directory": "^0.3.1",
++ "js-yaml": "^3.13.1",
++ "parse-json": "^4.0.0"
++ }
++ },
++ "create-ecdh": {
++ "version": "4.0.3",
++ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
++ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
++ "dev": true,
++ "requires": {
++ "bn.js": "^4.1.0",
++ "elliptic": "^6.0.0"
++ }
++ },
++ "create-hash": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
++ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
++ "dev": true,
++ "requires": {
++ "cipher-base": "^1.0.1",
++ "inherits": "^2.0.1",
++ "md5.js": "^1.3.4",
++ "ripemd160": "^2.0.1",
++ "sha.js": "^2.4.0"
++ }
++ },
++ "create-hmac": {
++ "version": "1.1.7",
++ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
++ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
++ "dev": true,
++ "requires": {
++ "cipher-base": "^1.0.3",
++ "create-hash": "^1.1.0",
++ "inherits": "^2.0.1",
++ "ripemd160": "^2.0.0",
++ "safe-buffer": "^5.0.1",
++ "sha.js": "^2.4.8"
++ }
++ },
++ "cross-spawn": {
++ "version": "6.0.5",
++ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
++ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
++ "dev": true,
++ "requires": {
++ "nice-try": "^1.0.4",
++ "path-key": "^2.0.1",
++ "semver": "^5.5.0",
++ "shebang-command": "^1.2.0",
++ "which": "^1.2.9"
++ }
++ },
++ "crypto-browserify": {
++ "version": "3.12.0",
++ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
++ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
++ "dev": true,
++ "requires": {
++ "browserify-cipher": "^1.0.0",
++ "browserify-sign": "^4.0.0",
++ "create-ecdh": "^4.0.0",
++ "create-hash": "^1.1.0",
++ "create-hmac": "^1.1.0",
++ "diffie-hellman": "^5.0.0",
++ "inherits": "^2.0.1",
++ "pbkdf2": "^3.0.3",
++ "public-encrypt": "^4.0.0",
++ "randombytes": "^2.0.0",
++ "randomfill": "^1.0.3"
++ }
++ },
++ "css-color-names": {
++ "version": "0.0.4",
++ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
++ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
++ "dev": true
++ },
++ "css-declaration-sorter": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
++ "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.1",
++ "timsort": "^0.3.0"
++ }
++ },
++ "css-modules-loader-core": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz",
++ "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=",
++ "dev": true,
++ "requires": {
++ "icss-replace-symbols": "1.1.0",
++ "postcss": "6.0.1",
++ "postcss-modules-extract-imports": "1.1.0",
++ "postcss-modules-local-by-default": "1.2.0",
++ "postcss-modules-scope": "1.1.0",
++ "postcss-modules-values": "1.3.0"
++ },
++ "dependencies": {
++ "ansi-regex": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
++ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
++ "dev": true
++ },
++ "ansi-styles": {
++ "version": "2.2.1",
++ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
++ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
++ "dev": true
++ },
++ "chalk": {
++ "version": "1.1.3",
++ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
++ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
++ "dev": true,
++ "requires": {
++ "ansi-styles": "^2.2.1",
++ "escape-string-regexp": "^1.0.2",
++ "has-ansi": "^2.0.0",
++ "strip-ansi": "^3.0.0",
++ "supports-color": "^2.0.0"
++ },
++ "dependencies": {
++ "supports-color": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
++ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
++ "dev": true
++ }
++ }
++ },
++ "has-flag": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
++ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
++ "dev": true
++ },
++ "postcss": {
++ "version": "6.0.1",
++ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz",
++ "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=",
++ "dev": true,
++ "requires": {
++ "chalk": "^1.1.3",
++ "source-map": "^0.5.6",
++ "supports-color": "^3.2.3"
++ }
++ },
++ "source-map": {
++ "version": "0.5.7",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
++ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
++ "dev": true
++ },
++ "strip-ansi": {
++ "version": "3.0.1",
++ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
++ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
++ "dev": true,
++ "requires": {
++ "ansi-regex": "^2.0.0"
++ }
++ },
++ "supports-color": {
++ "version": "3.2.3",
++ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
++ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
++ "dev": true,
++ "requires": {
++ "has-flag": "^1.0.0"
++ }
++ }
++ }
++ },
++ "css-select": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
++ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
++ "dev": true,
++ "requires": {
++ "boolbase": "^1.0.0",
++ "css-what": "^3.2.1",
++ "domutils": "^1.7.0",
++ "nth-check": "^1.0.2"
++ }
++ },
++ "css-select-base-adapter": {
++ "version": "0.1.1",
++ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
++ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
++ "dev": true
++ },
++ "css-selector-tokenizer": {
++ "version": "0.7.2",
++ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz",
++ "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==",
++ "dev": true,
++ "requires": {
++ "cssesc": "^3.0.0",
++ "fastparse": "^1.1.2",
++ "regexpu-core": "^4.6.0"
++ }
++ },
++ "css-tree": {
++ "version": "1.0.0-alpha.37",
++ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
++ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
++ "dev": true,
++ "requires": {
++ "mdn-data": "2.0.4",
++ "source-map": "^0.6.1"
++ }
++ },
++ "css-what": {
++ "version": "3.2.1",
++ "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz",
++ "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==",
++ "dev": true
++ },
++ "cssesc": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
++ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
++ "dev": true
++ },
++ "cssnano": {
++ "version": "4.1.10",
++ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
++ "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
++ "dev": true,
++ "requires": {
++ "cosmiconfig": "^5.0.0",
++ "cssnano-preset-default": "^4.0.7",
++ "is-resolvable": "^1.0.0",
++ "postcss": "^7.0.0"
++ }
++ },
++ "cssnano-preset-default": {
++ "version": "4.0.7",
++ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
++ "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==",
++ "dev": true,
++ "requires": {
++ "css-declaration-sorter": "^4.0.1",
++ "cssnano-util-raw-cache": "^4.0.1",
++ "postcss": "^7.0.0",
++ "postcss-calc": "^7.0.1",
++ "postcss-colormin": "^4.0.3",
++ "postcss-convert-values": "^4.0.1",
++ "postcss-discard-comments": "^4.0.2",
++ "postcss-discard-duplicates": "^4.0.2",
++ "postcss-discard-empty": "^4.0.1",
++ "postcss-discard-overridden": "^4.0.1",
++ "postcss-merge-longhand": "^4.0.11",
++ "postcss-merge-rules": "^4.0.3",
++ "postcss-minify-font-values": "^4.0.2",
++ "postcss-minify-gradients": "^4.0.2",
++ "postcss-minify-params": "^4.0.2",
++ "postcss-minify-selectors": "^4.0.2",
++ "postcss-normalize-charset": "^4.0.1",
++ "postcss-normalize-display-values": "^4.0.2",
++ "postcss-normalize-positions": "^4.0.2",
++ "postcss-normalize-repeat-style": "^4.0.2",
++ "postcss-normalize-string": "^4.0.2",
++ "postcss-normalize-timing-functions": "^4.0.2",
++ "postcss-normalize-unicode": "^4.0.1",
++ "postcss-normalize-url": "^4.0.1",
++ "postcss-normalize-whitespace": "^4.0.2",
++ "postcss-ordered-values": "^4.1.2",
++ "postcss-reduce-initial": "^4.0.3",
++ "postcss-reduce-transforms": "^4.0.2",
++ "postcss-svgo": "^4.0.2",
++ "postcss-unique-selectors": "^4.0.1"
++ }
++ },
++ "cssnano-util-get-arguments": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
++ "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
++ "dev": true
++ },
++ "cssnano-util-get-match": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
++ "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
++ "dev": true
++ },
++ "cssnano-util-raw-cache": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
++ "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.0"
++ }
++ },
++ "cssnano-util-same-parent": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
++ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
++ "dev": true
++ },
++ "csso": {
++ "version": "4.0.3",
++ "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz",
++ "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==",
++ "dev": true,
++ "requires": {
++ "css-tree": "1.0.0-alpha.39"
++ },
++ "dependencies": {
++ "css-tree": {
++ "version": "1.0.0-alpha.39",
++ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz",
++ "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==",
++ "dev": true,
++ "requires": {
++ "mdn-data": "2.0.6",
++ "source-map": "^0.6.1"
++ }
++ },
++ "mdn-data": {
++ "version": "2.0.6",
++ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz",
++ "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==",
++ "dev": true
++ }
++ }
++ },
++ "cssom": {
++ "version": "0.3.8",
++ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
++ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
++ "dev": true
++ },
++ "cssstyle": {
++ "version": "1.4.0",
++ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz",
++ "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
++ "dev": true,
++ "requires": {
++ "cssom": "0.3.x"
++ }
++ },
++ "dashdash": {
++ "version": "1.14.1",
++ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
++ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
++ "requires": {
++ "assert-plus": "^1.0.0"
++ }
++ },
++ "data-urls": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz",
++ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
++ "dev": true,
++ "requires": {
++ "abab": "^2.0.0",
++ "whatwg-mimetype": "^2.2.0",
++ "whatwg-url": "^7.0.0"
++ }
++ },
++ "deasync": {
++ "version": "0.1.19",
++ "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.19.tgz",
++ "integrity": "sha512-oh3MRktfnPlLysCPpBpKZZzb4cUC/p0aA3SyRGp15lN30juJBTo/CiD0d4fR+f1kBtUQoJj1NE9RPNWQ7BQ9Mg==",
++ "dev": true,
++ "requires": {
++ "bindings": "^1.5.0",
++ "node-addon-api": "^1.7.1"
++ }
++ },
++ "debug": {
++ "version": "4.1.1",
++ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
++ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
++ "dev": true,
++ "requires": {
++ "ms": "^2.1.1"
++ }
++ },
++ "decamelize": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
++ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
++ "dev": true
++ },
++ "decode-uri-component": {
++ "version": "0.2.0",
++ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
++ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
++ "dev": true
++ },
++ "deep-is": {
++ "version": "0.1.3",
++ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
++ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
++ "dev": true
++ },
++ "defaults": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
++ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
++ "dev": true,
++ "requires": {
++ "clone": "^1.0.2"
++ },
++ "dependencies": {
++ "clone": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
++ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
++ "dev": true
++ }
++ }
++ },
++ "define-properties": {
++ "version": "1.1.3",
++ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
++ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
++ "dev": true,
++ "requires": {
++ "object-keys": "^1.0.12"
++ }
++ },
++ "define-property": {
++ "version": "2.0.2",
++ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
++ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
++ "dev": true,
++ "requires": {
++ "is-descriptor": "^1.0.2",
++ "isobject": "^3.0.1"
++ },
++ "dependencies": {
++ "is-accessor-descriptor": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
++ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
++ "dev": true,
++ "requires": {
++ "kind-of": "^6.0.0"
++ }
++ },
++ "is-data-descriptor": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
++ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
++ "dev": true,
++ "requires": {
++ "kind-of": "^6.0.0"
++ }
++ },
++ "is-descriptor": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
++ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
++ "dev": true,
++ "requires": {
++ "is-accessor-descriptor": "^1.0.0",
++ "is-data-descriptor": "^1.0.0",
++ "kind-of": "^6.0.2"
++ }
++ }
++ }
++ },
++ "delayed-stream": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
++ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
++ },
++ "depd": {
++ "version": "1.1.2",
++ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
++ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
++ "dev": true
++ },
++ "des.js": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
++ "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
++ "dev": true,
++ "requires": {
++ "inherits": "^2.0.1",
++ "minimalistic-assert": "^1.0.0"
++ }
++ },
++ "destroy": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
++ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
++ "dev": true
++ },
++ "diffie-hellman": {
++ "version": "5.0.3",
++ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
++ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
++ "dev": true,
++ "requires": {
++ "bn.js": "^4.1.0",
++ "miller-rabin": "^4.0.0",
++ "randombytes": "^2.0.0"
++ }
++ },
++ "dom-serializer": {
++ "version": "0.2.2",
++ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
++ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
++ "dev": true,
++ "requires": {
++ "domelementtype": "^2.0.1",
++ "entities": "^2.0.0"
++ },
++ "dependencies": {
++ "domelementtype": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
++ "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
++ "dev": true
++ }
++ }
++ },
++ "domain-browser": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
++ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
++ "dev": true
++ },
++ "domelementtype": {
++ "version": "1.3.1",
++ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
++ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
++ "dev": true
++ },
++ "domexception": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
++ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
++ "dev": true,
++ "requires": {
++ "webidl-conversions": "^4.0.2"
++ }
++ },
++ "domhandler": {
++ "version": "2.4.2",
++ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
++ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
++ "dev": true,
++ "requires": {
++ "domelementtype": "1"
++ }
++ },
++ "domutils": {
++ "version": "1.7.0",
++ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
++ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
++ "dev": true,
++ "requires": {
++ "dom-serializer": "0",
++ "domelementtype": "1"
++ }
++ },
++ "dot-prop": {
++ "version": "5.2.0",
++ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz",
++ "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==",
++ "dev": true,
++ "requires": {
++ "is-obj": "^2.0.0"
++ }
++ },
++ "dotenv": {
++ "version": "5.0.1",
++ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz",
++ "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==",
++ "dev": true
++ },
++ "dotenv-expand": {
++ "version": "4.2.0",
++ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz",
++ "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=",
++ "dev": true
++ },
++ "duplexer2": {
++ "version": "0.1.4",
++ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
++ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
++ "dev": true,
++ "requires": {
++ "readable-stream": "^2.0.2"
++ }
++ },
++ "ecc-jsbn": {
++ "version": "0.1.2",
++ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
++ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
++ "requires": {
++ "jsbn": "~0.1.0",
++ "safer-buffer": "^2.1.0"
++ }
++ },
++ "editorconfig": {
++ "version": "0.15.3",
++ "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
++ "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
++ "dev": true,
++ "requires": {
++ "commander": "^2.19.0",
++ "lru-cache": "^4.1.5",
++ "semver": "^5.6.0",
++ "sigmund": "^1.0.1"
++ }
++ },
++ "ee-first": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
++ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
++ "dev": true
++ },
++ "electron-to-chromium": {
++ "version": "1.3.418",
++ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.418.tgz",
++ "integrity": "sha512-i2QrQtHes5fK/F9QGG5XacM5WKEuR322fxTYF9e8O9Gu0mc0WmjjwGpV8c7Htso6Zf2Di18lc3SIPxmMeRFBug==",
++ "dev": true
++ },
++ "elliptic": {
++ "version": "6.5.2",
++ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
++ "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
++ "dev": true,
++ "requires": {
++ "bn.js": "^4.4.0",
++ "brorand": "^1.0.1",
++ "hash.js": "^1.0.0",
++ "hmac-drbg": "^1.0.0",
++ "inherits": "^2.0.1",
++ "minimalistic-assert": "^1.0.0",
++ "minimalistic-crypto-utils": "^1.0.0"
++ }
++ },
++ "elm-hot": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/elm-hot/-/elm-hot-1.1.1.tgz",
++ "integrity": "sha512-ZHjoHd2Ev6riNXNQirj3J+GKKXXwedAUikfFBYzlVL/+3CdGs96cpZ7nhAk4c5l//Qa9ymltrqX36mOlr0pPFA==",
++ "dev": true
++ },
++ "emoji-regex": {
++ "version": "7.0.3",
++ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
++ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
++ "dev": true
++ },
++ "encodeurl": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
++ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
++ "dev": true
++ },
++ "entities": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
++ "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
++ "dev": true
++ },
++ "error-ex": {
++ "version": "1.3.2",
++ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
++ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
++ "dev": true,
++ "requires": {
++ "is-arrayish": "^0.2.1"
++ }
++ },
++ "es-abstract": {
++ "version": "1.17.5",
++ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
++ "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
++ "dev": true,
++ "requires": {
++ "es-to-primitive": "^1.2.1",
++ "function-bind": "^1.1.1",
++ "has": "^1.0.3",
++ "has-symbols": "^1.0.1",
++ "is-callable": "^1.1.5",
++ "is-regex": "^1.0.5",
++ "object-inspect": "^1.7.0",
++ "object-keys": "^1.1.1",
++ "object.assign": "^4.1.0",
++ "string.prototype.trimleft": "^2.1.1",
++ "string.prototype.trimright": "^2.1.1"
++ }
++ },
++ "es-to-primitive": {
++ "version": "1.2.1",
++ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
++ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
++ "dev": true,
++ "requires": {
++ "is-callable": "^1.1.4",
++ "is-date-object": "^1.0.1",
++ "is-symbol": "^1.0.2"
++ }
++ },
++ "escape-html": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
++ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
++ "dev": true
++ },
++ "escape-string-regexp": {
++ "version": "1.0.5",
++ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
++ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
++ "dev": true
++ },
++ "escodegen": {
++ "version": "1.9.1",
++ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz",
++ "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==",
++ "dev": true,
++ "requires": {
++ "esprima": "^3.1.3",
++ "estraverse": "^4.2.0",
++ "esutils": "^2.0.2",
++ "optionator": "^0.8.1",
++ "source-map": "~0.6.1"
++ },
++ "dependencies": {
++ "esprima": {
++ "version": "3.1.3",
++ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
++ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
++ "dev": true
++ }
++ }
++ },
++ "esprima": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
++ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
++ "dev": true
++ },
++ "estraverse": {
++ "version": "4.3.0",
++ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
++ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
++ "dev": true
++ },
++ "esutils": {
++ "version": "2.0.3",
++ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
++ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
++ "dev": true
++ },
++ "etag": {
++ "version": "1.8.1",
++ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
++ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
++ "dev": true
++ },
++ "events": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz",
++ "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==",
++ "dev": true
++ },
++ "evp_bytestokey": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
++ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
++ "dev": true,
++ "requires": {
++ "md5.js": "^1.3.4",
++ "safe-buffer": "^5.1.1"
++ }
++ },
++ "expand-brackets": {
++ "version": "2.1.4",
++ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
++ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
++ "dev": true,
++ "requires": {
++ "debug": "^2.3.3",
++ "define-property": "^0.2.5",
++ "extend-shallow": "^2.0.1",
++ "posix-character-classes": "^0.1.0",
++ "regex-not": "^1.0.0",
++ "snapdragon": "^0.8.1",
++ "to-regex": "^3.0.1"
++ },
++ "dependencies": {
++ "debug": {
++ "version": "2.6.9",
++ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
++ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
++ "dev": true,
++ "requires": {
++ "ms": "2.0.0"
++ }
++ },
++ "define-property": {
++ "version": "0.2.5",
++ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
++ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
++ "dev": true,
++ "requires": {
++ "is-descriptor": "^0.1.0"
++ }
++ },
++ "extend-shallow": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
++ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
++ "dev": true,
++ "requires": {
++ "is-extendable": "^0.1.0"
++ }
++ },
++ "ms": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
++ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
++ "dev": true
++ }
++ }
++ },
++ "extend": {
++ "version": "3.0.2",
++ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
++ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
++ },
++ "extend-shallow": {
++ "version": "3.0.2",
++ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
++ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
++ "dev": true,
++ "requires": {
++ "assign-symbols": "^1.0.0",
++ "is-extendable": "^1.0.1"
++ },
++ "dependencies": {
++ "is-extendable": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
++ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
++ "dev": true,
++ "requires": {
++ "is-plain-object": "^2.0.4"
++ }
++ }
++ }
++ },
++ "extglob": {
++ "version": "2.0.4",
++ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
++ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
++ "dev": true,
++ "requires": {
++ "array-unique": "^0.3.2",
++ "define-property": "^1.0.0",
++ "expand-brackets": "^2.1.4",
++ "extend-shallow": "^2.0.1",
++ "fragment-cache": "^0.2.1",
++ "regex-not": "^1.0.0",
++ "snapdragon": "^0.8.1",
++ "to-regex": "^3.0.1"
++ },
++ "dependencies": {
++ "define-property": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
++ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
++ "dev": true,
++ "requires": {
++ "is-descriptor": "^1.0.0"
++ }
++ },
++ "extend-shallow": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
++ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
++ "dev": true,
++ "requires": {
++ "is-extendable": "^0.1.0"
++ }
++ },
++ "is-accessor-descriptor": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
++ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
++ "dev": true,
++ "requires": {
++ "kind-of": "^6.0.0"
++ }
++ },
++ "is-data-descriptor": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
++ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
++ "dev": true,
++ "requires": {
++ "kind-of": "^6.0.0"
++ }
++ },
++ "is-descriptor": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
++ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
++ "dev": true,
++ "requires": {
++ "is-accessor-descriptor": "^1.0.0",
++ "is-data-descriptor": "^1.0.0",
++ "kind-of": "^6.0.2"
++ }
++ }
++ }
++ },
++ "extsprintf": {
++ "version": "1.3.0",
++ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
++ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
++ },
++ "falafel": {
++ "version": "2.2.4",
++ "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz",
++ "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==",
++ "dev": true,
++ "requires": {
++ "acorn": "^7.1.1",
++ "foreach": "^2.0.5",
++ "isarray": "^2.0.1",
++ "object-keys": "^1.0.6"
++ },
++ "dependencies": {
++ "isarray": {
++ "version": "2.0.5",
++ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
++ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
++ "dev": true
++ }
++ }
++ },
++ "fast-deep-equal": {
++ "version": "3.1.1",
++ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
++ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
++ },
++ "fast-glob": {
++ "version": "2.2.7",
++ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
++ "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
++ "dev": true,
++ "requires": {
++ "@mrmlnc/readdir-enhanced": "^2.2.1",
++ "@nodelib/fs.stat": "^1.1.2",
++ "glob-parent": "^3.1.0",
++ "is-glob": "^4.0.0",
++ "merge2": "^1.2.3",
++ "micromatch": "^3.1.10"
++ }
++ },
++ "fast-json-stable-stringify": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
++ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
++ },
++ "fast-levenshtein": {
++ "version": "2.0.6",
++ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
++ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
++ "dev": true
++ },
++ "fastparse": {
++ "version": "1.1.2",
++ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
++ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
++ "dev": true
++ },
++ "file-uri-to-path": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
++ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
++ "dev": true
++ },
++ "filesize": {
++ "version": "3.6.1",
++ "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
++ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
++ "dev": true
++ },
++ "fill-range": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
++ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
++ "dev": true,
++ "requires": {
++ "extend-shallow": "^2.0.1",
++ "is-number": "^3.0.0",
++ "repeat-string": "^1.6.1",
++ "to-regex-range": "^2.1.0"
++ },
++ "dependencies": {
++ "extend-shallow": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
++ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
++ "dev": true,
++ "requires": {
++ "is-extendable": "^0.1.0"
++ }
++ }
++ }
++ },
++ "find-elm-dependencies": {
++ "version": "2.0.2",
++ "resolved": "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-2.0.2.tgz",
++ "integrity": "sha512-nM5UCbccD1G8CGK2GsM7ykG3ksOAl9E+34jiDfl07CAl2OPnLpBVWY2hlxEmIkSBfdJjSopEowWHrO0cI8RhxQ==",
++ "dev": true,
++ "requires": {
++ "firstline": "1.2.0",
++ "lodash": "4.17.15"
++ }
++ },
++ "find-up": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
++ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
++ "dev": true,
++ "requires": {
++ "locate-path": "^2.0.0"
++ }
++ },
++ "firstline": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/firstline/-/firstline-1.2.0.tgz",
++ "integrity": "sha1-yfSIbn9/vwr8EtcZQdzgaxkq6gU=",
++ "dev": true
++ },
++ "for-in": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
++ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
++ "dev": true
++ },
++ "foreach": {
++ "version": "2.0.5",
++ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
++ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
++ "dev": true
++ },
++ "forever-agent": {
++ "version": "0.6.1",
++ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
++ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
++ },
++ "form-data": {
++ "version": "2.3.3",
++ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
++ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
++ "requires": {
++ "asynckit": "^0.4.0",
++ "combined-stream": "^1.0.6",
++ "mime-types": "^2.1.12"
++ }
++ },
++ "fragment-cache": {
++ "version": "0.2.1",
++ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
++ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
++ "dev": true,
++ "requires": {
++ "map-cache": "^0.2.2"
++ }
++ },
++ "fresh": {
++ "version": "0.5.2",
++ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
++ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
++ "dev": true
++ },
++ "fs.realpath": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
++ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
++ "dev": true
++ },
++ "function-bind": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
++ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
++ "dev": true
++ },
++ "get-caller-file": {
++ "version": "2.0.5",
++ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
++ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
++ "dev": true
++ },
++ "get-port": {
++ "version": "3.2.0",
++ "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
++ "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=",
++ "dev": true
++ },
++ "get-value": {
++ "version": "2.0.6",
++ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
++ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
++ "dev": true
++ },
++ "getpass": {
++ "version": "0.1.7",
++ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
++ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
++ "requires": {
++ "assert-plus": "^1.0.0"
++ }
++ },
++ "glob": {
++ "version": "7.1.4",
++ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
++ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
++ "dev": true,
++ "requires": {
++ "fs.realpath": "^1.0.0",
++ "inflight": "^1.0.4",
++ "inherits": "2",
++ "minimatch": "^3.0.4",
++ "once": "^1.3.0",
++ "path-is-absolute": "^1.0.0"
++ }
++ },
++ "glob-parent": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
++ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
++ "dev": true,
++ "requires": {
++ "is-glob": "^3.1.0",
++ "path-dirname": "^1.0.0"
++ },
++ "dependencies": {
++ "is-glob": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
++ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
++ "dev": true,
++ "requires": {
++ "is-extglob": "^2.1.0"
++ }
++ }
++ }
++ },
++ "glob-to-regexp": {
++ "version": "0.3.0",
++ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
++ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
++ "dev": true
++ },
++ "globals": {
++ "version": "11.12.0",
++ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
++ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
++ "dev": true
++ },
++ "graceful-fs": {
++ "version": "4.2.3",
++ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
++ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
++ "dev": true
++ },
++ "grapheme-breaker": {
++ "version": "0.3.2",
++ "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz",
++ "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=",
++ "dev": true,
++ "requires": {
++ "brfs": "^1.2.0",
++ "unicode-trie": "^0.3.1"
++ }
++ },
++ "har-schema": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
++ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
++ },
++ "har-validator": {
++ "version": "5.1.3",
++ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
++ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
++ "requires": {
++ "ajv": "^6.5.5",
++ "har-schema": "^2.0.0"
++ }
++ },
++ "has": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
++ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
++ "dev": true,
++ "requires": {
++ "function-bind": "^1.1.1"
++ }
++ },
++ "has-ansi": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
++ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
++ "dev": true,
++ "requires": {
++ "ansi-regex": "^2.0.0"
++ },
++ "dependencies": {
++ "ansi-regex": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
++ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
++ "dev": true
++ }
++ }
++ },
++ "has-flag": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
++ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
++ "dev": true
++ },
++ "has-symbols": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
++ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
++ "dev": true
++ },
++ "has-value": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
++ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
++ "dev": true,
++ "requires": {
++ "get-value": "^2.0.6",
++ "has-values": "^1.0.0",
++ "isobject": "^3.0.0"
++ }
++ },
++ "has-values": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
++ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
++ "dev": true,
++ "requires": {
++ "is-number": "^3.0.0",
++ "kind-of": "^4.0.0"
++ },
++ "dependencies": {
++ "kind-of": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
++ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
++ "dev": true,
++ "requires": {
++ "is-buffer": "^1.1.5"
++ }
++ }
++ }
++ },
++ "hash-base": {
++ "version": "3.0.4",
++ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
++ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
++ "dev": true,
++ "requires": {
++ "inherits": "^2.0.1",
++ "safe-buffer": "^5.0.1"
++ }
++ },
++ "hash.js": {
++ "version": "1.1.7",
++ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
++ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
++ "dev": true,
++ "requires": {
++ "inherits": "^2.0.3",
++ "minimalistic-assert": "^1.0.1"
++ }
++ },
++ "hex-color-regex": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
++ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
++ "dev": true
++ },
++ "hmac-drbg": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
++ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
++ "dev": true,
++ "requires": {
++ "hash.js": "^1.0.3",
++ "minimalistic-assert": "^1.0.0",
++ "minimalistic-crypto-utils": "^1.0.1"
++ }
++ },
++ "hsl-regex": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
++ "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
++ "dev": true
++ },
++ "hsla-regex": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
++ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
++ "dev": true
++ },
++ "html-comment-regex": {
++ "version": "1.1.2",
++ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
++ "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
++ "dev": true
++ },
++ "html-encoding-sniffer": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
++ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
++ "dev": true,
++ "requires": {
++ "whatwg-encoding": "^1.0.1"
++ }
++ },
++ "html-tags": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz",
++ "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=",
++ "dev": true
++ },
++ "htmlnano": {
++ "version": "0.2.5",
++ "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.5.tgz",
++ "integrity": "sha512-X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA==",
++ "dev": true,
++ "requires": {
++ "cssnano": "^4.1.10",
++ "normalize-html-whitespace": "^1.0.0",
++ "posthtml": "^0.12.0",
++ "posthtml-render": "^1.1.5",
++ "purgecss": "^1.4.0",
++ "svgo": "^1.3.2",
++ "terser": "^4.3.9",
++ "uncss": "^0.17.2"
++ },
++ "dependencies": {
++ "posthtml": {
++ "version": "0.12.3",
++ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.12.3.tgz",
++ "integrity": "sha512-Fbpi95+JJyR0tqU7pUy1zTSQFjAsluuwB9pJ1h0jtnGk7n/O2TBtP5nDl9rV0JVACjQ1Lm5wSp4ppChr8u3MhA==",
++ "dev": true,
++ "requires": {
++ "posthtml-parser": "^0.4.2",
++ "posthtml-render": "^1.2.2"
++ }
++ },
++ "terser": {
++ "version": "4.6.12",
++ "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.12.tgz",
++ "integrity": "sha512-fnIwuaKjFPANG6MAixC/k1TDtnl1YlPLUlLVIxxGZUn1gfUx2+l3/zGNB72wya+lgsb50QBi2tUV75RiODwnww==",
++ "dev": true,
++ "requires": {
++ "commander": "^2.20.0",
++ "source-map": "~0.6.1",
++ "source-map-support": "~0.5.12"
++ }
++ }
++ }
++ },
++ "htmlparser2": {
++ "version": "3.10.1",
++ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
++ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
++ "dev": true,
++ "requires": {
++ "domelementtype": "^1.3.1",
++ "domhandler": "^2.3.0",
++ "domutils": "^1.5.1",
++ "entities": "^1.1.1",
++ "inherits": "^2.0.1",
++ "readable-stream": "^3.1.1"
++ },
++ "dependencies": {
++ "entities": {
++ "version": "1.1.2",
++ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
++ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
++ "dev": true
++ },
++ "readable-stream": {
++ "version": "3.6.0",
++ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
++ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
++ "dev": true,
++ "requires": {
++ "inherits": "^2.0.3",
++ "string_decoder": "^1.1.1",
++ "util-deprecate": "^1.0.1"
++ }
++ }
++ }
++ },
++ "http-errors": {
++ "version": "1.7.3",
++ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
++ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
++ "dev": true,
++ "requires": {
++ "depd": "~1.1.2",
++ "inherits": "2.0.4",
++ "setprototypeof": "1.1.1",
++ "statuses": ">= 1.5.0 < 2",
++ "toidentifier": "1.0.0"
++ }
++ },
++ "http-signature": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
++ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
++ "requires": {
++ "assert-plus": "^1.0.0",
++ "jsprim": "^1.2.2",
++ "sshpk": "^1.7.0"
++ }
++ },
++ "https-browserify": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
++ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
++ "dev": true
++ },
++ "iconv-lite": {
++ "version": "0.4.24",
++ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
++ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
++ "dev": true,
++ "requires": {
++ "safer-buffer": ">= 2.1.2 < 3"
++ }
++ },
++ "icss-replace-symbols": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
++ "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
++ "dev": true
++ },
++ "ieee754": {
++ "version": "1.1.13",
++ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
++ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
++ "dev": true
++ },
++ "import-fresh": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
++ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
++ "dev": true,
++ "requires": {
++ "caller-path": "^2.0.0",
++ "resolve-from": "^3.0.0"
++ }
++ },
++ "indexes-of": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
++ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
++ "dev": true
++ },
++ "inflight": {
++ "version": "1.0.6",
++ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
++ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
++ "dev": true,
++ "requires": {
++ "once": "^1.3.0",
++ "wrappy": "1"
++ }
++ },
++ "inherits": {
++ "version": "2.0.4",
++ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
++ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
++ "dev": true
++ },
++ "ini": {
++ "version": "1.3.5",
++ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
++ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
++ "dev": true
++ },
++ "invariant": {
++ "version": "2.2.4",
++ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
++ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
++ "dev": true,
++ "requires": {
++ "loose-envify": "^1.0.0"
++ }
++ },
++ "is-absolute-url": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
++ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
++ "dev": true
++ },
++ "is-accessor-descriptor": {
++ "version": "0.1.6",
++ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
++ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
++ "dev": true,
++ "requires": {
++ "kind-of": "^3.0.2"
++ },
++ "dependencies": {
++ "kind-of": {
++ "version": "3.2.2",
++ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
++ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
++ "dev": true,
++ "requires": {
++ "is-buffer": "^1.1.5"
++ }
++ }
++ }
++ },
++ "is-arrayish": {
++ "version": "0.2.1",
++ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
++ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
++ "dev": true
++ },
++ "is-binary-path": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
++ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
++ "dev": true,
++ "requires": {
++ "binary-extensions": "^1.0.0"
++ }
++ },
++ "is-buffer": {
++ "version": "1.1.6",
++ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
++ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
++ "dev": true
++ },
++ "is-callable": {
++ "version": "1.1.5",
++ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
++ "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
++ "dev": true
++ },
++ "is-color-stop": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
++ "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
++ "dev": true,
++ "requires": {
++ "css-color-names": "^0.0.4",
++ "hex-color-regex": "^1.1.0",
++ "hsl-regex": "^1.0.0",
++ "hsla-regex": "^1.0.0",
++ "rgb-regex": "^1.0.1",
++ "rgba-regex": "^1.0.0"
++ }
++ },
++ "is-data-descriptor": {
++ "version": "0.1.4",
++ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
++ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
++ "dev": true,
++ "requires": {
++ "kind-of": "^3.0.2"
++ },
++ "dependencies": {
++ "kind-of": {
++ "version": "3.2.2",
++ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
++ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
++ "dev": true,
++ "requires": {
++ "is-buffer": "^1.1.5"
++ }
++ }
++ }
++ },
++ "is-date-object": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
++ "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
++ "dev": true
++ },
++ "is-descriptor": {
++ "version": "0.1.6",
++ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
++ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
++ "dev": true,
++ "requires": {
++ "is-accessor-descriptor": "^0.1.6",
++ "is-data-descriptor": "^0.1.4",
++ "kind-of": "^5.0.0"
++ },
++ "dependencies": {
++ "kind-of": {
++ "version": "5.1.0",
++ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
++ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
++ "dev": true
++ }
++ }
++ },
++ "is-directory": {
++ "version": "0.3.1",
++ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
++ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
++ "dev": true
++ },
++ "is-extendable": {
++ "version": "0.1.1",
++ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
++ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
++ "dev": true
++ },
++ "is-extglob": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
++ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
++ "dev": true
++ },
++ "is-fullwidth-code-point": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
++ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
++ "dev": true
++ },
++ "is-glob": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
++ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
++ "dev": true,
++ "requires": {
++ "is-extglob": "^2.1.1"
++ }
++ },
++ "is-html": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz",
++ "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=",
++ "dev": true,
++ "requires": {
++ "html-tags": "^1.0.0"
++ }
++ },
++ "is-number": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
++ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
++ "dev": true,
++ "requires": {
++ "kind-of": "^3.0.2"
++ },
++ "dependencies": {
++ "kind-of": {
++ "version": "3.2.2",
++ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
++ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
++ "dev": true,
++ "requires": {
++ "is-buffer": "^1.1.5"
++ }
++ }
++ }
++ },
++ "is-obj": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
++ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
++ "dev": true
++ },
++ "is-plain-object": {
++ "version": "2.0.4",
++ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
++ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
++ "dev": true,
++ "requires": {
++ "isobject": "^3.0.1"
++ }
++ },
++ "is-regex": {
++ "version": "1.0.5",
++ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
++ "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
++ "dev": true,
++ "requires": {
++ "has": "^1.0.3"
++ }
++ },
++ "is-resolvable": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
++ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
++ "dev": true
++ },
++ "is-svg": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
++ "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
++ "dev": true,
++ "requires": {
++ "html-comment-regex": "^1.1.0"
++ }
++ },
++ "is-symbol": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
++ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
++ "dev": true,
++ "requires": {
++ "has-symbols": "^1.0.1"
++ }
++ },
++ "is-typedarray": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
++ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
++ },
++ "is-url": {
++ "version": "1.2.4",
++ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
++ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
++ "dev": true
++ },
++ "is-windows": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
++ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
++ "dev": true
++ },
++ "is-wsl": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
++ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
++ "dev": true
++ },
++ "isarray": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
++ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
++ "dev": true
++ },
++ "isexe": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
++ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
++ "dev": true
++ },
++ "isobject": {
++ "version": "3.0.1",
++ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
++ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
++ "dev": true
++ },
++ "isstream": {
++ "version": "0.1.2",
++ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
++ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
++ },
++ "js-beautify": {
++ "version": "1.11.0",
++ "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz",
++ "integrity": "sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A==",
++ "dev": true,
++ "requires": {
++ "config-chain": "^1.1.12",
++ "editorconfig": "^0.15.3",
++ "glob": "^7.1.3",
++ "mkdirp": "~1.0.3",
++ "nopt": "^4.0.3"
++ },
++ "dependencies": {
++ "mkdirp": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
++ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
++ "dev": true
++ }
++ }
++ },
++ "js-levenshtein": {
++ "version": "1.1.6",
++ "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
++ "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
++ "dev": true
++ },
++ "js-tokens": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
++ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
++ "dev": true
++ },
++ "js-yaml": {
++ "version": "3.13.1",
++ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
++ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
++ "dev": true,
++ "requires": {
++ "argparse": "^1.0.7",
++ "esprima": "^4.0.0"
++ }
++ },
++ "jsbn": {
++ "version": "0.1.1",
++ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
++ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
++ },
++ "jsdom": {
++ "version": "14.1.0",
++ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz",
++ "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==",
++ "dev": true,
++ "requires": {
++ "abab": "^2.0.0",
++ "acorn": "^6.0.4",
++ "acorn-globals": "^4.3.0",
++ "array-equal": "^1.0.0",
++ "cssom": "^0.3.4",
++ "cssstyle": "^1.1.1",
++ "data-urls": "^1.1.0",
++ "domexception": "^1.0.1",
++ "escodegen": "^1.11.0",
++ "html-encoding-sniffer": "^1.0.2",
++ "nwsapi": "^2.1.3",
++ "parse5": "5.1.0",
++ "pn": "^1.1.0",
++ "request": "^2.88.0",
++ "request-promise-native": "^1.0.5",
++ "saxes": "^3.1.9",
++ "symbol-tree": "^3.2.2",
++ "tough-cookie": "^2.5.0",
++ "w3c-hr-time": "^1.0.1",
++ "w3c-xmlserializer": "^1.1.2",
++ "webidl-conversions": "^4.0.2",
++ "whatwg-encoding": "^1.0.5",
++ "whatwg-mimetype": "^2.3.0",
++ "whatwg-url": "^7.0.0",
++ "ws": "^6.1.2",
++ "xml-name-validator": "^3.0.0"
++ },
++ "dependencies": {
++ "acorn": {
++ "version": "6.4.1",
++ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
++ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
++ "dev": true
++ },
++ "escodegen": {
++ "version": "1.14.1",
++ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz",
++ "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==",
++ "dev": true,
++ "requires": {
++ "esprima": "^4.0.1",
++ "estraverse": "^4.2.0",
++ "esutils": "^2.0.2",
++ "optionator": "^0.8.1",
++ "source-map": "~0.6.1"
++ }
++ },
++ "ws": {
++ "version": "6.2.1",
++ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
++ "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
++ "dev": true,
++ "requires": {
++ "async-limiter": "~1.0.0"
++ }
++ }
++ }
++ },
++ "jsesc": {
++ "version": "2.5.2",
++ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
++ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
++ "dev": true
++ },
++ "json-parse-better-errors": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
++ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
++ "dev": true
++ },
++ "json-schema": {
++ "version": "0.2.3",
++ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
++ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
++ },
++ "json-schema-traverse": {
++ "version": "0.4.1",
++ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
++ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
++ },
++ "json-stringify-safe": {
++ "version": "5.0.1",
++ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
++ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
++ },
++ "json5": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
++ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
++ "dev": true,
++ "requires": {
++ "minimist": "^1.2.0"
++ }
++ },
++ "jsprim": {
++ "version": "1.4.1",
++ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
++ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
++ "requires": {
++ "assert-plus": "1.0.0",
++ "extsprintf": "1.3.0",
++ "json-schema": "0.2.3",
++ "verror": "1.10.0"
++ }
++ },
++ "kind-of": {
++ "version": "6.0.3",
++ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
++ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
++ "dev": true
++ },
++ "levn": {
++ "version": "0.3.0",
++ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
++ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
++ "dev": true,
++ "requires": {
++ "prelude-ls": "~1.1.2",
++ "type-check": "~0.3.2"
++ }
++ },
++ "locate-path": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
++ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
++ "dev": true,
++ "requires": {
++ "p-locate": "^2.0.0",
++ "path-exists": "^3.0.0"
++ }
++ },
++ "lodash": {
++ "version": "4.17.15",
++ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
++ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
++ "dev": true
++ },
++ "lodash.clone": {
++ "version": "4.5.0",
++ "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
++ "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=",
++ "dev": true
++ },
++ "lodash.memoize": {
++ "version": "4.1.2",
++ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
++ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
++ "dev": true
++ },
++ "lodash.sortby": {
++ "version": "4.7.0",
++ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
++ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
++ "dev": true
++ },
++ "lodash.uniq": {
++ "version": "4.5.0",
++ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
++ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
++ "dev": true
++ },
++ "log-symbols": {
++ "version": "2.2.0",
++ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
++ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
++ "dev": true,
++ "requires": {
++ "chalk": "^2.0.1"
++ }
++ },
++ "loose-envify": {
++ "version": "1.4.0",
++ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
++ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
++ "dev": true,
++ "requires": {
++ "js-tokens": "^3.0.0 || ^4.0.0"
++ }
++ },
++ "lru-cache": {
++ "version": "4.1.5",
++ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
++ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
++ "dev": true,
++ "requires": {
++ "pseudomap": "^1.0.2",
++ "yallist": "^2.1.2"
++ }
++ },
++ "magic-string": {
++ "version": "0.22.5",
++ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
++ "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==",
++ "dev": true,
++ "requires": {
++ "vlq": "^0.2.2"
++ }
++ },
++ "map-cache": {
++ "version": "0.2.2",
++ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
++ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
++ "dev": true
++ },
++ "map-visit": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
++ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
++ "dev": true,
++ "requires": {
++ "object-visit": "^1.0.0"
++ }
++ },
++ "md5.js": {
++ "version": "1.3.5",
++ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
++ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
++ "dev": true,
++ "requires": {
++ "hash-base": "^3.0.0",
++ "inherits": "^2.0.1",
++ "safe-buffer": "^5.1.2"
++ }
++ },
++ "mdn-data": {
++ "version": "2.0.4",
++ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
++ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
++ "dev": true
++ },
++ "merge-source-map": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz",
++ "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=",
++ "dev": true,
++ "requires": {
++ "source-map": "^0.5.6"
++ },
++ "dependencies": {
++ "source-map": {
++ "version": "0.5.7",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
++ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
++ "dev": true
++ }
++ }
++ },
++ "merge2": {
++ "version": "1.3.0",
++ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz",
++ "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==",
++ "dev": true
++ },
++ "micromatch": {
++ "version": "3.1.10",
++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
++ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
++ "dev": true,
++ "requires": {
++ "arr-diff": "^4.0.0",
++ "array-unique": "^0.3.2",
++ "braces": "^2.3.1",
++ "define-property": "^2.0.2",
++ "extend-shallow": "^3.0.2",
++ "extglob": "^2.0.4",
++ "fragment-cache": "^0.2.1",
++ "kind-of": "^6.0.2",
++ "nanomatch": "^1.2.9",
++ "object.pick": "^1.3.0",
++ "regex-not": "^1.0.0",
++ "snapdragon": "^0.8.1",
++ "to-regex": "^3.0.2"
++ }
++ },
++ "miller-rabin": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
++ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
++ "dev": true,
++ "requires": {
++ "bn.js": "^4.0.0",
++ "brorand": "^1.0.1"
++ }
++ },
++ "mime": {
++ "version": "1.6.0",
++ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
++ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
++ "dev": true
++ },
++ "mime-db": {
++ "version": "1.44.0",
++ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
++ "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
++ },
++ "mime-types": {
++ "version": "2.1.27",
++ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
++ "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
++ "requires": {
++ "mime-db": "1.44.0"
++ }
++ },
++ "mimic-fn": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
++ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
++ "dev": true
++ },
++ "minimalistic-assert": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
++ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
++ "dev": true
++ },
++ "minimalistic-crypto-utils": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
++ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
++ "dev": true
++ },
++ "minimatch": {
++ "version": "3.0.4",
++ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
++ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
++ "dev": true,
++ "requires": {
++ "brace-expansion": "^1.1.7"
++ }
++ },
++ "minimist": {
++ "version": "1.2.5",
++ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
++ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
++ "dev": true
++ },
++ "mixin-deep": {
++ "version": "1.3.2",
++ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
++ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
++ "dev": true,
++ "requires": {
++ "for-in": "^1.0.2",
++ "is-extendable": "^1.0.1"
++ },
++ "dependencies": {
++ "is-extendable": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
++ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
++ "dev": true,
++ "requires": {
++ "is-plain-object": "^2.0.4"
++ }
++ }
++ }
++ },
++ "mkdirp": {
++ "version": "0.5.5",
++ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
++ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
++ "dev": true,
++ "requires": {
++ "minimist": "^1.2.5"
++ }
++ },
++ "ms": {
++ "version": "2.1.2",
++ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
++ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
++ "dev": true
++ },
++ "nan": {
++ "version": "2.14.1",
++ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
++ "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
++ "dev": true,
++ "optional": true
++ },
++ "nanomatch": {
++ "version": "1.2.13",
++ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
++ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
++ "dev": true,
++ "requires": {
++ "arr-diff": "^4.0.0",
++ "array-unique": "^0.3.2",
++ "define-property": "^2.0.2",
++ "extend-shallow": "^3.0.2",
++ "fragment-cache": "^0.2.1",
++ "is-windows": "^1.0.2",
++ "kind-of": "^6.0.2",
++ "object.pick": "^1.3.0",
++ "regex-not": "^1.0.0",
++ "snapdragon": "^0.8.1",
++ "to-regex": "^3.0.1"
++ }
++ },
++ "nice-try": {
++ "version": "1.0.5",
++ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
++ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
++ "dev": true
++ },
++ "node-addon-api": {
++ "version": "1.7.1",
++ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz",
++ "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==",
++ "dev": true
++ },
++ "node-elm-compiler": {
++ "version": "5.0.4",
++ "resolved": "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-5.0.4.tgz",
++ "integrity": "sha512-VQsT8QSierYGkHzRed+b4MnccQVF1+qPHunE8jBoU7jD6YpuRqCDPzEoC2zfyEJS80qVnlMZrqobLnyjzX9lJg==",
++ "dev": true,
++ "requires": {
++ "cross-spawn": "6.0.5",
++ "find-elm-dependencies": "2.0.2",
++ "lodash": "4.17.15",
++ "temp": "^0.9.0"
++ }
++ },
++ "node-forge": {
++ "version": "0.7.6",
++ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz",
++ "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==",
++ "dev": true
++ },
++ "node-libs-browser": {
++ "version": "2.2.1",
++ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
++ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
++ "dev": true,
++ "requires": {
++ "assert": "^1.1.1",
++ "browserify-zlib": "^0.2.0",
++ "buffer": "^4.3.0",
++ "console-browserify": "^1.1.0",
++ "constants-browserify": "^1.0.0",
++ "crypto-browserify": "^3.11.0",
++ "domain-browser": "^1.1.1",
++ "events": "^3.0.0",
++ "https-browserify": "^1.0.0",
++ "os-browserify": "^0.3.0",
++ "path-browserify": "0.0.1",
++ "process": "^0.11.10",
++ "punycode": "^1.2.4",
++ "querystring-es3": "^0.2.0",
++ "readable-stream": "^2.3.3",
++ "stream-browserify": "^2.0.1",
++ "stream-http": "^2.7.2",
++ "string_decoder": "^1.0.0",
++ "timers-browserify": "^2.0.4",
++ "tty-browserify": "0.0.0",
++ "url": "^0.11.0",
++ "util": "^0.11.0",
++ "vm-browserify": "^1.0.1"
++ },
++ "dependencies": {
++ "punycode": {
++ "version": "1.4.1",
++ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
++ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
++ "dev": true
++ }
++ }
++ },
++ "node-releases": {
++ "version": "1.1.53",
++ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz",
++ "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==",
++ "dev": true
++ },
++ "nopt": {
++ "version": "4.0.3",
++ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
++ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
++ "dev": true,
++ "requires": {
++ "abbrev": "1",
++ "osenv": "^0.1.4"
++ }
++ },
++ "normalize-html-whitespace": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz",
++ "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==",
++ "dev": true
++ },
++ "normalize-path": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
++ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
++ "dev": true
++ },
++ "normalize-url": {
++ "version": "3.3.0",
++ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
++ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
++ "dev": true
++ },
++ "nth-check": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
++ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
++ "dev": true,
++ "requires": {
++ "boolbase": "~1.0.0"
++ }
++ },
++ "nwsapi": {
++ "version": "2.2.0",
++ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
++ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
++ "dev": true
++ },
++ "oauth-sign": {
++ "version": "0.9.0",
++ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
++ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
++ },
++ "object-assign": {
++ "version": "4.1.1",
++ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
++ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
++ "dev": true
++ },
++ "object-copy": {
++ "version": "0.1.0",
++ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
++ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
++ "dev": true,
++ "requires": {
++ "copy-descriptor": "^0.1.0",
++ "define-property": "^0.2.5",
++ "kind-of": "^3.0.3"
++ },
++ "dependencies": {
++ "define-property": {
++ "version": "0.2.5",
++ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
++ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
++ "dev": true,
++ "requires": {
++ "is-descriptor": "^0.1.0"
++ }
++ },
++ "kind-of": {
++ "version": "3.2.2",
++ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
++ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
++ "dev": true,
++ "requires": {
++ "is-buffer": "^1.1.5"
++ }
++ }
++ }
++ },
++ "object-inspect": {
++ "version": "1.7.0",
++ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
++ "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
++ "dev": true
++ },
++ "object-keys": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
++ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
++ "dev": true
++ },
++ "object-visit": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
++ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
++ "dev": true,
++ "requires": {
++ "isobject": "^3.0.0"
++ }
++ },
++ "object.assign": {
++ "version": "4.1.0",
++ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
++ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
++ "dev": true,
++ "requires": {
++ "define-properties": "^1.1.2",
++ "function-bind": "^1.1.1",
++ "has-symbols": "^1.0.0",
++ "object-keys": "^1.0.11"
++ }
++ },
++ "object.getownpropertydescriptors": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
++ "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
++ "dev": true,
++ "requires": {
++ "define-properties": "^1.1.3",
++ "es-abstract": "^1.17.0-next.1"
++ }
++ },
++ "object.pick": {
++ "version": "1.3.0",
++ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
++ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
++ "dev": true,
++ "requires": {
++ "isobject": "^3.0.1"
++ }
++ },
++ "object.values": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
++ "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
++ "dev": true,
++ "requires": {
++ "define-properties": "^1.1.3",
++ "es-abstract": "^1.17.0-next.1",
++ "function-bind": "^1.1.1",
++ "has": "^1.0.3"
++ }
++ },
++ "on-finished": {
++ "version": "2.3.0",
++ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
++ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
++ "dev": true,
++ "requires": {
++ "ee-first": "1.1.1"
++ }
++ },
++ "once": {
++ "version": "1.4.0",
++ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
++ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
++ "dev": true,
++ "requires": {
++ "wrappy": "1"
++ }
++ },
++ "onetime": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
++ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
++ "dev": true,
++ "requires": {
++ "mimic-fn": "^1.0.0"
++ }
++ },
++ "opn": {
++ "version": "5.5.0",
++ "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
++ "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
++ "dev": true,
++ "requires": {
++ "is-wsl": "^1.1.0"
++ }
++ },
++ "optionator": {
++ "version": "0.8.3",
++ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
++ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
++ "dev": true,
++ "requires": {
++ "deep-is": "~0.1.3",
++ "fast-levenshtein": "~2.0.6",
++ "levn": "~0.3.0",
++ "prelude-ls": "~1.1.2",
++ "type-check": "~0.3.2",
++ "word-wrap": "~1.2.3"
++ }
++ },
++ "ora": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz",
++ "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==",
++ "dev": true,
++ "requires": {
++ "chalk": "^2.3.1",
++ "cli-cursor": "^2.1.0",
++ "cli-spinners": "^1.1.0",
++ "log-symbols": "^2.2.0",
++ "strip-ansi": "^4.0.0",
++ "wcwidth": "^1.0.1"
++ }
++ },
++ "os-browserify": {
++ "version": "0.3.0",
++ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
++ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
++ "dev": true
++ },
++ "os-homedir": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
++ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
++ "dev": true
++ },
++ "os-tmpdir": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
++ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
++ "dev": true
++ },
++ "osenv": {
++ "version": "0.1.5",
++ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
++ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
++ "dev": true,
++ "requires": {
++ "os-homedir": "^1.0.0",
++ "os-tmpdir": "^1.0.0"
++ }
++ },
++ "p-limit": {
++ "version": "1.3.0",
++ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
++ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
++ "dev": true,
++ "requires": {
++ "p-try": "^1.0.0"
++ }
++ },
++ "p-locate": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
++ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
++ "dev": true,
++ "requires": {
++ "p-limit": "^1.1.0"
++ }
++ },
++ "p-try": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
++ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
++ "dev": true
++ },
++ "pako": {
++ "version": "0.2.9",
++ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
++ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
++ "dev": true
++ },
++ "parcel-bundler": {
++ "version": "1.12.3",
++ "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.3.tgz",
++ "integrity": "sha512-8bq6lj0hhQeGxD9f9xEkFMXQ3d8TIlf2+isKxoi9bciB0KVEILRGllaPkUgp++5t0anToBh9+tG6ZyInXOC1/A==",
++ "dev": true,
++ "requires": {
++ "@babel/code-frame": "^7.0.0 <7.4.0",
++ "@babel/core": "^7.0.0 <7.4.0",
++ "@babel/generator": "^7.0.0 <7.4.0",
++ "@babel/parser": "^7.0.0 <7.4.0",
++ "@babel/plugin-transform-flow-strip-types": "^7.0.0 <7.4.0",
++ "@babel/plugin-transform-modules-commonjs": "^7.0.0 <7.4.0",
++ "@babel/plugin-transform-react-jsx": "^7.0.0 <7.4.0",
++ "@babel/preset-env": "^7.0.0 <7.4.0",
++ "@babel/runtime": "^7.0.0 <7.4.0",
++ "@babel/template": "^7.0.0 <7.4.0",
++ "@babel/traverse": "^7.0.0 <7.4.0",
++ "@babel/types": "^7.0.0 <7.4.0",
++ "@iarna/toml": "^2.2.0",
++ "@parcel/fs": "^1.11.0",
++ "@parcel/logger": "^1.11.0",
++ "@parcel/utils": "^1.11.0",
++ "@parcel/watcher": "^1.12.0",
++ "@parcel/workers": "^1.11.0",
++ "ansi-to-html": "^0.6.4",
++ "babylon-walk": "^1.0.2",
++ "browserslist": "^4.1.0",
++ "chalk": "^2.1.0",
++ "clone": "^2.1.1",
++ "command-exists": "^1.2.6",
++ "commander": "^2.11.0",
++ "cross-spawn": "^6.0.4",
++ "css-modules-loader-core": "^1.1.0",
++ "cssnano": "^4.0.0",
++ "deasync": "^0.1.14",
++ "dotenv": "^5.0.0",
++ "dotenv-expand": "^4.2.0",
++ "fast-glob": "^2.2.2",
++ "filesize": "^3.6.0",
++ "get-port": "^3.2.0",
++ "htmlnano": "^0.2.2",
++ "is-glob": "^4.0.0",
++ "is-url": "^1.2.2",
++ "js-yaml": "^3.10.0",
++ "json5": "^1.0.1",
++ "micromatch": "^3.0.4",
++ "mkdirp": "^0.5.1",
++ "node-forge": "^0.7.1",
++ "node-libs-browser": "^2.0.0",
++ "opn": "^5.1.0",
++ "postcss": "^7.0.11",
++ "postcss-value-parser": "^3.3.1",
++ "posthtml": "^0.11.2",
++ "posthtml-parser": "^0.4.0",
++ "posthtml-render": "^1.1.3",
++ "resolve": "^1.4.0",
++ "semver": "^5.4.1",
++ "serialize-to-js": "^1.1.1",
++ "serve-static": "^1.12.4",
++ "source-map": "0.6.1",
++ "terser": "^3.7.3",
++ "v8-compile-cache": "^2.0.0",
++ "ws": "^5.1.1"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "parse-asn1": {
++ "version": "5.1.5",
++ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
++ "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
++ "dev": true,
++ "requires": {
++ "asn1.js": "^4.0.0",
++ "browserify-aes": "^1.0.0",
++ "create-hash": "^1.1.0",
++ "evp_bytestokey": "^1.0.0",
++ "pbkdf2": "^3.0.3",
++ "safe-buffer": "^5.1.1"
++ }
++ },
++ "parse-json": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
++ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
++ "dev": true,
++ "requires": {
++ "error-ex": "^1.3.1",
++ "json-parse-better-errors": "^1.0.1"
++ }
++ },
++ "parse5": {
++ "version": "5.1.0",
++ "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
++ "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==",
++ "dev": true
++ },
++ "parseurl": {
++ "version": "1.3.3",
++ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
++ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
++ "dev": true
++ },
++ "pascalcase": {
++ "version": "0.1.1",
++ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
++ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
++ "dev": true
++ },
++ "path-browserify": {
++ "version": "0.0.1",
++ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
++ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
++ "dev": true
++ },
++ "path-dirname": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
++ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
++ "dev": true
++ },
++ "path-exists": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
++ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
++ "dev": true
++ },
++ "path-is-absolute": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
++ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
++ "dev": true
++ },
++ "path-key": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
++ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
++ "dev": true
++ },
++ "path-parse": {
++ "version": "1.0.6",
++ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
++ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
++ "dev": true
++ },
++ "pbkdf2": {
++ "version": "3.0.17",
++ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
++ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
++ "dev": true,
++ "requires": {
++ "create-hash": "^1.1.2",
++ "create-hmac": "^1.1.4",
++ "ripemd160": "^2.0.1",
++ "safe-buffer": "^5.0.1",
++ "sha.js": "^2.4.8"
++ }
++ },
++ "performance-now": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
++ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
++ },
++ "physical-cpu-count": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz",
++ "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=",
++ "dev": true
++ },
++ "pkg-up": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
++ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
++ "dev": true,
++ "requires": {
++ "find-up": "^2.1.0"
++ }
++ },
++ "pn": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
++ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
++ "dev": true
++ },
++ "posix-character-classes": {
++ "version": "0.1.1",
++ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
++ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
++ "dev": true
++ },
++ "postcss": {
++ "version": "7.0.27",
++ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
++ "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
++ "dev": true,
++ "requires": {
++ "chalk": "^2.4.2",
++ "source-map": "^0.6.1",
++ "supports-color": "^6.1.0"
++ }
++ },
++ "postcss-calc": {
++ "version": "7.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz",
++ "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.27",
++ "postcss-selector-parser": "^6.0.2",
++ "postcss-value-parser": "^4.0.2"
++ }
++ },
++ "postcss-colormin": {
++ "version": "4.0.3",
++ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
++ "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
++ "dev": true,
++ "requires": {
++ "browserslist": "^4.0.0",
++ "color": "^3.0.0",
++ "has": "^1.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-convert-values": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
++ "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-discard-comments": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
++ "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.0"
++ }
++ },
++ "postcss-discard-duplicates": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
++ "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.0"
++ }
++ },
++ "postcss-discard-empty": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
++ "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.0"
++ }
++ },
++ "postcss-discard-overridden": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
++ "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.0"
++ }
++ },
++ "postcss-merge-longhand": {
++ "version": "4.0.11",
++ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
++ "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
++ "dev": true,
++ "requires": {
++ "css-color-names": "0.0.4",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0",
++ "stylehacks": "^4.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-merge-rules": {
++ "version": "4.0.3",
++ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
++ "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
++ "dev": true,
++ "requires": {
++ "browserslist": "^4.0.0",
++ "caniuse-api": "^3.0.0",
++ "cssnano-util-same-parent": "^4.0.0",
++ "postcss": "^7.0.0",
++ "postcss-selector-parser": "^3.0.0",
++ "vendors": "^1.0.0"
++ },
++ "dependencies": {
++ "postcss-selector-parser": {
++ "version": "3.1.2",
++ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
++ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
++ "dev": true,
++ "requires": {
++ "dot-prop": "^5.2.0",
++ "indexes-of": "^1.0.1",
++ "uniq": "^1.0.1"
++ }
++ }
++ }
++ },
++ "postcss-minify-font-values": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
++ "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-minify-gradients": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
++ "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
++ "dev": true,
++ "requires": {
++ "cssnano-util-get-arguments": "^4.0.0",
++ "is-color-stop": "^1.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-minify-params": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
++ "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
++ "dev": true,
++ "requires": {
++ "alphanum-sort": "^1.0.0",
++ "browserslist": "^4.0.0",
++ "cssnano-util-get-arguments": "^4.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0",
++ "uniqs": "^2.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-minify-selectors": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
++ "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
++ "dev": true,
++ "requires": {
++ "alphanum-sort": "^1.0.0",
++ "has": "^1.0.0",
++ "postcss": "^7.0.0",
++ "postcss-selector-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-selector-parser": {
++ "version": "3.1.2",
++ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
++ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
++ "dev": true,
++ "requires": {
++ "dot-prop": "^5.2.0",
++ "indexes-of": "^1.0.1",
++ "uniq": "^1.0.1"
++ }
++ }
++ }
++ },
++ "postcss-modules-extract-imports": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz",
++ "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
++ "dev": true,
++ "requires": {
++ "postcss": "^6.0.1"
++ },
++ "dependencies": {
++ "postcss": {
++ "version": "6.0.23",
++ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
++ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
++ "dev": true,
++ "requires": {
++ "chalk": "^2.4.1",
++ "source-map": "^0.6.1",
++ "supports-color": "^5.4.0"
++ }
++ },
++ "supports-color": {
++ "version": "5.5.0",
++ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
++ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
++ "dev": true,
++ "requires": {
++ "has-flag": "^3.0.0"
++ }
++ }
++ }
++ },
++ "postcss-modules-local-by-default": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
++ "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
++ "dev": true,
++ "requires": {
++ "css-selector-tokenizer": "^0.7.0",
++ "postcss": "^6.0.1"
++ },
++ "dependencies": {
++ "postcss": {
++ "version": "6.0.23",
++ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
++ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
++ "dev": true,
++ "requires": {
++ "chalk": "^2.4.1",
++ "source-map": "^0.6.1",
++ "supports-color": "^5.4.0"
++ }
++ },
++ "supports-color": {
++ "version": "5.5.0",
++ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
++ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
++ "dev": true,
++ "requires": {
++ "has-flag": "^3.0.0"
++ }
++ }
++ }
++ },
++ "postcss-modules-scope": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
++ "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
++ "dev": true,
++ "requires": {
++ "css-selector-tokenizer": "^0.7.0",
++ "postcss": "^6.0.1"
++ },
++ "dependencies": {
++ "postcss": {
++ "version": "6.0.23",
++ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
++ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
++ "dev": true,
++ "requires": {
++ "chalk": "^2.4.1",
++ "source-map": "^0.6.1",
++ "supports-color": "^5.4.0"
++ }
++ },
++ "supports-color": {
++ "version": "5.5.0",
++ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
++ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
++ "dev": true,
++ "requires": {
++ "has-flag": "^3.0.0"
++ }
++ }
++ }
++ },
++ "postcss-modules-values": {
++ "version": "1.3.0",
++ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
++ "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
++ "dev": true,
++ "requires": {
++ "icss-replace-symbols": "^1.1.0",
++ "postcss": "^6.0.1"
++ },
++ "dependencies": {
++ "postcss": {
++ "version": "6.0.23",
++ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
++ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
++ "dev": true,
++ "requires": {
++ "chalk": "^2.4.1",
++ "source-map": "^0.6.1",
++ "supports-color": "^5.4.0"
++ }
++ },
++ "supports-color": {
++ "version": "5.5.0",
++ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
++ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
++ "dev": true,
++ "requires": {
++ "has-flag": "^3.0.0"
++ }
++ }
++ }
++ },
++ "postcss-normalize-charset": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
++ "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.0"
++ }
++ },
++ "postcss-normalize-display-values": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
++ "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
++ "dev": true,
++ "requires": {
++ "cssnano-util-get-match": "^4.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-normalize-positions": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
++ "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
++ "dev": true,
++ "requires": {
++ "cssnano-util-get-arguments": "^4.0.0",
++ "has": "^1.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-normalize-repeat-style": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
++ "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
++ "dev": true,
++ "requires": {
++ "cssnano-util-get-arguments": "^4.0.0",
++ "cssnano-util-get-match": "^4.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-normalize-string": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
++ "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
++ "dev": true,
++ "requires": {
++ "has": "^1.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-normalize-timing-functions": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
++ "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
++ "dev": true,
++ "requires": {
++ "cssnano-util-get-match": "^4.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-normalize-unicode": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
++ "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
++ "dev": true,
++ "requires": {
++ "browserslist": "^4.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-normalize-url": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
++ "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
++ "dev": true,
++ "requires": {
++ "is-absolute-url": "^2.0.0",
++ "normalize-url": "^3.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-normalize-whitespace": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
++ "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
++ "dev": true,
++ "requires": {
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-ordered-values": {
++ "version": "4.1.2",
++ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
++ "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
++ "dev": true,
++ "requires": {
++ "cssnano-util-get-arguments": "^4.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-reduce-initial": {
++ "version": "4.0.3",
++ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
++ "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
++ "dev": true,
++ "requires": {
++ "browserslist": "^4.0.0",
++ "caniuse-api": "^3.0.0",
++ "has": "^1.0.0",
++ "postcss": "^7.0.0"
++ }
++ },
++ "postcss-reduce-transforms": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
++ "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
++ "dev": true,
++ "requires": {
++ "cssnano-util-get-match": "^4.0.0",
++ "has": "^1.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-selector-parser": {
++ "version": "6.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
++ "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
++ "dev": true,
++ "requires": {
++ "cssesc": "^3.0.0",
++ "indexes-of": "^1.0.1",
++ "uniq": "^1.0.1"
++ }
++ },
++ "postcss-svgo": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
++ "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==",
++ "dev": true,
++ "requires": {
++ "is-svg": "^3.0.0",
++ "postcss": "^7.0.0",
++ "postcss-value-parser": "^3.0.0",
++ "svgo": "^1.0.0"
++ },
++ "dependencies": {
++ "postcss-value-parser": {
++ "version": "3.3.1",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
++ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
++ "dev": true
++ }
++ }
++ },
++ "postcss-unique-selectors": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
++ "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
++ "dev": true,
++ "requires": {
++ "alphanum-sort": "^1.0.0",
++ "postcss": "^7.0.0",
++ "uniqs": "^2.0.0"
++ }
++ },
++ "postcss-value-parser": {
++ "version": "4.0.3",
++ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz",
++ "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==",
++ "dev": true
++ },
++ "posthtml": {
++ "version": "0.11.6",
++ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz",
++ "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==",
++ "dev": true,
++ "requires": {
++ "posthtml-parser": "^0.4.1",
++ "posthtml-render": "^1.1.5"
++ }
++ },
++ "posthtml-parser": {
++ "version": "0.4.2",
++ "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz",
++ "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==",
++ "dev": true,
++ "requires": {
++ "htmlparser2": "^3.9.2"
++ }
++ },
++ "posthtml-render": {
++ "version": "1.2.2",
++ "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz",
++ "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==",
++ "dev": true
++ },
++ "prelude-ls": {
++ "version": "1.1.2",
++ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
++ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
++ "dev": true
++ },
++ "private": {
++ "version": "0.1.8",
++ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
++ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
++ "dev": true
++ },
++ "process": {
++ "version": "0.11.10",
++ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
++ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
++ "dev": true
++ },
++ "process-nextick-args": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
++ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
++ "dev": true
++ },
++ "proto-list": {
++ "version": "1.2.4",
++ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
++ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
++ "dev": true
++ },
++ "pseudomap": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
++ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
++ "dev": true
++ },
++ "psl": {
++ "version": "1.8.0",
++ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
++ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
++ },
++ "public-encrypt": {
++ "version": "4.0.3",
++ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
++ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
++ "dev": true,
++ "requires": {
++ "bn.js": "^4.1.0",
++ "browserify-rsa": "^4.0.0",
++ "create-hash": "^1.1.0",
++ "parse-asn1": "^5.0.0",
++ "randombytes": "^2.0.1",
++ "safe-buffer": "^5.1.2"
++ }
++ },
++ "punycode": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
++ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
++ },
++ "purgecss": {
++ "version": "1.4.2",
++ "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz",
++ "integrity": "sha512-hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==",
++ "dev": true,
++ "requires": {
++ "glob": "^7.1.3",
++ "postcss": "^7.0.14",
++ "postcss-selector-parser": "^6.0.0",
++ "yargs": "^14.0.0"
++ }
++ },
++ "q": {
++ "version": "1.5.1",
++ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
++ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
++ "dev": true
++ },
++ "qs": {
++ "version": "6.5.2",
++ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
++ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
++ },
++ "querystring": {
++ "version": "0.2.0",
++ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
++ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
++ "dev": true
++ },
++ "querystring-es3": {
++ "version": "0.2.1",
++ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
++ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
++ "dev": true
++ },
++ "quote-stream": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz",
++ "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=",
++ "dev": true,
++ "requires": {
++ "buffer-equal": "0.0.1",
++ "minimist": "^1.1.3",
++ "through2": "^2.0.0"
++ }
++ },
++ "randombytes": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
++ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
++ "dev": true,
++ "requires": {
++ "safe-buffer": "^5.1.0"
++ }
++ },
++ "randomfill": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
++ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
++ "dev": true,
++ "requires": {
++ "randombytes": "^2.0.5",
++ "safe-buffer": "^5.1.0"
++ }
++ },
++ "range-parser": {
++ "version": "1.2.1",
++ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
++ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
++ "dev": true
++ },
++ "readable-stream": {
++ "version": "2.3.7",
++ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
++ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
++ "dev": true,
++ "requires": {
++ "core-util-is": "~1.0.0",
++ "inherits": "~2.0.3",
++ "isarray": "~1.0.0",
++ "process-nextick-args": "~2.0.0",
++ "safe-buffer": "~5.1.1",
++ "string_decoder": "~1.1.1",
++ "util-deprecate": "~1.0.1"
++ }
++ },
++ "readdirp": {
++ "version": "2.2.1",
++ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
++ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
++ "dev": true,
++ "requires": {
++ "graceful-fs": "^4.1.11",
++ "micromatch": "^3.1.10",
++ "readable-stream": "^2.0.2"
++ }
++ },
++ "regenerate": {
++ "version": "1.4.0",
++ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
++ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
++ "dev": true
++ },
++ "regenerate-unicode-properties": {
++ "version": "8.2.0",
++ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
++ "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
++ "dev": true,
++ "requires": {
++ "regenerate": "^1.4.0"
++ }
++ },
++ "regenerator-runtime": {
++ "version": "0.13.5",
++ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
++ "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
++ "dev": true
++ },
++ "regenerator-transform": {
++ "version": "0.14.4",
++ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz",
++ "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==",
++ "dev": true,
++ "requires": {
++ "@babel/runtime": "^7.8.4",
++ "private": "^0.1.8"
++ },
++ "dependencies": {
++ "@babel/runtime": {
++ "version": "7.9.2",
++ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
++ "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
++ "dev": true,
++ "requires": {
++ "regenerator-runtime": "^0.13.4"
++ }
++ }
++ }
++ },
++ "regex-not": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
++ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
++ "dev": true,
++ "requires": {
++ "extend-shallow": "^3.0.2",
++ "safe-regex": "^1.1.0"
++ }
++ },
++ "regexpu-core": {
++ "version": "4.7.0",
++ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz",
++ "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==",
++ "dev": true,
++ "requires": {
++ "regenerate": "^1.4.0",
++ "regenerate-unicode-properties": "^8.2.0",
++ "regjsgen": "^0.5.1",
++ "regjsparser": "^0.6.4",
++ "unicode-match-property-ecmascript": "^1.0.4",
++ "unicode-match-property-value-ecmascript": "^1.2.0"
++ }
++ },
++ "regjsgen": {
++ "version": "0.5.1",
++ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
++ "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==",
++ "dev": true
++ },
++ "regjsparser": {
++ "version": "0.6.4",
++ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz",
++ "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==",
++ "dev": true,
++ "requires": {
++ "jsesc": "~0.5.0"
++ },
++ "dependencies": {
++ "jsesc": {
++ "version": "0.5.0",
++ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
++ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
++ "dev": true
++ }
++ }
++ },
++ "remove-trailing-separator": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
++ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
++ "dev": true
++ },
++ "repeat-element": {
++ "version": "1.1.3",
++ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
++ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
++ "dev": true
++ },
++ "repeat-string": {
++ "version": "1.6.1",
++ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
++ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
++ "dev": true
++ },
++ "request": {
++ "version": "2.88.2",
++ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
++ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
++ "requires": {
++ "aws-sign2": "~0.7.0",
++ "aws4": "^1.8.0",
++ "caseless": "~0.12.0",
++ "combined-stream": "~1.0.6",
++ "extend": "~3.0.2",
++ "forever-agent": "~0.6.1",
++ "form-data": "~2.3.2",
++ "har-validator": "~5.1.3",
++ "http-signature": "~1.2.0",
++ "is-typedarray": "~1.0.0",
++ "isstream": "~0.1.2",
++ "json-stringify-safe": "~5.0.1",
++ "mime-types": "~2.1.19",
++ "oauth-sign": "~0.9.0",
++ "performance-now": "^2.1.0",
++ "qs": "~6.5.2",
++ "safe-buffer": "^5.1.2",
++ "tough-cookie": "~2.5.0",
++ "tunnel-agent": "^0.6.0",
++ "uuid": "^3.3.2"
++ }
++ },
++ "request-promise-core": {
++ "version": "1.1.3",
++ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz",
++ "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==",
++ "dev": true,
++ "requires": {
++ "lodash": "^4.17.15"
++ }
++ },
++ "request-promise-native": {
++ "version": "1.0.8",
++ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz",
++ "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==",
++ "dev": true,
++ "requires": {
++ "request-promise-core": "1.1.3",
++ "stealthy-require": "^1.1.1",
++ "tough-cookie": "^2.3.3"
++ }
++ },
++ "require-directory": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
++ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
++ "dev": true
++ },
++ "require-main-filename": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
++ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
++ "dev": true
++ },
++ "resolve": {
++ "version": "1.17.0",
++ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
++ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
++ "dev": true,
++ "requires": {
++ "path-parse": "^1.0.6"
++ }
++ },
++ "resolve-from": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
++ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
++ "dev": true
++ },
++ "resolve-url": {
++ "version": "0.2.1",
++ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
++ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
++ "dev": true
++ },
++ "restore-cursor": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
++ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
++ "dev": true,
++ "requires": {
++ "onetime": "^2.0.0",
++ "signal-exit": "^3.0.2"
++ }
++ },
++ "ret": {
++ "version": "0.1.15",
++ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
++ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
++ "dev": true
++ },
++ "rgb-regex": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
++ "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=",
++ "dev": true
++ },
++ "rgba-regex": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
++ "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
++ "dev": true
++ },
++ "rimraf": {
++ "version": "2.6.3",
++ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
++ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
++ "dev": true,
++ "requires": {
++ "glob": "^7.1.3"
++ }
++ },
++ "ripemd160": {
++ "version": "2.0.2",
++ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
++ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
++ "dev": true,
++ "requires": {
++ "hash-base": "^3.0.0",
++ "inherits": "^2.0.1"
++ }
++ },
++ "safe-buffer": {
++ "version": "5.1.2",
++ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
++ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
++ },
++ "safe-regex": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
++ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
++ "dev": true,
++ "requires": {
++ "ret": "~0.1.10"
++ }
++ },
++ "safer-buffer": {
++ "version": "2.1.2",
++ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
++ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
++ },
++ "safer-eval": {
++ "version": "1.3.6",
++ "resolved": "https://registry.npmjs.org/safer-eval/-/safer-eval-1.3.6.tgz",
++ "integrity": "sha512-DN9tBsZgtUOHODzSfO1nGCLhZtxc7Qq/d8/2SNxQZ9muYXZspSh1fO7HOsrf4lcelBNviAJLCxB/ggmG+jV1aw==",
++ "dev": true,
++ "requires": {
++ "clones": "^1.2.0"
++ }
++ },
++ "sax": {
++ "version": "1.2.4",
++ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
++ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
++ "dev": true
++ },
++ "saxes": {
++ "version": "3.1.11",
++ "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz",
++ "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==",
++ "dev": true,
++ "requires": {
++ "xmlchars": "^2.1.1"
++ }
++ },
++ "semver": {
++ "version": "5.7.1",
++ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
++ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
++ "dev": true
++ },
++ "send": {
++ "version": "0.17.1",
++ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
++ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
++ "dev": true,
++ "requires": {
++ "debug": "2.6.9",
++ "depd": "~1.1.2",
++ "destroy": "~1.0.4",
++ "encodeurl": "~1.0.2",
++ "escape-html": "~1.0.3",
++ "etag": "~1.8.1",
++ "fresh": "0.5.2",
++ "http-errors": "~1.7.2",
++ "mime": "1.6.0",
++ "ms": "2.1.1",
++ "on-finished": "~2.3.0",
++ "range-parser": "~1.2.1",
++ "statuses": "~1.5.0"
++ },
++ "dependencies": {
++ "debug": {
++ "version": "2.6.9",
++ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
++ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
++ "dev": true,
++ "requires": {
++ "ms": "2.0.0"
++ },
++ "dependencies": {
++ "ms": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
++ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
++ "dev": true
++ }
++ }
++ },
++ "ms": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
++ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
++ "dev": true
++ }
++ }
++ },
++ "serialize-to-js": {
++ "version": "1.2.2",
++ "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-1.2.2.tgz",
++ "integrity": "sha512-mUc8vA5iJghe+O+3s0YDGFLMJcqitVFk787YKiv8a4sf6RX5W0u81b+gcHrp15O0fFa010dRBVZvwcKXOWsL9Q==",
++ "dev": true,
++ "requires": {
++ "js-beautify": "^1.8.9",
++ "safer-eval": "^1.3.0"
++ }
++ },
++ "serve-static": {
++ "version": "1.14.1",
++ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
++ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
++ "dev": true,
++ "requires": {
++ "encodeurl": "~1.0.2",
++ "escape-html": "~1.0.3",
++ "parseurl": "~1.3.3",
++ "send": "0.17.1"
++ }
++ },
++ "set-blocking": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
++ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
++ "dev": true
++ },
++ "set-value": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
++ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
++ "dev": true,
++ "requires": {
++ "extend-shallow": "^2.0.1",
++ "is-extendable": "^0.1.1",
++ "is-plain-object": "^2.0.3",
++ "split-string": "^3.0.1"
++ },
++ "dependencies": {
++ "extend-shallow": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
++ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
++ "dev": true,
++ "requires": {
++ "is-extendable": "^0.1.0"
++ }
++ }
++ }
++ },
++ "setimmediate": {
++ "version": "1.0.5",
++ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
++ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
++ "dev": true
++ },
++ "setprototypeof": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
++ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
++ "dev": true
++ },
++ "sha.js": {
++ "version": "2.4.11",
++ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
++ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
++ "dev": true,
++ "requires": {
++ "inherits": "^2.0.1",
++ "safe-buffer": "^5.0.1"
++ }
++ },
++ "shallow-copy": {
++ "version": "0.0.1",
++ "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz",
++ "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=",
++ "dev": true
++ },
++ "shebang-command": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
++ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
++ "dev": true,
++ "requires": {
++ "shebang-regex": "^1.0.0"
++ }
++ },
++ "shebang-regex": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
++ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
++ "dev": true
++ },
++ "sigmund": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
++ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
++ "dev": true
++ },
++ "signal-exit": {
++ "version": "3.0.3",
++ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
++ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
++ "dev": true
++ },
++ "simple-swizzle": {
++ "version": "0.2.2",
++ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
++ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
++ "dev": true,
++ "requires": {
++ "is-arrayish": "^0.3.1"
++ },
++ "dependencies": {
++ "is-arrayish": {
++ "version": "0.3.2",
++ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
++ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
++ "dev": true
++ }
++ }
++ },
++ "snapdragon": {
++ "version": "0.8.2",
++ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
++ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
++ "dev": true,
++ "requires": {
++ "base": "^0.11.1",
++ "debug": "^2.2.0",
++ "define-property": "^0.2.5",
++ "extend-shallow": "^2.0.1",
++ "map-cache": "^0.2.2",
++ "source-map": "^0.5.6",
++ "source-map-resolve": "^0.5.0",
++ "use": "^3.1.0"
++ },
++ "dependencies": {
++ "debug": {
++ "version": "2.6.9",
++ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
++ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
++ "dev": true,
++ "requires": {
++ "ms": "2.0.0"
++ }
++ },
++ "define-property": {
++ "version": "0.2.5",
++ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
++ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
++ "dev": true,
++ "requires": {
++ "is-descriptor": "^0.1.0"
++ }
++ },
++ "extend-shallow": {
++ "version": "2.0.1",
++ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
++ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
++ "dev": true,
++ "requires": {
++ "is-extendable": "^0.1.0"
++ }
++ },
++ "ms": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
++ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
++ "dev": true
++ },
++ "source-map": {
++ "version": "0.5.7",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
++ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
++ "dev": true
++ }
++ }
++ },
++ "snapdragon-node": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
++ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
++ "dev": true,
++ "requires": {
++ "define-property": "^1.0.0",
++ "isobject": "^3.0.0",
++ "snapdragon-util": "^3.0.1"
++ },
++ "dependencies": {
++ "define-property": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
++ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
++ "dev": true,
++ "requires": {
++ "is-descriptor": "^1.0.0"
++ }
++ },
++ "is-accessor-descriptor": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
++ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
++ "dev": true,
++ "requires": {
++ "kind-of": "^6.0.0"
++ }
++ },
++ "is-data-descriptor": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
++ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
++ "dev": true,
++ "requires": {
++ "kind-of": "^6.0.0"
++ }
++ },
++ "is-descriptor": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
++ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
++ "dev": true,
++ "requires": {
++ "is-accessor-descriptor": "^1.0.0",
++ "is-data-descriptor": "^1.0.0",
++ "kind-of": "^6.0.2"
++ }
++ }
++ }
++ },
++ "snapdragon-util": {
++ "version": "3.0.1",
++ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
++ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
++ "dev": true,
++ "requires": {
++ "kind-of": "^3.2.0"
++ },
++ "dependencies": {
++ "kind-of": {
++ "version": "3.2.2",
++ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
++ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
++ "dev": true,
++ "requires": {
++ "is-buffer": "^1.1.5"
++ }
++ }
++ }
++ },
++ "source-map": {
++ "version": "0.6.1",
++ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
++ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
++ "dev": true
++ },
++ "source-map-resolve": {
++ "version": "0.5.3",
++ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
++ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
++ "dev": true,
++ "requires": {
++ "atob": "^2.1.2",
++ "decode-uri-component": "^0.2.0",
++ "resolve-url": "^0.2.1",
++ "source-map-url": "^0.4.0",
++ "urix": "^0.1.0"
++ }
++ },
++ "source-map-support": {
++ "version": "0.5.19",
++ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
++ "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
++ "dev": true,
++ "requires": {
++ "buffer-from": "^1.0.0",
++ "source-map": "^0.6.0"
++ }
++ },
++ "source-map-url": {
++ "version": "0.4.0",
++ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
++ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
++ "dev": true
++ },
++ "split-string": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
++ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
++ "dev": true,
++ "requires": {
++ "extend-shallow": "^3.0.0"
++ }
++ },
++ "sprintf-js": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
++ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
++ "dev": true
++ },
++ "sshpk": {
++ "version": "1.16.1",
++ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
++ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
++ "requires": {
++ "asn1": "~0.2.3",
++ "assert-plus": "^1.0.0",
++ "bcrypt-pbkdf": "^1.0.0",
++ "dashdash": "^1.12.0",
++ "ecc-jsbn": "~0.1.1",
++ "getpass": "^0.1.1",
++ "jsbn": "~0.1.0",
++ "safer-buffer": "^2.0.2",
++ "tweetnacl": "~0.14.0"
++ }
++ },
++ "stable": {
++ "version": "0.1.8",
++ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
++ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
++ "dev": true
++ },
++ "static-eval": {
++ "version": "2.0.5",
++ "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz",
++ "integrity": "sha512-nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA==",
++ "dev": true,
++ "requires": {
++ "escodegen": "^1.11.1"
++ },
++ "dependencies": {
++ "escodegen": {
++ "version": "1.14.1",
++ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz",
++ "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==",
++ "dev": true,
++ "requires": {
++ "esprima": "^4.0.1",
++ "estraverse": "^4.2.0",
++ "esutils": "^2.0.2",
++ "optionator": "^0.8.1",
++ "source-map": "~0.6.1"
++ }
++ }
++ }
++ },
++ "static-extend": {
++ "version": "0.1.2",
++ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
++ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
++ "dev": true,
++ "requires": {
++ "define-property": "^0.2.5",
++ "object-copy": "^0.1.0"
++ },
++ "dependencies": {
++ "define-property": {
++ "version": "0.2.5",
++ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
++ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
++ "dev": true,
++ "requires": {
++ "is-descriptor": "^0.1.0"
++ }
++ }
++ }
++ },
++ "static-module": {
++ "version": "2.2.5",
++ "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz",
++ "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==",
++ "dev": true,
++ "requires": {
++ "concat-stream": "~1.6.0",
++ "convert-source-map": "^1.5.1",
++ "duplexer2": "~0.1.4",
++ "escodegen": "~1.9.0",
++ "falafel": "^2.1.0",
++ "has": "^1.0.1",
++ "magic-string": "^0.22.4",
++ "merge-source-map": "1.0.4",
++ "object-inspect": "~1.4.0",
++ "quote-stream": "~1.0.2",
++ "readable-stream": "~2.3.3",
++ "shallow-copy": "~0.0.1",
++ "static-eval": "^2.0.0",
++ "through2": "~2.0.3"
++ },
++ "dependencies": {
++ "object-inspect": {
++ "version": "1.4.1",
++ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz",
++ "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==",
++ "dev": true
++ }
++ }
++ },
++ "statuses": {
++ "version": "1.5.0",
++ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
++ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
++ "dev": true
++ },
++ "stealthy-require": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
++ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
++ "dev": true
++ },
++ "stream-browserify": {
++ "version": "2.0.2",
++ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
++ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
++ "dev": true,
++ "requires": {
++ "inherits": "~2.0.1",
++ "readable-stream": "^2.0.2"
++ }
++ },
++ "stream-http": {
++ "version": "2.8.3",
++ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
++ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
++ "dev": true,
++ "requires": {
++ "builtin-status-codes": "^3.0.0",
++ "inherits": "^2.0.1",
++ "readable-stream": "^2.3.6",
++ "to-arraybuffer": "^1.0.0",
++ "xtend": "^4.0.0"
++ }
++ },
++ "string-width": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
++ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
++ "dev": true,
++ "requires": {
++ "emoji-regex": "^7.0.1",
++ "is-fullwidth-code-point": "^2.0.0",
++ "strip-ansi": "^5.1.0"
++ },
++ "dependencies": {
++ "ansi-regex": {
++ "version": "4.1.0",
++ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
++ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
++ "dev": true
++ },
++ "strip-ansi": {
++ "version": "5.2.0",
++ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
++ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
++ "dev": true,
++ "requires": {
++ "ansi-regex": "^4.1.0"
++ }
++ }
++ }
++ },
++ "string.prototype.trimend": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
++ "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
++ "dev": true,
++ "requires": {
++ "define-properties": "^1.1.3",
++ "es-abstract": "^1.17.5"
++ }
++ },
++ "string.prototype.trimleft": {
++ "version": "2.1.2",
++ "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
++ "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
++ "dev": true,
++ "requires": {
++ "define-properties": "^1.1.3",
++ "es-abstract": "^1.17.5",
++ "string.prototype.trimstart": "^1.0.0"
++ }
++ },
++ "string.prototype.trimright": {
++ "version": "2.1.2",
++ "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
++ "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
++ "dev": true,
++ "requires": {
++ "define-properties": "^1.1.3",
++ "es-abstract": "^1.17.5",
++ "string.prototype.trimend": "^1.0.0"
++ }
++ },
++ "string.prototype.trimstart": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
++ "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
++ "dev": true,
++ "requires": {
++ "define-properties": "^1.1.3",
++ "es-abstract": "^1.17.5"
++ }
++ },
++ "string_decoder": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
++ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
++ "dev": true,
++ "requires": {
++ "safe-buffer": "~5.1.0"
++ }
++ },
++ "strip-ansi": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
++ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
++ "dev": true,
++ "requires": {
++ "ansi-regex": "^3.0.0"
++ }
++ },
++ "stylehacks": {
++ "version": "4.0.3",
++ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
++ "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
++ "dev": true,
++ "requires": {
++ "browserslist": "^4.0.0",
++ "postcss": "^7.0.0",
++ "postcss-selector-parser": "^3.0.0"
++ },
++ "dependencies": {
++ "postcss-selector-parser": {
++ "version": "3.1.2",
++ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
++ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
++ "dev": true,
++ "requires": {
++ "dot-prop": "^5.2.0",
++ "indexes-of": "^1.0.1",
++ "uniq": "^1.0.1"
++ }
++ }
++ }
++ },
++ "supports-color": {
++ "version": "6.1.0",
++ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
++ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
++ "dev": true,
++ "requires": {
++ "has-flag": "^3.0.0"
++ }
++ },
++ "svgo": {
++ "version": "1.3.2",
++ "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
++ "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
++ "dev": true,
++ "requires": {
++ "chalk": "^2.4.1",
++ "coa": "^2.0.2",
++ "css-select": "^2.0.0",
++ "css-select-base-adapter": "^0.1.1",
++ "css-tree": "1.0.0-alpha.37",
++ "csso": "^4.0.2",
++ "js-yaml": "^3.13.1",
++ "mkdirp": "~0.5.1",
++ "object.values": "^1.1.0",
++ "sax": "~1.2.4",
++ "stable": "^0.1.8",
++ "unquote": "~1.1.1",
++ "util.promisify": "~1.0.0"
++ }
++ },
++ "symbol-tree": {
++ "version": "3.2.4",
++ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
++ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
++ "dev": true
++ },
++ "temp": {
++ "version": "0.9.0",
++ "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz",
++ "integrity": "sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==",
++ "dev": true,
++ "requires": {
++ "rimraf": "~2.6.2"
++ }
++ },
++ "terser": {
++ "version": "3.17.0",
++ "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz",
++ "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==",
++ "dev": true,
++ "requires": {
++ "commander": "^2.19.0",
++ "source-map": "~0.6.1",
++ "source-map-support": "~0.5.10"
++ }
++ },
++ "through2": {
++ "version": "2.0.5",
++ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
++ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
++ "dev": true,
++ "requires": {
++ "readable-stream": "~2.3.6",
++ "xtend": "~4.0.1"
++ }
++ },
++ "timers-browserify": {
++ "version": "2.0.11",
++ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz",
++ "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==",
++ "dev": true,
++ "requires": {
++ "setimmediate": "^1.0.4"
++ }
++ },
++ "timsort": {
++ "version": "0.3.0",
++ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
++ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
++ "dev": true
++ },
++ "tiny-inflate": {
++ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
++ "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==",
++ "dev": true
++ },
++ "to-arraybuffer": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
++ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
++ "dev": true
++ },
++ "to-fast-properties": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
++ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
++ "dev": true
++ },
++ "to-object-path": {
++ "version": "0.3.0",
++ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
++ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
++ "dev": true,
++ "requires": {
++ "kind-of": "^3.0.2"
++ },
++ "dependencies": {
++ "kind-of": {
++ "version": "3.2.2",
++ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
++ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
++ "dev": true,
++ "requires": {
++ "is-buffer": "^1.1.5"
++ }
++ }
++ }
++ },
++ "to-regex": {
++ "version": "3.0.2",
++ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
++ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
++ "dev": true,
++ "requires": {
++ "define-property": "^2.0.2",
++ "extend-shallow": "^3.0.2",
++ "regex-not": "^1.0.2",
++ "safe-regex": "^1.1.0"
++ }
++ },
++ "to-regex-range": {
++ "version": "2.1.1",
++ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
++ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
++ "dev": true,
++ "requires": {
++ "is-number": "^3.0.0",
++ "repeat-string": "^1.6.1"
++ }
++ },
++ "toidentifier": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
++ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+ "dev": true
+ },
+- "brace-expansion": {
+- "version": "1.1.11",
+- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
++ "tough-cookie": {
++ "version": "2.5.0",
++ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
++ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
++ "requires": {
++ "psl": "^1.1.28",
++ "punycode": "^2.1.1"
++ }
++ },
++ "tr46": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
++ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+ "dev": true,
+ "requires": {
+- "balanced-match": "^1.0.0",
+- "concat-map": "0.0.1"
++ "punycode": "^2.1.0"
+ }
+ },
+- "concat-map": {
+- "version": "0.0.1",
+- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
++ "trim-right": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
++ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+- "cross-spawn": {
+- "version": "6.0.5",
+- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
++ "tty-browserify": {
++ "version": "0.0.0",
++ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
++ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
++ "dev": true
++ },
++ "tunnel-agent": {
++ "version": "0.6.0",
++ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
++ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
++ "requires": {
++ "safe-buffer": "^5.0.1"
++ }
++ },
++ "tweetnacl": {
++ "version": "0.14.5",
++ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
++ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
++ },
++ "type-check": {
++ "version": "0.3.2",
++ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
++ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+- "nice-try": "^1.0.4",
+- "path-key": "^2.0.1",
+- "semver": "^5.5.0",
+- "shebang-command": "^1.2.0",
+- "which": "^1.2.9"
++ "prelude-ls": "~1.1.2"
+ }
+ },
+- "elm-hot": {
+- "version": "1.1.1",
+- "resolved": "https://registry.npmjs.org/elm-hot/-/elm-hot-1.1.1.tgz",
+- "integrity": "sha512-ZHjoHd2Ev6riNXNQirj3J+GKKXXwedAUikfFBYzlVL/+3CdGs96cpZ7nhAk4c5l//Qa9ymltrqX36mOlr0pPFA==",
++ "typedarray": {
++ "version": "0.0.6",
++ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
++ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+- "find-elm-dependencies": {
+- "version": "2.0.2",
+- "resolved": "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-2.0.2.tgz",
+- "integrity": "sha512-nM5UCbccD1G8CGK2GsM7ykG3ksOAl9E+34jiDfl07CAl2OPnLpBVWY2hlxEmIkSBfdJjSopEowWHrO0cI8RhxQ==",
++ "uncss": {
++ "version": "0.17.3",
++ "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz",
++ "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==",
+ "dev": true,
+ "requires": {
+- "firstline": "1.2.0",
+- "lodash": "4.17.15"
++ "commander": "^2.20.0",
++ "glob": "^7.1.4",
++ "is-absolute-url": "^3.0.1",
++ "is-html": "^1.1.0",
++ "jsdom": "^14.1.0",
++ "lodash": "^4.17.15",
++ "postcss": "^7.0.17",
++ "postcss-selector-parser": "6.0.2",
++ "request": "^2.88.0"
++ },
++ "dependencies": {
++ "is-absolute-url": {
++ "version": "3.0.3",
++ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
++ "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
++ "dev": true
++ }
+ }
+ },
+- "firstline": {
++ "unicode-canonical-property-names-ecmascript": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
++ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
++ "dev": true
++ },
++ "unicode-match-property-ecmascript": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
++ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
++ "dev": true,
++ "requires": {
++ "unicode-canonical-property-names-ecmascript": "^1.0.4",
++ "unicode-property-aliases-ecmascript": "^1.0.4"
++ }
++ },
++ "unicode-match-property-value-ecmascript": {
+ "version": "1.2.0",
+- "resolved": "https://registry.npmjs.org/firstline/-/firstline-1.2.0.tgz",
+- "integrity": "sha1-yfSIbn9/vwr8EtcZQdzgaxkq6gU=",
++ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
++ "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==",
+ "dev": true
+ },
+- "fs.realpath": {
+- "version": "1.0.0",
+- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
++ "unicode-property-aliases-ecmascript": {
++ "version": "1.1.0",
++ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
++ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
+ "dev": true
+ },
+- "glob": {
+- "version": "7.1.4",
+- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+- "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
++ "unicode-trie": {
++ "version": "0.3.1",
++ "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz",
++ "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=",
+ "dev": true,
+ "requires": {
+- "fs.realpath": "^1.0.0",
+- "inflight": "^1.0.4",
+- "inherits": "2",
+- "minimatch": "^3.0.4",
+- "once": "^1.3.0",
+- "path-is-absolute": "^1.0.0"
++ "pako": "^0.2.5",
++ "tiny-inflate": "^1.0.0"
+ }
+ },
+- "inflight": {
+- "version": "1.0.6",
+- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
++ "union-value": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
++ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+- "once": "^1.3.0",
+- "wrappy": "1"
++ "arr-union": "^3.1.0",
++ "get-value": "^2.0.6",
++ "is-extendable": "^0.1.1",
++ "set-value": "^2.0.1"
+ }
+ },
+- "inherits": {
+- "version": "2.0.4",
+- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
++ "uniq": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
++ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
+ },
+- "isexe": {
++ "uniqs": {
+ "version": "2.0.0",
+- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
++ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
++ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+ "dev": true
+ },
+- "lodash": {
+- "version": "4.17.15",
+- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
++ "unquote": {
++ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
++ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+ "dev": true
+ },
+- "minimatch": {
+- "version": "3.0.4",
+- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
++ "unset-value": {
++ "version": "1.0.0",
++ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
++ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+- "brace-expansion": "^1.1.7"
++ "has-value": "^0.3.1",
++ "isobject": "^3.0.0"
++ },
++ "dependencies": {
++ "has-value": {
++ "version": "0.3.1",
++ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
++ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
++ "dev": true,
++ "requires": {
++ "get-value": "^2.0.3",
++ "has-values": "^0.1.4",
++ "isobject": "^2.0.0"
++ },
++ "dependencies": {
++ "isobject": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
++ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
++ "dev": true,
++ "requires": {
++ "isarray": "1.0.0"
++ }
++ }
++ }
++ },
++ "has-values": {
++ "version": "0.1.4",
++ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
++ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
++ "dev": true
++ }
+ }
+ },
+- "nice-try": {
+- "version": "1.0.5",
+- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
++ "upath": {
++ "version": "1.2.0",
++ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
++ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "dev": true
+ },
+- "node-elm-compiler": {
+- "version": "5.0.4",
+- "resolved": "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-5.0.4.tgz",
+- "integrity": "sha512-VQsT8QSierYGkHzRed+b4MnccQVF1+qPHunE8jBoU7jD6YpuRqCDPzEoC2zfyEJS80qVnlMZrqobLnyjzX9lJg==",
++ "uri-js": {
++ "version": "4.2.2",
++ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
++ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
++ "requires": {
++ "punycode": "^2.1.0"
++ }
++ },
++ "urix": {
++ "version": "0.1.0",
++ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
++ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
++ "dev": true
++ },
++ "url": {
++ "version": "0.11.0",
++ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
++ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+- "cross-spawn": "6.0.5",
+- "find-elm-dependencies": "2.0.2",
+- "lodash": "4.17.15",
+- "temp": "^0.9.0"
++ "punycode": "1.3.2",
++ "querystring": "0.2.0"
++ },
++ "dependencies": {
++ "punycode": {
++ "version": "1.3.2",
++ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
++ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
++ "dev": true
++ }
+ }
+ },
+- "once": {
+- "version": "1.4.0",
+- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
++ "use": {
++ "version": "3.1.1",
++ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
++ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
++ "dev": true
++ },
++ "util": {
++ "version": "0.11.1",
++ "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
++ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "dev": true,
+ "requires": {
+- "wrappy": "1"
++ "inherits": "2.0.3"
++ },
++ "dependencies": {
++ "inherits": {
++ "version": "2.0.3",
++ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
++ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
++ "dev": true
++ }
+ }
+ },
+- "path-is-absolute": {
++ "util-deprecate": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
++ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
++ "dev": true
++ },
++ "util.promisify": {
+ "version": "1.0.1",
+- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
++ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
++ "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
++ "dev": true,
++ "requires": {
++ "define-properties": "^1.1.3",
++ "es-abstract": "^1.17.2",
++ "has-symbols": "^1.0.1",
++ "object.getownpropertydescriptors": "^2.1.0"
++ }
++ },
++ "uuid": {
++ "version": "3.4.0",
++ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
++ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
++ },
++ "v8-compile-cache": {
++ "version": "2.1.0",
++ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
++ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
+ "dev": true
+ },
+- "path-key": {
+- "version": "2.0.1",
+- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
++ "vendors": {
++ "version": "1.0.4",
++ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",
++ "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
+ "dev": true
+ },
+- "rimraf": {
+- "version": "2.6.3",
+- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
++ "verror": {
++ "version": "1.10.0",
++ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
++ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
++ "requires": {
++ "assert-plus": "^1.0.0",
++ "core-util-is": "1.0.2",
++ "extsprintf": "^1.2.0"
++ }
++ },
++ "vlq": {
++ "version": "0.2.3",
++ "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
++ "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
++ "dev": true
++ },
++ "vm-browserify": {
++ "version": "1.1.2",
++ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
++ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
++ "dev": true
++ },
++ "w3c-hr-time": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
++ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "dev": true,
+ "requires": {
+- "glob": "^7.1.3"
++ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+- "semver": {
+- "version": "5.7.1",
+- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
++ "w3c-xmlserializer": {
++ "version": "1.1.2",
++ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz",
++ "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==",
++ "dev": true,
++ "requires": {
++ "domexception": "^1.0.1",
++ "webidl-conversions": "^4.0.2",
++ "xml-name-validator": "^3.0.0"
++ }
++ },
++ "wcwidth": {
++ "version": "1.0.1",
++ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
++ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
++ "dev": true,
++ "requires": {
++ "defaults": "^1.0.3"
++ }
++ },
++ "webidl-conversions": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
++ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+- "shebang-command": {
+- "version": "1.2.0",
+- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
++ "whatwg-encoding": {
++ "version": "1.0.5",
++ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
++ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "requires": {
+- "shebang-regex": "^1.0.0"
++ "iconv-lite": "0.4.24"
+ }
+ },
+- "shebang-regex": {
+- "version": "1.0.0",
+- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
++ "whatwg-mimetype": {
++ "version": "2.3.0",
++ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
++ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true
+ },
+- "temp": {
+- "version": "0.9.0",
+- "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz",
+- "integrity": "sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==",
++ "whatwg-url": {
++ "version": "7.1.0",
++ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
++ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "requires": {
+- "rimraf": "~2.6.2"
++ "lodash.sortby": "^4.7.0",
++ "tr46": "^1.0.1",
++ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "which": {
+@@ -205,11 +7972,164 @@
+ "isexe": "^2.0.0"
+ }
+ },
++ "which-module": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
++ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
++ "dev": true
++ },
++ "word-wrap": {
++ "version": "1.2.3",
++ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
++ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
++ "dev": true
++ },
++ "wrap-ansi": {
++ "version": "5.1.0",
++ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
++ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
++ "dev": true,
++ "requires": {
++ "ansi-styles": "^3.2.0",
++ "string-width": "^3.0.0",
++ "strip-ansi": "^5.0.0"
++ },
++ "dependencies": {
++ "ansi-regex": {
++ "version": "4.1.0",
++ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
++ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
++ "dev": true
++ },
++ "strip-ansi": {
++ "version": "5.2.0",
++ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
++ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
++ "dev": true,
++ "requires": {
++ "ansi-regex": "^4.1.0"
++ }
++ }
++ }
++ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
++ },
++ "ws": {
++ "version": "5.2.2",
++ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
++ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
++ "dev": true,
++ "requires": {
++ "async-limiter": "~1.0.0"
++ }
++ },
++ "xml-name-validator": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
++ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
++ "dev": true
++ },
++ "xmlchars": {
++ "version": "2.2.0",
++ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
++ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
++ "dev": true
++ },
++ "xtend": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
++ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
++ "dev": true
++ },
++ "y18n": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
++ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
++ "dev": true
++ },
++ "yallist": {
++ "version": "2.1.2",
++ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
++ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
++ "dev": true
++ },
++ "yargs": {
++ "version": "14.2.3",
++ "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz",
++ "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==",
++ "dev": true,
++ "requires": {
++ "cliui": "^5.0.0",
++ "decamelize": "^1.2.0",
++ "find-up": "^3.0.0",
++ "get-caller-file": "^2.0.1",
++ "require-directory": "^2.1.1",
++ "require-main-filename": "^2.0.0",
++ "set-blocking": "^2.0.0",
++ "string-width": "^3.0.0",
++ "which-module": "^2.0.0",
++ "y18n": "^4.0.0",
++ "yargs-parser": "^15.0.1"
++ },
++ "dependencies": {
++ "find-up": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
++ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
++ "dev": true,
++ "requires": {
++ "locate-path": "^3.0.0"
++ }
++ },
++ "locate-path": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
++ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
++ "dev": true,
++ "requires": {
++ "p-locate": "^3.0.0",
++ "path-exists": "^3.0.0"
++ }
++ },
++ "p-limit": {
++ "version": "2.3.0",
++ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
++ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
++ "dev": true,
++ "requires": {
++ "p-try": "^2.0.0"
++ }
++ },
++ "p-locate": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
++ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
++ "dev": true,
++ "requires": {
++ "p-limit": "^2.0.0"
++ }
++ },
++ "p-try": {
++ "version": "2.2.0",
++ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
++ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
++ "dev": true
++ }
++ }
++ },
++ "yargs-parser": {
++ "version": "15.0.1",
++ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz",
++ "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==",
++ "dev": true,
++ "requires": {
++ "camelcase": "^5.0.0",
++ "decamelize": "^1.2.0"
++ }
+ }
+ }
+ }
+diff --git a/src/Api.elm b/src/Api.elm
+index 82e5f6c..bd8c516 100644
+--- a/src/Api.elm
++++ b/src/Api.elm
+@@ -36,7 +36,7 @@ init url =
+ { url | host = "api.codenamesgreen.com", path = "", query = Nothing, fragment = Nothing }
+
+ _ ->
+- { url | host = "api." ++ url.host, path = "", query = Nothing, fragment = Nothing }
++ { url | host = url.host, path = "/api", query = Nothing, fragment = Nothing }
+ in
+ { baseUrl = baseUrl }
+
+@@ -80,7 +80,7 @@ type alias Index =
+
+ endpointUrl : Url.Url -> String -> String
+ endpointUrl baseUrl path =
+- { baseUrl | path = path }
++ { baseUrl | path = baseUrl.path ++ path }
+ |> Url.toString
+
+
diff --git a/systems/eldiron/websites/games/codenames/default.nix b/systems/eldiron/websites/games/codenames/default.nix
new file mode 100644
index 0000000..7f09cc3
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/default.nix
@@ -0,0 +1,76 @@
+{ config, lib, pkgs, ... }:
+let
+ greenapid = pkgs.callPackage ./greenapid.nix {};
+ frontend = pkgs.callPackage ./frontend.nix { nodeEnv = pkgs.callPackage pkgs.mylibs.nodeEnv {}; };
+ wordlists = pkgs.runCommand "wordlists" {} ''
+ mkdir -p $out
+ cp -r ${./wordlists} $out/wordlists
+ '';
+ cfg = config.myServices.websites.games.codenames;
+in
+{
+ options.myServices.websites.games.codenames.enable = lib.mkEnableOption "Enable Codenames game";
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.games.subdomains.codenames = with config.myServices.dns.helpers;
+ ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.codenames = {
+ file.datetime = "2022-08-27T14:08:00";
+ service = {
+ name = "Codenames Green";
+ description = "Co-op codenames app";
+ website = "https://codenames.games.immae.eu/";
+ logo = "https://codenames.games.immae.eu/images/apple-touch-icon.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["NONE"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Codenames Green";
+ website = "https://www.codenamesgreen.com/";
+ license.url = "https://github.com/jbowens/codenamesgreen/blob/master/package.json";
+ license.name = "MIT";
+ version = greenapid.version;
+ source.url = "https://github.com/jbowens/codenamesgreen";
+ };
+ };
+ systemd.services.codenames_api = {
+ description = "Api for codenames game";
+ wantedBy = [ "multi-user.target" ];
+ script = "${greenapid}/bin/greenapid";
+ postStart = ''
+ sleep 5;
+ chown :wwwrun /run/codenamesgreen/socket.sock
+ chmod g+w /run/codenamesgreen/socket.sock
+ '';
+ serviceConfig = {
+ User = "codenames";
+ DynamicUser = true;
+ SupplementaryGroups = [ "wwwrun" ];
+ Type = "simple";
+ RuntimeDirectory = "codenamesgreen";
+ WorkingDirectory = builtins.toString wordlists;
+ };
+ };
+
+ security.acme.certs.games.domain = "games.immae.eu";
+ security.acme.certs.games.extraDomainNames = [ "codenames.games.immae.eu" ];
+ services.websites.env.tools.vhostConfs.games_codenames = {
+ certName = "games";
+ hosts = [ "codenames.games.immae.eu" ];
+ root = frontend;
+ extraConfig = [
+ ''
+ ProxyPass /api/ unix:///run/codenamesgreen/socket.sock|http://codenames.games.immae.eu/
+ ProxyPassReverse /api/ unix:///run/codenamesgreen/socket.sock|http://codenames.games.immae.eu/
+
+
+ FallbackResource index.html
+
+ ''
+ ];
+ };
+ };
+}
diff --git a/systems/eldiron/websites/games/codenames/deps.nix b/systems/eldiron/websites/games/codenames/deps.nix
new file mode 100644
index 0000000..fddec2e
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/deps.nix
@@ -0,0 +1,11 @@
+[
+ {
+ goPackagePath = "github.com/jbowens/dictionary";
+ fetch = {
+ type = "git";
+ url = "https://github.com/jbowens/dictionary";
+ rev = "229cf68df1a675e7a2462c4028d7df4abfd98854";
+ sha256 = "0gyg3xcx4xqx6w8id2dq5s280mdfhs6yc9flg2jbj8jff040s28w";
+ };
+ }
+]
diff --git a/systems/eldiron/websites/games/codenames/elm-srcs.nix b/systems/eldiron/websites/games/codenames/elm-srcs.nix
new file mode 100644
index 0000000..031e7ff
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/elm-srcs.nix
@@ -0,0 +1,77 @@
+{
+
+ "elm/json" = {
+ sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh";
+ version = "1.1.3";
+ };
+
+ "perzanko/elm-loading" = {
+ sha256 = "0fs7ly4jib4gwhh157g91hgjryqja096i6jhbsq7qb4k4r3c5l80";
+ version = "2.0.4";
+ };
+
+ "elm/html" = {
+ sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k";
+ version = "1.0.0";
+ };
+
+ "elm/browser" = {
+ sha256 = "1zlmx672glg7fdgkvh5jm47y85pv7pdfr5mkhg6x7ar6k000vyka";
+ version = "1.0.1";
+ };
+
+ "elm/core" = {
+ sha256 = "1l0qdbczw91kzz8sx5d5zwz9x662bspy7p21dsr3f2rigxiix2as";
+ version = "1.0.2";
+ };
+
+ "elm/url" = {
+ sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4";
+ version = "1.0.0";
+ };
+
+ "elm/http" = {
+ sha256 = "008bs76mnp48b4dw8qwjj4fyvzbxvlrl4xpa2qh1gg2kfwyw56v1";
+ version = "2.0.0";
+ };
+
+ "elm/bytes" = {
+ sha256 = "02ywbf52akvxclpxwj9n04jydajcbsbcbsnjs53yjc5lwck3abwj";
+ version = "1.0.8";
+ };
+
+ "elm/file" = {
+ sha256 = "1rljcb41dl97myidyjih2yliyzddkr2m7n74x7gg46rcw4jl0ny8";
+ version = "1.0.5";
+ };
+
+ "rtfeldman/elm-hex" = {
+ sha256 = "1y0aa16asvwdqmgbskh5iba6psp43lkcjjw9mgzj3gsrg33lp00d";
+ version = "1.0.0";
+ };
+
+ "rtfeldman/elm-css" = {
+ sha256 = "0nxiyxyw3kw55whkpwhrcgc0dr6a8zlm2nqvsaqdw6mzkykg0ba6";
+ version = "16.1.0";
+ };
+
+ "elm/time" = {
+ sha256 = "0vch7i86vn0x8b850w1p69vplll1bnbkp8s383z7pinyg94cm2z1";
+ version = "1.0.0";
+ };
+
+ "elm/virtual-dom" = {
+ sha256 = "0q1v5gi4g336bzz1lgwpn5b1639lrn63d8y6k6pimcyismp2i1yg";
+ version = "1.0.2";
+ };
+
+ "elm-explorations/test" = {
+ sha256 = "0rpynrm9irgzyynd1bws0xspww5lnwv7w7998750jb8kcrw39h0n";
+ version = "1.0.0";
+ };
+
+ "elm/random" = {
+ sha256 = "138n2455wdjwa657w6sjq18wx2r0k60ibpc4frhbqr50sncxrfdl";
+ version = "1.0.0";
+ };
+}
diff --git a/systems/eldiron/websites/games/codenames/frontend.nix b/systems/eldiron/websites/games/codenames/frontend.nix
new file mode 100644
index 0000000..0f29070
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/frontend.nix
@@ -0,0 +1,22 @@
+{ callPackage, runCommand, nodejs, utillinux, nodeEnv, nodePackages, elmPackages }:
+let
+ codenamesgreen_packages = callPackage ./node-packages.nix { inherit nodeEnv; };
+in
+runCommand "frontend" {
+ buildInputs = [
+ nodejs utillinux nodePackages.parcel-bundler elmPackages.elm
+ ];
+} ''
+ cp -a ${codenamesgreen_packages.package}/lib/node_modules/codenamesgreen .
+ chmod -R u+w codenamesgreen
+ cd codenamesgreen
+ ${elmPackages.fetchElmDeps {
+ elmPackages = import ./elm-srcs.nix;
+ registryDat = ./registry.dat;
+ elmVersion = elmPackages.elm.version;
+ }}
+ npx parcel build src/index.html
+ cp -a dist $out
+ cp -R src/images $out
+ cp src/robots.txt $out
+''
diff --git a/systems/eldiron/websites/games/codenames/greenapid.nix b/systems/eldiron/websites/games/codenames/greenapid.nix
new file mode 100644
index 0000000..52bda3b
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/greenapid.nix
@@ -0,0 +1,18 @@
+{ buildGoPackage, fetchFromGitHub, socket ? "/run/codenamesgreen/socket.sock" }:
+buildGoPackage rec {
+ pname = "greenapid";
+ version = "master-6d014d0";
+
+ goPackagePath = "github.com/jbowens/codenamesgreen";
+ subPackages = [ "cmd/greenapid" ];
+
+ src = fetchFromGitHub {
+ owner = "jbowens";
+ repo = "codenamesgreen";
+ rev = "6d014d0df14bee72495e01f12885ef31cba3bd6b";
+ sha256 = "0bkaf52rnjw792q0755in4k5jbcrmgq06cl03fdl6zdr8kq2mhm0";
+ };
+
+ patches = [ ./greenapid.patch ];
+ goDeps = ./deps.nix;
+}
diff --git a/systems/eldiron/websites/games/codenames/greenapid.patch b/systems/eldiron/websites/games/codenames/greenapid.patch
new file mode 100644
index 0000000..21a9fad
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/greenapid.patch
@@ -0,0 +1,39 @@
+diff --git a/cmd/greenapid/main.go b/cmd/greenapid/main.go
+index 86499e9..1589323 100644
+--- a/cmd/greenapid/main.go
++++ b/cmd/greenapid/main.go
+@@ -1,6 +1,7 @@
+ package main
+
+ import (
++ "net"
+ "net/http"
+
+ "github.com/jbowens/codenamesgreen/gameapi"
+@@ -13,6 +14,12 @@ func main() {
+ }
+
+ h := gameapi.Handler(wordLists)
+- err = http.ListenAndServe(":8080", h)
++ server := &http.Server{Handler: h}
++ ln, err := net.Listen("unix", "/run/codenamesgreen/socket.sock")
++ if err != nil {
++ panic(err)
++ }
++
++ err = server.Serve(ln)
+ panic(err)
+ }
+diff --git a/gameapi/handler.go b/gameapi/handler.go
+index d67cf94..108e7e1 100644
+--- a/gameapi/handler.go
++++ b/gameapi/handler.go
+@@ -101,7 +101,7 @@ func (h *handler) handleIndex(rw http.ResponseWriter, req *http.Request) {
+ for {
+ w1 := strings.ToLower(h.allWords[h.rand.Int63n(int64(len(h.allWords)))])
+ w2 := strings.ToLower(h.allWords[h.rand.Int63n(int64(len(h.allWords)))])
+- id := fmt.Sprintf("%s-%s", w1, w2)
++ id = fmt.Sprintf("%s-%s", w1, w2)
+ if _, ok := h.games[id]; !ok {
+ break
+ }
diff --git a/systems/eldiron/websites/games/codenames/immae-assets.patch b/systems/eldiron/websites/games/codenames/immae-assets.patch
new file mode 100644
index 0000000..c53ab97
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/immae-assets.patch
@@ -0,0 +1,15 @@
+diff --git a/src/index.html b/src/index.html
+index 2559a37..84a0d64 100644
+--- a/src/index.html
++++ b/src/index.html
+@@ -6,8 +6,8 @@
+
+
+
+-
+-
++
++
+
+
+
diff --git a/systems/eldiron/websites/games/codenames/node-packages.nix b/systems/eldiron/websites/games/codenames/node-packages.nix
new file mode 100644
index 0000000..1fb2db3
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/node-packages.nix
@@ -0,0 +1,7622 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, fetchFromGitHub, runCommand, globalBuildInputs ? []}:
+
+let
+ sources = {
+ "@babel/code-frame-7.0.0" = {
+ name = "_at_babel_slash_code-frame";
+ packageName = "@babel/code-frame";
+ version = "7.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz";
+ sha512 = "OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==";
+ };
+ };
+ "@babel/code-frame-7.8.3" = {
+ name = "_at_babel_slash_code-frame";
+ packageName = "@babel/code-frame";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz";
+ sha512 = "a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==";
+ };
+ };
+ "@babel/core-7.3.4" = {
+ name = "_at_babel_slash_core";
+ packageName = "@babel/core";
+ version = "7.3.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz";
+ sha512 = "jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==";
+ };
+ };
+ "@babel/generator-7.3.4" = {
+ name = "_at_babel_slash_generator";
+ packageName = "@babel/generator";
+ version = "7.3.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz";
+ sha512 = "8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==";
+ };
+ };
+ "@babel/generator-7.9.5" = {
+ name = "_at_babel_slash_generator";
+ packageName = "@babel/generator";
+ version = "7.9.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz";
+ sha512 = "GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==";
+ };
+ };
+ "@babel/helper-annotate-as-pure-7.8.3" = {
+ name = "_at_babel_slash_helper-annotate-as-pure";
+ packageName = "@babel/helper-annotate-as-pure";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz";
+ sha512 = "6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==";
+ };
+ };
+ "@babel/helper-builder-binary-assignment-operator-visitor-7.8.3" = {
+ name = "_at_babel_slash_helper-builder-binary-assignment-operator-visitor";
+ packageName = "@babel/helper-builder-binary-assignment-operator-visitor";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz";
+ sha512 = "5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==";
+ };
+ };
+ "@babel/helper-builder-react-jsx-7.9.0" = {
+ name = "_at_babel_slash_helper-builder-react-jsx";
+ packageName = "@babel/helper-builder-react-jsx";
+ version = "7.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz";
+ sha512 = "weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==";
+ };
+ };
+ "@babel/helper-create-regexp-features-plugin-7.8.8" = {
+ name = "_at_babel_slash_helper-create-regexp-features-plugin";
+ packageName = "@babel/helper-create-regexp-features-plugin";
+ version = "7.8.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz";
+ sha512 = "LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==";
+ };
+ };
+ "@babel/helper-define-map-7.8.3" = {
+ name = "_at_babel_slash_helper-define-map";
+ packageName = "@babel/helper-define-map";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz";
+ sha512 = "PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==";
+ };
+ };
+ "@babel/helper-explode-assignable-expression-7.8.3" = {
+ name = "_at_babel_slash_helper-explode-assignable-expression";
+ packageName = "@babel/helper-explode-assignable-expression";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz";
+ sha512 = "N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==";
+ };
+ };
+ "@babel/helper-function-name-7.9.5" = {
+ name = "_at_babel_slash_helper-function-name";
+ packageName = "@babel/helper-function-name";
+ version = "7.9.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz";
+ sha512 = "JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==";
+ };
+ };
+ "@babel/helper-get-function-arity-7.8.3" = {
+ name = "_at_babel_slash_helper-get-function-arity";
+ packageName = "@babel/helper-get-function-arity";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz";
+ sha512 = "FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==";
+ };
+ };
+ "@babel/helper-hoist-variables-7.8.3" = {
+ name = "_at_babel_slash_helper-hoist-variables";
+ packageName = "@babel/helper-hoist-variables";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz";
+ sha512 = "ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==";
+ };
+ };
+ "@babel/helper-member-expression-to-functions-7.8.3" = {
+ name = "_at_babel_slash_helper-member-expression-to-functions";
+ packageName = "@babel/helper-member-expression-to-functions";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz";
+ sha512 = "fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==";
+ };
+ };
+ "@babel/helper-module-imports-7.8.3" = {
+ name = "_at_babel_slash_helper-module-imports";
+ packageName = "@babel/helper-module-imports";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz";
+ sha512 = "R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==";
+ };
+ };
+ "@babel/helper-module-transforms-7.9.0" = {
+ name = "_at_babel_slash_helper-module-transforms";
+ packageName = "@babel/helper-module-transforms";
+ version = "7.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz";
+ sha512 = "0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==";
+ };
+ };
+ "@babel/helper-optimise-call-expression-7.8.3" = {
+ name = "_at_babel_slash_helper-optimise-call-expression";
+ packageName = "@babel/helper-optimise-call-expression";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz";
+ sha512 = "Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==";
+ };
+ };
+ "@babel/helper-plugin-utils-7.8.3" = {
+ name = "_at_babel_slash_helper-plugin-utils";
+ packageName = "@babel/helper-plugin-utils";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz";
+ sha512 = "j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==";
+ };
+ };
+ "@babel/helper-regex-7.8.3" = {
+ name = "_at_babel_slash_helper-regex";
+ packageName = "@babel/helper-regex";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz";
+ sha512 = "BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==";
+ };
+ };
+ "@babel/helper-remap-async-to-generator-7.8.3" = {
+ name = "_at_babel_slash_helper-remap-async-to-generator";
+ packageName = "@babel/helper-remap-async-to-generator";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz";
+ sha512 = "kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==";
+ };
+ };
+ "@babel/helper-replace-supers-7.8.6" = {
+ name = "_at_babel_slash_helper-replace-supers";
+ packageName = "@babel/helper-replace-supers";
+ version = "7.8.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz";
+ sha512 = "PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==";
+ };
+ };
+ "@babel/helper-simple-access-7.8.3" = {
+ name = "_at_babel_slash_helper-simple-access";
+ packageName = "@babel/helper-simple-access";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz";
+ sha512 = "VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==";
+ };
+ };
+ "@babel/helper-split-export-declaration-7.8.3" = {
+ name = "_at_babel_slash_helper-split-export-declaration";
+ packageName = "@babel/helper-split-export-declaration";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz";
+ sha512 = "3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==";
+ };
+ };
+ "@babel/helper-validator-identifier-7.9.5" = {
+ name = "_at_babel_slash_helper-validator-identifier";
+ packageName = "@babel/helper-validator-identifier";
+ version = "7.9.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz";
+ sha512 = "/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==";
+ };
+ };
+ "@babel/helper-wrap-function-7.8.3" = {
+ name = "_at_babel_slash_helper-wrap-function";
+ packageName = "@babel/helper-wrap-function";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz";
+ sha512 = "LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==";
+ };
+ };
+ "@babel/helpers-7.9.2" = {
+ name = "_at_babel_slash_helpers";
+ packageName = "@babel/helpers";
+ version = "7.9.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz";
+ sha512 = "JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==";
+ };
+ };
+ "@babel/highlight-7.9.0" = {
+ name = "_at_babel_slash_highlight";
+ packageName = "@babel/highlight";
+ version = "7.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz";
+ sha512 = "lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==";
+ };
+ };
+ "@babel/parser-7.3.4" = {
+ name = "_at_babel_slash_parser";
+ packageName = "@babel/parser";
+ version = "7.3.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz";
+ sha512 = "tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==";
+ };
+ };
+ "@babel/parser-7.9.4" = {
+ name = "_at_babel_slash_parser";
+ packageName = "@babel/parser";
+ version = "7.9.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz";
+ sha512 = "bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==";
+ };
+ };
+ "@babel/plugin-proposal-async-generator-functions-7.8.3" = {
+ name = "_at_babel_slash_plugin-proposal-async-generator-functions";
+ packageName = "@babel/plugin-proposal-async-generator-functions";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz";
+ sha512 = "NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==";
+ };
+ };
+ "@babel/plugin-proposal-json-strings-7.8.3" = {
+ name = "_at_babel_slash_plugin-proposal-json-strings";
+ packageName = "@babel/plugin-proposal-json-strings";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz";
+ sha512 = "KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==";
+ };
+ };
+ "@babel/plugin-proposal-object-rest-spread-7.9.5" = {
+ name = "_at_babel_slash_plugin-proposal-object-rest-spread";
+ packageName = "@babel/plugin-proposal-object-rest-spread";
+ version = "7.9.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz";
+ sha512 = "VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==";
+ };
+ };
+ "@babel/plugin-proposal-optional-catch-binding-7.8.3" = {
+ name = "_at_babel_slash_plugin-proposal-optional-catch-binding";
+ packageName = "@babel/plugin-proposal-optional-catch-binding";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz";
+ sha512 = "0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==";
+ };
+ };
+ "@babel/plugin-proposal-unicode-property-regex-7.8.8" = {
+ name = "_at_babel_slash_plugin-proposal-unicode-property-regex";
+ packageName = "@babel/plugin-proposal-unicode-property-regex";
+ version = "7.8.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz";
+ sha512 = "EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==";
+ };
+ };
+ "@babel/plugin-syntax-async-generators-7.8.4" = {
+ name = "_at_babel_slash_plugin-syntax-async-generators";
+ packageName = "@babel/plugin-syntax-async-generators";
+ version = "7.8.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz";
+ sha512 = "tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==";
+ };
+ };
+ "@babel/plugin-syntax-flow-7.8.3" = {
+ name = "_at_babel_slash_plugin-syntax-flow";
+ packageName = "@babel/plugin-syntax-flow";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz";
+ sha512 = "innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==";
+ };
+ };
+ "@babel/plugin-syntax-json-strings-7.8.3" = {
+ name = "_at_babel_slash_plugin-syntax-json-strings";
+ packageName = "@babel/plugin-syntax-json-strings";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz";
+ sha512 = "lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==";
+ };
+ };
+ "@babel/plugin-syntax-jsx-7.8.3" = {
+ name = "_at_babel_slash_plugin-syntax-jsx";
+ packageName = "@babel/plugin-syntax-jsx";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz";
+ sha512 = "WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==";
+ };
+ };
+ "@babel/plugin-syntax-object-rest-spread-7.8.3" = {
+ name = "_at_babel_slash_plugin-syntax-object-rest-spread";
+ packageName = "@babel/plugin-syntax-object-rest-spread";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz";
+ sha512 = "XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==";
+ };
+ };
+ "@babel/plugin-syntax-optional-catch-binding-7.8.3" = {
+ name = "_at_babel_slash_plugin-syntax-optional-catch-binding";
+ packageName = "@babel/plugin-syntax-optional-catch-binding";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz";
+ sha512 = "6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==";
+ };
+ };
+ "@babel/plugin-transform-arrow-functions-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-arrow-functions";
+ packageName = "@babel/plugin-transform-arrow-functions";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz";
+ sha512 = "0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==";
+ };
+ };
+ "@babel/plugin-transform-async-to-generator-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-async-to-generator";
+ packageName = "@babel/plugin-transform-async-to-generator";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz";
+ sha512 = "imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==";
+ };
+ };
+ "@babel/plugin-transform-block-scoped-functions-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-block-scoped-functions";
+ packageName = "@babel/plugin-transform-block-scoped-functions";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz";
+ sha512 = "vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==";
+ };
+ };
+ "@babel/plugin-transform-block-scoping-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-block-scoping";
+ packageName = "@babel/plugin-transform-block-scoping";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz";
+ sha512 = "pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==";
+ };
+ };
+ "@babel/plugin-transform-classes-7.9.5" = {
+ name = "_at_babel_slash_plugin-transform-classes";
+ packageName = "@babel/plugin-transform-classes";
+ version = "7.9.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz";
+ sha512 = "x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==";
+ };
+ };
+ "@babel/plugin-transform-computed-properties-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-computed-properties";
+ packageName = "@babel/plugin-transform-computed-properties";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz";
+ sha512 = "O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==";
+ };
+ };
+ "@babel/plugin-transform-destructuring-7.9.5" = {
+ name = "_at_babel_slash_plugin-transform-destructuring";
+ packageName = "@babel/plugin-transform-destructuring";
+ version = "7.9.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz";
+ sha512 = "j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==";
+ };
+ };
+ "@babel/plugin-transform-dotall-regex-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-dotall-regex";
+ packageName = "@babel/plugin-transform-dotall-regex";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz";
+ sha512 = "kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==";
+ };
+ };
+ "@babel/plugin-transform-duplicate-keys-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-duplicate-keys";
+ packageName = "@babel/plugin-transform-duplicate-keys";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz";
+ sha512 = "s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==";
+ };
+ };
+ "@babel/plugin-transform-exponentiation-operator-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-exponentiation-operator";
+ packageName = "@babel/plugin-transform-exponentiation-operator";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz";
+ sha512 = "zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==";
+ };
+ };
+ "@babel/plugin-transform-flow-strip-types-7.3.4" = {
+ name = "_at_babel_slash_plugin-transform-flow-strip-types";
+ packageName = "@babel/plugin-transform-flow-strip-types";
+ version = "7.3.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.3.4.tgz";
+ sha512 = "PmQC9R7DwpBFA+7ATKMyzViz3zCaMNouzZMPZN2K5PnbBbtL3AXFYTkDk+Hey5crQq2A90UG5Uthz0mel+XZrA==";
+ };
+ };
+ "@babel/plugin-transform-for-of-7.9.0" = {
+ name = "_at_babel_slash_plugin-transform-for-of";
+ packageName = "@babel/plugin-transform-for-of";
+ version = "7.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz";
+ sha512 = "lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==";
+ };
+ };
+ "@babel/plugin-transform-function-name-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-function-name";
+ packageName = "@babel/plugin-transform-function-name";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz";
+ sha512 = "rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==";
+ };
+ };
+ "@babel/plugin-transform-literals-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-literals";
+ packageName = "@babel/plugin-transform-literals";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz";
+ sha512 = "3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==";
+ };
+ };
+ "@babel/plugin-transform-modules-amd-7.9.0" = {
+ name = "_at_babel_slash_plugin-transform-modules-amd";
+ packageName = "@babel/plugin-transform-modules-amd";
+ version = "7.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz";
+ sha512 = "vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==";
+ };
+ };
+ "@babel/plugin-transform-modules-commonjs-7.2.0" = {
+ name = "_at_babel_slash_plugin-transform-modules-commonjs";
+ packageName = "@babel/plugin-transform-modules-commonjs";
+ version = "7.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz";
+ sha512 = "V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==";
+ };
+ };
+ "@babel/plugin-transform-modules-systemjs-7.9.0" = {
+ name = "_at_babel_slash_plugin-transform-modules-systemjs";
+ packageName = "@babel/plugin-transform-modules-systemjs";
+ version = "7.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz";
+ sha512 = "FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==";
+ };
+ };
+ "@babel/plugin-transform-modules-umd-7.9.0" = {
+ name = "_at_babel_slash_plugin-transform-modules-umd";
+ packageName = "@babel/plugin-transform-modules-umd";
+ version = "7.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz";
+ sha512 = "uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==";
+ };
+ };
+ "@babel/plugin-transform-named-capturing-groups-regex-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-named-capturing-groups-regex";
+ packageName = "@babel/plugin-transform-named-capturing-groups-regex";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz";
+ sha512 = "f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==";
+ };
+ };
+ "@babel/plugin-transform-new-target-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-new-target";
+ packageName = "@babel/plugin-transform-new-target";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz";
+ sha512 = "QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==";
+ };
+ };
+ "@babel/plugin-transform-object-super-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-object-super";
+ packageName = "@babel/plugin-transform-object-super";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz";
+ sha512 = "57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==";
+ };
+ };
+ "@babel/plugin-transform-parameters-7.9.5" = {
+ name = "_at_babel_slash_plugin-transform-parameters";
+ packageName = "@babel/plugin-transform-parameters";
+ version = "7.9.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz";
+ sha512 = "0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==";
+ };
+ };
+ "@babel/plugin-transform-react-jsx-7.3.0" = {
+ name = "_at_babel_slash_plugin-transform-react-jsx";
+ packageName = "@babel/plugin-transform-react-jsx";
+ version = "7.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz";
+ sha512 = "a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==";
+ };
+ };
+ "@babel/plugin-transform-regenerator-7.8.7" = {
+ name = "_at_babel_slash_plugin-transform-regenerator";
+ packageName = "@babel/plugin-transform-regenerator";
+ version = "7.8.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz";
+ sha512 = "TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==";
+ };
+ };
+ "@babel/plugin-transform-shorthand-properties-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-shorthand-properties";
+ packageName = "@babel/plugin-transform-shorthand-properties";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz";
+ sha512 = "I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==";
+ };
+ };
+ "@babel/plugin-transform-spread-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-spread";
+ packageName = "@babel/plugin-transform-spread";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz";
+ sha512 = "CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==";
+ };
+ };
+ "@babel/plugin-transform-sticky-regex-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-sticky-regex";
+ packageName = "@babel/plugin-transform-sticky-regex";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz";
+ sha512 = "9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==";
+ };
+ };
+ "@babel/plugin-transform-template-literals-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-template-literals";
+ packageName = "@babel/plugin-transform-template-literals";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz";
+ sha512 = "820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==";
+ };
+ };
+ "@babel/plugin-transform-typeof-symbol-7.8.4" = {
+ name = "_at_babel_slash_plugin-transform-typeof-symbol";
+ packageName = "@babel/plugin-transform-typeof-symbol";
+ version = "7.8.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz";
+ sha512 = "2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==";
+ };
+ };
+ "@babel/plugin-transform-unicode-regex-7.8.3" = {
+ name = "_at_babel_slash_plugin-transform-unicode-regex";
+ packageName = "@babel/plugin-transform-unicode-regex";
+ version = "7.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz";
+ sha512 = "+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==";
+ };
+ };
+ "@babel/preset-env-7.3.4" = {
+ name = "_at_babel_slash_preset-env";
+ packageName = "@babel/preset-env";
+ version = "7.3.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.4.tgz";
+ sha512 = "2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==";
+ };
+ };
+ "@babel/runtime-7.3.4" = {
+ name = "_at_babel_slash_runtime";
+ packageName = "@babel/runtime";
+ version = "7.3.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz";
+ sha512 = "IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==";
+ };
+ };
+ "@babel/runtime-7.9.2" = {
+ name = "_at_babel_slash_runtime";
+ packageName = "@babel/runtime";
+ version = "7.9.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz";
+ sha512 = "NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==";
+ };
+ };
+ "@babel/template-7.2.2" = {
+ name = "_at_babel_slash_template";
+ packageName = "@babel/template";
+ version = "7.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz";
+ sha512 = "zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==";
+ };
+ };
+ "@babel/template-7.8.6" = {
+ name = "_at_babel_slash_template";
+ packageName = "@babel/template";
+ version = "7.8.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz";
+ sha512 = "zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==";
+ };
+ };
+ "@babel/traverse-7.3.4" = {
+ name = "_at_babel_slash_traverse";
+ packageName = "@babel/traverse";
+ version = "7.3.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz";
+ sha512 = "TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==";
+ };
+ };
+ "@babel/traverse-7.9.5" = {
+ name = "_at_babel_slash_traverse";
+ packageName = "@babel/traverse";
+ version = "7.9.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz";
+ sha512 = "c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==";
+ };
+ };
+ "@babel/types-7.3.4" = {
+ name = "_at_babel_slash_types";
+ packageName = "@babel/types";
+ version = "7.3.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz";
+ sha512 = "WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==";
+ };
+ };
+ "@babel/types-7.9.5" = {
+ name = "_at_babel_slash_types";
+ packageName = "@babel/types";
+ version = "7.9.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz";
+ sha512 = "XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==";
+ };
+ };
+ "@iarna/toml-2.2.5" = {
+ name = "_at_iarna_slash_toml";
+ packageName = "@iarna/toml";
+ version = "2.2.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz";
+ sha512 = "trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==";
+ };
+ };
+ "@mrmlnc/readdir-enhanced-2.2.1" = {
+ name = "_at_mrmlnc_slash_readdir-enhanced";
+ packageName = "@mrmlnc/readdir-enhanced";
+ version = "2.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz";
+ sha512 = "bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==";
+ };
+ };
+ "@nodelib/fs.stat-1.1.3" = {
+ name = "_at_nodelib_slash_fs.stat";
+ packageName = "@nodelib/fs.stat";
+ version = "1.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz";
+ sha512 = "shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==";
+ };
+ };
+ "@parcel/fs-1.11.0" = {
+ name = "_at_parcel_slash_fs";
+ packageName = "@parcel/fs";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz";
+ sha512 = "86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==";
+ };
+ };
+ "@parcel/logger-1.11.1" = {
+ name = "_at_parcel_slash_logger";
+ packageName = "@parcel/logger";
+ version = "1.11.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz";
+ sha512 = "9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==";
+ };
+ };
+ "@parcel/utils-1.11.0" = {
+ name = "_at_parcel_slash_utils";
+ packageName = "@parcel/utils";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz";
+ sha512 = "cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==";
+ };
+ };
+ "@parcel/watcher-1.12.1" = {
+ name = "_at_parcel_slash_watcher";
+ packageName = "@parcel/watcher";
+ version = "1.12.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz";
+ sha512 = "od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==";
+ };
+ };
+ "@parcel/workers-1.11.0" = {
+ name = "_at_parcel_slash_workers";
+ packageName = "@parcel/workers";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz";
+ sha512 = "USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==";
+ };
+ };
+ "@types/q-1.5.2" = {
+ name = "_at_types_slash_q";
+ packageName = "@types/q";
+ version = "1.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz";
+ sha512 = "ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==";
+ };
+ };
+ "abab-2.0.3" = {
+ name = "abab";
+ packageName = "abab";
+ version = "2.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz";
+ sha512 = "tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==";
+ };
+ };
+ "abbrev-1.1.1" = {
+ name = "abbrev";
+ packageName = "abbrev";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
+ sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
+ };
+ };
+ "acorn-6.4.1" = {
+ name = "acorn";
+ packageName = "acorn";
+ version = "6.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz";
+ sha512 = "ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==";
+ };
+ };
+ "acorn-7.1.1" = {
+ name = "acorn";
+ packageName = "acorn";
+ version = "7.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz";
+ sha512 = "add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==";
+ };
+ };
+ "acorn-globals-4.3.4" = {
+ name = "acorn-globals";
+ packageName = "acorn-globals";
+ version = "4.3.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz";
+ sha512 = "clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==";
+ };
+ };
+ "acorn-walk-6.2.0" = {
+ name = "acorn-walk";
+ packageName = "acorn-walk";
+ version = "6.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz";
+ sha512 = "7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==";
+ };
+ };
+ "ajv-6.12.2" = {
+ name = "ajv";
+ packageName = "ajv";
+ version = "6.12.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz";
+ sha512 = "k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==";
+ };
+ };
+ "alphanum-sort-1.0.2" = {
+ name = "alphanum-sort";
+ packageName = "alphanum-sort";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz";
+ sha1 = "97a1119649b211ad33691d9f9f486a8ec9fbe0a3";
+ };
+ };
+ "ansi-regex-2.1.1" = {
+ name = "ansi-regex";
+ packageName = "ansi-regex";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
+ sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+ };
+ };
+ "ansi-regex-3.0.0" = {
+ name = "ansi-regex";
+ packageName = "ansi-regex";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
+ sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
+ };
+ };
+ "ansi-regex-4.1.0" = {
+ name = "ansi-regex";
+ packageName = "ansi-regex";
+ version = "4.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz";
+ sha512 = "1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==";
+ };
+ };
+ "ansi-styles-2.2.1" = {
+ name = "ansi-styles";
+ packageName = "ansi-styles";
+ version = "2.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
+ sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
+ };
+ };
+ "ansi-styles-3.2.1" = {
+ name = "ansi-styles";
+ packageName = "ansi-styles";
+ version = "3.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz";
+ sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==";
+ };
+ };
+ "ansi-to-html-0.6.14" = {
+ name = "ansi-to-html";
+ packageName = "ansi-to-html";
+ version = "0.6.14";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz";
+ sha512 = "7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==";
+ };
+ };
+ "anymatch-2.0.0" = {
+ name = "anymatch";
+ packageName = "anymatch";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz";
+ sha512 = "5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==";
+ };
+ };
+ "argparse-1.0.10" = {
+ name = "argparse";
+ packageName = "argparse";
+ version = "1.0.10";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
+ sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
+ };
+ };
+ "arr-diff-4.0.0" = {
+ name = "arr-diff";
+ packageName = "arr-diff";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz";
+ sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
+ };
+ };
+ "arr-flatten-1.1.0" = {
+ name = "arr-flatten";
+ packageName = "arr-flatten";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz";
+ sha512 = "L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==";
+ };
+ };
+ "arr-union-3.1.0" = {
+ name = "arr-union";
+ packageName = "arr-union";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz";
+ sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
+ };
+ };
+ "array-equal-1.0.0" = {
+ name = "array-equal";
+ packageName = "array-equal";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz";
+ sha1 = "8c2a5ef2472fd9ea742b04c77a75093ba2757c93";
+ };
+ };
+ "array-unique-0.3.2" = {
+ name = "array-unique";
+ packageName = "array-unique";
+ version = "0.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz";
+ sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
+ };
+ };
+ "asn1-0.2.4" = {
+ name = "asn1";
+ packageName = "asn1";
+ version = "0.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
+ sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
+ };
+ };
+ "asn1.js-4.10.1" = {
+ name = "asn1.js";
+ packageName = "asn1.js";
+ version = "4.10.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz";
+ sha512 = "p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==";
+ };
+ };
+ "assert-1.5.0" = {
+ name = "assert";
+ packageName = "assert";
+ version = "1.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz";
+ sha512 = "EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==";
+ };
+ };
+ "assert-plus-1.0.0" = {
+ name = "assert-plus";
+ packageName = "assert-plus";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
+ sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+ };
+ };
+ "assign-symbols-1.0.0" = {
+ name = "assign-symbols";
+ packageName = "assign-symbols";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz";
+ sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
+ };
+ };
+ "async-each-1.0.3" = {
+ name = "async-each";
+ packageName = "async-each";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz";
+ sha512 = "z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==";
+ };
+ };
+ "async-limiter-1.0.1" = {
+ name = "async-limiter";
+ packageName = "async-limiter";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz";
+ sha512 = "csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==";
+ };
+ };
+ "asynckit-0.4.0" = {
+ name = "asynckit";
+ packageName = "asynckit";
+ version = "0.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
+ sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+ };
+ };
+ "atob-2.1.2" = {
+ name = "atob";
+ packageName = "atob";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz";
+ sha512 = "Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==";
+ };
+ };
+ "aws-sign2-0.7.0" = {
+ name = "aws-sign2";
+ packageName = "aws-sign2";
+ version = "0.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
+ sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+ };
+ };
+ "aws4-1.9.1" = {
+ name = "aws4";
+ packageName = "aws4";
+ version = "1.9.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz";
+ sha512 = "wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==";
+ };
+ };
+ "babel-plugin-dynamic-import-node-2.3.3" = {
+ name = "babel-plugin-dynamic-import-node";
+ packageName = "babel-plugin-dynamic-import-node";
+ version = "2.3.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz";
+ sha512 = "jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==";
+ };
+ };
+ "babel-runtime-6.26.0" = {
+ name = "babel-runtime";
+ packageName = "babel-runtime";
+ version = "6.26.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
+ sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
+ };
+ };
+ "babel-types-6.26.0" = {
+ name = "babel-types";
+ packageName = "babel-types";
+ version = "6.26.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz";
+ sha1 = "a3b073f94ab49eb6fa55cd65227a334380632497";
+ };
+ };
+ "babylon-walk-1.0.2" = {
+ name = "babylon-walk";
+ packageName = "babylon-walk";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz";
+ sha1 = "3b15a5ddbb482a78b4ce9c01c8ba181702d9d6ce";
+ };
+ };
+ "balanced-match-1.0.0" = {
+ name = "balanced-match";
+ packageName = "balanced-match";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
+ sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+ };
+ };
+ "base-0.11.2" = {
+ name = "base";
+ packageName = "base";
+ version = "0.11.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/base/-/base-0.11.2.tgz";
+ sha512 = "5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==";
+ };
+ };
+ "base64-js-1.3.1" = {
+ name = "base64-js";
+ packageName = "base64-js";
+ version = "1.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz";
+ sha512 = "mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==";
+ };
+ };
+ "bcrypt-pbkdf-1.0.2" = {
+ name = "bcrypt-pbkdf";
+ packageName = "bcrypt-pbkdf";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+ sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+ };
+ };
+ "binary-extensions-1.13.1" = {
+ name = "binary-extensions";
+ packageName = "binary-extensions";
+ version = "1.13.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz";
+ sha512 = "Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==";
+ };
+ };
+ "bindings-1.5.0" = {
+ name = "bindings";
+ packageName = "bindings";
+ version = "1.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz";
+ sha512 = "p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==";
+ };
+ };
+ "bn.js-4.11.8" = {
+ name = "bn.js";
+ packageName = "bn.js";
+ version = "4.11.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz";
+ sha512 = "ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==";
+ };
+ };
+ "boolbase-1.0.0" = {
+ name = "boolbase";
+ packageName = "boolbase";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz";
+ sha1 = "68dff5fbe60c51eb37725ea9e3ed310dcc1e776e";
+ };
+ };
+ "brace-expansion-1.1.11" = {
+ name = "brace-expansion";
+ packageName = "brace-expansion";
+ version = "1.1.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
+ sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
+ };
+ };
+ "braces-2.3.2" = {
+ name = "braces";
+ packageName = "braces";
+ version = "2.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz";
+ sha512 = "aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==";
+ };
+ };
+ "brfs-1.6.1" = {
+ name = "brfs";
+ packageName = "brfs";
+ version = "1.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz";
+ sha512 = "OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==";
+ };
+ };
+ "brorand-1.1.0" = {
+ name = "brorand";
+ packageName = "brorand";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz";
+ sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f";
+ };
+ };
+ "browser-process-hrtime-1.0.0" = {
+ name = "browser-process-hrtime";
+ packageName = "browser-process-hrtime";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz";
+ sha512 = "9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==";
+ };
+ };
+ "browserify-aes-1.2.0" = {
+ name = "browserify-aes";
+ packageName = "browserify-aes";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz";
+ sha512 = "+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==";
+ };
+ };
+ "browserify-cipher-1.0.1" = {
+ name = "browserify-cipher";
+ packageName = "browserify-cipher";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz";
+ sha512 = "sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==";
+ };
+ };
+ "browserify-des-1.0.2" = {
+ name = "browserify-des";
+ packageName = "browserify-des";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz";
+ sha512 = "BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==";
+ };
+ };
+ "browserify-rsa-4.0.1" = {
+ name = "browserify-rsa";
+ packageName = "browserify-rsa";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz";
+ sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524";
+ };
+ };
+ "browserify-sign-4.0.4" = {
+ name = "browserify-sign";
+ packageName = "browserify-sign";
+ version = "4.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz";
+ sha1 = "aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298";
+ };
+ };
+ "browserify-zlib-0.2.0" = {
+ name = "browserify-zlib";
+ packageName = "browserify-zlib";
+ version = "0.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
+ sha512 = "Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==";
+ };
+ };
+ "browserslist-4.12.0" = {
+ name = "browserslist";
+ packageName = "browserslist";
+ version = "4.12.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz";
+ sha512 = "UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==";
+ };
+ };
+ "buffer-4.9.2" = {
+ name = "buffer";
+ packageName = "buffer";
+ version = "4.9.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz";
+ sha512 = "xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==";
+ };
+ };
+ "buffer-equal-0.0.1" = {
+ name = "buffer-equal";
+ packageName = "buffer-equal";
+ version = "0.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz";
+ sha1 = "91bc74b11ea405bc916bc6aa908faafa5b4aac4b";
+ };
+ };
+ "buffer-from-1.1.1" = {
+ name = "buffer-from";
+ packageName = "buffer-from";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz";
+ sha512 = "MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==";
+ };
+ };
+ "buffer-xor-1.0.3" = {
+ name = "buffer-xor";
+ packageName = "buffer-xor";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz";
+ sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9";
+ };
+ };
+ "builtin-status-codes-3.0.0" = {
+ name = "builtin-status-codes";
+ packageName = "builtin-status-codes";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
+ sha1 = "85982878e21b98e1c66425e03d0174788f569ee8";
+ };
+ };
+ "cache-base-1.0.1" = {
+ name = "cache-base";
+ packageName = "cache-base";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz";
+ sha512 = "AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==";
+ };
+ };
+ "call-me-maybe-1.0.1" = {
+ name = "call-me-maybe";
+ packageName = "call-me-maybe";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz";
+ sha1 = "26d208ea89e37b5cbde60250a15f031c16a4d66b";
+ };
+ };
+ "caller-callsite-2.0.0" = {
+ name = "caller-callsite";
+ packageName = "caller-callsite";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz";
+ sha1 = "847e0fce0a223750a9a027c54b33731ad3154134";
+ };
+ };
+ "caller-path-2.0.0" = {
+ name = "caller-path";
+ packageName = "caller-path";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz";
+ sha1 = "468f83044e369ab2010fac5f06ceee15bb2cb1f4";
+ };
+ };
+ "callsites-2.0.0" = {
+ name = "callsites";
+ packageName = "callsites";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz";
+ sha1 = "06eb84f00eea413da86affefacbffb36093b3c50";
+ };
+ };
+ "camelcase-5.3.1" = {
+ name = "camelcase";
+ packageName = "camelcase";
+ version = "5.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz";
+ sha512 = "L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==";
+ };
+ };
+ "caniuse-api-3.0.0" = {
+ name = "caniuse-api";
+ packageName = "caniuse-api";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz";
+ sha512 = "bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==";
+ };
+ };
+ "caniuse-lite-1.0.30001048" = {
+ name = "caniuse-lite";
+ packageName = "caniuse-lite";
+ version = "1.0.30001048";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz";
+ sha512 = "g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg==";
+ };
+ };
+ "caseless-0.12.0" = {
+ name = "caseless";
+ packageName = "caseless";
+ version = "0.12.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
+ sha1 = "1b681c21ff84033c826543090689420d187151dc";
+ };
+ };
+ "chalk-1.1.3" = {
+ name = "chalk";
+ packageName = "chalk";
+ version = "1.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
+ sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
+ };
+ };
+ "chalk-2.4.2" = {
+ name = "chalk";
+ packageName = "chalk";
+ version = "2.4.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz";
+ sha512 = "Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==";
+ };
+ };
+ "chokidar-2.1.8" = {
+ name = "chokidar";
+ packageName = "chokidar";
+ version = "2.1.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz";
+ sha512 = "ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==";
+ };
+ };
+ "cipher-base-1.0.4" = {
+ name = "cipher-base";
+ packageName = "cipher-base";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz";
+ sha512 = "Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==";
+ };
+ };
+ "class-utils-0.3.6" = {
+ name = "class-utils";
+ packageName = "class-utils";
+ version = "0.3.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz";
+ sha512 = "qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==";
+ };
+ };
+ "cli-cursor-2.1.0" = {
+ name = "cli-cursor";
+ packageName = "cli-cursor";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz";
+ sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5";
+ };
+ };
+ "cli-spinners-1.3.1" = {
+ name = "cli-spinners";
+ packageName = "cli-spinners";
+ version = "1.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz";
+ sha512 = "1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==";
+ };
+ };
+ "cliui-5.0.0" = {
+ name = "cliui";
+ packageName = "cliui";
+ version = "5.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz";
+ sha512 = "PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==";
+ };
+ };
+ "clone-1.0.4" = {
+ name = "clone";
+ packageName = "clone";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz";
+ sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
+ };
+ };
+ "clone-2.1.2" = {
+ name = "clone";
+ packageName = "clone";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz";
+ sha1 = "1b7f4b9f591f1e8f83670401600345a02887435f";
+ };
+ };
+ "clones-1.2.0" = {
+ name = "clones";
+ packageName = "clones";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/clones/-/clones-1.2.0.tgz";
+ sha512 = "FXDYw4TjR8wgPZYui2LeTqWh1BLpfQ8lB6upMtlpDF6WlOOxghmTTxWyngdKTgozqBgKnHbTVwTE+hOHqAykuQ==";
+ };
+ };
+ "coa-2.0.2" = {
+ name = "coa";
+ packageName = "coa";
+ version = "2.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz";
+ sha512 = "q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==";
+ };
+ };
+ "collection-visit-1.0.0" = {
+ name = "collection-visit";
+ packageName = "collection-visit";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz";
+ sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
+ };
+ };
+ "color-3.1.2" = {
+ name = "color";
+ packageName = "color";
+ version = "3.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/color/-/color-3.1.2.tgz";
+ sha512 = "vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==";
+ };
+ };
+ "color-convert-1.9.3" = {
+ name = "color-convert";
+ packageName = "color-convert";
+ version = "1.9.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz";
+ sha512 = "QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==";
+ };
+ };
+ "color-name-1.1.3" = {
+ name = "color-name";
+ packageName = "color-name";
+ version = "1.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
+ sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
+ };
+ };
+ "color-string-1.5.3" = {
+ name = "color-string";
+ packageName = "color-string";
+ version = "1.5.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz";
+ sha512 = "dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==";
+ };
+ };
+ "combined-stream-1.0.8" = {
+ name = "combined-stream";
+ packageName = "combined-stream";
+ version = "1.0.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
+ sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
+ };
+ };
+ "command-exists-1.2.9" = {
+ name = "command-exists";
+ packageName = "command-exists";
+ version = "1.2.9";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz";
+ sha512 = "LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==";
+ };
+ };
+ "commander-2.20.3" = {
+ name = "commander";
+ packageName = "commander";
+ version = "2.20.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
+ sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==";
+ };
+ };
+ "component-emitter-1.3.0" = {
+ name = "component-emitter";
+ packageName = "component-emitter";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz";
+ sha512 = "Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==";
+ };
+ };
+ "concat-map-0.0.1" = {
+ name = "concat-map";
+ packageName = "concat-map";
+ version = "0.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+ sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+ };
+ };
+ "concat-stream-1.6.2" = {
+ name = "concat-stream";
+ packageName = "concat-stream";
+ version = "1.6.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz";
+ sha512 = "27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==";
+ };
+ };
+ "config-chain-1.1.12" = {
+ name = "config-chain";
+ packageName = "config-chain";
+ version = "1.1.12";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz";
+ sha512 = "a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==";
+ };
+ };
+ "console-browserify-1.2.0" = {
+ name = "console-browserify";
+ packageName = "console-browserify";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz";
+ sha512 = "ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==";
+ };
+ };
+ "constants-browserify-1.0.0" = {
+ name = "constants-browserify";
+ packageName = "constants-browserify";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz";
+ sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
+ };
+ };
+ "convert-source-map-1.7.0" = {
+ name = "convert-source-map";
+ packageName = "convert-source-map";
+ version = "1.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz";
+ sha512 = "4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==";
+ };
+ };
+ "copy-descriptor-0.1.1" = {
+ name = "copy-descriptor";
+ packageName = "copy-descriptor";
+ version = "0.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
+ sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
+ };
+ };
+ "core-js-2.6.11" = {
+ name = "core-js";
+ packageName = "core-js";
+ version = "2.6.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz";
+ sha512 = "5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==";
+ };
+ };
+ "core-util-is-1.0.2" = {
+ name = "core-util-is";
+ packageName = "core-util-is";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+ sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+ };
+ };
+ "cosmiconfig-5.2.1" = {
+ name = "cosmiconfig";
+ packageName = "cosmiconfig";
+ version = "5.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz";
+ sha512 = "H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==";
+ };
+ };
+ "create-ecdh-4.0.3" = {
+ name = "create-ecdh";
+ packageName = "create-ecdh";
+ version = "4.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz";
+ sha512 = "GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==";
+ };
+ };
+ "create-hash-1.2.0" = {
+ name = "create-hash";
+ packageName = "create-hash";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz";
+ sha512 = "z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==";
+ };
+ };
+ "create-hmac-1.1.7" = {
+ name = "create-hmac";
+ packageName = "create-hmac";
+ version = "1.1.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz";
+ sha512 = "MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==";
+ };
+ };
+ "cross-spawn-6.0.5" = {
+ name = "cross-spawn";
+ packageName = "cross-spawn";
+ version = "6.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz";
+ sha512 = "eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==";
+ };
+ };
+ "crypto-browserify-3.12.0" = {
+ name = "crypto-browserify";
+ packageName = "crypto-browserify";
+ version = "3.12.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
+ sha512 = "fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==";
+ };
+ };
+ "css-color-names-0.0.4" = {
+ name = "css-color-names";
+ packageName = "css-color-names";
+ version = "0.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz";
+ sha1 = "808adc2e79cf84738069b646cb20ec27beb629e0";
+ };
+ };
+ "css-declaration-sorter-4.0.1" = {
+ name = "css-declaration-sorter";
+ packageName = "css-declaration-sorter";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz";
+ sha512 = "BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==";
+ };
+ };
+ "css-modules-loader-core-1.1.0" = {
+ name = "css-modules-loader-core";
+ packageName = "css-modules-loader-core";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz";
+ sha1 = "5908668294a1becd261ae0a4ce21b0b551f21d16";
+ };
+ };
+ "css-select-2.1.0" = {
+ name = "css-select";
+ packageName = "css-select";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz";
+ sha512 = "Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==";
+ };
+ };
+ "css-select-base-adapter-0.1.1" = {
+ name = "css-select-base-adapter";
+ packageName = "css-select-base-adapter";
+ version = "0.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz";
+ sha512 = "jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==";
+ };
+ };
+ "css-selector-tokenizer-0.7.2" = {
+ name = "css-selector-tokenizer";
+ packageName = "css-selector-tokenizer";
+ version = "0.7.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz";
+ sha512 = "yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==";
+ };
+ };
+ "css-tree-1.0.0-alpha.37" = {
+ name = "css-tree";
+ packageName = "css-tree";
+ version = "1.0.0-alpha.37";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz";
+ sha512 = "DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==";
+ };
+ };
+ "css-tree-1.0.0-alpha.39" = {
+ name = "css-tree";
+ packageName = "css-tree";
+ version = "1.0.0-alpha.39";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz";
+ sha512 = "7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==";
+ };
+ };
+ "css-what-3.2.1" = {
+ name = "css-what";
+ packageName = "css-what";
+ version = "3.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz";
+ sha512 = "WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==";
+ };
+ };
+ "cssesc-3.0.0" = {
+ name = "cssesc";
+ packageName = "cssesc";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz";
+ sha512 = "/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==";
+ };
+ };
+ "cssnano-4.1.10" = {
+ name = "cssnano";
+ packageName = "cssnano";
+ version = "4.1.10";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz";
+ sha512 = "5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==";
+ };
+ };
+ "cssnano-preset-default-4.0.7" = {
+ name = "cssnano-preset-default";
+ packageName = "cssnano-preset-default";
+ version = "4.0.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz";
+ sha512 = "x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==";
+ };
+ };
+ "cssnano-util-get-arguments-4.0.0" = {
+ name = "cssnano-util-get-arguments";
+ packageName = "cssnano-util-get-arguments";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz";
+ sha1 = "ed3a08299f21d75741b20f3b81f194ed49cc150f";
+ };
+ };
+ "cssnano-util-get-match-4.0.0" = {
+ name = "cssnano-util-get-match";
+ packageName = "cssnano-util-get-match";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz";
+ sha1 = "c0e4ca07f5386bb17ec5e52250b4f5961365156d";
+ };
+ };
+ "cssnano-util-raw-cache-4.0.1" = {
+ name = "cssnano-util-raw-cache";
+ packageName = "cssnano-util-raw-cache";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz";
+ sha512 = "qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==";
+ };
+ };
+ "cssnano-util-same-parent-4.0.1" = {
+ name = "cssnano-util-same-parent";
+ packageName = "cssnano-util-same-parent";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz";
+ sha512 = "WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==";
+ };
+ };
+ "csso-4.0.3" = {
+ name = "csso";
+ packageName = "csso";
+ version = "4.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz";
+ sha512 = "NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==";
+ };
+ };
+ "cssom-0.3.8" = {
+ name = "cssom";
+ packageName = "cssom";
+ version = "0.3.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz";
+ sha512 = "b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==";
+ };
+ };
+ "cssstyle-1.4.0" = {
+ name = "cssstyle";
+ packageName = "cssstyle";
+ version = "1.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz";
+ sha512 = "GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==";
+ };
+ };
+ "dashdash-1.14.1" = {
+ name = "dashdash";
+ packageName = "dashdash";
+ version = "1.14.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
+ sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+ };
+ };
+ "data-urls-1.1.0" = {
+ name = "data-urls";
+ packageName = "data-urls";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz";
+ sha512 = "YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==";
+ };
+ };
+ "deasync-0.1.19" = {
+ name = "deasync";
+ packageName = "deasync";
+ version = "0.1.19";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/deasync/-/deasync-0.1.19.tgz";
+ sha512 = "oh3MRktfnPlLysCPpBpKZZzb4cUC/p0aA3SyRGp15lN30juJBTo/CiD0d4fR+f1kBtUQoJj1NE9RPNWQ7BQ9Mg==";
+ };
+ };
+ "debug-2.6.9" = {
+ name = "debug";
+ packageName = "debug";
+ version = "2.6.9";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
+ sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
+ };
+ };
+ "debug-4.1.1" = {
+ name = "debug";
+ packageName = "debug";
+ version = "4.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz";
+ sha512 = "pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==";
+ };
+ };
+ "decamelize-1.2.0" = {
+ name = "decamelize";
+ packageName = "decamelize";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz";
+ sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
+ };
+ };
+ "decode-uri-component-0.2.0" = {
+ name = "decode-uri-component";
+ packageName = "decode-uri-component";
+ version = "0.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
+ sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
+ };
+ };
+ "deep-is-0.1.3" = {
+ name = "deep-is";
+ packageName = "deep-is";
+ version = "0.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
+ sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
+ };
+ };
+ "defaults-1.0.3" = {
+ name = "defaults";
+ packageName = "defaults";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz";
+ sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d";
+ };
+ };
+ "define-properties-1.1.3" = {
+ name = "define-properties";
+ packageName = "define-properties";
+ version = "1.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz";
+ sha512 = "3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==";
+ };
+ };
+ "define-property-0.2.5" = {
+ name = "define-property";
+ packageName = "define-property";
+ version = "0.2.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz";
+ sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
+ };
+ };
+ "define-property-1.0.0" = {
+ name = "define-property";
+ packageName = "define-property";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz";
+ sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
+ };
+ };
+ "define-property-2.0.2" = {
+ name = "define-property";
+ packageName = "define-property";
+ version = "2.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz";
+ sha512 = "jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==";
+ };
+ };
+ "delayed-stream-1.0.0" = {
+ name = "delayed-stream";
+ packageName = "delayed-stream";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
+ sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+ };
+ };
+ "depd-1.1.2" = {
+ name = "depd";
+ packageName = "depd";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
+ sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
+ };
+ };
+ "des.js-1.0.1" = {
+ name = "des.js";
+ packageName = "des.js";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz";
+ sha512 = "Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==";
+ };
+ };
+ "destroy-1.0.4" = {
+ name = "destroy";
+ packageName = "destroy";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
+ sha1 = "978857442c44749e4206613e37946205826abd80";
+ };
+ };
+ "diffie-hellman-5.0.3" = {
+ name = "diffie-hellman";
+ packageName = "diffie-hellman";
+ version = "5.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz";
+ sha512 = "kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==";
+ };
+ };
+ "dom-serializer-0.2.2" = {
+ name = "dom-serializer";
+ packageName = "dom-serializer";
+ version = "0.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz";
+ sha512 = "2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==";
+ };
+ };
+ "domain-browser-1.2.0" = {
+ name = "domain-browser";
+ packageName = "domain-browser";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz";
+ sha512 = "jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==";
+ };
+ };
+ "domelementtype-1.3.1" = {
+ name = "domelementtype";
+ packageName = "domelementtype";
+ version = "1.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz";
+ sha512 = "BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==";
+ };
+ };
+ "domelementtype-2.0.1" = {
+ name = "domelementtype";
+ packageName = "domelementtype";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz";
+ sha512 = "5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==";
+ };
+ };
+ "domexception-1.0.1" = {
+ name = "domexception";
+ packageName = "domexception";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz";
+ sha512 = "raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==";
+ };
+ };
+ "domhandler-2.4.2" = {
+ name = "domhandler";
+ packageName = "domhandler";
+ version = "2.4.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz";
+ sha512 = "JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==";
+ };
+ };
+ "domutils-1.7.0" = {
+ name = "domutils";
+ packageName = "domutils";
+ version = "1.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz";
+ sha512 = "Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==";
+ };
+ };
+ "dot-prop-5.2.0" = {
+ name = "dot-prop";
+ packageName = "dot-prop";
+ version = "5.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz";
+ sha512 = "uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==";
+ };
+ };
+ "dotenv-5.0.1" = {
+ name = "dotenv";
+ packageName = "dotenv";
+ version = "5.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz";
+ sha512 = "4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==";
+ };
+ };
+ "dotenv-expand-4.2.0" = {
+ name = "dotenv-expand";
+ packageName = "dotenv-expand";
+ version = "4.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz";
+ sha1 = "def1f1ca5d6059d24a766e587942c21106ce1275";
+ };
+ };
+ "duplexer2-0.1.4" = {
+ name = "duplexer2";
+ packageName = "duplexer2";
+ version = "0.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz";
+ sha1 = "8b12dab878c0d69e3e7891051662a32fc6bddcc1";
+ };
+ };
+ "ecc-jsbn-0.1.2" = {
+ name = "ecc-jsbn";
+ packageName = "ecc-jsbn";
+ version = "0.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+ sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+ };
+ };
+ "editorconfig-0.15.3" = {
+ name = "editorconfig";
+ packageName = "editorconfig";
+ version = "0.15.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz";
+ sha512 = "M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==";
+ };
+ };
+ "ee-first-1.1.1" = {
+ name = "ee-first";
+ packageName = "ee-first";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
+ sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+ };
+ };
+ "electron-to-chromium-1.3.418" = {
+ name = "electron-to-chromium";
+ packageName = "electron-to-chromium";
+ version = "1.3.418";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.418.tgz";
+ sha512 = "i2QrQtHes5fK/F9QGG5XacM5WKEuR322fxTYF9e8O9Gu0mc0WmjjwGpV8c7Htso6Zf2Di18lc3SIPxmMeRFBug==";
+ };
+ };
+ "elliptic-6.5.2" = {
+ name = "elliptic";
+ packageName = "elliptic";
+ version = "6.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz";
+ sha512 = "f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==";
+ };
+ };
+ "elm-hot-1.1.1" = {
+ name = "elm-hot";
+ packageName = "elm-hot";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/elm-hot/-/elm-hot-1.1.1.tgz";
+ sha512 = "ZHjoHd2Ev6riNXNQirj3J+GKKXXwedAUikfFBYzlVL/+3CdGs96cpZ7nhAk4c5l//Qa9ymltrqX36mOlr0pPFA==";
+ };
+ };
+ "emoji-regex-7.0.3" = {
+ name = "emoji-regex";
+ packageName = "emoji-regex";
+ version = "7.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz";
+ sha512 = "CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==";
+ };
+ };
+ "encodeurl-1.0.2" = {
+ name = "encodeurl";
+ packageName = "encodeurl";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
+ sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+ };
+ };
+ "entities-1.1.2" = {
+ name = "entities";
+ packageName = "entities";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz";
+ sha512 = "f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==";
+ };
+ };
+ "entities-2.0.0" = {
+ name = "entities";
+ packageName = "entities";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz";
+ sha512 = "D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==";
+ };
+ };
+ "error-ex-1.3.2" = {
+ name = "error-ex";
+ packageName = "error-ex";
+ version = "1.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz";
+ sha512 = "7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==";
+ };
+ };
+ "es-abstract-1.17.5" = {
+ name = "es-abstract";
+ packageName = "es-abstract";
+ version = "1.17.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz";
+ sha512 = "BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==";
+ };
+ };
+ "es-to-primitive-1.2.1" = {
+ name = "es-to-primitive";
+ packageName = "es-to-primitive";
+ version = "1.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz";
+ sha512 = "QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==";
+ };
+ };
+ "escape-html-1.0.3" = {
+ name = "escape-html";
+ packageName = "escape-html";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
+ sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+ };
+ };
+ "escape-string-regexp-1.0.5" = {
+ name = "escape-string-regexp";
+ packageName = "escape-string-regexp";
+ version = "1.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+ sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+ };
+ };
+ "escodegen-1.14.1" = {
+ name = "escodegen";
+ packageName = "escodegen";
+ version = "1.14.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz";
+ sha512 = "Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==";
+ };
+ };
+ "escodegen-1.9.1" = {
+ name = "escodegen";
+ packageName = "escodegen";
+ version = "1.9.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz";
+ sha512 = "6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==";
+ };
+ };
+ "esprima-3.1.3" = {
+ name = "esprima";
+ packageName = "esprima";
+ version = "3.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz";
+ sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
+ };
+ };
+ "esprima-4.0.1" = {
+ name = "esprima";
+ packageName = "esprima";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
+ sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==";
+ };
+ };
+ "estraverse-4.3.0" = {
+ name = "estraverse";
+ packageName = "estraverse";
+ version = "4.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz";
+ sha512 = "39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==";
+ };
+ };
+ "esutils-2.0.3" = {
+ name = "esutils";
+ packageName = "esutils";
+ version = "2.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz";
+ sha512 = "kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==";
+ };
+ };
+ "etag-1.8.1" = {
+ name = "etag";
+ packageName = "etag";
+ version = "1.8.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
+ sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
+ };
+ };
+ "events-3.1.0" = {
+ name = "events";
+ packageName = "events";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/events/-/events-3.1.0.tgz";
+ sha512 = "Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==";
+ };
+ };
+ "evp_bytestokey-1.0.3" = {
+ name = "evp_bytestokey";
+ packageName = "evp_bytestokey";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
+ sha512 = "/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==";
+ };
+ };
+ "expand-brackets-2.1.4" = {
+ name = "expand-brackets";
+ packageName = "expand-brackets";
+ version = "2.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz";
+ sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
+ };
+ };
+ "extend-3.0.2" = {
+ name = "extend";
+ packageName = "extend";
+ version = "3.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
+ sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
+ };
+ };
+ "extend-shallow-2.0.1" = {
+ name = "extend-shallow";
+ packageName = "extend-shallow";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz";
+ sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
+ };
+ };
+ "extend-shallow-3.0.2" = {
+ name = "extend-shallow";
+ packageName = "extend-shallow";
+ version = "3.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz";
+ sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
+ };
+ };
+ "extglob-2.0.4" = {
+ name = "extglob";
+ packageName = "extglob";
+ version = "2.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz";
+ sha512 = "Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==";
+ };
+ };
+ "extsprintf-1.3.0" = {
+ name = "extsprintf";
+ packageName = "extsprintf";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
+ sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+ };
+ };
+ "falafel-2.2.4" = {
+ name = "falafel";
+ packageName = "falafel";
+ version = "2.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz";
+ sha512 = "0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==";
+ };
+ };
+ "fast-deep-equal-3.1.1" = {
+ name = "fast-deep-equal";
+ packageName = "fast-deep-equal";
+ version = "3.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
+ sha512 = "8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==";
+ };
+ };
+ "fast-glob-2.2.7" = {
+ name = "fast-glob";
+ packageName = "fast-glob";
+ version = "2.2.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz";
+ sha512 = "g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==";
+ };
+ };
+ "fast-json-stable-stringify-2.1.0" = {
+ name = "fast-json-stable-stringify";
+ packageName = "fast-json-stable-stringify";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
+ sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
+ };
+ };
+ "fast-levenshtein-2.0.6" = {
+ name = "fast-levenshtein";
+ packageName = "fast-levenshtein";
+ version = "2.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
+ sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
+ };
+ };
+ "fastparse-1.1.2" = {
+ name = "fastparse";
+ packageName = "fastparse";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz";
+ sha512 = "483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==";
+ };
+ };
+ "file-uri-to-path-1.0.0" = {
+ name = "file-uri-to-path";
+ packageName = "file-uri-to-path";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz";
+ sha512 = "0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==";
+ };
+ };
+ "filesize-3.6.1" = {
+ name = "filesize";
+ packageName = "filesize";
+ version = "3.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz";
+ sha512 = "7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==";
+ };
+ };
+ "fill-range-4.0.0" = {
+ name = "fill-range";
+ packageName = "fill-range";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz";
+ sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
+ };
+ };
+ "find-elm-dependencies-2.0.2" = {
+ name = "find-elm-dependencies";
+ packageName = "find-elm-dependencies";
+ version = "2.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-2.0.2.tgz";
+ sha512 = "nM5UCbccD1G8CGK2GsM7ykG3ksOAl9E+34jiDfl07CAl2OPnLpBVWY2hlxEmIkSBfdJjSopEowWHrO0cI8RhxQ==";
+ };
+ };
+ "find-up-2.1.0" = {
+ name = "find-up";
+ packageName = "find-up";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz";
+ sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
+ };
+ };
+ "find-up-3.0.0" = {
+ name = "find-up";
+ packageName = "find-up";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz";
+ sha512 = "1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==";
+ };
+ };
+ "firstline-1.2.0" = {
+ name = "firstline";
+ packageName = "firstline";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/firstline/-/firstline-1.2.0.tgz";
+ sha1 = "c9f4886e7f7fbf0afc12d71941dce06b192aea05";
+ };
+ };
+ "for-in-1.0.2" = {
+ name = "for-in";
+ packageName = "for-in";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz";
+ sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
+ };
+ };
+ "foreach-2.0.5" = {
+ name = "foreach";
+ packageName = "foreach";
+ version = "2.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz";
+ sha1 = "0bee005018aeb260d0a3af3ae658dd0136ec1b99";
+ };
+ };
+ "forever-agent-0.6.1" = {
+ name = "forever-agent";
+ packageName = "forever-agent";
+ version = "0.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
+ sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+ };
+ };
+ "form-data-2.3.3" = {
+ name = "form-data";
+ packageName = "form-data";
+ version = "2.3.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
+ sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
+ };
+ };
+ "fragment-cache-0.2.1" = {
+ name = "fragment-cache";
+ packageName = "fragment-cache";
+ version = "0.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz";
+ sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
+ };
+ };
+ "fresh-0.5.2" = {
+ name = "fresh";
+ packageName = "fresh";
+ version = "0.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
+ sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
+ };
+ };
+ "fs.realpath-1.0.0" = {
+ name = "fs.realpath";
+ packageName = "fs.realpath";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
+ sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+ };
+ };
+ "fsevents-1.2.12" = {
+ name = "fsevents";
+ packageName = "fsevents";
+ version = "1.2.12";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz";
+ sha512 = "Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==";
+ };
+ };
+ "function-bind-1.1.1" = {
+ name = "function-bind";
+ packageName = "function-bind";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz";
+ sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==";
+ };
+ };
+ "get-caller-file-2.0.5" = {
+ name = "get-caller-file";
+ packageName = "get-caller-file";
+ version = "2.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz";
+ sha512 = "DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==";
+ };
+ };
+ "get-port-3.2.0" = {
+ name = "get-port";
+ packageName = "get-port";
+ version = "3.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz";
+ sha1 = "dd7ce7de187c06c8bf353796ac71e099f0980ebc";
+ };
+ };
+ "get-value-2.0.6" = {
+ name = "get-value";
+ packageName = "get-value";
+ version = "2.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz";
+ sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
+ };
+ };
+ "getpass-0.1.7" = {
+ name = "getpass";
+ packageName = "getpass";
+ version = "0.1.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
+ sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+ };
+ };
+ "glob-7.1.4" = {
+ name = "glob";
+ packageName = "glob";
+ version = "7.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz";
+ sha512 = "hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==";
+ };
+ };
+ "glob-parent-3.1.0" = {
+ name = "glob-parent";
+ packageName = "glob-parent";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz";
+ sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae";
+ };
+ };
+ "glob-to-regexp-0.3.0" = {
+ name = "glob-to-regexp";
+ packageName = "glob-to-regexp";
+ version = "0.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz";
+ sha1 = "8c5a1494d2066c570cc3bfe4496175acc4d502ab";
+ };
+ };
+ "globals-11.12.0" = {
+ name = "globals";
+ packageName = "globals";
+ version = "11.12.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz";
+ sha512 = "WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==";
+ };
+ };
+ "graceful-fs-4.2.3" = {
+ name = "graceful-fs";
+ packageName = "graceful-fs";
+ version = "4.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz";
+ sha512 = "a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==";
+ };
+ };
+ "grapheme-breaker-0.3.2" = {
+ name = "grapheme-breaker";
+ packageName = "grapheme-breaker";
+ version = "0.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz";
+ sha1 = "5b9e6b78c3832452d2ba2bb1cb830f96276410ac";
+ };
+ };
+ "har-schema-2.0.0" = {
+ name = "har-schema";
+ packageName = "har-schema";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
+ sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+ };
+ };
+ "har-validator-5.1.3" = {
+ name = "har-validator";
+ packageName = "har-validator";
+ version = "5.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz";
+ sha512 = "sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==";
+ };
+ };
+ "has-1.0.3" = {
+ name = "has";
+ packageName = "has";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz";
+ sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==";
+ };
+ };
+ "has-ansi-2.0.0" = {
+ name = "has-ansi";
+ packageName = "has-ansi";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
+ sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
+ };
+ };
+ "has-flag-1.0.0" = {
+ name = "has-flag";
+ packageName = "has-flag";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz";
+ sha1 = "9d9e793165ce017a00f00418c43f942a7b1d11fa";
+ };
+ };
+ "has-flag-3.0.0" = {
+ name = "has-flag";
+ packageName = "has-flag";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz";
+ sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
+ };
+ };
+ "has-symbols-1.0.1" = {
+ name = "has-symbols";
+ packageName = "has-symbols";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz";
+ sha512 = "PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==";
+ };
+ };
+ "has-value-0.3.1" = {
+ name = "has-value";
+ packageName = "has-value";
+ version = "0.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz";
+ sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
+ };
+ };
+ "has-value-1.0.0" = {
+ name = "has-value";
+ packageName = "has-value";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz";
+ sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
+ };
+ };
+ "has-values-0.1.4" = {
+ name = "has-values";
+ packageName = "has-values";
+ version = "0.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz";
+ sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
+ };
+ };
+ "has-values-1.0.0" = {
+ name = "has-values";
+ packageName = "has-values";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz";
+ sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
+ };
+ };
+ "hash-base-3.0.4" = {
+ name = "hash-base";
+ packageName = "hash-base";
+ version = "3.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz";
+ sha1 = "5fc8686847ecd73499403319a6b0a3f3f6ae4918";
+ };
+ };
+ "hash.js-1.1.7" = {
+ name = "hash.js";
+ packageName = "hash.js";
+ version = "1.1.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz";
+ sha512 = "taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==";
+ };
+ };
+ "hex-color-regex-1.1.0" = {
+ name = "hex-color-regex";
+ packageName = "hex-color-regex";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz";
+ sha512 = "l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==";
+ };
+ };
+ "hmac-drbg-1.0.1" = {
+ name = "hmac-drbg";
+ packageName = "hmac-drbg";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
+ sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1";
+ };
+ };
+ "hsl-regex-1.0.0" = {
+ name = "hsl-regex";
+ packageName = "hsl-regex";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz";
+ sha1 = "d49330c789ed819e276a4c0d272dffa30b18fe6e";
+ };
+ };
+ "hsla-regex-1.0.0" = {
+ name = "hsla-regex";
+ packageName = "hsla-regex";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz";
+ sha1 = "c1ce7a3168c8c6614033a4b5f7877f3b225f9c38";
+ };
+ };
+ "html-comment-regex-1.1.2" = {
+ name = "html-comment-regex";
+ packageName = "html-comment-regex";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz";
+ sha512 = "P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==";
+ };
+ };
+ "html-encoding-sniffer-1.0.2" = {
+ name = "html-encoding-sniffer";
+ packageName = "html-encoding-sniffer";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz";
+ sha512 = "71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==";
+ };
+ };
+ "html-tags-1.2.0" = {
+ name = "html-tags";
+ packageName = "html-tags";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz";
+ sha1 = "c78de65b5663aa597989dd2b7ab49200d7e4db98";
+ };
+ };
+ "htmlnano-0.2.5" = {
+ name = "htmlnano";
+ packageName = "htmlnano";
+ version = "0.2.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.5.tgz";
+ sha512 = "X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA==";
+ };
+ };
+ "htmlparser2-3.10.1" = {
+ name = "htmlparser2";
+ packageName = "htmlparser2";
+ version = "3.10.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz";
+ sha512 = "IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==";
+ };
+ };
+ "http-errors-1.7.3" = {
+ name = "http-errors";
+ packageName = "http-errors";
+ version = "1.7.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz";
+ sha512 = "ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==";
+ };
+ };
+ "http-signature-1.2.0" = {
+ name = "http-signature";
+ packageName = "http-signature";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
+ sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+ };
+ };
+ "https-browserify-1.0.0" = {
+ name = "https-browserify";
+ packageName = "https-browserify";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz";
+ sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73";
+ };
+ };
+ "iconv-lite-0.4.24" = {
+ name = "iconv-lite";
+ packageName = "iconv-lite";
+ version = "0.4.24";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
+ sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
+ };
+ };
+ "icss-replace-symbols-1.1.0" = {
+ name = "icss-replace-symbols";
+ packageName = "icss-replace-symbols";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz";
+ sha1 = "06ea6f83679a7749e386cfe1fe812ae5db223ded";
+ };
+ };
+ "ieee754-1.1.13" = {
+ name = "ieee754";
+ packageName = "ieee754";
+ version = "1.1.13";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz";
+ sha512 = "4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==";
+ };
+ };
+ "import-fresh-2.0.0" = {
+ name = "import-fresh";
+ packageName = "import-fresh";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz";
+ sha1 = "d81355c15612d386c61f9ddd3922d4304822a546";
+ };
+ };
+ "indexes-of-1.0.1" = {
+ name = "indexes-of";
+ packageName = "indexes-of";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz";
+ sha1 = "f30f716c8e2bd346c7b67d3df3915566a7c05607";
+ };
+ };
+ "inflight-1.0.6" = {
+ name = "inflight";
+ packageName = "inflight";
+ version = "1.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
+ sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+ };
+ };
+ "inherits-2.0.1" = {
+ name = "inherits";
+ packageName = "inherits";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz";
+ sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
+ };
+ };
+ "inherits-2.0.3" = {
+ name = "inherits";
+ packageName = "inherits";
+ version = "2.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
+ sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+ };
+ };
+ "inherits-2.0.4" = {
+ name = "inherits";
+ packageName = "inherits";
+ version = "2.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
+ sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
+ };
+ };
+ "ini-1.3.5" = {
+ name = "ini";
+ packageName = "ini";
+ version = "1.3.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz";
+ sha512 = "RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==";
+ };
+ };
+ "invariant-2.2.4" = {
+ name = "invariant";
+ packageName = "invariant";
+ version = "2.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz";
+ sha512 = "phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==";
+ };
+ };
+ "is-absolute-url-2.1.0" = {
+ name = "is-absolute-url";
+ packageName = "is-absolute-url";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz";
+ sha1 = "50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6";
+ };
+ };
+ "is-absolute-url-3.0.3" = {
+ name = "is-absolute-url";
+ packageName = "is-absolute-url";
+ version = "3.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz";
+ sha512 = "opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==";
+ };
+ };
+ "is-accessor-descriptor-0.1.6" = {
+ name = "is-accessor-descriptor";
+ packageName = "is-accessor-descriptor";
+ version = "0.1.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
+ sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
+ };
+ };
+ "is-accessor-descriptor-1.0.0" = {
+ name = "is-accessor-descriptor";
+ packageName = "is-accessor-descriptor";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
+ sha512 = "m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==";
+ };
+ };
+ "is-arrayish-0.2.1" = {
+ name = "is-arrayish";
+ packageName = "is-arrayish";
+ version = "0.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz";
+ sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
+ };
+ };
+ "is-arrayish-0.3.2" = {
+ name = "is-arrayish";
+ packageName = "is-arrayish";
+ version = "0.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz";
+ sha512 = "eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==";
+ };
+ };
+ "is-binary-path-1.0.1" = {
+ name = "is-binary-path";
+ packageName = "is-binary-path";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz";
+ sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
+ };
+ };
+ "is-buffer-1.1.6" = {
+ name = "is-buffer";
+ packageName = "is-buffer";
+ version = "1.1.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz";
+ sha512 = "NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==";
+ };
+ };
+ "is-callable-1.1.5" = {
+ name = "is-callable";
+ packageName = "is-callable";
+ version = "1.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz";
+ sha512 = "ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==";
+ };
+ };
+ "is-color-stop-1.1.0" = {
+ name = "is-color-stop";
+ packageName = "is-color-stop";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz";
+ sha1 = "cfff471aee4dd5c9e158598fbe12967b5cdad345";
+ };
+ };
+ "is-data-descriptor-0.1.4" = {
+ name = "is-data-descriptor";
+ packageName = "is-data-descriptor";
+ version = "0.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
+ sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
+ };
+ };
+ "is-data-descriptor-1.0.0" = {
+ name = "is-data-descriptor";
+ packageName = "is-data-descriptor";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
+ sha512 = "jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==";
+ };
+ };
+ "is-date-object-1.0.2" = {
+ name = "is-date-object";
+ packageName = "is-date-object";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz";
+ sha512 = "USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==";
+ };
+ };
+ "is-descriptor-0.1.6" = {
+ name = "is-descriptor";
+ packageName = "is-descriptor";
+ version = "0.1.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz";
+ sha512 = "avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==";
+ };
+ };
+ "is-descriptor-1.0.2" = {
+ name = "is-descriptor";
+ packageName = "is-descriptor";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz";
+ sha512 = "2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==";
+ };
+ };
+ "is-directory-0.3.1" = {
+ name = "is-directory";
+ packageName = "is-directory";
+ version = "0.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz";
+ sha1 = "61339b6f2475fc772fd9c9d83f5c8575dc154ae1";
+ };
+ };
+ "is-extendable-0.1.1" = {
+ name = "is-extendable";
+ packageName = "is-extendable";
+ version = "0.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz";
+ sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
+ };
+ };
+ "is-extendable-1.0.1" = {
+ name = "is-extendable";
+ packageName = "is-extendable";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz";
+ sha512 = "arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==";
+ };
+ };
+ "is-extglob-2.1.1" = {
+ name = "is-extglob";
+ packageName = "is-extglob";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz";
+ sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
+ };
+ };
+ "is-fullwidth-code-point-2.0.0" = {
+ name = "is-fullwidth-code-point";
+ packageName = "is-fullwidth-code-point";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+ sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+ };
+ };
+ "is-glob-3.1.0" = {
+ name = "is-glob";
+ packageName = "is-glob";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz";
+ sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
+ };
+ };
+ "is-glob-4.0.1" = {
+ name = "is-glob";
+ packageName = "is-glob";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz";
+ sha512 = "5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==";
+ };
+ };
+ "is-html-1.1.0" = {
+ name = "is-html";
+ packageName = "is-html";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz";
+ sha1 = "e04f1c18d39485111396f9a0273eab51af218464";
+ };
+ };
+ "is-number-3.0.0" = {
+ name = "is-number";
+ packageName = "is-number";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz";
+ sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
+ };
+ };
+ "is-obj-2.0.0" = {
+ name = "is-obj";
+ packageName = "is-obj";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz";
+ sha512 = "drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==";
+ };
+ };
+ "is-plain-object-2.0.4" = {
+ name = "is-plain-object";
+ packageName = "is-plain-object";
+ version = "2.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz";
+ sha512 = "h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==";
+ };
+ };
+ "is-regex-1.0.5" = {
+ name = "is-regex";
+ packageName = "is-regex";
+ version = "1.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz";
+ sha512 = "vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==";
+ };
+ };
+ "is-resolvable-1.1.0" = {
+ name = "is-resolvable";
+ packageName = "is-resolvable";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz";
+ sha512 = "qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==";
+ };
+ };
+ "is-svg-3.0.0" = {
+ name = "is-svg";
+ packageName = "is-svg";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz";
+ sha512 = "gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==";
+ };
+ };
+ "is-symbol-1.0.3" = {
+ name = "is-symbol";
+ packageName = "is-symbol";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz";
+ sha512 = "OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==";
+ };
+ };
+ "is-typedarray-1.0.0" = {
+ name = "is-typedarray";
+ packageName = "is-typedarray";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
+ sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+ };
+ };
+ "is-url-1.2.4" = {
+ name = "is-url";
+ packageName = "is-url";
+ version = "1.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz";
+ sha512 = "ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==";
+ };
+ };
+ "is-windows-1.0.2" = {
+ name = "is-windows";
+ packageName = "is-windows";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz";
+ sha512 = "eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==";
+ };
+ };
+ "is-wsl-1.1.0" = {
+ name = "is-wsl";
+ packageName = "is-wsl";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz";
+ sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d";
+ };
+ };
+ "isarray-1.0.0" = {
+ name = "isarray";
+ packageName = "isarray";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
+ sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+ };
+ };
+ "isarray-2.0.5" = {
+ name = "isarray";
+ packageName = "isarray";
+ version = "2.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz";
+ sha512 = "xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==";
+ };
+ };
+ "isexe-2.0.0" = {
+ name = "isexe";
+ packageName = "isexe";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
+ sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
+ };
+ };
+ "isobject-2.1.0" = {
+ name = "isobject";
+ packageName = "isobject";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz";
+ sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
+ };
+ };
+ "isobject-3.0.1" = {
+ name = "isobject";
+ packageName = "isobject";
+ version = "3.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz";
+ sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
+ };
+ };
+ "isstream-0.1.2" = {
+ name = "isstream";
+ packageName = "isstream";
+ version = "0.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
+ sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+ };
+ };
+ "js-beautify-1.11.0" = {
+ name = "js-beautify";
+ packageName = "js-beautify";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz";
+ sha512 = "a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A==";
+ };
+ };
+ "js-levenshtein-1.1.6" = {
+ name = "js-levenshtein";
+ packageName = "js-levenshtein";
+ version = "1.1.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz";
+ sha512 = "X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==";
+ };
+ };
+ "js-tokens-4.0.0" = {
+ name = "js-tokens";
+ packageName = "js-tokens";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz";
+ sha512 = "RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==";
+ };
+ };
+ "js-yaml-3.13.1" = {
+ name = "js-yaml";
+ packageName = "js-yaml";
+ version = "3.13.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz";
+ sha512 = "YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==";
+ };
+ };
+ "jsbn-0.1.1" = {
+ name = "jsbn";
+ packageName = "jsbn";
+ version = "0.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
+ sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+ };
+ };
+ "jsdom-14.1.0" = {
+ name = "jsdom";
+ packageName = "jsdom";
+ version = "14.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz";
+ sha512 = "O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==";
+ };
+ };
+ "jsesc-0.5.0" = {
+ name = "jsesc";
+ packageName = "jsesc";
+ version = "0.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz";
+ sha1 = "e7dee66e35d6fc16f710fe91d5cf69f70f08911d";
+ };
+ };
+ "jsesc-2.5.2" = {
+ name = "jsesc";
+ packageName = "jsesc";
+ version = "2.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz";
+ sha512 = "OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==";
+ };
+ };
+ "json-parse-better-errors-1.0.2" = {
+ name = "json-parse-better-errors";
+ packageName = "json-parse-better-errors";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
+ sha512 = "mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==";
+ };
+ };
+ "json-schema-0.2.3" = {
+ name = "json-schema";
+ packageName = "json-schema";
+ version = "0.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
+ sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+ };
+ };
+ "json-schema-traverse-0.4.1" = {
+ name = "json-schema-traverse";
+ packageName = "json-schema-traverse";
+ version = "0.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+ sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
+ };
+ };
+ "json-stringify-safe-5.0.1" = {
+ name = "json-stringify-safe";
+ packageName = "json-stringify-safe";
+ version = "5.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+ sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+ };
+ };
+ "json5-1.0.1" = {
+ name = "json5";
+ packageName = "json5";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz";
+ sha512 = "aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==";
+ };
+ };
+ "json5-2.1.3" = {
+ name = "json5";
+ packageName = "json5";
+ version = "2.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz";
+ sha512 = "KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==";
+ };
+ };
+ "jsprim-1.4.1" = {
+ name = "jsprim";
+ packageName = "jsprim";
+ version = "1.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
+ sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+ };
+ };
+ "kind-of-3.2.2" = {
+ name = "kind-of";
+ packageName = "kind-of";
+ version = "3.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz";
+ sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
+ };
+ };
+ "kind-of-4.0.0" = {
+ name = "kind-of";
+ packageName = "kind-of";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz";
+ sha1 = "20813df3d712928b207378691a45066fae72dd57";
+ };
+ };
+ "kind-of-5.1.0" = {
+ name = "kind-of";
+ packageName = "kind-of";
+ version = "5.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz";
+ sha512 = "NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==";
+ };
+ };
+ "kind-of-6.0.3" = {
+ name = "kind-of";
+ packageName = "kind-of";
+ version = "6.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz";
+ sha512 = "dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==";
+ };
+ };
+ "levn-0.3.0" = {
+ name = "levn";
+ packageName = "levn";
+ version = "0.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
+ sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
+ };
+ };
+ "locate-path-2.0.0" = {
+ name = "locate-path";
+ packageName = "locate-path";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz";
+ sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
+ };
+ };
+ "locate-path-3.0.0" = {
+ name = "locate-path";
+ packageName = "locate-path";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz";
+ sha512 = "7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==";
+ };
+ };
+ "lodash-4.17.15" = {
+ name = "lodash";
+ packageName = "lodash";
+ version = "4.17.15";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz";
+ sha512 = "8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==";
+ };
+ };
+ "lodash.clone-4.5.0" = {
+ name = "lodash.clone";
+ packageName = "lodash.clone";
+ version = "4.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz";
+ sha1 = "195870450f5a13192478df4bc3d23d2dea1907b6";
+ };
+ };
+ "lodash.memoize-4.1.2" = {
+ name = "lodash.memoize";
+ packageName = "lodash.memoize";
+ version = "4.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz";
+ sha1 = "bcc6c49a42a2840ed997f323eada5ecd182e0bfe";
+ };
+ };
+ "lodash.sortby-4.7.0" = {
+ name = "lodash.sortby";
+ packageName = "lodash.sortby";
+ version = "4.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz";
+ sha1 = "edd14c824e2cc9c1e0b0a1b42bb5210516a42438";
+ };
+ };
+ "lodash.uniq-4.5.0" = {
+ name = "lodash.uniq";
+ packageName = "lodash.uniq";
+ version = "4.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz";
+ sha1 = "d0225373aeb652adc1bc82e4945339a842754773";
+ };
+ };
+ "log-symbols-2.2.0" = {
+ name = "log-symbols";
+ packageName = "log-symbols";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz";
+ sha512 = "VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==";
+ };
+ };
+ "loose-envify-1.4.0" = {
+ name = "loose-envify";
+ packageName = "loose-envify";
+ version = "1.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz";
+ sha512 = "lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==";
+ };
+ };
+ "lru-cache-4.1.5" = {
+ name = "lru-cache";
+ packageName = "lru-cache";
+ version = "4.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz";
+ sha512 = "sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==";
+ };
+ };
+ "magic-string-0.22.5" = {
+ name = "magic-string";
+ packageName = "magic-string";
+ version = "0.22.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz";
+ sha512 = "oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==";
+ };
+ };
+ "map-cache-0.2.2" = {
+ name = "map-cache";
+ packageName = "map-cache";
+ version = "0.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz";
+ sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
+ };
+ };
+ "map-visit-1.0.0" = {
+ name = "map-visit";
+ packageName = "map-visit";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz";
+ sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
+ };
+ };
+ "md5.js-1.3.5" = {
+ name = "md5.js";
+ packageName = "md5.js";
+ version = "1.3.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz";
+ sha512 = "xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==";
+ };
+ };
+ "mdn-data-2.0.4" = {
+ name = "mdn-data";
+ packageName = "mdn-data";
+ version = "2.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz";
+ sha512 = "iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==";
+ };
+ };
+ "mdn-data-2.0.6" = {
+ name = "mdn-data";
+ packageName = "mdn-data";
+ version = "2.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz";
+ sha512 = "rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==";
+ };
+ };
+ "merge-source-map-1.0.4" = {
+ name = "merge-source-map";
+ packageName = "merge-source-map";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz";
+ sha1 = "a5de46538dae84d4114cc5ea02b4772a6346701f";
+ };
+ };
+ "merge2-1.3.0" = {
+ name = "merge2";
+ packageName = "merge2";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz";
+ sha512 = "2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==";
+ };
+ };
+ "micromatch-3.1.10" = {
+ name = "micromatch";
+ packageName = "micromatch";
+ version = "3.1.10";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz";
+ sha512 = "MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==";
+ };
+ };
+ "miller-rabin-4.0.1" = {
+ name = "miller-rabin";
+ packageName = "miller-rabin";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz";
+ sha512 = "115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==";
+ };
+ };
+ "mime-1.6.0" = {
+ name = "mime";
+ packageName = "mime";
+ version = "1.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
+ sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
+ };
+ };
+ "mime-db-1.44.0" = {
+ name = "mime-db";
+ packageName = "mime-db";
+ version = "1.44.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz";
+ sha512 = "/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==";
+ };
+ };
+ "mime-types-2.1.27" = {
+ name = "mime-types";
+ packageName = "mime-types";
+ version = "2.1.27";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz";
+ sha512 = "JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==";
+ };
+ };
+ "mimic-fn-1.2.0" = {
+ name = "mimic-fn";
+ packageName = "mimic-fn";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz";
+ sha512 = "jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==";
+ };
+ };
+ "minimalistic-assert-1.0.1" = {
+ name = "minimalistic-assert";
+ packageName = "minimalistic-assert";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
+ sha512 = "UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==";
+ };
+ };
+ "minimalistic-crypto-utils-1.0.1" = {
+ name = "minimalistic-crypto-utils";
+ packageName = "minimalistic-crypto-utils";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
+ sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a";
+ };
+ };
+ "minimatch-3.0.4" = {
+ name = "minimatch";
+ packageName = "minimatch";
+ version = "3.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
+ sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
+ };
+ };
+ "minimist-1.2.5" = {
+ name = "minimist";
+ packageName = "minimist";
+ version = "1.2.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
+ sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
+ };
+ };
+ "mixin-deep-1.3.2" = {
+ name = "mixin-deep";
+ packageName = "mixin-deep";
+ version = "1.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz";
+ sha512 = "WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==";
+ };
+ };
+ "mkdirp-0.5.5" = {
+ name = "mkdirp";
+ packageName = "mkdirp";
+ version = "0.5.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
+ sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
+ };
+ };
+ "mkdirp-1.0.4" = {
+ name = "mkdirp";
+ packageName = "mkdirp";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz";
+ sha512 = "vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==";
+ };
+ };
+ "ms-2.0.0" = {
+ name = "ms";
+ packageName = "ms";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
+ sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+ };
+ };
+ "ms-2.1.1" = {
+ name = "ms";
+ packageName = "ms";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
+ sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==";
+ };
+ };
+ "ms-2.1.2" = {
+ name = "ms";
+ packageName = "ms";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+ sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
+ };
+ };
+ "nan-2.14.1" = {
+ name = "nan";
+ packageName = "nan";
+ version = "2.14.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz";
+ sha512 = "isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==";
+ };
+ };
+ "nanomatch-1.2.13" = {
+ name = "nanomatch";
+ packageName = "nanomatch";
+ version = "1.2.13";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz";
+ sha512 = "fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==";
+ };
+ };
+ "nice-try-1.0.5" = {
+ name = "nice-try";
+ packageName = "nice-try";
+ version = "1.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz";
+ sha512 = "1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==";
+ };
+ };
+ "node-addon-api-1.7.1" = {
+ name = "node-addon-api";
+ packageName = "node-addon-api";
+ version = "1.7.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz";
+ sha512 = "2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==";
+ };
+ };
+ "node-elm-compiler-5.0.4" = {
+ name = "node-elm-compiler";
+ packageName = "node-elm-compiler";
+ version = "5.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-5.0.4.tgz";
+ sha512 = "VQsT8QSierYGkHzRed+b4MnccQVF1+qPHunE8jBoU7jD6YpuRqCDPzEoC2zfyEJS80qVnlMZrqobLnyjzX9lJg==";
+ };
+ };
+ "node-forge-0.7.6" = {
+ name = "node-forge";
+ packageName = "node-forge";
+ version = "0.7.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz";
+ sha512 = "sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==";
+ };
+ };
+ "node-libs-browser-2.2.1" = {
+ name = "node-libs-browser";
+ packageName = "node-libs-browser";
+ version = "2.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz";
+ sha512 = "h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==";
+ };
+ };
+ "node-releases-1.1.53" = {
+ name = "node-releases";
+ packageName = "node-releases";
+ version = "1.1.53";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz";
+ sha512 = "wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==";
+ };
+ };
+ "nopt-4.0.3" = {
+ name = "nopt";
+ packageName = "nopt";
+ version = "4.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz";
+ sha512 = "CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==";
+ };
+ };
+ "normalize-html-whitespace-1.0.0" = {
+ name = "normalize-html-whitespace";
+ packageName = "normalize-html-whitespace";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz";
+ sha512 = "9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==";
+ };
+ };
+ "normalize-path-2.1.1" = {
+ name = "normalize-path";
+ packageName = "normalize-path";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz";
+ sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
+ };
+ };
+ "normalize-path-3.0.0" = {
+ name = "normalize-path";
+ packageName = "normalize-path";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";
+ sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==";
+ };
+ };
+ "normalize-url-3.3.0" = {
+ name = "normalize-url";
+ packageName = "normalize-url";
+ version = "3.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz";
+ sha512 = "U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==";
+ };
+ };
+ "nth-check-1.0.2" = {
+ name = "nth-check";
+ packageName = "nth-check";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz";
+ sha512 = "WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==";
+ };
+ };
+ "nwsapi-2.2.0" = {
+ name = "nwsapi";
+ packageName = "nwsapi";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz";
+ sha512 = "h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==";
+ };
+ };
+ "oauth-sign-0.9.0" = {
+ name = "oauth-sign";
+ packageName = "oauth-sign";
+ version = "0.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
+ sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
+ };
+ };
+ "object-assign-4.1.1" = {
+ name = "object-assign";
+ packageName = "object-assign";
+ version = "4.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
+ sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+ };
+ };
+ "object-copy-0.1.0" = {
+ name = "object-copy";
+ packageName = "object-copy";
+ version = "0.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz";
+ sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
+ };
+ };
+ "object-inspect-1.4.1" = {
+ name = "object-inspect";
+ packageName = "object-inspect";
+ version = "1.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz";
+ sha512 = "wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==";
+ };
+ };
+ "object-inspect-1.7.0" = {
+ name = "object-inspect";
+ packageName = "object-inspect";
+ version = "1.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz";
+ sha512 = "a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==";
+ };
+ };
+ "object-keys-1.1.1" = {
+ name = "object-keys";
+ packageName = "object-keys";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz";
+ sha512 = "NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==";
+ };
+ };
+ "object-visit-1.0.1" = {
+ name = "object-visit";
+ packageName = "object-visit";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz";
+ sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
+ };
+ };
+ "object.assign-4.1.0" = {
+ name = "object.assign";
+ packageName = "object.assign";
+ version = "4.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz";
+ sha512 = "exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==";
+ };
+ };
+ "object.getownpropertydescriptors-2.1.0" = {
+ name = "object.getownpropertydescriptors";
+ packageName = "object.getownpropertydescriptors";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz";
+ sha512 = "Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==";
+ };
+ };
+ "object.pick-1.3.0" = {
+ name = "object.pick";
+ packageName = "object.pick";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz";
+ sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
+ };
+ };
+ "object.values-1.1.1" = {
+ name = "object.values";
+ packageName = "object.values";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz";
+ sha512 = "WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==";
+ };
+ };
+ "on-finished-2.3.0" = {
+ name = "on-finished";
+ packageName = "on-finished";
+ version = "2.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
+ sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+ };
+ };
+ "once-1.4.0" = {
+ name = "once";
+ packageName = "once";
+ version = "1.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+ sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+ };
+ };
+ "onetime-2.0.1" = {
+ name = "onetime";
+ packageName = "onetime";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz";
+ sha1 = "067428230fd67443b2794b22bba528b6867962d4";
+ };
+ };
+ "opn-5.5.0" = {
+ name = "opn";
+ packageName = "opn";
+ version = "5.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz";
+ sha512 = "PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==";
+ };
+ };
+ "optionator-0.8.3" = {
+ name = "optionator";
+ packageName = "optionator";
+ version = "0.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz";
+ sha512 = "+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==";
+ };
+ };
+ "ora-2.1.0" = {
+ name = "ora";
+ packageName = "ora";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz";
+ sha512 = "hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==";
+ };
+ };
+ "os-browserify-0.3.0" = {
+ name = "os-browserify";
+ packageName = "os-browserify";
+ version = "0.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz";
+ sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27";
+ };
+ };
+ "os-homedir-1.0.2" = {
+ name = "os-homedir";
+ packageName = "os-homedir";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
+ sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
+ };
+ };
+ "os-tmpdir-1.0.2" = {
+ name = "os-tmpdir";
+ packageName = "os-tmpdir";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
+ sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
+ };
+ };
+ "osenv-0.1.5" = {
+ name = "osenv";
+ packageName = "osenv";
+ version = "0.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
+ sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
+ };
+ };
+ "p-limit-1.3.0" = {
+ name = "p-limit";
+ packageName = "p-limit";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz";
+ sha512 = "vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==";
+ };
+ };
+ "p-limit-2.3.0" = {
+ name = "p-limit";
+ packageName = "p-limit";
+ version = "2.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz";
+ sha512 = "//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==";
+ };
+ };
+ "p-locate-2.0.0" = {
+ name = "p-locate";
+ packageName = "p-locate";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz";
+ sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
+ };
+ };
+ "p-locate-3.0.0" = {
+ name = "p-locate";
+ packageName = "p-locate";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz";
+ sha512 = "x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==";
+ };
+ };
+ "p-try-1.0.0" = {
+ name = "p-try";
+ packageName = "p-try";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz";
+ sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
+ };
+ };
+ "p-try-2.2.0" = {
+ name = "p-try";
+ packageName = "p-try";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz";
+ sha512 = "R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==";
+ };
+ };
+ "pako-0.2.9" = {
+ name = "pako";
+ packageName = "pako";
+ version = "0.2.9";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz";
+ sha1 = "f3f7522f4ef782348da8161bad9ecfd51bf83a75";
+ };
+ };
+ "pako-1.0.11" = {
+ name = "pako";
+ packageName = "pako";
+ version = "1.0.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz";
+ sha512 = "4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==";
+ };
+ };
+ "parcel-bundler-1.12.3" = {
+ name = "parcel-bundler";
+ packageName = "parcel-bundler";
+ version = "1.12.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.3.tgz";
+ sha512 = "8bq6lj0hhQeGxD9f9xEkFMXQ3d8TIlf2+isKxoi9bciB0KVEILRGllaPkUgp++5t0anToBh9+tG6ZyInXOC1/A==";
+ };
+ };
+ "parse-asn1-5.1.5" = {
+ name = "parse-asn1";
+ packageName = "parse-asn1";
+ version = "5.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz";
+ sha512 = "jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==";
+ };
+ };
+ "parse-json-4.0.0" = {
+ name = "parse-json";
+ packageName = "parse-json";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz";
+ sha1 = "be35f5425be1f7f6c747184f98a788cb99477ee0";
+ };
+ };
+ "parse5-5.1.0" = {
+ name = "parse5";
+ packageName = "parse5";
+ version = "5.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz";
+ sha512 = "fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==";
+ };
+ };
+ "parseurl-1.3.3" = {
+ name = "parseurl";
+ packageName = "parseurl";
+ version = "1.3.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz";
+ sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==";
+ };
+ };
+ "pascalcase-0.1.1" = {
+ name = "pascalcase";
+ packageName = "pascalcase";
+ version = "0.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz";
+ sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
+ };
+ };
+ "path-browserify-0.0.1" = {
+ name = "path-browserify";
+ packageName = "path-browserify";
+ version = "0.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz";
+ sha512 = "BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==";
+ };
+ };
+ "path-dirname-1.0.2" = {
+ name = "path-dirname";
+ packageName = "path-dirname";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz";
+ sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
+ };
+ };
+ "path-exists-3.0.0" = {
+ name = "path-exists";
+ packageName = "path-exists";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz";
+ sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
+ };
+ };
+ "path-is-absolute-1.0.1" = {
+ name = "path-is-absolute";
+ packageName = "path-is-absolute";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+ sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+ };
+ };
+ "path-key-2.0.1" = {
+ name = "path-key";
+ packageName = "path-key";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz";
+ sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
+ };
+ };
+ "path-parse-1.0.6" = {
+ name = "path-parse";
+ packageName = "path-parse";
+ version = "1.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz";
+ sha512 = "GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==";
+ };
+ };
+ "pbkdf2-3.0.17" = {
+ name = "pbkdf2";
+ packageName = "pbkdf2";
+ version = "3.0.17";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz";
+ sha512 = "U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==";
+ };
+ };
+ "performance-now-2.1.0" = {
+ name = "performance-now";
+ packageName = "performance-now";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
+ sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+ };
+ };
+ "physical-cpu-count-2.0.0" = {
+ name = "physical-cpu-count";
+ packageName = "physical-cpu-count";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz";
+ sha1 = "18de2f97e4bf7a9551ad7511942b5496f7aba660";
+ };
+ };
+ "pkg-up-2.0.0" = {
+ name = "pkg-up";
+ packageName = "pkg-up";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz";
+ sha1 = "c819ac728059a461cab1c3889a2be3c49a004d7f";
+ };
+ };
+ "pn-1.1.0" = {
+ name = "pn";
+ packageName = "pn";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz";
+ sha512 = "2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==";
+ };
+ };
+ "posix-character-classes-0.1.1" = {
+ name = "posix-character-classes";
+ packageName = "posix-character-classes";
+ version = "0.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
+ sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
+ };
+ };
+ "postcss-6.0.1" = {
+ name = "postcss";
+ packageName = "postcss";
+ version = "6.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz";
+ sha1 = "000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2";
+ };
+ };
+ "postcss-6.0.23" = {
+ name = "postcss";
+ packageName = "postcss";
+ version = "6.0.23";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz";
+ sha512 = "soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==";
+ };
+ };
+ "postcss-7.0.27" = {
+ name = "postcss";
+ packageName = "postcss";
+ version = "7.0.27";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz";
+ sha512 = "WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==";
+ };
+ };
+ "postcss-calc-7.0.2" = {
+ name = "postcss-calc";
+ packageName = "postcss-calc";
+ version = "7.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz";
+ sha512 = "rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==";
+ };
+ };
+ "postcss-colormin-4.0.3" = {
+ name = "postcss-colormin";
+ packageName = "postcss-colormin";
+ version = "4.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz";
+ sha512 = "WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==";
+ };
+ };
+ "postcss-convert-values-4.0.1" = {
+ name = "postcss-convert-values";
+ packageName = "postcss-convert-values";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz";
+ sha512 = "Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==";
+ };
+ };
+ "postcss-discard-comments-4.0.2" = {
+ name = "postcss-discard-comments";
+ packageName = "postcss-discard-comments";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz";
+ sha512 = "RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==";
+ };
+ };
+ "postcss-discard-duplicates-4.0.2" = {
+ name = "postcss-discard-duplicates";
+ packageName = "postcss-discard-duplicates";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz";
+ sha512 = "ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==";
+ };
+ };
+ "postcss-discard-empty-4.0.1" = {
+ name = "postcss-discard-empty";
+ packageName = "postcss-discard-empty";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz";
+ sha512 = "B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==";
+ };
+ };
+ "postcss-discard-overridden-4.0.1" = {
+ name = "postcss-discard-overridden";
+ packageName = "postcss-discard-overridden";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz";
+ sha512 = "IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==";
+ };
+ };
+ "postcss-merge-longhand-4.0.11" = {
+ name = "postcss-merge-longhand";
+ packageName = "postcss-merge-longhand";
+ version = "4.0.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz";
+ sha512 = "alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==";
+ };
+ };
+ "postcss-merge-rules-4.0.3" = {
+ name = "postcss-merge-rules";
+ packageName = "postcss-merge-rules";
+ version = "4.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz";
+ sha512 = "U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==";
+ };
+ };
+ "postcss-minify-font-values-4.0.2" = {
+ name = "postcss-minify-font-values";
+ packageName = "postcss-minify-font-values";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz";
+ sha512 = "j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==";
+ };
+ };
+ "postcss-minify-gradients-4.0.2" = {
+ name = "postcss-minify-gradients";
+ packageName = "postcss-minify-gradients";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz";
+ sha512 = "qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==";
+ };
+ };
+ "postcss-minify-params-4.0.2" = {
+ name = "postcss-minify-params";
+ packageName = "postcss-minify-params";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz";
+ sha512 = "G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==";
+ };
+ };
+ "postcss-minify-selectors-4.0.2" = {
+ name = "postcss-minify-selectors";
+ packageName = "postcss-minify-selectors";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz";
+ sha512 = "D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==";
+ };
+ };
+ "postcss-modules-extract-imports-1.1.0" = {
+ name = "postcss-modules-extract-imports";
+ packageName = "postcss-modules-extract-imports";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz";
+ sha1 = "b614c9720be6816eaee35fb3a5faa1dba6a05ddb";
+ };
+ };
+ "postcss-modules-local-by-default-1.2.0" = {
+ name = "postcss-modules-local-by-default";
+ packageName = "postcss-modules-local-by-default";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz";
+ sha1 = "f7d80c398c5a393fa7964466bd19500a7d61c069";
+ };
+ };
+ "postcss-modules-scope-1.1.0" = {
+ name = "postcss-modules-scope";
+ packageName = "postcss-modules-scope";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz";
+ sha1 = "d6ea64994c79f97b62a72b426fbe6056a194bb90";
+ };
+ };
+ "postcss-modules-values-1.3.0" = {
+ name = "postcss-modules-values";
+ packageName = "postcss-modules-values";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz";
+ sha1 = "ecffa9d7e192518389f42ad0e83f72aec456ea20";
+ };
+ };
+ "postcss-normalize-charset-4.0.1" = {
+ name = "postcss-normalize-charset";
+ packageName = "postcss-normalize-charset";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz";
+ sha512 = "gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==";
+ };
+ };
+ "postcss-normalize-display-values-4.0.2" = {
+ name = "postcss-normalize-display-values";
+ packageName = "postcss-normalize-display-values";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz";
+ sha512 = "3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==";
+ };
+ };
+ "postcss-normalize-positions-4.0.2" = {
+ name = "postcss-normalize-positions";
+ packageName = "postcss-normalize-positions";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz";
+ sha512 = "Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==";
+ };
+ };
+ "postcss-normalize-repeat-style-4.0.2" = {
+ name = "postcss-normalize-repeat-style";
+ packageName = "postcss-normalize-repeat-style";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz";
+ sha512 = "qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==";
+ };
+ };
+ "postcss-normalize-string-4.0.2" = {
+ name = "postcss-normalize-string";
+ packageName = "postcss-normalize-string";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz";
+ sha512 = "RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==";
+ };
+ };
+ "postcss-normalize-timing-functions-4.0.2" = {
+ name = "postcss-normalize-timing-functions";
+ packageName = "postcss-normalize-timing-functions";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz";
+ sha512 = "acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==";
+ };
+ };
+ "postcss-normalize-unicode-4.0.1" = {
+ name = "postcss-normalize-unicode";
+ packageName = "postcss-normalize-unicode";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz";
+ sha512 = "od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==";
+ };
+ };
+ "postcss-normalize-url-4.0.1" = {
+ name = "postcss-normalize-url";
+ packageName = "postcss-normalize-url";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz";
+ sha512 = "p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==";
+ };
+ };
+ "postcss-normalize-whitespace-4.0.2" = {
+ name = "postcss-normalize-whitespace";
+ packageName = "postcss-normalize-whitespace";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz";
+ sha512 = "tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==";
+ };
+ };
+ "postcss-ordered-values-4.1.2" = {
+ name = "postcss-ordered-values";
+ packageName = "postcss-ordered-values";
+ version = "4.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz";
+ sha512 = "2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==";
+ };
+ };
+ "postcss-reduce-initial-4.0.3" = {
+ name = "postcss-reduce-initial";
+ packageName = "postcss-reduce-initial";
+ version = "4.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz";
+ sha512 = "gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==";
+ };
+ };
+ "postcss-reduce-transforms-4.0.2" = {
+ name = "postcss-reduce-transforms";
+ packageName = "postcss-reduce-transforms";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz";
+ sha512 = "EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==";
+ };
+ };
+ "postcss-selector-parser-3.1.2" = {
+ name = "postcss-selector-parser";
+ packageName = "postcss-selector-parser";
+ version = "3.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz";
+ sha512 = "h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==";
+ };
+ };
+ "postcss-selector-parser-6.0.2" = {
+ name = "postcss-selector-parser";
+ packageName = "postcss-selector-parser";
+ version = "6.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz";
+ sha512 = "36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==";
+ };
+ };
+ "postcss-svgo-4.0.2" = {
+ name = "postcss-svgo";
+ packageName = "postcss-svgo";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz";
+ sha512 = "C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==";
+ };
+ };
+ "postcss-unique-selectors-4.0.1" = {
+ name = "postcss-unique-selectors";
+ packageName = "postcss-unique-selectors";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz";
+ sha512 = "+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==";
+ };
+ };
+ "postcss-value-parser-3.3.1" = {
+ name = "postcss-value-parser";
+ packageName = "postcss-value-parser";
+ version = "3.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz";
+ sha512 = "pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==";
+ };
+ };
+ "postcss-value-parser-4.0.3" = {
+ name = "postcss-value-parser";
+ packageName = "postcss-value-parser";
+ version = "4.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz";
+ sha512 = "N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==";
+ };
+ };
+ "posthtml-0.11.6" = {
+ name = "posthtml";
+ packageName = "posthtml";
+ version = "0.11.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz";
+ sha512 = "C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==";
+ };
+ };
+ "posthtml-0.12.3" = {
+ name = "posthtml";
+ packageName = "posthtml";
+ version = "0.12.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/posthtml/-/posthtml-0.12.3.tgz";
+ sha512 = "Fbpi95+JJyR0tqU7pUy1zTSQFjAsluuwB9pJ1h0jtnGk7n/O2TBtP5nDl9rV0JVACjQ1Lm5wSp4ppChr8u3MhA==";
+ };
+ };
+ "posthtml-parser-0.4.2" = {
+ name = "posthtml-parser";
+ packageName = "posthtml-parser";
+ version = "0.4.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz";
+ sha512 = "BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==";
+ };
+ };
+ "posthtml-render-1.2.2" = {
+ name = "posthtml-render";
+ packageName = "posthtml-render";
+ version = "1.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz";
+ sha512 = "MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==";
+ };
+ };
+ "prelude-ls-1.1.2" = {
+ name = "prelude-ls";
+ packageName = "prelude-ls";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
+ sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
+ };
+ };
+ "private-0.1.8" = {
+ name = "private";
+ packageName = "private";
+ version = "0.1.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/private/-/private-0.1.8.tgz";
+ sha512 = "VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==";
+ };
+ };
+ "process-0.11.10" = {
+ name = "process";
+ packageName = "process";
+ version = "0.11.10";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/process/-/process-0.11.10.tgz";
+ sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
+ };
+ };
+ "process-nextick-args-2.0.1" = {
+ name = "process-nextick-args";
+ packageName = "process-nextick-args";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
+ sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
+ };
+ };
+ "proto-list-1.2.4" = {
+ name = "proto-list";
+ packageName = "proto-list";
+ version = "1.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz";
+ sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
+ };
+ };
+ "pseudomap-1.0.2" = {
+ name = "pseudomap";
+ packageName = "pseudomap";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz";
+ sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
+ };
+ };
+ "psl-1.8.0" = {
+ name = "psl";
+ packageName = "psl";
+ version = "1.8.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
+ sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
+ };
+ };
+ "public-encrypt-4.0.3" = {
+ name = "public-encrypt";
+ packageName = "public-encrypt";
+ version = "4.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz";
+ sha512 = "zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==";
+ };
+ };
+ "punycode-1.3.2" = {
+ name = "punycode";
+ packageName = "punycode";
+ version = "1.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz";
+ sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
+ };
+ };
+ "punycode-1.4.1" = {
+ name = "punycode";
+ packageName = "punycode";
+ version = "1.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
+ sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
+ };
+ };
+ "punycode-2.1.1" = {
+ name = "punycode";
+ packageName = "punycode";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
+ sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
+ };
+ };
+ "purgecss-1.4.2" = {
+ name = "purgecss";
+ packageName = "purgecss";
+ version = "1.4.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz";
+ sha512 = "hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==";
+ };
+ };
+ "q-1.5.1" = {
+ name = "q";
+ packageName = "q";
+ version = "1.5.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/q/-/q-1.5.1.tgz";
+ sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
+ };
+ };
+ "qs-6.5.2" = {
+ name = "qs";
+ packageName = "qs";
+ version = "6.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
+ sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
+ };
+ };
+ "querystring-0.2.0" = {
+ name = "querystring";
+ packageName = "querystring";
+ version = "0.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz";
+ sha1 = "b209849203bb25df820da756e747005878521620";
+ };
+ };
+ "querystring-es3-0.2.1" = {
+ name = "querystring-es3";
+ packageName = "querystring-es3";
+ version = "0.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz";
+ sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
+ };
+ };
+ "quote-stream-1.0.2" = {
+ name = "quote-stream";
+ packageName = "quote-stream";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz";
+ sha1 = "84963f8c9c26b942e153feeb53aae74652b7e0b2";
+ };
+ };
+ "randombytes-2.1.0" = {
+ name = "randombytes";
+ packageName = "randombytes";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz";
+ sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==";
+ };
+ };
+ "randomfill-1.0.4" = {
+ name = "randomfill";
+ packageName = "randomfill";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz";
+ sha512 = "87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==";
+ };
+ };
+ "range-parser-1.2.1" = {
+ name = "range-parser";
+ packageName = "range-parser";
+ version = "1.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz";
+ sha512 = "Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==";
+ };
+ };
+ "readable-stream-2.3.7" = {
+ name = "readable-stream";
+ packageName = "readable-stream";
+ version = "2.3.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
+ sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
+ };
+ };
+ "readable-stream-3.6.0" = {
+ name = "readable-stream";
+ packageName = "readable-stream";
+ version = "3.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
+ sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
+ };
+ };
+ "readdirp-2.2.1" = {
+ name = "readdirp";
+ packageName = "readdirp";
+ version = "2.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz";
+ sha512 = "1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==";
+ };
+ };
+ "regenerate-1.4.0" = {
+ name = "regenerate";
+ packageName = "regenerate";
+ version = "1.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz";
+ sha512 = "1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==";
+ };
+ };
+ "regenerate-unicode-properties-8.2.0" = {
+ name = "regenerate-unicode-properties";
+ packageName = "regenerate-unicode-properties";
+ version = "8.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz";
+ sha512 = "F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==";
+ };
+ };
+ "regenerator-runtime-0.11.1" = {
+ name = "regenerator-runtime";
+ packageName = "regenerator-runtime";
+ version = "0.11.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
+ sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==";
+ };
+ };
+ "regenerator-runtime-0.12.1" = {
+ name = "regenerator-runtime";
+ packageName = "regenerator-runtime";
+ version = "0.12.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz";
+ sha512 = "odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==";
+ };
+ };
+ "regenerator-runtime-0.13.5" = {
+ name = "regenerator-runtime";
+ packageName = "regenerator-runtime";
+ version = "0.13.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz";
+ sha512 = "ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==";
+ };
+ };
+ "regenerator-transform-0.14.4" = {
+ name = "regenerator-transform";
+ packageName = "regenerator-transform";
+ version = "0.14.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz";
+ sha512 = "EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==";
+ };
+ };
+ "regex-not-1.0.2" = {
+ name = "regex-not";
+ packageName = "regex-not";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz";
+ sha512 = "J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==";
+ };
+ };
+ "regexpu-core-4.7.0" = {
+ name = "regexpu-core";
+ packageName = "regexpu-core";
+ version = "4.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz";
+ sha512 = "TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==";
+ };
+ };
+ "regjsgen-0.5.1" = {
+ name = "regjsgen";
+ packageName = "regjsgen";
+ version = "0.5.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz";
+ sha512 = "5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==";
+ };
+ };
+ "regjsparser-0.6.4" = {
+ name = "regjsparser";
+ packageName = "regjsparser";
+ version = "0.6.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz";
+ sha512 = "64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==";
+ };
+ };
+ "remove-trailing-separator-1.1.0" = {
+ name = "remove-trailing-separator";
+ packageName = "remove-trailing-separator";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
+ sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
+ };
+ };
+ "repeat-element-1.1.3" = {
+ name = "repeat-element";
+ packageName = "repeat-element";
+ version = "1.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz";
+ sha512 = "ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==";
+ };
+ };
+ "repeat-string-1.6.1" = {
+ name = "repeat-string";
+ packageName = "repeat-string";
+ version = "1.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz";
+ sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
+ };
+ };
+ "request-2.88.2" = {
+ name = "request";
+ packageName = "request";
+ version = "2.88.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
+ sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
+ };
+ };
+ "request-promise-core-1.1.3" = {
+ name = "request-promise-core";
+ packageName = "request-promise-core";
+ version = "1.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz";
+ sha512 = "QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==";
+ };
+ };
+ "request-promise-native-1.0.8" = {
+ name = "request-promise-native";
+ packageName = "request-promise-native";
+ version = "1.0.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz";
+ sha512 = "dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==";
+ };
+ };
+ "require-directory-2.1.1" = {
+ name = "require-directory";
+ packageName = "require-directory";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz";
+ sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
+ };
+ };
+ "require-main-filename-2.0.0" = {
+ name = "require-main-filename";
+ packageName = "require-main-filename";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz";
+ sha512 = "NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==";
+ };
+ };
+ "resolve-1.17.0" = {
+ name = "resolve";
+ packageName = "resolve";
+ version = "1.17.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz";
+ sha512 = "ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==";
+ };
+ };
+ "resolve-from-3.0.0" = {
+ name = "resolve-from";
+ packageName = "resolve-from";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz";
+ sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748";
+ };
+ };
+ "resolve-url-0.2.1" = {
+ name = "resolve-url";
+ packageName = "resolve-url";
+ version = "0.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz";
+ sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
+ };
+ };
+ "restore-cursor-2.0.0" = {
+ name = "restore-cursor";
+ packageName = "restore-cursor";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz";
+ sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf";
+ };
+ };
+ "ret-0.1.15" = {
+ name = "ret";
+ packageName = "ret";
+ version = "0.1.15";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz";
+ sha512 = "TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==";
+ };
+ };
+ "rgb-regex-1.0.1" = {
+ name = "rgb-regex";
+ packageName = "rgb-regex";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz";
+ sha1 = "c0e0d6882df0e23be254a475e8edd41915feaeb1";
+ };
+ };
+ "rgba-regex-1.0.0" = {
+ name = "rgba-regex";
+ packageName = "rgba-regex";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz";
+ sha1 = "43374e2e2ca0968b0ef1523460b7d730ff22eeb3";
+ };
+ };
+ "rimraf-2.6.3" = {
+ name = "rimraf";
+ packageName = "rimraf";
+ version = "2.6.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz";
+ sha512 = "mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==";
+ };
+ };
+ "ripemd160-2.0.2" = {
+ name = "ripemd160";
+ packageName = "ripemd160";
+ version = "2.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz";
+ sha512 = "ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==";
+ };
+ };
+ "safe-buffer-5.1.2" = {
+ name = "safe-buffer";
+ packageName = "safe-buffer";
+ version = "5.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
+ sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
+ };
+ };
+ "safe-regex-1.1.0" = {
+ name = "safe-regex";
+ packageName = "safe-regex";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz";
+ sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
+ };
+ };
+ "safer-buffer-2.1.2" = {
+ name = "safer-buffer";
+ packageName = "safer-buffer";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
+ sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
+ };
+ };
+ "safer-eval-1.3.6" = {
+ name = "safer-eval";
+ packageName = "safer-eval";
+ version = "1.3.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safer-eval/-/safer-eval-1.3.6.tgz";
+ sha512 = "DN9tBsZgtUOHODzSfO1nGCLhZtxc7Qq/d8/2SNxQZ9muYXZspSh1fO7HOsrf4lcelBNviAJLCxB/ggmG+jV1aw==";
+ };
+ };
+ "sax-1.2.4" = {
+ name = "sax";
+ packageName = "sax";
+ version = "1.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
+ sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
+ };
+ };
+ "saxes-3.1.11" = {
+ name = "saxes";
+ packageName = "saxes";
+ version = "3.1.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz";
+ sha512 = "Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==";
+ };
+ };
+ "semver-5.7.1" = {
+ name = "semver";
+ packageName = "semver";
+ version = "5.7.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz";
+ sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==";
+ };
+ };
+ "send-0.17.1" = {
+ name = "send";
+ packageName = "send";
+ version = "0.17.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/send/-/send-0.17.1.tgz";
+ sha512 = "BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==";
+ };
+ };
+ "serialize-to-js-1.2.2" = {
+ name = "serialize-to-js";
+ packageName = "serialize-to-js";
+ version = "1.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-1.2.2.tgz";
+ sha512 = "mUc8vA5iJghe+O+3s0YDGFLMJcqitVFk787YKiv8a4sf6RX5W0u81b+gcHrp15O0fFa010dRBVZvwcKXOWsL9Q==";
+ };
+ };
+ "serve-static-1.14.1" = {
+ name = "serve-static";
+ packageName = "serve-static";
+ version = "1.14.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz";
+ sha512 = "JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==";
+ };
+ };
+ "set-blocking-2.0.0" = {
+ name = "set-blocking";
+ packageName = "set-blocking";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
+ sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
+ };
+ };
+ "set-value-2.0.1" = {
+ name = "set-value";
+ packageName = "set-value";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz";
+ sha512 = "JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==";
+ };
+ };
+ "setimmediate-1.0.5" = {
+ name = "setimmediate";
+ packageName = "setimmediate";
+ version = "1.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz";
+ sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
+ };
+ };
+ "setprototypeof-1.1.1" = {
+ name = "setprototypeof";
+ packageName = "setprototypeof";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz";
+ sha512 = "JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==";
+ };
+ };
+ "sha.js-2.4.11" = {
+ name = "sha.js";
+ packageName = "sha.js";
+ version = "2.4.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz";
+ sha512 = "QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==";
+ };
+ };
+ "shallow-copy-0.0.1" = {
+ name = "shallow-copy";
+ packageName = "shallow-copy";
+ version = "0.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz";
+ sha1 = "415f42702d73d810330292cc5ee86eae1a11a170";
+ };
+ };
+ "shebang-command-1.2.0" = {
+ name = "shebang-command";
+ packageName = "shebang-command";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz";
+ sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
+ };
+ };
+ "shebang-regex-1.0.0" = {
+ name = "shebang-regex";
+ packageName = "shebang-regex";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz";
+ sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
+ };
+ };
+ "sigmund-1.0.1" = {
+ name = "sigmund";
+ packageName = "sigmund";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz";
+ sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
+ };
+ };
+ "signal-exit-3.0.3" = {
+ name = "signal-exit";
+ packageName = "signal-exit";
+ version = "3.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz";
+ sha512 = "VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==";
+ };
+ };
+ "simple-swizzle-0.2.2" = {
+ name = "simple-swizzle";
+ packageName = "simple-swizzle";
+ version = "0.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz";
+ sha1 = "a4da6b635ffcccca33f70d17cb92592de95e557a";
+ };
+ };
+ "snapdragon-0.8.2" = {
+ name = "snapdragon";
+ packageName = "snapdragon";
+ version = "0.8.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz";
+ sha512 = "FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==";
+ };
+ };
+ "snapdragon-node-2.1.1" = {
+ name = "snapdragon-node";
+ packageName = "snapdragon-node";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
+ sha512 = "O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==";
+ };
+ };
+ "snapdragon-util-3.0.1" = {
+ name = "snapdragon-util";
+ packageName = "snapdragon-util";
+ version = "3.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
+ sha512 = "mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==";
+ };
+ };
+ "source-map-0.5.7" = {
+ name = "source-map";
+ packageName = "source-map";
+ version = "0.5.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
+ sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
+ };
+ };
+ "source-map-0.6.1" = {
+ name = "source-map";
+ packageName = "source-map";
+ version = "0.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
+ sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
+ };
+ };
+ "source-map-resolve-0.5.3" = {
+ name = "source-map-resolve";
+ packageName = "source-map-resolve";
+ version = "0.5.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz";
+ sha512 = "Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==";
+ };
+ };
+ "source-map-support-0.5.19" = {
+ name = "source-map-support";
+ packageName = "source-map-support";
+ version = "0.5.19";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz";
+ sha512 = "Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==";
+ };
+ };
+ "source-map-url-0.4.0" = {
+ name = "source-map-url";
+ packageName = "source-map-url";
+ version = "0.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz";
+ sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
+ };
+ };
+ "split-string-3.1.0" = {
+ name = "split-string";
+ packageName = "split-string";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz";
+ sha512 = "NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==";
+ };
+ };
+ "sprintf-js-1.0.3" = {
+ name = "sprintf-js";
+ packageName = "sprintf-js";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
+ sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+ };
+ };
+ "sshpk-1.16.1" = {
+ name = "sshpk";
+ packageName = "sshpk";
+ version = "1.16.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
+ sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
+ };
+ };
+ "stable-0.1.8" = {
+ name = "stable";
+ packageName = "stable";
+ version = "0.1.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz";
+ sha512 = "ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==";
+ };
+ };
+ "static-eval-2.0.5" = {
+ name = "static-eval";
+ packageName = "static-eval";
+ version = "2.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz";
+ sha512 = "nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA==";
+ };
+ };
+ "static-extend-0.1.2" = {
+ name = "static-extend";
+ packageName = "static-extend";
+ version = "0.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz";
+ sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
+ };
+ };
+ "static-module-2.2.5" = {
+ name = "static-module";
+ packageName = "static-module";
+ version = "2.2.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz";
+ sha512 = "D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==";
+ };
+ };
+ "statuses-1.5.0" = {
+ name = "statuses";
+ packageName = "statuses";
+ version = "1.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
+ sha1 = "161c7dac177659fd9811f43771fa99381478628c";
+ };
+ };
+ "stealthy-require-1.1.1" = {
+ name = "stealthy-require";
+ packageName = "stealthy-require";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz";
+ sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b";
+ };
+ };
+ "stream-browserify-2.0.2" = {
+ name = "stream-browserify";
+ packageName = "stream-browserify";
+ version = "2.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz";
+ sha512 = "nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==";
+ };
+ };
+ "stream-http-2.8.3" = {
+ name = "stream-http";
+ packageName = "stream-http";
+ version = "2.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz";
+ sha512 = "+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==";
+ };
+ };
+ "string-width-3.1.0" = {
+ name = "string-width";
+ packageName = "string-width";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz";
+ sha512 = "vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==";
+ };
+ };
+ "string.prototype.trimend-1.0.1" = {
+ name = "string.prototype.trimend";
+ packageName = "string.prototype.trimend";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz";
+ sha512 = "LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==";
+ };
+ };
+ "string.prototype.trimleft-2.1.2" = {
+ name = "string.prototype.trimleft";
+ packageName = "string.prototype.trimleft";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz";
+ sha512 = "gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==";
+ };
+ };
+ "string.prototype.trimright-2.1.2" = {
+ name = "string.prototype.trimright";
+ packageName = "string.prototype.trimright";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz";
+ sha512 = "ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==";
+ };
+ };
+ "string.prototype.trimstart-1.0.1" = {
+ name = "string.prototype.trimstart";
+ packageName = "string.prototype.trimstart";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz";
+ sha512 = "XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==";
+ };
+ };
+ "string_decoder-1.1.1" = {
+ name = "string_decoder";
+ packageName = "string_decoder";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
+ sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
+ };
+ };
+ "strip-ansi-3.0.1" = {
+ name = "strip-ansi";
+ packageName = "strip-ansi";
+ version = "3.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
+ sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+ };
+ };
+ "strip-ansi-4.0.0" = {
+ name = "strip-ansi";
+ packageName = "strip-ansi";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
+ sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+ };
+ };
+ "strip-ansi-5.2.0" = {
+ name = "strip-ansi";
+ packageName = "strip-ansi";
+ version = "5.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz";
+ sha512 = "DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==";
+ };
+ };
+ "stylehacks-4.0.3" = {
+ name = "stylehacks";
+ packageName = "stylehacks";
+ version = "4.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz";
+ sha512 = "7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==";
+ };
+ };
+ "supports-color-2.0.0" = {
+ name = "supports-color";
+ packageName = "supports-color";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
+ sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
+ };
+ };
+ "supports-color-3.2.3" = {
+ name = "supports-color";
+ packageName = "supports-color";
+ version = "3.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz";
+ sha1 = "65ac0504b3954171d8a64946b2ae3cbb8a5f54f6";
+ };
+ };
+ "supports-color-5.5.0" = {
+ name = "supports-color";
+ packageName = "supports-color";
+ version = "5.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz";
+ sha512 = "QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==";
+ };
+ };
+ "supports-color-6.1.0" = {
+ name = "supports-color";
+ packageName = "supports-color";
+ version = "6.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz";
+ sha512 = "qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==";
+ };
+ };
+ "svgo-1.3.2" = {
+ name = "svgo";
+ packageName = "svgo";
+ version = "1.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz";
+ sha512 = "yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==";
+ };
+ };
+ "symbol-tree-3.2.4" = {
+ name = "symbol-tree";
+ packageName = "symbol-tree";
+ version = "3.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz";
+ sha512 = "9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==";
+ };
+ };
+ "temp-0.9.0" = {
+ name = "temp";
+ packageName = "temp";
+ version = "0.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz";
+ sha512 = "YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==";
+ };
+ };
+ "terser-3.17.0" = {
+ name = "terser";
+ packageName = "terser";
+ version = "3.17.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz";
+ sha512 = "/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==";
+ };
+ };
+ "terser-4.6.12" = {
+ name = "terser";
+ packageName = "terser";
+ version = "4.6.12";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/terser/-/terser-4.6.12.tgz";
+ sha512 = "fnIwuaKjFPANG6MAixC/k1TDtnl1YlPLUlLVIxxGZUn1gfUx2+l3/zGNB72wya+lgsb50QBi2tUV75RiODwnww==";
+ };
+ };
+ "through2-2.0.5" = {
+ name = "through2";
+ packageName = "through2";
+ version = "2.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz";
+ sha512 = "/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==";
+ };
+ };
+ "timers-browserify-2.0.11" = {
+ name = "timers-browserify";
+ packageName = "timers-browserify";
+ version = "2.0.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz";
+ sha512 = "60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==";
+ };
+ };
+ "timsort-0.3.0" = {
+ name = "timsort";
+ packageName = "timsort";
+ version = "0.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz";
+ sha1 = "405411a8e7e6339fe64db9a234de11dc31e02bd4";
+ };
+ };
+ "tiny-inflate-1.0.3" = {
+ name = "tiny-inflate";
+ packageName = "tiny-inflate";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz";
+ sha512 = "pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==";
+ };
+ };
+ "to-arraybuffer-1.0.1" = {
+ name = "to-arraybuffer";
+ packageName = "to-arraybuffer";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz";
+ sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43";
+ };
+ };
+ "to-fast-properties-1.0.3" = {
+ name = "to-fast-properties";
+ packageName = "to-fast-properties";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz";
+ sha1 = "b83571fa4d8c25b82e231b06e3a3055de4ca1a47";
+ };
+ };
+ "to-fast-properties-2.0.0" = {
+ name = "to-fast-properties";
+ packageName = "to-fast-properties";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz";
+ sha1 = "dc5e698cbd079265bc73e0377681a4e4e83f616e";
+ };
+ };
+ "to-object-path-0.3.0" = {
+ name = "to-object-path";
+ packageName = "to-object-path";
+ version = "0.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz";
+ sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
+ };
+ };
+ "to-regex-3.0.2" = {
+ name = "to-regex";
+ packageName = "to-regex";
+ version = "3.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz";
+ sha512 = "FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==";
+ };
+ };
+ "to-regex-range-2.1.1" = {
+ name = "to-regex-range";
+ packageName = "to-regex-range";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz";
+ sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
+ };
+ };
+ "toidentifier-1.0.0" = {
+ name = "toidentifier";
+ packageName = "toidentifier";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz";
+ sha512 = "yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==";
+ };
+ };
+ "tough-cookie-2.5.0" = {
+ name = "tough-cookie";
+ packageName = "tough-cookie";
+ version = "2.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
+ sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
+ };
+ };
+ "tr46-1.0.1" = {
+ name = "tr46";
+ packageName = "tr46";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz";
+ sha1 = "a8b13fd6bfd2489519674ccde55ba3693b706d09";
+ };
+ };
+ "trim-right-1.0.1" = {
+ name = "trim-right";
+ packageName = "trim-right";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz";
+ sha1 = "cb2e1203067e0c8de1f614094b9fe45704ea6003";
+ };
+ };
+ "tty-browserify-0.0.0" = {
+ name = "tty-browserify";
+ packageName = "tty-browserify";
+ version = "0.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz";
+ sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6";
+ };
+ };
+ "tunnel-agent-0.6.0" = {
+ name = "tunnel-agent";
+ packageName = "tunnel-agent";
+ version = "0.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+ sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+ };
+ };
+ "tweetnacl-0.14.5" = {
+ name = "tweetnacl";
+ packageName = "tweetnacl";
+ version = "0.14.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
+ sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+ };
+ };
+ "type-check-0.3.2" = {
+ name = "type-check";
+ packageName = "type-check";
+ version = "0.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
+ sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
+ };
+ };
+ "typedarray-0.0.6" = {
+ name = "typedarray";
+ packageName = "typedarray";
+ version = "0.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
+ sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
+ };
+ };
+ "uncss-0.17.3" = {
+ name = "uncss";
+ packageName = "uncss";
+ version = "0.17.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz";
+ sha512 = "ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==";
+ };
+ };
+ "unicode-canonical-property-names-ecmascript-1.0.4" = {
+ name = "unicode-canonical-property-names-ecmascript";
+ packageName = "unicode-canonical-property-names-ecmascript";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz";
+ sha512 = "jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==";
+ };
+ };
+ "unicode-match-property-ecmascript-1.0.4" = {
+ name = "unicode-match-property-ecmascript";
+ packageName = "unicode-match-property-ecmascript";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz";
+ sha512 = "L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==";
+ };
+ };
+ "unicode-match-property-value-ecmascript-1.2.0" = {
+ name = "unicode-match-property-value-ecmascript";
+ packageName = "unicode-match-property-value-ecmascript";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz";
+ sha512 = "wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==";
+ };
+ };
+ "unicode-property-aliases-ecmascript-1.1.0" = {
+ name = "unicode-property-aliases-ecmascript";
+ packageName = "unicode-property-aliases-ecmascript";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz";
+ sha512 = "PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==";
+ };
+ };
+ "unicode-trie-0.3.1" = {
+ name = "unicode-trie";
+ packageName = "unicode-trie";
+ version = "0.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz";
+ sha1 = "d671dddd89101a08bac37b6a5161010602052085";
+ };
+ };
+ "union-value-1.0.1" = {
+ name = "union-value";
+ packageName = "union-value";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz";
+ sha512 = "tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==";
+ };
+ };
+ "uniq-1.0.1" = {
+ name = "uniq";
+ packageName = "uniq";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz";
+ sha1 = "b31c5ae8254844a3a8281541ce2b04b865a734ff";
+ };
+ };
+ "uniqs-2.0.0" = {
+ name = "uniqs";
+ packageName = "uniqs";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz";
+ sha1 = "ffede4b36b25290696e6e165d4a59edb998e6b02";
+ };
+ };
+ "unquote-1.1.1" = {
+ name = "unquote";
+ packageName = "unquote";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz";
+ sha1 = "8fded7324ec6e88a0ff8b905e7c098cdc086d544";
+ };
+ };
+ "unset-value-1.0.0" = {
+ name = "unset-value";
+ packageName = "unset-value";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz";
+ sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
+ };
+ };
+ "upath-1.2.0" = {
+ name = "upath";
+ packageName = "upath";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz";
+ sha512 = "aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==";
+ };
+ };
+ "uri-js-4.2.2" = {
+ name = "uri-js";
+ packageName = "uri-js";
+ version = "4.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz";
+ sha512 = "KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==";
+ };
+ };
+ "urix-0.1.0" = {
+ name = "urix";
+ packageName = "urix";
+ version = "0.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz";
+ sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
+ };
+ };
+ "url-0.11.0" = {
+ name = "url";
+ packageName = "url";
+ version = "0.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/url/-/url-0.11.0.tgz";
+ sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
+ };
+ };
+ "use-3.1.1" = {
+ name = "use";
+ packageName = "use";
+ version = "3.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/use/-/use-3.1.1.tgz";
+ sha512 = "cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==";
+ };
+ };
+ "util-0.10.3" = {
+ name = "util";
+ packageName = "util";
+ version = "0.10.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/util/-/util-0.10.3.tgz";
+ sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
+ };
+ };
+ "util-0.11.1" = {
+ name = "util";
+ packageName = "util";
+ version = "0.11.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/util/-/util-0.11.1.tgz";
+ sha512 = "HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==";
+ };
+ };
+ "util-deprecate-1.0.2" = {
+ name = "util-deprecate";
+ packageName = "util-deprecate";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
+ sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+ };
+ };
+ "util.promisify-1.0.1" = {
+ name = "util.promisify";
+ packageName = "util.promisify";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz";
+ sha512 = "g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==";
+ };
+ };
+ "uuid-3.4.0" = {
+ name = "uuid";
+ packageName = "uuid";
+ version = "3.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
+ sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
+ };
+ };
+ "v8-compile-cache-2.1.0" = {
+ name = "v8-compile-cache";
+ packageName = "v8-compile-cache";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz";
+ sha512 = "usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==";
+ };
+ };
+ "vendors-1.0.4" = {
+ name = "vendors";
+ packageName = "vendors";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz";
+ sha512 = "/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==";
+ };
+ };
+ "verror-1.10.0" = {
+ name = "verror";
+ packageName = "verror";
+ version = "1.10.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
+ sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+ };
+ };
+ "vlq-0.2.3" = {
+ name = "vlq";
+ packageName = "vlq";
+ version = "0.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz";
+ sha512 = "DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==";
+ };
+ };
+ "vm-browserify-1.1.2" = {
+ name = "vm-browserify";
+ packageName = "vm-browserify";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz";
+ sha512 = "2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==";
+ };
+ };
+ "w3c-hr-time-1.0.2" = {
+ name = "w3c-hr-time";
+ packageName = "w3c-hr-time";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz";
+ sha512 = "z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==";
+ };
+ };
+ "w3c-xmlserializer-1.1.2" = {
+ name = "w3c-xmlserializer";
+ packageName = "w3c-xmlserializer";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz";
+ sha512 = "p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==";
+ };
+ };
+ "wcwidth-1.0.1" = {
+ name = "wcwidth";
+ packageName = "wcwidth";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz";
+ sha1 = "f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8";
+ };
+ };
+ "webidl-conversions-4.0.2" = {
+ name = "webidl-conversions";
+ packageName = "webidl-conversions";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz";
+ sha512 = "YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==";
+ };
+ };
+ "whatwg-encoding-1.0.5" = {
+ name = "whatwg-encoding";
+ packageName = "whatwg-encoding";
+ version = "1.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz";
+ sha512 = "b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==";
+ };
+ };
+ "whatwg-mimetype-2.3.0" = {
+ name = "whatwg-mimetype";
+ packageName = "whatwg-mimetype";
+ version = "2.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz";
+ sha512 = "M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==";
+ };
+ };
+ "whatwg-url-7.1.0" = {
+ name = "whatwg-url";
+ packageName = "whatwg-url";
+ version = "7.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz";
+ sha512 = "WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==";
+ };
+ };
+ "which-1.3.1" = {
+ name = "which";
+ packageName = "which";
+ version = "1.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz";
+ sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==";
+ };
+ };
+ "which-module-2.0.0" = {
+ name = "which-module";
+ packageName = "which-module";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz";
+ sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
+ };
+ };
+ "word-wrap-1.2.3" = {
+ name = "word-wrap";
+ packageName = "word-wrap";
+ version = "1.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz";
+ sha512 = "Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==";
+ };
+ };
+ "wrap-ansi-5.1.0" = {
+ name = "wrap-ansi";
+ packageName = "wrap-ansi";
+ version = "5.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz";
+ sha512 = "QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==";
+ };
+ };
+ "wrappy-1.0.2" = {
+ name = "wrappy";
+ packageName = "wrappy";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+ sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+ };
+ };
+ "ws-5.2.2" = {
+ name = "ws";
+ packageName = "ws";
+ version = "5.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz";
+ sha512 = "jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==";
+ };
+ };
+ "ws-6.2.1" = {
+ name = "ws";
+ packageName = "ws";
+ version = "6.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz";
+ sha512 = "GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==";
+ };
+ };
+ "xml-name-validator-3.0.0" = {
+ name = "xml-name-validator";
+ packageName = "xml-name-validator";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz";
+ sha512 = "A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==";
+ };
+ };
+ "xmlchars-2.2.0" = {
+ name = "xmlchars";
+ packageName = "xmlchars";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz";
+ sha512 = "JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==";
+ };
+ };
+ "xtend-4.0.2" = {
+ name = "xtend";
+ packageName = "xtend";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
+ sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
+ };
+ };
+ "y18n-4.0.0" = {
+ name = "y18n";
+ packageName = "y18n";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz";
+ sha512 = "r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==";
+ };
+ };
+ "yallist-2.1.2" = {
+ name = "yallist";
+ packageName = "yallist";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz";
+ sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
+ };
+ };
+ "yargs-14.2.3" = {
+ name = "yargs";
+ packageName = "yargs";
+ version = "14.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz";
+ sha512 = "ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==";
+ };
+ };
+ "yargs-parser-15.0.1" = {
+ name = "yargs-parser";
+ packageName = "yargs-parser";
+ version = "15.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz";
+ sha512 = "0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==";
+ };
+ };
+ };
+ args = {
+ name = "codenamesgreen";
+ packageName = "codenamesgreen";
+ version = "1.0.0";
+ src = let
+ upstream = fetchFromGitHub {
+ owner = "jbowens";
+ repo = "codenamesgreen";
+ rev = "6d014d0df14bee72495e01f12885ef31cba3bd6b";
+ sha256 = "0bkaf52rnjw792q0755in4k5jbcrmgq06cl03fdl6zdr8kq2mhm0";
+ };
+ in
+ runCommand "codenamesgreen-src" {} ''
+ cp -a ${upstream} $out
+ chmod -R u+w $out
+ cd $out
+ patch -p1 < ${./codenames.patch}
+ patch -p1 < ${./immae-assets.patch}
+ '';
+ dependencies = [
+ sources."@babel/code-frame-7.0.0"
+ (sources."@babel/core-7.3.4" // {
+ dependencies = [
+ sources."json5-2.1.3"
+ sources."source-map-0.5.7"
+ ];
+ })
+ (sources."@babel/generator-7.3.4" // {
+ dependencies = [
+ sources."source-map-0.5.7"
+ ];
+ })
+ (sources."@babel/helper-annotate-as-pure-7.8.3" // {
+ dependencies = [
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ (sources."@babel/helper-builder-binary-assignment-operator-visitor-7.8.3" // {
+ dependencies = [
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ (sources."@babel/helper-builder-react-jsx-7.9.0" // {
+ dependencies = [
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ sources."@babel/helper-create-regexp-features-plugin-7.8.8"
+ (sources."@babel/helper-define-map-7.8.3" // {
+ dependencies = [
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ (sources."@babel/helper-explode-assignable-expression-7.8.3" // {
+ dependencies = [
+ sources."@babel/code-frame-7.8.3"
+ sources."@babel/generator-7.9.5"
+ sources."@babel/parser-7.9.4"
+ sources."@babel/traverse-7.9.5"
+ sources."@babel/types-7.9.5"
+ sources."source-map-0.5.7"
+ ];
+ })
+ (sources."@babel/helper-function-name-7.9.5" // {
+ dependencies = [
+ sources."@babel/code-frame-7.8.3"
+ sources."@babel/parser-7.9.4"
+ sources."@babel/template-7.8.6"
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ (sources."@babel/helper-get-function-arity-7.8.3" // {
+ dependencies = [
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ (sources."@babel/helper-hoist-variables-7.8.3" // {
+ dependencies = [
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ (sources."@babel/helper-member-expression-to-functions-7.8.3" // {
+ dependencies = [
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ (sources."@babel/helper-module-imports-7.8.3" // {
+ dependencies = [
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ (sources."@babel/helper-module-transforms-7.9.0" // {
+ dependencies = [
+ sources."@babel/code-frame-7.8.3"
+ sources."@babel/parser-7.9.4"
+ sources."@babel/template-7.8.6"
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ (sources."@babel/helper-optimise-call-expression-7.8.3" // {
+ dependencies = [
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ sources."@babel/helper-plugin-utils-7.8.3"
+ sources."@babel/helper-regex-7.8.3"
+ (sources."@babel/helper-remap-async-to-generator-7.8.3" // {
+ dependencies = [
+ sources."@babel/code-frame-7.8.3"
+ sources."@babel/generator-7.9.5"
+ sources."@babel/parser-7.9.4"
+ sources."@babel/template-7.8.6"
+ sources."@babel/traverse-7.9.5"
+ sources."@babel/types-7.9.5"
+ sources."source-map-0.5.7"
+ ];
+ })
+ (sources."@babel/helper-replace-supers-7.8.6" // {
+ dependencies = [
+ sources."@babel/code-frame-7.8.3"
+ sources."@babel/generator-7.9.5"
+ sources."@babel/parser-7.9.4"
+ sources."@babel/traverse-7.9.5"
+ sources."@babel/types-7.9.5"
+ sources."source-map-0.5.7"
+ ];
+ })
+ (sources."@babel/helper-simple-access-7.8.3" // {
+ dependencies = [
+ sources."@babel/code-frame-7.8.3"
+ sources."@babel/parser-7.9.4"
+ sources."@babel/template-7.8.6"
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ (sources."@babel/helper-split-export-declaration-7.8.3" // {
+ dependencies = [
+ sources."@babel/types-7.9.5"
+ ];
+ })
+ sources."@babel/helper-validator-identifier-7.9.5"
+ (sources."@babel/helper-wrap-function-7.8.3" // {
+ dependencies = [
+ sources."@babel/code-frame-7.8.3"
+ sources."@babel/generator-7.9.5"
+ sources."@babel/parser-7.9.4"
+ sources."@babel/template-7.8.6"
+ sources."@babel/traverse-7.9.5"
+ sources."@babel/types-7.9.5"
+ sources."source-map-0.5.7"
+ ];
+ })
+ (sources."@babel/helpers-7.9.2" // {
+ dependencies = [
+ sources."@babel/code-frame-7.8.3"
+ sources."@babel/generator-7.9.5"
+ sources."@babel/parser-7.9.4"
+ sources."@babel/template-7.8.6"
+ sources."@babel/traverse-7.9.5"
+ sources."@babel/types-7.9.5"
+ sources."source-map-0.5.7"
+ ];
+ })
+ sources."@babel/highlight-7.9.0"
+ sources."@babel/parser-7.3.4"
+ sources."@babel/plugin-proposal-async-generator-functions-7.8.3"
+ sources."@babel/plugin-proposal-json-strings-7.8.3"
+ sources."@babel/plugin-proposal-object-rest-spread-7.9.5"
+ sources."@babel/plugin-proposal-optional-catch-binding-7.8.3"
+ sources."@babel/plugin-proposal-unicode-property-regex-7.8.8"
+ sources."@babel/plugin-syntax-async-generators-7.8.4"
+ sources."@babel/plugin-syntax-flow-7.8.3"
+ sources."@babel/plugin-syntax-json-strings-7.8.3"
+ sources."@babel/plugin-syntax-jsx-7.8.3"
+ sources."@babel/plugin-syntax-object-rest-spread-7.8.3"
+ sources."@babel/plugin-syntax-optional-catch-binding-7.8.3"
+ sources."@babel/plugin-transform-arrow-functions-7.8.3"
+ sources."@babel/plugin-transform-async-to-generator-7.8.3"
+ sources."@babel/plugin-transform-block-scoped-functions-7.8.3"
+ sources."@babel/plugin-transform-block-scoping-7.8.3"
+ sources."@babel/plugin-transform-classes-7.9.5"
+ sources."@babel/plugin-transform-computed-properties-7.8.3"
+ sources."@babel/plugin-transform-destructuring-7.9.5"
+ sources."@babel/plugin-transform-dotall-regex-7.8.3"
+ sources."@babel/plugin-transform-duplicate-keys-7.8.3"
+ sources."@babel/plugin-transform-exponentiation-operator-7.8.3"
+ sources."@babel/plugin-transform-flow-strip-types-7.3.4"
+ sources."@babel/plugin-transform-for-of-7.9.0"
+ sources."@babel/plugin-transform-function-name-7.8.3"
+ sources."@babel/plugin-transform-literals-7.8.3"
+ sources."@babel/plugin-transform-modules-amd-7.9.0"
+ sources."@babel/plugin-transform-modules-commonjs-7.2.0"
+ sources."@babel/plugin-transform-modules-systemjs-7.9.0"
+ sources."@babel/plugin-transform-modules-umd-7.9.0"
+ sources."@babel/plugin-transform-named-capturing-groups-regex-7.8.3"
+ sources."@babel/plugin-transform-new-target-7.8.3"
+ sources."@babel/plugin-transform-object-super-7.8.3"
+ sources."@babel/plugin-transform-parameters-7.9.5"
+ sources."@babel/plugin-transform-react-jsx-7.3.0"
+ sources."@babel/plugin-transform-regenerator-7.8.7"
+ sources."@babel/plugin-transform-shorthand-properties-7.8.3"
+ sources."@babel/plugin-transform-spread-7.8.3"
+ sources."@babel/plugin-transform-sticky-regex-7.8.3"
+ sources."@babel/plugin-transform-template-literals-7.8.3"
+ sources."@babel/plugin-transform-typeof-symbol-7.8.4"
+ sources."@babel/plugin-transform-unicode-regex-7.8.3"
+ sources."@babel/preset-env-7.3.4"
+ (sources."@babel/runtime-7.3.4" // {
+ dependencies = [
+ sources."regenerator-runtime-0.12.1"
+ ];
+ })
+ sources."@babel/template-7.2.2"
+ sources."@babel/traverse-7.3.4"
+ sources."@babel/types-7.3.4"
+ sources."@iarna/toml-2.2.5"
+ sources."@mrmlnc/readdir-enhanced-2.2.1"
+ sources."@nodelib/fs.stat-1.1.3"
+ sources."@parcel/fs-1.11.0"
+ sources."@parcel/logger-1.11.1"
+ sources."@parcel/utils-1.11.0"
+ sources."@parcel/watcher-1.12.1"
+ sources."@parcel/workers-1.11.0"
+ sources."@types/q-1.5.2"
+ sources."abab-2.0.3"
+ sources."abbrev-1.1.1"
+ sources."acorn-7.1.1"
+ (sources."acorn-globals-4.3.4" // {
+ dependencies = [
+ sources."acorn-6.4.1"
+ ];
+ })
+ sources."acorn-walk-6.2.0"
+ sources."ajv-6.12.2"
+ sources."alphanum-sort-1.0.2"
+ sources."ansi-regex-3.0.0"
+ sources."ansi-styles-3.2.1"
+ (sources."ansi-to-html-0.6.14" // {
+ dependencies = [
+ sources."entities-1.1.2"
+ ];
+ })
+ (sources."anymatch-2.0.0" // {
+ dependencies = [
+ sources."normalize-path-2.1.1"
+ ];
+ })
+ sources."argparse-1.0.10"
+ sources."arr-diff-4.0.0"
+ sources."arr-flatten-1.1.0"
+ sources."arr-union-3.1.0"
+ sources."array-equal-1.0.0"
+ sources."array-unique-0.3.2"
+ sources."asn1-0.2.4"
+ sources."asn1.js-4.10.1"
+ (sources."assert-1.5.0" // {
+ dependencies = [
+ sources."inherits-2.0.1"
+ sources."util-0.10.3"
+ ];
+ })
+ sources."assert-plus-1.0.0"
+ sources."assign-symbols-1.0.0"
+ sources."async-each-1.0.3"
+ sources."async-limiter-1.0.1"
+ sources."asynckit-0.4.0"
+ sources."atob-2.1.2"
+ sources."aws-sign2-0.7.0"
+ sources."aws4-1.9.1"
+ sources."babel-plugin-dynamic-import-node-2.3.3"
+ (sources."babel-runtime-6.26.0" // {
+ dependencies = [
+ sources."regenerator-runtime-0.11.1"
+ ];
+ })
+ (sources."babel-types-6.26.0" // {
+ dependencies = [
+ sources."to-fast-properties-1.0.3"
+ ];
+ })
+ sources."babylon-walk-1.0.2"
+ sources."balanced-match-1.0.0"
+ (sources."base-0.11.2" // {
+ dependencies = [
+ sources."define-property-1.0.0"
+ sources."is-accessor-descriptor-1.0.0"
+ sources."is-data-descriptor-1.0.0"
+ sources."is-descriptor-1.0.2"
+ ];
+ })
+ sources."base64-js-1.3.1"
+ sources."bcrypt-pbkdf-1.0.2"
+ sources."binary-extensions-1.13.1"
+ sources."bindings-1.5.0"
+ sources."bn.js-4.11.8"
+ sources."boolbase-1.0.0"
+ sources."brace-expansion-1.1.11"
+ (sources."braces-2.3.2" // {
+ dependencies = [
+ sources."extend-shallow-2.0.1"
+ ];
+ })
+ sources."brfs-1.6.1"
+ sources."brorand-1.1.0"
+ sources."browser-process-hrtime-1.0.0"
+ sources."browserify-aes-1.2.0"
+ sources."browserify-cipher-1.0.1"
+ sources."browserify-des-1.0.2"
+ sources."browserify-rsa-4.0.1"
+ sources."browserify-sign-4.0.4"
+ (sources."browserify-zlib-0.2.0" // {
+ dependencies = [
+ sources."pako-1.0.11"
+ ];
+ })
+ sources."browserslist-4.12.0"
+ sources."buffer-4.9.2"
+ sources."buffer-equal-0.0.1"
+ sources."buffer-from-1.1.1"
+ sources."buffer-xor-1.0.3"
+ sources."builtin-status-codes-3.0.0"
+ sources."cache-base-1.0.1"
+ sources."call-me-maybe-1.0.1"
+ sources."caller-callsite-2.0.0"
+ sources."caller-path-2.0.0"
+ sources."callsites-2.0.0"
+ sources."camelcase-5.3.1"
+ sources."caniuse-api-3.0.0"
+ sources."caniuse-lite-1.0.30001048"
+ sources."caseless-0.12.0"
+ (sources."chalk-2.4.2" // {
+ dependencies = [
+ sources."supports-color-5.5.0"
+ ];
+ })
+ (sources."chokidar-2.1.8" // {
+ dependencies = [
+ sources."fsevents-1.2.12"
+ ];
+ })
+ sources."cipher-base-1.0.4"
+ (sources."class-utils-0.3.6" // {
+ dependencies = [
+ sources."define-property-0.2.5"
+ ];
+ })
+ sources."cli-cursor-2.1.0"
+ sources."cli-spinners-1.3.1"
+ (sources."cliui-5.0.0" // {
+ dependencies = [
+ sources."ansi-regex-4.1.0"
+ sources."strip-ansi-5.2.0"
+ ];
+ })
+ sources."clone-2.1.2"
+ sources."clones-1.2.0"
+ sources."coa-2.0.2"
+ sources."collection-visit-1.0.0"
+ sources."color-3.1.2"
+ sources."color-convert-1.9.3"
+ sources."color-name-1.1.3"
+ sources."color-string-1.5.3"
+ sources."combined-stream-1.0.8"
+ sources."command-exists-1.2.9"
+ sources."commander-2.20.3"
+ sources."component-emitter-1.3.0"
+ sources."concat-map-0.0.1"
+ sources."concat-stream-1.6.2"
+ sources."config-chain-1.1.12"
+ sources."console-browserify-1.2.0"
+ sources."constants-browserify-1.0.0"
+ sources."convert-source-map-1.7.0"
+ sources."copy-descriptor-0.1.1"
+ sources."core-js-2.6.11"
+ sources."core-util-is-1.0.2"
+ sources."cosmiconfig-5.2.1"
+ sources."create-ecdh-4.0.3"
+ sources."create-hash-1.2.0"
+ sources."create-hmac-1.1.7"
+ sources."cross-spawn-6.0.5"
+ sources."crypto-browserify-3.12.0"
+ sources."css-color-names-0.0.4"
+ sources."css-declaration-sorter-4.0.1"
+ (sources."css-modules-loader-core-1.1.0" // {
+ dependencies = [
+ sources."ansi-regex-2.1.1"
+ sources."ansi-styles-2.2.1"
+ (sources."chalk-1.1.3" // {
+ dependencies = [
+ sources."supports-color-2.0.0"
+ ];
+ })
+ sources."has-flag-1.0.0"
+ sources."postcss-6.0.1"
+ sources."source-map-0.5.7"
+ sources."strip-ansi-3.0.1"
+ sources."supports-color-3.2.3"
+ ];
+ })
+ sources."css-select-2.1.0"
+ sources."css-select-base-adapter-0.1.1"
+ sources."css-selector-tokenizer-0.7.2"
+ sources."css-tree-1.0.0-alpha.37"
+ sources."css-what-3.2.1"
+ sources."cssesc-3.0.0"
+ sources."cssnano-4.1.10"
+ sources."cssnano-preset-default-4.0.7"
+ sources."cssnano-util-get-arguments-4.0.0"
+ sources."cssnano-util-get-match-4.0.0"
+ sources."cssnano-util-raw-cache-4.0.1"
+ sources."cssnano-util-same-parent-4.0.1"
+ (sources."csso-4.0.3" // {
+ dependencies = [
+ sources."css-tree-1.0.0-alpha.39"
+ sources."mdn-data-2.0.6"
+ ];
+ })
+ sources."cssom-0.3.8"
+ sources."cssstyle-1.4.0"
+ sources."dashdash-1.14.1"
+ sources."data-urls-1.1.0"
+ sources."deasync-0.1.19"
+ sources."debug-4.1.1"
+ sources."decamelize-1.2.0"
+ sources."decode-uri-component-0.2.0"
+ sources."deep-is-0.1.3"
+ (sources."defaults-1.0.3" // {
+ dependencies = [
+ sources."clone-1.0.4"
+ ];
+ })
+ sources."define-properties-1.1.3"
+ (sources."define-property-2.0.2" // {
+ dependencies = [
+ sources."is-accessor-descriptor-1.0.0"
+ sources."is-data-descriptor-1.0.0"
+ sources."is-descriptor-1.0.2"
+ ];
+ })
+ sources."delayed-stream-1.0.0"
+ sources."depd-1.1.2"
+ sources."des.js-1.0.1"
+ sources."destroy-1.0.4"
+ sources."diffie-hellman-5.0.3"
+ (sources."dom-serializer-0.2.2" // {
+ dependencies = [
+ sources."domelementtype-2.0.1"
+ ];
+ })
+ sources."domain-browser-1.2.0"
+ sources."domelementtype-1.3.1"
+ sources."domexception-1.0.1"
+ sources."domhandler-2.4.2"
+ sources."domutils-1.7.0"
+ sources."dot-prop-5.2.0"
+ sources."dotenv-5.0.1"
+ sources."dotenv-expand-4.2.0"
+ sources."duplexer2-0.1.4"
+ sources."ecc-jsbn-0.1.2"
+ sources."editorconfig-0.15.3"
+ sources."ee-first-1.1.1"
+ sources."electron-to-chromium-1.3.418"
+ sources."elliptic-6.5.2"
+ sources."elm-hot-1.1.1"
+ sources."emoji-regex-7.0.3"
+ sources."encodeurl-1.0.2"
+ sources."entities-2.0.0"
+ sources."error-ex-1.3.2"
+ sources."es-abstract-1.17.5"
+ sources."es-to-primitive-1.2.1"
+ sources."escape-html-1.0.3"
+ sources."escape-string-regexp-1.0.5"
+ (sources."escodegen-1.9.1" // {
+ dependencies = [
+ sources."esprima-3.1.3"
+ ];
+ })
+ sources."esprima-4.0.1"
+ sources."estraverse-4.3.0"
+ sources."esutils-2.0.3"
+ sources."etag-1.8.1"
+ sources."events-3.1.0"
+ sources."evp_bytestokey-1.0.3"
+ (sources."expand-brackets-2.1.4" // {
+ dependencies = [
+ sources."debug-2.6.9"
+ sources."define-property-0.2.5"
+ sources."extend-shallow-2.0.1"
+ sources."ms-2.0.0"
+ ];
+ })
+ sources."extend-3.0.2"
+ (sources."extend-shallow-3.0.2" // {
+ dependencies = [
+ sources."is-extendable-1.0.1"
+ ];
+ })
+ (sources."extglob-2.0.4" // {
+ dependencies = [
+ sources."define-property-1.0.0"
+ sources."extend-shallow-2.0.1"
+ sources."is-accessor-descriptor-1.0.0"
+ sources."is-data-descriptor-1.0.0"
+ sources."is-descriptor-1.0.2"
+ ];
+ })
+ sources."extsprintf-1.3.0"
+ (sources."falafel-2.2.4" // {
+ dependencies = [
+ sources."isarray-2.0.5"
+ ];
+ })
+ sources."fast-deep-equal-3.1.1"
+ sources."fast-glob-2.2.7"
+ sources."fast-json-stable-stringify-2.1.0"
+ sources."fast-levenshtein-2.0.6"
+ sources."fastparse-1.1.2"
+ sources."file-uri-to-path-1.0.0"
+ sources."filesize-3.6.1"
+ (sources."fill-range-4.0.0" // {
+ dependencies = [
+ sources."extend-shallow-2.0.1"
+ ];
+ })
+ sources."find-elm-dependencies-2.0.2"
+ sources."find-up-2.1.0"
+ sources."firstline-1.2.0"
+ sources."for-in-1.0.2"
+ sources."foreach-2.0.5"
+ sources."forever-agent-0.6.1"
+ sources."form-data-2.3.3"
+ sources."fragment-cache-0.2.1"
+ sources."fresh-0.5.2"
+ sources."fs.realpath-1.0.0"
+ sources."function-bind-1.1.1"
+ sources."get-caller-file-2.0.5"
+ sources."get-port-3.2.0"
+ sources."get-value-2.0.6"
+ sources."getpass-0.1.7"
+ sources."glob-7.1.4"
+ (sources."glob-parent-3.1.0" // {
+ dependencies = [
+ sources."is-glob-3.1.0"
+ ];
+ })
+ sources."glob-to-regexp-0.3.0"
+ sources."globals-11.12.0"
+ sources."graceful-fs-4.2.3"
+ sources."grapheme-breaker-0.3.2"
+ sources."har-schema-2.0.0"
+ sources."har-validator-5.1.3"
+ sources."has-1.0.3"
+ (sources."has-ansi-2.0.0" // {
+ dependencies = [
+ sources."ansi-regex-2.1.1"
+ ];
+ })
+ sources."has-flag-3.0.0"
+ sources."has-symbols-1.0.1"
+ sources."has-value-1.0.0"
+ (sources."has-values-1.0.0" // {
+ dependencies = [
+ sources."kind-of-4.0.0"
+ ];
+ })
+ sources."hash-base-3.0.4"
+ sources."hash.js-1.1.7"
+ sources."hex-color-regex-1.1.0"
+ sources."hmac-drbg-1.0.1"
+ sources."hsl-regex-1.0.0"
+ sources."hsla-regex-1.0.0"
+ sources."html-comment-regex-1.1.2"
+ sources."html-encoding-sniffer-1.0.2"
+ sources."html-tags-1.2.0"
+ (sources."htmlnano-0.2.5" // {
+ dependencies = [
+ sources."posthtml-0.12.3"
+ sources."terser-4.6.12"
+ ];
+ })
+ (sources."htmlparser2-3.10.1" // {
+ dependencies = [
+ sources."entities-1.1.2"
+ sources."readable-stream-3.6.0"
+ ];
+ })
+ sources."http-errors-1.7.3"
+ sources."http-signature-1.2.0"
+ sources."https-browserify-1.0.0"
+ sources."iconv-lite-0.4.24"
+ sources."icss-replace-symbols-1.1.0"
+ sources."ieee754-1.1.13"
+ sources."import-fresh-2.0.0"
+ sources."indexes-of-1.0.1"
+ sources."inflight-1.0.6"
+ sources."inherits-2.0.4"
+ sources."ini-1.3.5"
+ sources."invariant-2.2.4"
+ sources."is-absolute-url-2.1.0"
+ (sources."is-accessor-descriptor-0.1.6" // {
+ dependencies = [
+ sources."kind-of-3.2.2"
+ ];
+ })
+ sources."is-arrayish-0.2.1"
+ sources."is-binary-path-1.0.1"
+ sources."is-buffer-1.1.6"
+ sources."is-callable-1.1.5"
+ sources."is-color-stop-1.1.0"
+ (sources."is-data-descriptor-0.1.4" // {
+ dependencies = [
+ sources."kind-of-3.2.2"
+ ];
+ })
+ sources."is-date-object-1.0.2"
+ (sources."is-descriptor-0.1.6" // {
+ dependencies = [
+ sources."kind-of-5.1.0"
+ ];
+ })
+ sources."is-directory-0.3.1"
+ sources."is-extendable-0.1.1"
+ sources."is-extglob-2.1.1"
+ sources."is-fullwidth-code-point-2.0.0"
+ sources."is-glob-4.0.1"
+ sources."is-html-1.1.0"
+ (sources."is-number-3.0.0" // {
+ dependencies = [
+ sources."kind-of-3.2.2"
+ ];
+ })
+ sources."is-obj-2.0.0"
+ sources."is-plain-object-2.0.4"
+ sources."is-regex-1.0.5"
+ sources."is-resolvable-1.1.0"
+ sources."is-svg-3.0.0"
+ sources."is-symbol-1.0.3"
+ sources."is-typedarray-1.0.0"
+ sources."is-url-1.2.4"
+ sources."is-windows-1.0.2"
+ sources."is-wsl-1.1.0"
+ sources."isarray-1.0.0"
+ sources."isexe-2.0.0"
+ sources."isobject-3.0.1"
+ sources."isstream-0.1.2"
+ (sources."js-beautify-1.11.0" // {
+ dependencies = [
+ sources."mkdirp-1.0.4"
+ ];
+ })
+ sources."js-levenshtein-1.1.6"
+ sources."js-tokens-4.0.0"
+ sources."js-yaml-3.13.1"
+ sources."jsbn-0.1.1"
+ (sources."jsdom-14.1.0" // {
+ dependencies = [
+ sources."acorn-6.4.1"
+ sources."escodegen-1.14.1"
+ sources."ws-6.2.1"
+ ];
+ })
+ sources."jsesc-2.5.2"
+ sources."json-parse-better-errors-1.0.2"
+ sources."json-schema-0.2.3"
+ sources."json-schema-traverse-0.4.1"
+ sources."json-stringify-safe-5.0.1"
+ sources."json5-1.0.1"
+ sources."jsprim-1.4.1"
+ sources."kind-of-6.0.3"
+ sources."levn-0.3.0"
+ sources."locate-path-2.0.0"
+ sources."lodash-4.17.15"
+ sources."lodash.clone-4.5.0"
+ sources."lodash.memoize-4.1.2"
+ sources."lodash.sortby-4.7.0"
+ sources."lodash.uniq-4.5.0"
+ sources."log-symbols-2.2.0"
+ sources."loose-envify-1.4.0"
+ sources."lru-cache-4.1.5"
+ sources."magic-string-0.22.5"
+ sources."map-cache-0.2.2"
+ sources."map-visit-1.0.0"
+ sources."md5.js-1.3.5"
+ sources."mdn-data-2.0.4"
+ (sources."merge-source-map-1.0.4" // {
+ dependencies = [
+ sources."source-map-0.5.7"
+ ];
+ })
+ sources."merge2-1.3.0"
+ sources."micromatch-3.1.10"
+ sources."miller-rabin-4.0.1"
+ sources."mime-1.6.0"
+ sources."mime-db-1.44.0"
+ sources."mime-types-2.1.27"
+ sources."mimic-fn-1.2.0"
+ sources."minimalistic-assert-1.0.1"
+ sources."minimalistic-crypto-utils-1.0.1"
+ sources."minimatch-3.0.4"
+ sources."minimist-1.2.5"
+ (sources."mixin-deep-1.3.2" // {
+ dependencies = [
+ sources."is-extendable-1.0.1"
+ ];
+ })
+ sources."mkdirp-0.5.5"
+ sources."ms-2.1.2"
+ sources."nan-2.14.1"
+ sources."nanomatch-1.2.13"
+ sources."nice-try-1.0.5"
+ sources."node-addon-api-1.7.1"
+ sources."node-elm-compiler-5.0.4"
+ sources."node-forge-0.7.6"
+ (sources."node-libs-browser-2.2.1" // {
+ dependencies = [
+ sources."punycode-1.4.1"
+ ];
+ })
+ sources."node-releases-1.1.53"
+ sources."nopt-4.0.3"
+ sources."normalize-html-whitespace-1.0.0"
+ sources."normalize-path-3.0.0"
+ sources."normalize-url-3.3.0"
+ sources."nth-check-1.0.2"
+ sources."nwsapi-2.2.0"
+ sources."oauth-sign-0.9.0"
+ sources."object-assign-4.1.1"
+ (sources."object-copy-0.1.0" // {
+ dependencies = [
+ sources."define-property-0.2.5"
+ sources."kind-of-3.2.2"
+ ];
+ })
+ sources."object-inspect-1.7.0"
+ sources."object-keys-1.1.1"
+ sources."object-visit-1.0.1"
+ sources."object.assign-4.1.0"
+ sources."object.getownpropertydescriptors-2.1.0"
+ sources."object.pick-1.3.0"
+ sources."object.values-1.1.1"
+ sources."on-finished-2.3.0"
+ sources."once-1.4.0"
+ sources."onetime-2.0.1"
+ sources."opn-5.5.0"
+ sources."optionator-0.8.3"
+ sources."ora-2.1.0"
+ sources."os-browserify-0.3.0"
+ sources."os-homedir-1.0.2"
+ sources."os-tmpdir-1.0.2"
+ sources."osenv-0.1.5"
+ sources."p-limit-1.3.0"
+ sources."p-locate-2.0.0"
+ sources."p-try-1.0.0"
+ sources."pako-0.2.9"
+ (sources."parcel-bundler-1.12.3" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ sources."parse-asn1-5.1.5"
+ sources."parse-json-4.0.0"
+ sources."parse5-5.1.0"
+ sources."parseurl-1.3.3"
+ sources."pascalcase-0.1.1"
+ sources."path-browserify-0.0.1"
+ sources."path-dirname-1.0.2"
+ sources."path-exists-3.0.0"
+ sources."path-is-absolute-1.0.1"
+ sources."path-key-2.0.1"
+ sources."path-parse-1.0.6"
+ sources."pbkdf2-3.0.17"
+ sources."performance-now-2.1.0"
+ sources."physical-cpu-count-2.0.0"
+ sources."pkg-up-2.0.0"
+ sources."pn-1.1.0"
+ sources."posix-character-classes-0.1.1"
+ sources."postcss-7.0.27"
+ sources."postcss-calc-7.0.2"
+ (sources."postcss-colormin-4.0.3" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-convert-values-4.0.1" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ sources."postcss-discard-comments-4.0.2"
+ sources."postcss-discard-duplicates-4.0.2"
+ sources."postcss-discard-empty-4.0.1"
+ sources."postcss-discard-overridden-4.0.1"
+ (sources."postcss-merge-longhand-4.0.11" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-merge-rules-4.0.3" // {
+ dependencies = [
+ sources."postcss-selector-parser-3.1.2"
+ ];
+ })
+ (sources."postcss-minify-font-values-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-minify-gradients-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-minify-params-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-minify-selectors-4.0.2" // {
+ dependencies = [
+ sources."postcss-selector-parser-3.1.2"
+ ];
+ })
+ (sources."postcss-modules-extract-imports-1.1.0" // {
+ dependencies = [
+ sources."postcss-6.0.23"
+ sources."supports-color-5.5.0"
+ ];
+ })
+ (sources."postcss-modules-local-by-default-1.2.0" // {
+ dependencies = [
+ sources."postcss-6.0.23"
+ sources."supports-color-5.5.0"
+ ];
+ })
+ (sources."postcss-modules-scope-1.1.0" // {
+ dependencies = [
+ sources."postcss-6.0.23"
+ sources."supports-color-5.5.0"
+ ];
+ })
+ (sources."postcss-modules-values-1.3.0" // {
+ dependencies = [
+ sources."postcss-6.0.23"
+ sources."supports-color-5.5.0"
+ ];
+ })
+ sources."postcss-normalize-charset-4.0.1"
+ (sources."postcss-normalize-display-values-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-normalize-positions-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-normalize-repeat-style-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-normalize-string-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-normalize-timing-functions-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-normalize-unicode-4.0.1" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-normalize-url-4.0.1" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-normalize-whitespace-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ (sources."postcss-ordered-values-4.1.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ sources."postcss-reduce-initial-4.0.3"
+ (sources."postcss-reduce-transforms-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ sources."postcss-selector-parser-6.0.2"
+ (sources."postcss-svgo-4.0.2" // {
+ dependencies = [
+ sources."postcss-value-parser-3.3.1"
+ ];
+ })
+ sources."postcss-unique-selectors-4.0.1"
+ sources."postcss-value-parser-4.0.3"
+ sources."posthtml-0.11.6"
+ sources."posthtml-parser-0.4.2"
+ sources."posthtml-render-1.2.2"
+ sources."prelude-ls-1.1.2"
+ sources."private-0.1.8"
+ sources."process-0.11.10"
+ sources."process-nextick-args-2.0.1"
+ sources."proto-list-1.2.4"
+ sources."pseudomap-1.0.2"
+ sources."psl-1.8.0"
+ sources."public-encrypt-4.0.3"
+ sources."punycode-2.1.1"
+ sources."purgecss-1.4.2"
+ sources."q-1.5.1"
+ sources."qs-6.5.2"
+ sources."querystring-0.2.0"
+ sources."querystring-es3-0.2.1"
+ sources."quote-stream-1.0.2"
+ sources."randombytes-2.1.0"
+ sources."randomfill-1.0.4"
+ sources."range-parser-1.2.1"
+ sources."readable-stream-2.3.7"
+ sources."readdirp-2.2.1"
+ sources."regenerate-1.4.0"
+ sources."regenerate-unicode-properties-8.2.0"
+ sources."regenerator-runtime-0.13.5"
+ (sources."regenerator-transform-0.14.4" // {
+ dependencies = [
+ sources."@babel/runtime-7.9.2"
+ ];
+ })
+ sources."regex-not-1.0.2"
+ sources."regexpu-core-4.7.0"
+ sources."regjsgen-0.5.1"
+ (sources."regjsparser-0.6.4" // {
+ dependencies = [
+ sources."jsesc-0.5.0"
+ ];
+ })
+ sources."remove-trailing-separator-1.1.0"
+ sources."repeat-element-1.1.3"
+ sources."repeat-string-1.6.1"
+ sources."request-2.88.2"
+ sources."request-promise-core-1.1.3"
+ sources."request-promise-native-1.0.8"
+ sources."require-directory-2.1.1"
+ sources."require-main-filename-2.0.0"
+ sources."resolve-1.17.0"
+ sources."resolve-from-3.0.0"
+ sources."resolve-url-0.2.1"
+ sources."restore-cursor-2.0.0"
+ sources."ret-0.1.15"
+ sources."rgb-regex-1.0.1"
+ sources."rgba-regex-1.0.0"
+ sources."rimraf-2.6.3"
+ sources."ripemd160-2.0.2"
+ sources."safe-buffer-5.1.2"
+ sources."safe-regex-1.1.0"
+ sources."safer-buffer-2.1.2"
+ sources."safer-eval-1.3.6"
+ sources."sax-1.2.4"
+ sources."saxes-3.1.11"
+ sources."semver-5.7.1"
+ (sources."send-0.17.1" // {
+ dependencies = [
+ (sources."debug-2.6.9" // {
+ dependencies = [
+ sources."ms-2.0.0"
+ ];
+ })
+ sources."ms-2.1.1"
+ ];
+ })
+ sources."serialize-to-js-1.2.2"
+ sources."serve-static-1.14.1"
+ sources."set-blocking-2.0.0"
+ (sources."set-value-2.0.1" // {
+ dependencies = [
+ sources."extend-shallow-2.0.1"
+ ];
+ })
+ sources."setimmediate-1.0.5"
+ sources."setprototypeof-1.1.1"
+ sources."sha.js-2.4.11"
+ sources."shallow-copy-0.0.1"
+ sources."shebang-command-1.2.0"
+ sources."shebang-regex-1.0.0"
+ sources."sigmund-1.0.1"
+ sources."signal-exit-3.0.3"
+ (sources."simple-swizzle-0.2.2" // {
+ dependencies = [
+ sources."is-arrayish-0.3.2"
+ ];
+ })
+ (sources."snapdragon-0.8.2" // {
+ dependencies = [
+ sources."debug-2.6.9"
+ sources."define-property-0.2.5"
+ sources."extend-shallow-2.0.1"
+ sources."ms-2.0.0"
+ sources."source-map-0.5.7"
+ ];
+ })
+ (sources."snapdragon-node-2.1.1" // {
+ dependencies = [
+ sources."define-property-1.0.0"
+ sources."is-accessor-descriptor-1.0.0"
+ sources."is-data-descriptor-1.0.0"
+ sources."is-descriptor-1.0.2"
+ ];
+ })
+ (sources."snapdragon-util-3.0.1" // {
+ dependencies = [
+ sources."kind-of-3.2.2"
+ ];
+ })
+ sources."source-map-0.6.1"
+ sources."source-map-resolve-0.5.3"
+ sources."source-map-support-0.5.19"
+ sources."source-map-url-0.4.0"
+ sources."split-string-3.1.0"
+ sources."sprintf-js-1.0.3"
+ sources."sshpk-1.16.1"
+ sources."stable-0.1.8"
+ (sources."static-eval-2.0.5" // {
+ dependencies = [
+ sources."escodegen-1.14.1"
+ ];
+ })
+ (sources."static-extend-0.1.2" // {
+ dependencies = [
+ sources."define-property-0.2.5"
+ ];
+ })
+ (sources."static-module-2.2.5" // {
+ dependencies = [
+ sources."object-inspect-1.4.1"
+ ];
+ })
+ sources."statuses-1.5.0"
+ sources."stealthy-require-1.1.1"
+ sources."stream-browserify-2.0.2"
+ sources."stream-http-2.8.3"
+ (sources."string-width-3.1.0" // {
+ dependencies = [
+ sources."ansi-regex-4.1.0"
+ sources."strip-ansi-5.2.0"
+ ];
+ })
+ sources."string.prototype.trimend-1.0.1"
+ sources."string.prototype.trimleft-2.1.2"
+ sources."string.prototype.trimright-2.1.2"
+ sources."string.prototype.trimstart-1.0.1"
+ sources."string_decoder-1.1.1"
+ sources."strip-ansi-4.0.0"
+ (sources."stylehacks-4.0.3" // {
+ dependencies = [
+ sources."postcss-selector-parser-3.1.2"
+ ];
+ })
+ sources."supports-color-6.1.0"
+ sources."svgo-1.3.2"
+ sources."symbol-tree-3.2.4"
+ sources."temp-0.9.0"
+ sources."terser-3.17.0"
+ sources."through2-2.0.5"
+ sources."timers-browserify-2.0.11"
+ sources."timsort-0.3.0"
+ sources."tiny-inflate-1.0.3"
+ sources."to-arraybuffer-1.0.1"
+ sources."to-fast-properties-2.0.0"
+ (sources."to-object-path-0.3.0" // {
+ dependencies = [
+ sources."kind-of-3.2.2"
+ ];
+ })
+ sources."to-regex-3.0.2"
+ sources."to-regex-range-2.1.1"
+ sources."toidentifier-1.0.0"
+ sources."tough-cookie-2.5.0"
+ sources."tr46-1.0.1"
+ sources."trim-right-1.0.1"
+ sources."tty-browserify-0.0.0"
+ sources."tunnel-agent-0.6.0"
+ sources."tweetnacl-0.14.5"
+ sources."type-check-0.3.2"
+ sources."typedarray-0.0.6"
+ (sources."uncss-0.17.3" // {
+ dependencies = [
+ sources."is-absolute-url-3.0.3"
+ ];
+ })
+ sources."unicode-canonical-property-names-ecmascript-1.0.4"
+ sources."unicode-match-property-ecmascript-1.0.4"
+ sources."unicode-match-property-value-ecmascript-1.2.0"
+ sources."unicode-property-aliases-ecmascript-1.1.0"
+ sources."unicode-trie-0.3.1"
+ sources."union-value-1.0.1"
+ sources."uniq-1.0.1"
+ sources."uniqs-2.0.0"
+ sources."unquote-1.1.1"
+ (sources."unset-value-1.0.0" // {
+ dependencies = [
+ (sources."has-value-0.3.1" // {
+ dependencies = [
+ sources."isobject-2.1.0"
+ ];
+ })
+ sources."has-values-0.1.4"
+ ];
+ })
+ sources."upath-1.2.0"
+ sources."uri-js-4.2.2"
+ sources."urix-0.1.0"
+ (sources."url-0.11.0" // {
+ dependencies = [
+ sources."punycode-1.3.2"
+ ];
+ })
+ sources."use-3.1.1"
+ (sources."util-0.11.1" // {
+ dependencies = [
+ sources."inherits-2.0.3"
+ ];
+ })
+ sources."util-deprecate-1.0.2"
+ sources."util.promisify-1.0.1"
+ sources."uuid-3.4.0"
+ sources."v8-compile-cache-2.1.0"
+ sources."vendors-1.0.4"
+ sources."verror-1.10.0"
+ sources."vlq-0.2.3"
+ sources."vm-browserify-1.1.2"
+ sources."w3c-hr-time-1.0.2"
+ sources."w3c-xmlserializer-1.1.2"
+ sources."wcwidth-1.0.1"
+ sources."webidl-conversions-4.0.2"
+ sources."whatwg-encoding-1.0.5"
+ sources."whatwg-mimetype-2.3.0"
+ sources."whatwg-url-7.1.0"
+ sources."which-1.3.1"
+ sources."which-module-2.0.0"
+ sources."word-wrap-1.2.3"
+ (sources."wrap-ansi-5.1.0" // {
+ dependencies = [
+ sources."ansi-regex-4.1.0"
+ sources."strip-ansi-5.2.0"
+ ];
+ })
+ sources."wrappy-1.0.2"
+ sources."ws-5.2.2"
+ sources."xml-name-validator-3.0.0"
+ sources."xmlchars-2.2.0"
+ sources."xtend-4.0.2"
+ sources."y18n-4.0.0"
+ sources."yallist-2.1.2"
+ (sources."yargs-14.2.3" // {
+ dependencies = [
+ sources."find-up-3.0.0"
+ sources."locate-path-3.0.0"
+ sources."p-limit-2.3.0"
+ sources."p-locate-3.0.0"
+ sources."p-try-2.2.0"
+ ];
+ })
+ sources."yargs-parser-15.0.1"
+ ];
+ buildInputs = globalBuildInputs;
+ meta = {
+ license = "MIT";
+ };
+ production = false;
+ bypassCache = true;
+ reconstructLock = false;
+ };
+in
+{
+ args = args;
+ sources = sources;
+ tarball = nodeEnv.buildNodeSourceDist args;
+ package = nodeEnv.buildNodePackage args;
+ shell = nodeEnv.buildNodeShell args;
+}
diff --git a/systems/eldiron/websites/games/codenames/registry.dat b/systems/eldiron/websites/games/codenames/registry.dat
new file mode 100644
index 0000000..a8585a8
Binary files /dev/null and b/systems/eldiron/websites/games/codenames/registry.dat differ
diff --git a/systems/eldiron/websites/games/codenames/shell.nix b/systems/eldiron/websites/games/codenames/shell.nix
new file mode 100644
index 0000000..053696b
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/shell.nix
@@ -0,0 +1,50 @@
+{ pkgs ? import {} }: with pkgs;
+let
+ greenapid = callPackage ./greenapid.nix {};
+ frontend = callPackage ./frontend.nix {};
+ nginx_conf = writeText "nginx.conf" ''
+ pid ./nginx.pid;
+ error_log stderr;
+ daemon off;
+ events {
+ }
+ http {
+ include ${mailcap}/etc/nginx/mime.types;
+ server {
+ listen 0.0.0.0:8081;
+ listen [::]:8081;
+ location /api/ {
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header Host $host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_pass http://127.0.0.1:8080/;
+ }
+ location / {
+ root ${frontend};
+ try_files $uri $uri/ /index.html;
+ }
+ }
+ }
+ '';
+in
+pkgs.mkShell {
+ buildInputs = [
+ greenapid
+ frontend
+ python2
+ nginx
+ ];
+ shellHook = ''
+ greenapid &
+ pid=$!
+
+ finish() {
+ kill $pid;
+ }
+
+ trap finish EXIT
+
+ nginx -c ${nginx_conf} -p ./nginx/
+ exit
+ '';
+}
diff --git a/systems/eldiron/websites/games/codenames/wordlists/french.txt b/systems/eldiron/websites/games/codenames/wordlists/french.txt
new file mode 100644
index 0000000..462ddc4
--- /dev/null
+++ b/systems/eldiron/websites/games/codenames/wordlists/french.txt
@@ -0,0 +1,694 @@
+ACCIDENT
+ACHAT
+ACNÉ
+ACTION
+ADOLESCENT
+AFRIQUE
+AIGUILLE
+ALLUMER
+ALPES
+ALPHABET
+ALTITUDE
+AMÉRIQUE
+AMI
+AMOUR
+AMPOULE
+ANNIVERSAIRE
+APPÉTIT
+ARAIGNÉE
+ARBRE
+ARC
+ARC-EN-CIEL
+ARGENT
+ARME
+ARMÉE
+ASCENSEUR
+ASIE
+ASSIS
+ASTRONAUTE
+ATCHOUM
+ATHLÈTE
+ATLANTIDE
+AUBE
+AUSTRALIE
+AVEC
+AVENTURE
+AVION
+AVOCAT
+BAC
+BAGUETTE
+BAIN
+BAISER
+BALAI
+BALLE
+BALLON
+BAMBOU
+BANANE
+BANNIR
+BARBE
+BARRIÈRE
+BAS
+BASKET
+BATEAU
+BÂTON
+BATTERIE
+BÉBÉ
+BEETHOVEN
+BÊTE
+BIBERON
+BIÈRE
+BLANC
+BLÉ
+BLEU
+BOB
+BOISSON
+BOÎTE
+BOMBE
+BONBON
+BONNET
+BORD
+BORDEAUX
+BOTTE
+BOUE
+BOUGIE
+BOULE
+BOUTEILLE
+BOUTON
+BRANCHE
+BRAS
+BRAVO
+BRETAGNE
+BRISE
+BROSSE
+BRUIT
+BRUME
+BRUN
+BÛCHE
+BULLE
+BUREAU
+BUT
+CABANE
+CABINE
+CACHER
+CADEAU
+CAFARD
+CAFÉ
+CAISSE
+CALCULER
+CALME
+CAMÉRA
+CAMION
+CAMPING
+CANADA
+CANARD
+CANETTE
+CANINE
+CAP
+CAPITALISME
+CAR
+CAROTTE
+CARRÉ
+CARTE
+CARTON
+CASQUE
+CASSER
+CASSETTE
+CAUCHEMAR
+CAUSE
+CEINTURE
+CELLULE
+CERCLE
+CHAÎNE
+CHAIR
+CHAISE
+CHAMP
+CHAMPION
+CHANT
+CHAPEAU
+CHARBON
+CHARGE
+CHASSE
+CHAT
+CHÂTEAU
+CHAUD
+CHAUSSURE
+CHAUVE
+CHEF
+CHEMISE
+CHÊNE
+CHER
+CHEVAL
+CHEVALIER
+CHEVEU
+CHIEN
+CHIFFRE
+CHINE
+CHOCOLAT
+CHÔMAGE
+CIEL
+CIL
+CINÉMA
+CIRE
+CIRQUE
+CITRON
+CLÉ
+CLOU
+CLOWN
+COACH
+COCCINELLE
+CODE
+CŒUR
+COL
+COLLE
+COLLINE
+COLONNE
+CÔNE
+CONFORT
+CONTINU
+CONTRE
+CONVERSATION
+COPAIN
+COQ
+COQUILLAGE
+CORBEAU
+CORDE
+CORPS
+CÔTE
+COUDE
+COULOIR
+COUP
+COUR
+COURANT
+COURRIER
+COURS
+COURSE
+COURT
+COUTEAU
+COUVERT
+COUVERTURE
+COWBOY
+CRAC
+CRAYON
+CRÈME
+CRITIQUE
+CROCHET
+CROIX
+CROÛTE
+CUILLÈRE
+CUIR
+CUISINE
+CULOTTE
+CYCLE
+DARD
+DÉ
+DEBOUT
+DÉFAUT
+DEHORS
+DÉMOCRATIE
+DENT
+DENTISTE
+DESSIN
+DEVOIR
+DIAMANT
+DICTIONNAIRE
+DIEU
+DINOSAURE
+DISCOURS
+DISQUE
+DIX
+DOCTEUR
+DOIGT
+DOMINO
+DORMIR
+DROIT
+EAU
+ÉCHEC
+ÉCHELLE
+ÉCLAIR
+ÉCOLE
+ÉCRAN
+ÉCRASER
+ÉCRIT
+ÉGLISE
+ÉGOUT
+ÉLECTRICITÉ
+ÉLÉPHANT
+ÉLÈVE
+ELFE
+EMPREINTE
+ENCEINTE
+ÉPICE
+ÉPINE
+ERREUR
+ESPACE
+ESPION
+ESSENCE
+ÉTAT
+ÉTÉ
+ÉTOILE
+ÉTRANGER
+ÉVENTAIL
+ÉVOLUTION
+EXPLOSION
+EXTENSION
+FACE
+FAN
+FARCE
+FATIGUE
+FAUTEUIL
+FEMME
+FENÊTRE
+FER
+FÊTE
+FEU
+FEUILLE
+FIDÈLE
+FIL
+FILLE
+FLAMME
+FLÈCHE
+FLEUR
+FLEUVE
+FOND
+FOOTBALL
+FORÊT
+FORGER
+FOUDRE
+FOUET
+FOUR
+FOURMI
+FROID
+FROMAGE
+FRONT
+FRUIT
+FUIR
+FUTUR
+GARÇON
+GÂTEAU
+GAUCHE
+GAZ
+GAZON
+GEL
+GENOU
+GLACE
+GOMME
+GORGE
+GOUTTE
+GRAND
+GRÈCE
+GRENOUILLE
+GRIPPE
+GRIS
+GROS
+GROUPE
+GUITARE
+HASARD
+HAUT
+HÉLICOPTÈRE
+HERBE
+HEUREUX
+HISTOIRE
+HIVER
+HÔTEL
+HUGO
+HUILE
+HUMIDE
+HUMOUR
+INDICE
+INTERNET
+INVITER
+ITALIE
+JACQUES
+JAMBE
+JAMBON
+JARDIN
+JAUNE
+JEAN
+JEANNE
+JET
+JEU
+JOGGING
+JOUR
+JOURNAL
+JUPITER
+KILO
+KIWI
+LAINE
+LAIT
+LANGUE
+LAPIN
+LATIN
+LAVER
+LECTEUR
+LÉGER
+LENT
+LETTRE
+LIEN
+LIGNE
+LINGE
+LION
+LIT
+LIVRE
+LOI
+LONG
+LOUIS
+LOUP
+LUMIÈRE
+LUNDI
+LUNE
+LUNETTE
+MACHINE
+MACHO
+MAIN
+MAISON
+MAÎTRESSE
+MAL
+MALADIE
+MAMAN
+MAMMOUTH
+MANGER
+MARAIS
+MARC
+MARCHE
+MARIAGE
+MARIE
+MARIÉE
+MARQUE
+MARSEILLE
+MASSE
+MER
+MESSE
+MÈTRE
+MÉTRO
+MIAOU
+MICRO
+MIEUX
+MILLE
+MINE
+MIROIR
+MODERNE
+MOITIÉ
+MONDE
+MONSTRE
+MONTAGNE
+MONTRE
+MORT
+MOTEUR
+MOTO
+MOU
+MOUCHE
+MOULIN
+MOUSTACHE
+MOUTON
+MUR
+MUSCLE
+MUSIQUE
+MYSTÈRE
+NAGE
+NATURE
+NEIGE
+NEUTRE
+NEW YORK
+NEZ
+NID
+NINJA
+NIVEAU
+NOËL
+NŒUD
+NOIR
+NOUS
+NUAGE
+NUIT
+NUMÉRO
+ŒIL
+ŒUF
+OISEAU
+OLYMPIQUE
+OMBRE
+ONGLE
+OR
+ORAL
+ORANGE
+ORDINATEUR
+ORDRE
+ORDURE
+OREILLE
+ORGANE
+ORGUEIL
+OURS
+OUTIL
+OUVERT
+OVALE
+PAIN
+PALAIS
+PANNEAU
+PANTALON
+PANTIN
+PAPA
+PAPIER
+PAPILLON
+PARADIS
+PARC
+PARIS
+PAROLE
+PARTIE
+PASSE
+PÂTE
+PATIN
+PATTE
+PAUL
+PAYER
+PÊCHE
+PEINTURE
+PENDULE
+PENSER
+PERSONNE
+PETIT
+PEUR
+PHILOSOPHE
+PHOTO
+PHRASE
+PIANO
+PIÈCE
+PIED
+PIERRE
+PILE
+PILOTE
+PINCE
+PIOCHE
+PION
+PIRATE
+PIRE
+PISCINE
+PLACE
+PLAFOND
+PLAGE
+PLAIE
+PLAN
+PLANCHE
+PLANÈTE
+PLANTE
+PLASTIQUE
+PLAT
+PLOMB
+PLONGER
+PLUIE
+POCHE
+POÈTE
+POIDS
+POING
+POINT
+POIVRE
+POLICE
+POLITIQUE
+POLLEN
+POLO
+POMME
+POMPE
+PONT
+POPULATION
+PORT
+PORTE
+PORTEFEUILLE
+POSITIF
+POSTE
+POUBELLE
+POULE
+POUPÉE
+POUSSER
+POUSSIÈRE
+POUVOIR
+PRÉHISTOIRE
+PREMIER
+PRÉSENT
+PRESSE
+PRIER
+PRINCESSE
+PRISE
+PRIVÉ
+PROFESSEUR
+PSYCHOLOGIE
+PUBLIC
+PULL
+PUNK
+PUZZLE
+PYJAMA
+QUATRE
+QUINZE
+RACE
+RADIO
+RAISIN
+RAP
+RAYÉ
+RAYON
+RÉFLÉCHIR
+REINE
+REPAS
+REPTILE
+REQUIN
+RÊVE
+RICHE
+RIDEAU
+RIEN
+RIRE
+ROBINET
+ROCHE
+ROI
+ROND
+ROSE
+ROUE
+ROUGE
+ROUILLE
+ROUX
+RUSSIE
+SABLE
+SABRE
+SAC
+SAIN
+SAISON
+SALE
+SALLE
+SALUT
+SAMU
+SANDWICH
+SANG
+SAPIN
+SATELLITE
+SAUMON
+SAUT
+SAVOIR
+SCHTROUMPF
+SCIENCE
+SCOUT
+SEC
+SEINE
+SEL
+SEPT
+SERPENT
+SERRER
+SEXE
+SHAMPOOING
+SIÈCLE
+SIÈGE
+SIESTE
+SILHOUETTE
+SIRÈNE
+SKI
+SOLEIL
+SOMMEIL
+SON
+SONNER
+SORCIÈRE
+SOURD
+SOURIS
+SPORT
+STAR
+STATION
+STYLO
+SUR
+SURFACE
+SUSHI
+SWING
+TABLEAU
+TACHE
+TAILLE
+TANTE
+TAPIS
+TARD
+TAXI
+TÉLÉPHONE
+TÉLÉVISION
+TEMPLE
+TEMPS
+TENNIS
+TÊTE
+THÉ
+TIGRE
+TINTIN
+TISSU
+TITRE
+TOAST
+TOILETTE
+TOKYO
+TOMBE
+TON
+TOP
+TOUCHE
+TOUJOURS
+TOUR
+TOURNOI
+TOUT
+TRACE
+TRAIN
+TRAÎNER
+TRANSPORT
+TRAVAIL
+TRÉSOR
+TRIANGLE
+TRISTE
+TRÔNE
+TROUPEAU
+TSAR
+TUBE
+TUER
+TUPPERWARE
+TUYAU
+TWITTER
+TYPE
+UNIVERSITÉ
+VACHE
+VAGUE
+VAISSELLE
+VALEUR
+VER
+VERDICT
+VERRE
+VERS
+VERT
+VESTE
+VIANDE
+VIDE
+VIE
+VIEUX
+VILLE
+VIN
+VINGT
+VIOLON
+VIPÈRE
+VISION
+VITE
+VIVE
+VŒU
+VOILE
+VOISIN
+VOITURE
+VOL
+VOLUME
+VOTE
+VOULOIR
+VOYAGE
+ZEN
+ZÉRO
+ZODIAQUE
+ZONE
+ZOO
diff --git a/systems/eldiron/websites/games/terraforming-mars/default.nix b/systems/eldiron/websites/games/terraforming-mars/default.nix
new file mode 100644
index 0000000..e90e72f
--- /dev/null
+++ b/systems/eldiron/websites/games/terraforming-mars/default.nix
@@ -0,0 +1,75 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.myServices.websites.games.terraforming-mars;
+ terraforming-mars = pkgs.callPackage ./terraforming-mars.nix {};
+in
+{
+ options.myServices.websites.games.terraforming-mars.enable = lib.mkEnableOption "Enable Terraforming mars game";
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.games.subdomains.terraforming-mars = with config.myServices.dns.helpers;
+ ips servers.eldiron.ips.main;
+ myServices.chatonsProperties.services.terraforming-mars = {
+ file.datetime = "2022-08-27T14:20:00";
+ service = {
+ name = "Terraforming Mars";
+ description = "Terraforming Mars Boardgame";
+ website = "https://terraforming-mars.games.immae.eu/";
+ logo = "https://terraforming-mars.games.immae.eu/favicon.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["NONE"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Terraforming Mars";
+ website = "https://github.com/terraforming-mars/terraforming-mars";
+ license.url = "https://github.com/terraforming-mars/terraforming-mars/blob/main/LICENSE";
+ license.name = "GNU General Public License v3.0";
+ version = "unversionned";
+ source.url = "https://github.com/terraforming-mars/terraforming-mars";
+ };
+ };
+ systemd.services.terraforming-mars = {
+ path = [ pkgs.nodejs_16 pkgs.bashInteractive ];
+ description = "Terraforming mars game";
+ wantedBy = [ "multi-user.target" ];
+ script = ''
+ export PORT=/run/terraforming-mars/socket.sock
+ export NODE_ENV=production
+ mkdir -p /var/lib/terraforming-mars/db
+ npm run start
+ '';
+ postStart = ''
+ sleep 5;
+ chown :wwwrun /run/terraforming-mars/socket.sock
+ chmod g+w /run/terraforming-mars/socket.sock
+ '';
+ environment.NPM_CONFIG_LOGS_DIR = "%S/terraforming-mars/npm_logs";
+ environment.NPM_CONFIG_CACHE = "%S/terraforming-mars/npm_cache";
+ serviceConfig = {
+ User = "terraformingmars";
+ DynamicUser = true;
+ SupplementaryGroups = [ "wwwrun" ];
+ Type = "simple";
+ WorkingDirectory = terraforming-mars;
+ RuntimeDirectory = "terraforming-mars";
+ StateDirectory = "terraforming-mars";
+ };
+ };
+
+ security.acme.certs.games.extraDomainNames = [ "terraforming-mars.games.immae.eu" ];
+ security.acme.certs.games.domain = "games.immae.eu";
+ services.websites.env.tools.vhostConfs.games_terraforming-mars = {
+ certName = "games";
+ hosts = [ "terraforming-mars.games.immae.eu" ];
+ root = null;
+ extraConfig = [
+ ''
+ ProxyPass / unix:///run/terraforming-mars/socket.sock|http://terraforming-mars.games.immae.eu/
+ ProxyPassReverse / unix:///run/terraforming-mars/socket.sock|http://terraforming-mars.games.immae.eu/
+ ''
+ ];
+ };
+ };
+}
diff --git a/systems/eldiron/websites/games/terraforming-mars/immae-assets.patch b/systems/eldiron/websites/games/terraforming-mars/immae-assets.patch
new file mode 100644
index 0000000..684a7df
--- /dev/null
+++ b/systems/eldiron/websites/games/terraforming-mars/immae-assets.patch
@@ -0,0 +1,13 @@
+diff --git a/assets/index.html b/assets/index.html
+index 220192834..d77a0fc80 100644
+--- a/assets/index.html
++++ b/assets/index.html
+@@ -2,7 +2,7 @@
+
+
+
+
diff --git a/systems/eldiron/websites/games/terraforming-mars/node-packages.nix b/systems/eldiron/websites/games/terraforming-mars/node-packages.nix
new file mode 100644
index 0000000..e5fac49
--- /dev/null
+++ b/systems/eldiron/websites/games/terraforming-mars/node-packages.nix
@@ -0,0 +1,4353 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? [], src}:
+
+let
+ sources = {
+ "@babel/code-frame-7.12.13" = {
+ name = "_at_babel_slash_code-frame";
+ packageName = "@babel/code-frame";
+ version = "7.12.13";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz";
+ sha512 = "HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==";
+ };
+ };
+ "@babel/helper-validator-identifier-7.12.11" = {
+ name = "_at_babel_slash_helper-validator-identifier";
+ packageName = "@babel/helper-validator-identifier";
+ version = "7.12.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz";
+ sha512 = "np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==";
+ };
+ };
+ "@babel/highlight-7.13.10" = {
+ name = "_at_babel_slash_highlight";
+ packageName = "@babel/highlight";
+ version = "7.13.10";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz";
+ sha512 = "5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==";
+ };
+ };
+ "@discoveryjs/json-ext-0.5.2" = {
+ name = "_at_discoveryjs_slash_json-ext";
+ packageName = "@discoveryjs/json-ext";
+ version = "0.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz";
+ sha512 = "HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==";
+ };
+ };
+ "@nodelib/fs.scandir-2.1.4" = {
+ name = "_at_nodelib_slash_fs.scandir";
+ packageName = "@nodelib/fs.scandir";
+ version = "2.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz";
+ sha512 = "33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==";
+ };
+ };
+ "@nodelib/fs.stat-2.0.4" = {
+ name = "_at_nodelib_slash_fs.stat";
+ packageName = "@nodelib/fs.stat";
+ version = "2.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz";
+ sha512 = "IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==";
+ };
+ };
+ "@nodelib/fs.walk-1.2.6" = {
+ name = "_at_nodelib_slash_fs.walk";
+ packageName = "@nodelib/fs.walk";
+ version = "1.2.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz";
+ sha512 = "8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==";
+ };
+ };
+ "@types/eslint-7.2.10" = {
+ name = "_at_types_slash_eslint";
+ packageName = "@types/eslint";
+ version = "7.2.10";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.10.tgz";
+ sha512 = "kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ==";
+ };
+ };
+ "@types/eslint-scope-3.7.0" = {
+ name = "_at_types_slash_eslint-scope";
+ packageName = "@types/eslint-scope";
+ version = "3.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz";
+ sha512 = "O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==";
+ };
+ };
+ "@types/estree-0.0.46" = {
+ name = "_at_types_slash_estree";
+ packageName = "@types/estree";
+ version = "0.0.46";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz";
+ sha512 = "laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==";
+ };
+ };
+ "@types/json-schema-7.0.7" = {
+ name = "_at_types_slash_json-schema";
+ packageName = "@types/json-schema";
+ version = "7.0.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz";
+ sha512 = "cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==";
+ };
+ };
+ "@types/node-10.17.58" = {
+ name = "_at_types_slash_node";
+ packageName = "@types/node";
+ version = "10.17.58";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@types/node/-/node-10.17.58.tgz";
+ sha512 = "Dn5RBxLohjdHFj17dVVw3rtrZAeXeWg+LQfvxDIW/fdPkSiuQk7h3frKMYtsQhtIW42wkErDcy9UMVxhGW4O7w==";
+ };
+ };
+ "@types/pg-7.14.11" = {
+ name = "_at_types_slash_pg";
+ packageName = "@types/pg";
+ version = "7.14.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@types/pg/-/pg-7.14.11.tgz";
+ sha512 = "EnZkZ1OMw9DvNfQkn2MTJrwKmhJYDEs5ujWrPfvseWNoI95N8B4HzU/Ltrq5ZfYxDX/Zg8mTzwr6UAyTjjFvXA==";
+ };
+ };
+ "@types/sqlite3-3.1.7" = {
+ name = "_at_types_slash_sqlite3";
+ packageName = "@types/sqlite3";
+ version = "3.1.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@types/sqlite3/-/sqlite3-3.1.7.tgz";
+ sha512 = "8FHV/8Uzd7IwdHm5mvmF2Aif4aC/gjrt4axWD9SmfaxITnOjtOhCbOSTuqv/VbH1uq0QrwlaTj9aTz3gmR6u4w==";
+ };
+ };
+ "@typescript-eslint/eslint-plugin-4.22.0" = {
+ name = "_at_typescript-eslint_slash_eslint-plugin";
+ packageName = "@typescript-eslint/eslint-plugin";
+ version = "4.22.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.0.tgz";
+ sha512 = "U8SP9VOs275iDXaL08Ln1Fa/wLXfj5aTr/1c0t0j6CdbOnxh+TruXu1p4I0NAvdPBQgoPjHsgKn28mOi0FzfoA==";
+ };
+ };
+ "@typescript-eslint/experimental-utils-4.22.0" = {
+ name = "_at_typescript-eslint_slash_experimental-utils";
+ packageName = "@typescript-eslint/experimental-utils";
+ version = "4.22.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.0.tgz";
+ sha512 = "xJXHHl6TuAxB5AWiVrGhvbGL8/hbiCQ8FiWwObO3r0fnvBdrbWEDy1hlvGQOAWc6qsCWuWMKdVWlLAEMpxnddg==";
+ };
+ };
+ "@typescript-eslint/parser-4.22.0" = {
+ name = "_at_typescript-eslint_slash_parser";
+ packageName = "@typescript-eslint/parser";
+ version = "4.22.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.22.0.tgz";
+ sha512 = "z/bGdBJJZJN76nvAY9DkJANYgK3nlRstRRi74WHm3jjgf2I8AglrSY+6l7ogxOmn55YJ6oKZCLLy+6PW70z15Q==";
+ };
+ };
+ "@typescript-eslint/scope-manager-4.22.0" = {
+ name = "_at_typescript-eslint_slash_scope-manager";
+ packageName = "@typescript-eslint/scope-manager";
+ version = "4.22.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.22.0.tgz";
+ sha512 = "OcCO7LTdk6ukawUM40wo61WdeoA7NM/zaoq1/2cs13M7GyiF+T4rxuA4xM+6LeHWjWbss7hkGXjFDRcKD4O04Q==";
+ };
+ };
+ "@typescript-eslint/types-4.22.0" = {
+ name = "_at_typescript-eslint_slash_types";
+ packageName = "@typescript-eslint/types";
+ version = "4.22.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.22.0.tgz";
+ sha512 = "sW/BiXmmyMqDPO2kpOhSy2Py5w6KvRRsKZnV0c4+0nr4GIcedJwXAq+RHNK4lLVEZAJYFltnnk1tJSlbeS9lYA==";
+ };
+ };
+ "@typescript-eslint/typescript-estree-4.22.0" = {
+ name = "_at_typescript-eslint_slash_typescript-estree";
+ packageName = "@typescript-eslint/typescript-estree";
+ version = "4.22.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.0.tgz";
+ sha512 = "TkIFeu5JEeSs5ze/4NID+PIcVjgoU3cUQUIZnH3Sb1cEn1lBo7StSV5bwPuJQuoxKXlzAObjYTilOEKRuhR5yg==";
+ };
+ };
+ "@typescript-eslint/visitor-keys-4.22.0" = {
+ name = "_at_typescript-eslint_slash_visitor-keys";
+ packageName = "@typescript-eslint/visitor-keys";
+ version = "4.22.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.0.tgz";
+ sha512 = "nnMu4F+s4o0sll6cBSsTeVsT4cwxB7zECK3dFxzEjPBii9xLpq4yqqsy/FU5zMfan6G60DKZSCXAa3sHJZrcYw==";
+ };
+ };
+ "@webassemblyjs/ast-1.11.0" = {
+ name = "_at_webassemblyjs_slash_ast";
+ packageName = "@webassemblyjs/ast";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz";
+ sha512 = "kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==";
+ };
+ };
+ "@webassemblyjs/floating-point-hex-parser-1.11.0" = {
+ name = "_at_webassemblyjs_slash_floating-point-hex-parser";
+ packageName = "@webassemblyjs/floating-point-hex-parser";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz";
+ sha512 = "Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==";
+ };
+ };
+ "@webassemblyjs/helper-api-error-1.11.0" = {
+ name = "_at_webassemblyjs_slash_helper-api-error";
+ packageName = "@webassemblyjs/helper-api-error";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz";
+ sha512 = "baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==";
+ };
+ };
+ "@webassemblyjs/helper-buffer-1.11.0" = {
+ name = "_at_webassemblyjs_slash_helper-buffer";
+ packageName = "@webassemblyjs/helper-buffer";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz";
+ sha512 = "u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==";
+ };
+ };
+ "@webassemblyjs/helper-numbers-1.11.0" = {
+ name = "_at_webassemblyjs_slash_helper-numbers";
+ packageName = "@webassemblyjs/helper-numbers";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz";
+ sha512 = "DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==";
+ };
+ };
+ "@webassemblyjs/helper-wasm-bytecode-1.11.0" = {
+ name = "_at_webassemblyjs_slash_helper-wasm-bytecode";
+ packageName = "@webassemblyjs/helper-wasm-bytecode";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz";
+ sha512 = "MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==";
+ };
+ };
+ "@webassemblyjs/helper-wasm-section-1.11.0" = {
+ name = "_at_webassemblyjs_slash_helper-wasm-section";
+ packageName = "@webassemblyjs/helper-wasm-section";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz";
+ sha512 = "3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==";
+ };
+ };
+ "@webassemblyjs/ieee754-1.11.0" = {
+ name = "_at_webassemblyjs_slash_ieee754";
+ packageName = "@webassemblyjs/ieee754";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz";
+ sha512 = "KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==";
+ };
+ };
+ "@webassemblyjs/leb128-1.11.0" = {
+ name = "_at_webassemblyjs_slash_leb128";
+ packageName = "@webassemblyjs/leb128";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz";
+ sha512 = "aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==";
+ };
+ };
+ "@webassemblyjs/utf8-1.11.0" = {
+ name = "_at_webassemblyjs_slash_utf8";
+ packageName = "@webassemblyjs/utf8";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz";
+ sha512 = "A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==";
+ };
+ };
+ "@webassemblyjs/wasm-edit-1.11.0" = {
+ name = "_at_webassemblyjs_slash_wasm-edit";
+ packageName = "@webassemblyjs/wasm-edit";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz";
+ sha512 = "JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==";
+ };
+ };
+ "@webassemblyjs/wasm-gen-1.11.0" = {
+ name = "_at_webassemblyjs_slash_wasm-gen";
+ packageName = "@webassemblyjs/wasm-gen";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz";
+ sha512 = "BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==";
+ };
+ };
+ "@webassemblyjs/wasm-opt-1.11.0" = {
+ name = "_at_webassemblyjs_slash_wasm-opt";
+ packageName = "@webassemblyjs/wasm-opt";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz";
+ sha512 = "tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==";
+ };
+ };
+ "@webassemblyjs/wasm-parser-1.11.0" = {
+ name = "_at_webassemblyjs_slash_wasm-parser";
+ packageName = "@webassemblyjs/wasm-parser";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz";
+ sha512 = "6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==";
+ };
+ };
+ "@webassemblyjs/wast-printer-1.11.0" = {
+ name = "_at_webassemblyjs_slash_wast-printer";
+ packageName = "@webassemblyjs/wast-printer";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz";
+ sha512 = "Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==";
+ };
+ };
+ "@webpack-cli/configtest-1.0.2" = {
+ name = "_at_webpack-cli_slash_configtest";
+ packageName = "@webpack-cli/configtest";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.2.tgz";
+ sha512 = "3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==";
+ };
+ };
+ "@webpack-cli/info-1.2.3" = {
+ name = "_at_webpack-cli_slash_info";
+ packageName = "@webpack-cli/info";
+ version = "1.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.3.tgz";
+ sha512 = "lLek3/T7u40lTqzCGpC6CAbY6+vXhdhmwFRxZLMnRm6/sIF/7qMpT8MocXCRQfz0JAh63wpbXLMnsQ5162WS7Q==";
+ };
+ };
+ "@webpack-cli/serve-1.3.1" = {
+ name = "_at_webpack-cli_slash_serve";
+ packageName = "@webpack-cli/serve";
+ version = "1.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.1.tgz";
+ sha512 = "0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==";
+ };
+ };
+ "@xtuc/ieee754-1.2.0" = {
+ name = "_at_xtuc_slash_ieee754";
+ packageName = "@xtuc/ieee754";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz";
+ sha512 = "DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==";
+ };
+ };
+ "@xtuc/long-4.2.2" = {
+ name = "_at_xtuc_slash_long";
+ packageName = "@xtuc/long";
+ version = "4.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz";
+ sha512 = "NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==";
+ };
+ };
+ "abbrev-1.1.1" = {
+ name = "abbrev";
+ packageName = "abbrev";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
+ sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
+ };
+ };
+ "acorn-7.4.1" = {
+ name = "acorn";
+ packageName = "acorn";
+ version = "7.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz";
+ sha512 = "nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==";
+ };
+ };
+ "acorn-8.1.1" = {
+ name = "acorn";
+ packageName = "acorn";
+ version = "8.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/acorn/-/acorn-8.1.1.tgz";
+ sha512 = "xYiIVjNuqtKXMxlRMDc6mZUhXehod4a3gbZ1qRlM7icK4EbxUFNLhWoPblCvFtB2Y9CIqHP3CF/rdxLItaQv8g==";
+ };
+ };
+ "acorn-jsx-5.3.1" = {
+ name = "acorn-jsx";
+ packageName = "acorn-jsx";
+ version = "5.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz";
+ sha512 = "K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==";
+ };
+ };
+ "ajv-6.12.6" = {
+ name = "ajv";
+ packageName = "ajv";
+ version = "6.12.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz";
+ sha512 = "j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==";
+ };
+ };
+ "ajv-keywords-3.5.2" = {
+ name = "ajv-keywords";
+ packageName = "ajv-keywords";
+ version = "3.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz";
+ sha512 = "5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==";
+ };
+ };
+ "ansi-colors-4.1.1" = {
+ name = "ansi-colors";
+ packageName = "ansi-colors";
+ version = "4.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz";
+ sha512 = "JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==";
+ };
+ };
+ "ansi-escapes-4.3.2" = {
+ name = "ansi-escapes";
+ packageName = "ansi-escapes";
+ version = "4.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz";
+ sha512 = "gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==";
+ };
+ };
+ "ansi-regex-2.1.1" = {
+ name = "ansi-regex";
+ packageName = "ansi-regex";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
+ sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+ };
+ };
+ "ansi-regex-3.0.0" = {
+ name = "ansi-regex";
+ packageName = "ansi-regex";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
+ sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
+ };
+ };
+ "ansi-regex-4.1.0" = {
+ name = "ansi-regex";
+ packageName = "ansi-regex";
+ version = "4.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz";
+ sha512 = "1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==";
+ };
+ };
+ "ansi-regex-5.0.0" = {
+ name = "ansi-regex";
+ packageName = "ansi-regex";
+ version = "5.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz";
+ sha512 = "bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==";
+ };
+ };
+ "ansi-styles-3.2.1" = {
+ name = "ansi-styles";
+ packageName = "ansi-styles";
+ version = "3.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz";
+ sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==";
+ };
+ };
+ "ansi-styles-4.3.0" = {
+ name = "ansi-styles";
+ packageName = "ansi-styles";
+ version = "4.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz";
+ sha512 = "zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==";
+ };
+ };
+ "aproba-1.2.0" = {
+ name = "aproba";
+ packageName = "aproba";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
+ sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==";
+ };
+ };
+ "are-we-there-yet-1.1.5" = {
+ name = "are-we-there-yet";
+ packageName = "are-we-there-yet";
+ version = "1.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
+ sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==";
+ };
+ };
+ "argparse-1.0.10" = {
+ name = "argparse";
+ packageName = "argparse";
+ version = "1.0.10";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
+ sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
+ };
+ };
+ "array-union-2.1.0" = {
+ name = "array-union";
+ packageName = "array-union";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz";
+ sha512 = "HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==";
+ };
+ };
+ "asn1-0.2.4" = {
+ name = "asn1";
+ packageName = "asn1";
+ version = "0.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
+ sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
+ };
+ };
+ "assert-plus-1.0.0" = {
+ name = "assert-plus";
+ packageName = "assert-plus";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
+ sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+ };
+ };
+ "astral-regex-1.0.0" = {
+ name = "astral-regex";
+ packageName = "astral-regex";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz";
+ sha512 = "+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==";
+ };
+ };
+ "asynckit-0.4.0" = {
+ name = "asynckit";
+ packageName = "asynckit";
+ version = "0.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
+ sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+ };
+ };
+ "aws-sign2-0.7.0" = {
+ name = "aws-sign2";
+ packageName = "aws-sign2";
+ version = "0.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
+ sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+ };
+ };
+ "aws4-1.11.0" = {
+ name = "aws4";
+ packageName = "aws4";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz";
+ sha512 = "xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==";
+ };
+ };
+ "balanced-match-1.0.2" = {
+ name = "balanced-match";
+ packageName = "balanced-match";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz";
+ sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==";
+ };
+ };
+ "bcrypt-pbkdf-1.0.2" = {
+ name = "bcrypt-pbkdf";
+ packageName = "bcrypt-pbkdf";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+ sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+ };
+ };
+ "block-stream-0.0.9" = {
+ name = "block-stream";
+ packageName = "block-stream";
+ version = "0.0.9";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz";
+ sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
+ };
+ };
+ "brace-expansion-1.1.11" = {
+ name = "brace-expansion";
+ packageName = "brace-expansion";
+ version = "1.1.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
+ sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
+ };
+ };
+ "braces-3.0.2" = {
+ name = "braces";
+ packageName = "braces";
+ version = "3.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz";
+ sha512 = "b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==";
+ };
+ };
+ "browserslist-4.16.4" = {
+ name = "browserslist";
+ packageName = "browserslist";
+ version = "4.16.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/browserslist/-/browserslist-4.16.4.tgz";
+ sha512 = "d7rCxYV8I9kj41RH8UKYnvDYCRENUlHRgyXy/Rhr/1BaeLGfiCptEdFE8MIrvGfWbBFNjVYx76SQWvNX1j+/cQ==";
+ };
+ };
+ "buffer-from-1.1.1" = {
+ name = "buffer-from";
+ packageName = "buffer-from";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz";
+ sha512 = "MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==";
+ };
+ };
+ "buffer-writer-2.0.0" = {
+ name = "buffer-writer";
+ packageName = "buffer-writer";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz";
+ sha512 = "a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==";
+ };
+ };
+ "callsites-3.1.0" = {
+ name = "callsites";
+ packageName = "callsites";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz";
+ sha512 = "P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==";
+ };
+ };
+ "caniuse-lite-1.0.30001209" = {
+ name = "caniuse-lite";
+ packageName = "caniuse-lite";
+ version = "1.0.30001209";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001209.tgz";
+ sha512 = "2Ktt4OeRM7EM/JaOZjuLzPYAIqmbwQMNnYbgooT+icoRGrKOyAxA1xhlnotBD1KArRSPsuJp3TdYcZYrL7qNxA==";
+ };
+ };
+ "caseless-0.12.0" = {
+ name = "caseless";
+ packageName = "caseless";
+ version = "0.12.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
+ sha1 = "1b681c21ff84033c826543090689420d187151dc";
+ };
+ };
+ "chalk-2.4.2" = {
+ name = "chalk";
+ packageName = "chalk";
+ version = "2.4.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz";
+ sha512 = "Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==";
+ };
+ };
+ "chalk-4.1.0" = {
+ name = "chalk";
+ packageName = "chalk";
+ version = "4.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz";
+ sha512 = "qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==";
+ };
+ };
+ "chardet-0.7.0" = {
+ name = "chardet";
+ packageName = "chardet";
+ version = "0.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz";
+ sha512 = "mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==";
+ };
+ };
+ "chownr-1.1.4" = {
+ name = "chownr";
+ packageName = "chownr";
+ version = "1.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz";
+ sha512 = "jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==";
+ };
+ };
+ "chrome-trace-event-1.0.3" = {
+ name = "chrome-trace-event";
+ packageName = "chrome-trace-event";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz";
+ sha512 = "p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==";
+ };
+ };
+ "cli-cursor-3.1.0" = {
+ name = "cli-cursor";
+ packageName = "cli-cursor";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz";
+ sha512 = "I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==";
+ };
+ };
+ "cli-width-3.0.0" = {
+ name = "cli-width";
+ packageName = "cli-width";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz";
+ sha512 = "FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==";
+ };
+ };
+ "clone-deep-4.0.1" = {
+ name = "clone-deep";
+ packageName = "clone-deep";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz";
+ sha512 = "neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==";
+ };
+ };
+ "code-point-at-1.1.0" = {
+ name = "code-point-at";
+ packageName = "code-point-at";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
+ sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
+ };
+ };
+ "color-convert-1.9.3" = {
+ name = "color-convert";
+ packageName = "color-convert";
+ version = "1.9.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz";
+ sha512 = "QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==";
+ };
+ };
+ "color-convert-2.0.1" = {
+ name = "color-convert";
+ packageName = "color-convert";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz";
+ sha512 = "RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==";
+ };
+ };
+ "color-name-1.1.3" = {
+ name = "color-name";
+ packageName = "color-name";
+ version = "1.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
+ sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
+ };
+ };
+ "color-name-1.1.4" = {
+ name = "color-name";
+ packageName = "color-name";
+ version = "1.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz";
+ sha512 = "dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==";
+ };
+ };
+ "colorette-1.2.2" = {
+ name = "colorette";
+ packageName = "colorette";
+ version = "1.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz";
+ sha512 = "MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==";
+ };
+ };
+ "combined-stream-1.0.8" = {
+ name = "combined-stream";
+ packageName = "combined-stream";
+ version = "1.0.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
+ sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
+ };
+ };
+ "commander-2.20.3" = {
+ name = "commander";
+ packageName = "commander";
+ version = "2.20.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
+ sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==";
+ };
+ };
+ "commander-7.2.0" = {
+ name = "commander";
+ packageName = "commander";
+ version = "7.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz";
+ sha512 = "QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==";
+ };
+ };
+ "compression-webpack-plugin-7.1.2" = {
+ name = "compression-webpack-plugin";
+ packageName = "compression-webpack-plugin";
+ version = "7.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-7.1.2.tgz";
+ sha512 = "9DKNW6ILLjx+bNBoviHDgLx6swBhWWH9ApClC9sTH2NoFfQM47BapQfovCm9zjD9v1uZwInF5a925FB9ErGQeQ==";
+ };
+ };
+ "concat-map-0.0.1" = {
+ name = "concat-map";
+ packageName = "concat-map";
+ version = "0.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+ sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+ };
+ };
+ "config-chain-1.1.12" = {
+ name = "config-chain";
+ packageName = "config-chain";
+ version = "1.1.12";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz";
+ sha512 = "a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==";
+ };
+ };
+ "console-control-strings-1.1.0" = {
+ name = "console-control-strings";
+ packageName = "console-control-strings";
+ version = "1.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
+ sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
+ };
+ };
+ "console-stamp-3.0.0-rc4.2" = {
+ name = "console-stamp";
+ packageName = "console-stamp";
+ version = "3.0.0-rc4.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/console-stamp/-/console-stamp-3.0.0-rc4.2.tgz";
+ sha512 = "ncGYdZsfDbBYYiaPXr9NHfZbSSkoVzYyh8nHji9/3ovw35Jn4ozo0btcirtfIznXT4xNgBQW+IyTVLISnNumdQ==";
+ };
+ };
+ "copy-anything-2.0.3" = {
+ name = "copy-anything";
+ packageName = "copy-anything";
+ version = "2.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz";
+ sha512 = "GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==";
+ };
+ };
+ "core-util-is-1.0.2" = {
+ name = "core-util-is";
+ packageName = "core-util-is";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+ sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+ };
+ };
+ "cross-spawn-6.0.5" = {
+ name = "cross-spawn";
+ packageName = "cross-spawn";
+ version = "6.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz";
+ sha512 = "eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==";
+ };
+ };
+ "cross-spawn-7.0.3" = {
+ name = "cross-spawn";
+ packageName = "cross-spawn";
+ version = "7.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz";
+ sha512 = "iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==";
+ };
+ };
+ "dashdash-1.14.1" = {
+ name = "dashdash";
+ packageName = "dashdash";
+ version = "1.14.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
+ sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+ };
+ };
+ "dateformat-3.0.3" = {
+ name = "dateformat";
+ packageName = "dateformat";
+ version = "3.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz";
+ sha512 = "jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==";
+ };
+ };
+ "de-indent-1.0.2" = {
+ name = "de-indent";
+ packageName = "de-indent";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz";
+ sha1 = "b2038e846dc33baa5796128d0804b455b8c1e21d";
+ };
+ };
+ "debug-3.2.7" = {
+ name = "debug";
+ packageName = "debug";
+ version = "3.2.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz";
+ sha512 = "CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==";
+ };
+ };
+ "debug-4.3.1" = {
+ name = "debug";
+ packageName = "debug";
+ version = "4.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz";
+ sha512 = "doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==";
+ };
+ };
+ "deep-extend-0.6.0" = {
+ name = "deep-extend";
+ packageName = "deep-extend";
+ version = "0.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz";
+ sha512 = "LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==";
+ };
+ };
+ "deep-is-0.1.3" = {
+ name = "deep-is";
+ packageName = "deep-is";
+ version = "0.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
+ sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
+ };
+ };
+ "delayed-stream-1.0.0" = {
+ name = "delayed-stream";
+ packageName = "delayed-stream";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
+ sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+ };
+ };
+ "delegates-1.0.0" = {
+ name = "delegates";
+ packageName = "delegates";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
+ sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
+ };
+ };
+ "detect-libc-1.0.3" = {
+ name = "detect-libc";
+ packageName = "detect-libc";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz";
+ sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
+ };
+ };
+ "dialog-polyfill-0.5.6" = {
+ name = "dialog-polyfill";
+ packageName = "dialog-polyfill";
+ version = "0.5.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.5.6.tgz";
+ sha512 = "ZbVDJI9uvxPAKze6z146rmfUZjBqNEwcnFTVamQzXH+svluiV7swmVIGr7miwADgfgt1G2JQIytypM9fbyhX4w==";
+ };
+ };
+ "dir-glob-3.0.1" = {
+ name = "dir-glob";
+ packageName = "dir-glob";
+ version = "3.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz";
+ sha512 = "WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==";
+ };
+ };
+ "doctrine-3.0.0" = {
+ name = "doctrine";
+ packageName = "doctrine";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz";
+ sha512 = "yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==";
+ };
+ };
+ "dotenv-8.2.0" = {
+ name = "dotenv";
+ packageName = "dotenv";
+ version = "8.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz";
+ sha512 = "8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==";
+ };
+ };
+ "ecc-jsbn-0.1.2" = {
+ name = "ecc-jsbn";
+ packageName = "ecc-jsbn";
+ version = "0.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+ sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+ };
+ };
+ "editorconfig-0.15.3" = {
+ name = "editorconfig";
+ packageName = "editorconfig";
+ version = "0.15.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz";
+ sha512 = "M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==";
+ };
+ };
+ "electron-to-chromium-1.3.717" = {
+ name = "electron-to-chromium";
+ packageName = "electron-to-chromium";
+ version = "1.3.717";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.717.tgz";
+ sha512 = "OfzVPIqD1MkJ7fX+yTl2nKyOE4FReeVfMCzzxQS+Kp43hZYwHwThlGP+EGIZRXJsxCM7dqo8Y65NOX/HP12iXQ==";
+ };
+ };
+ "emoji-regex-7.0.3" = {
+ name = "emoji-regex";
+ packageName = "emoji-regex";
+ version = "7.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz";
+ sha512 = "CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==";
+ };
+ };
+ "emoji-regex-8.0.0" = {
+ name = "emoji-regex";
+ packageName = "emoji-regex";
+ version = "8.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz";
+ sha512 = "MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==";
+ };
+ };
+ "enhanced-resolve-5.7.0" = {
+ name = "enhanced-resolve";
+ packageName = "enhanced-resolve";
+ version = "5.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz";
+ sha512 = "6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==";
+ };
+ };
+ "enquirer-2.3.6" = {
+ name = "enquirer";
+ packageName = "enquirer";
+ version = "2.3.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz";
+ sha512 = "yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==";
+ };
+ };
+ "envinfo-7.8.1" = {
+ name = "envinfo";
+ packageName = "envinfo";
+ version = "7.8.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz";
+ sha512 = "/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==";
+ };
+ };
+ "errno-0.1.8" = {
+ name = "errno";
+ packageName = "errno";
+ version = "0.1.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz";
+ sha512 = "dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==";
+ };
+ };
+ "es-module-lexer-0.4.1" = {
+ name = "es-module-lexer";
+ packageName = "es-module-lexer";
+ version = "0.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz";
+ sha512 = "ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==";
+ };
+ };
+ "escalade-3.1.1" = {
+ name = "escalade";
+ packageName = "escalade";
+ version = "3.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz";
+ sha512 = "k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==";
+ };
+ };
+ "escape-string-regexp-1.0.5" = {
+ name = "escape-string-regexp";
+ packageName = "escape-string-regexp";
+ version = "1.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+ sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+ };
+ };
+ "eslint-6.8.0" = {
+ name = "eslint";
+ packageName = "eslint";
+ version = "6.8.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz";
+ sha512 = "K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==";
+ };
+ };
+ "eslint-config-google-0.14.0" = {
+ name = "eslint-config-google";
+ packageName = "eslint-config-google";
+ version = "0.14.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz";
+ sha512 = "WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==";
+ };
+ };
+ "eslint-plugin-vue-6.2.2" = {
+ name = "eslint-plugin-vue";
+ packageName = "eslint-plugin-vue";
+ version = "6.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz";
+ sha512 = "Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==";
+ };
+ };
+ "eslint-scope-5.1.1" = {
+ name = "eslint-scope";
+ packageName = "eslint-scope";
+ version = "5.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz";
+ sha512 = "2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==";
+ };
+ };
+ "eslint-utils-1.4.3" = {
+ name = "eslint-utils";
+ packageName = "eslint-utils";
+ version = "1.4.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz";
+ sha512 = "fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==";
+ };
+ };
+ "eslint-utils-2.1.0" = {
+ name = "eslint-utils";
+ packageName = "eslint-utils";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz";
+ sha512 = "w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==";
+ };
+ };
+ "eslint-visitor-keys-1.3.0" = {
+ name = "eslint-visitor-keys";
+ packageName = "eslint-visitor-keys";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz";
+ sha512 = "6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==";
+ };
+ };
+ "eslint-visitor-keys-2.0.0" = {
+ name = "eslint-visitor-keys";
+ packageName = "eslint-visitor-keys";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz";
+ sha512 = "QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==";
+ };
+ };
+ "espree-6.2.1" = {
+ name = "espree";
+ packageName = "espree";
+ version = "6.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz";
+ sha512 = "ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==";
+ };
+ };
+ "esprima-4.0.1" = {
+ name = "esprima";
+ packageName = "esprima";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
+ sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==";
+ };
+ };
+ "esquery-1.4.0" = {
+ name = "esquery";
+ packageName = "esquery";
+ version = "1.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz";
+ sha512 = "cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==";
+ };
+ };
+ "esrecurse-4.3.0" = {
+ name = "esrecurse";
+ packageName = "esrecurse";
+ version = "4.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz";
+ sha512 = "KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==";
+ };
+ };
+ "estraverse-4.3.0" = {
+ name = "estraverse";
+ packageName = "estraverse";
+ version = "4.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz";
+ sha512 = "39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==";
+ };
+ };
+ "estraverse-5.2.0" = {
+ name = "estraverse";
+ packageName = "estraverse";
+ version = "5.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz";
+ sha512 = "BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==";
+ };
+ };
+ "esutils-2.0.3" = {
+ name = "esutils";
+ packageName = "esutils";
+ version = "2.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz";
+ sha512 = "kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==";
+ };
+ };
+ "events-3.3.0" = {
+ name = "events";
+ packageName = "events";
+ version = "3.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/events/-/events-3.3.0.tgz";
+ sha512 = "mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==";
+ };
+ };
+ "execa-5.0.0" = {
+ name = "execa";
+ packageName = "execa";
+ version = "5.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz";
+ sha512 = "ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==";
+ };
+ };
+ "extend-3.0.2" = {
+ name = "extend";
+ packageName = "extend";
+ version = "3.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
+ sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
+ };
+ };
+ "external-editor-3.1.0" = {
+ name = "external-editor";
+ packageName = "external-editor";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz";
+ sha512 = "hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==";
+ };
+ };
+ "extsprintf-1.3.0" = {
+ name = "extsprintf";
+ packageName = "extsprintf";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
+ sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+ };
+ };
+ "fast-deep-equal-3.1.3" = {
+ name = "fast-deep-equal";
+ packageName = "fast-deep-equal";
+ version = "3.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz";
+ sha512 = "f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==";
+ };
+ };
+ "fast-glob-3.2.5" = {
+ name = "fast-glob";
+ packageName = "fast-glob";
+ version = "3.2.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz";
+ sha512 = "2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==";
+ };
+ };
+ "fast-json-stable-stringify-2.1.0" = {
+ name = "fast-json-stable-stringify";
+ packageName = "fast-json-stable-stringify";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
+ sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
+ };
+ };
+ "fast-levenshtein-2.0.6" = {
+ name = "fast-levenshtein";
+ packageName = "fast-levenshtein";
+ version = "2.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
+ sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
+ };
+ };
+ "fastest-levenshtein-1.0.12" = {
+ name = "fastest-levenshtein";
+ packageName = "fastest-levenshtein";
+ version = "1.0.12";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz";
+ sha512 = "On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==";
+ };
+ };
+ "fastq-1.11.0" = {
+ name = "fastq";
+ packageName = "fastq";
+ version = "1.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz";
+ sha512 = "7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==";
+ };
+ };
+ "figures-3.2.0" = {
+ name = "figures";
+ packageName = "figures";
+ version = "3.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz";
+ sha512 = "yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==";
+ };
+ };
+ "file-entry-cache-5.0.1" = {
+ name = "file-entry-cache";
+ packageName = "file-entry-cache";
+ version = "5.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz";
+ sha512 = "bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==";
+ };
+ };
+ "fill-range-7.0.1" = {
+ name = "fill-range";
+ packageName = "fill-range";
+ version = "7.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz";
+ sha512 = "qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==";
+ };
+ };
+ "find-up-4.1.0" = {
+ name = "find-up";
+ packageName = "find-up";
+ version = "4.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz";
+ sha512 = "PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==";
+ };
+ };
+ "flat-cache-2.0.1" = {
+ name = "flat-cache";
+ packageName = "flat-cache";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz";
+ sha512 = "LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==";
+ };
+ };
+ "flatted-2.0.2" = {
+ name = "flatted";
+ packageName = "flatted";
+ version = "2.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz";
+ sha512 = "r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==";
+ };
+ };
+ "forever-agent-0.6.1" = {
+ name = "forever-agent";
+ packageName = "forever-agent";
+ version = "0.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
+ sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+ };
+ };
+ "form-data-2.3.3" = {
+ name = "form-data";
+ packageName = "form-data";
+ version = "2.3.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
+ sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
+ };
+ };
+ "fs-minipass-1.2.7" = {
+ name = "fs-minipass";
+ packageName = "fs-minipass";
+ version = "1.2.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz";
+ sha512 = "GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==";
+ };
+ };
+ "fs.realpath-1.0.0" = {
+ name = "fs.realpath";
+ packageName = "fs.realpath";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
+ sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+ };
+ };
+ "fstream-1.0.12" = {
+ name = "fstream";
+ packageName = "fstream";
+ version = "1.0.12";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz";
+ sha512 = "WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==";
+ };
+ };
+ "function-bind-1.1.1" = {
+ name = "function-bind";
+ packageName = "function-bind";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz";
+ sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==";
+ };
+ };
+ "functional-red-black-tree-1.0.1" = {
+ name = "functional-red-black-tree";
+ packageName = "functional-red-black-tree";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz";
+ sha1 = "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327";
+ };
+ };
+ "gauge-2.7.4" = {
+ name = "gauge";
+ packageName = "gauge";
+ version = "2.7.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
+ sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
+ };
+ };
+ "get-stream-6.0.1" = {
+ name = "get-stream";
+ packageName = "get-stream";
+ version = "6.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz";
+ sha512 = "ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==";
+ };
+ };
+ "getpass-0.1.7" = {
+ name = "getpass";
+ packageName = "getpass";
+ version = "0.1.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
+ sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+ };
+ };
+ "glob-7.1.6" = {
+ name = "glob";
+ packageName = "glob";
+ version = "7.1.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
+ sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==";
+ };
+ };
+ "glob-parent-5.1.2" = {
+ name = "glob-parent";
+ packageName = "glob-parent";
+ version = "5.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";
+ sha512 = "AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==";
+ };
+ };
+ "glob-to-regexp-0.4.1" = {
+ name = "glob-to-regexp";
+ packageName = "glob-to-regexp";
+ version = "0.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz";
+ sha512 = "lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==";
+ };
+ };
+ "globals-12.4.0" = {
+ name = "globals";
+ packageName = "globals";
+ version = "12.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz";
+ sha512 = "BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==";
+ };
+ };
+ "globby-11.0.3" = {
+ name = "globby";
+ packageName = "globby";
+ version = "11.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz";
+ sha512 = "ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==";
+ };
+ };
+ "graceful-fs-4.2.6" = {
+ name = "graceful-fs";
+ packageName = "graceful-fs";
+ version = "4.2.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz";
+ sha512 = "nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==";
+ };
+ };
+ "har-schema-2.0.0" = {
+ name = "har-schema";
+ packageName = "har-schema";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
+ sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+ };
+ };
+ "har-validator-5.1.5" = {
+ name = "har-validator";
+ packageName = "har-validator";
+ version = "5.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz";
+ sha512 = "nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==";
+ };
+ };
+ "has-1.0.3" = {
+ name = "has";
+ packageName = "has";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz";
+ sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==";
+ };
+ };
+ "has-flag-3.0.0" = {
+ name = "has-flag";
+ packageName = "has-flag";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz";
+ sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
+ };
+ };
+ "has-flag-4.0.0" = {
+ name = "has-flag";
+ packageName = "has-flag";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz";
+ sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==";
+ };
+ };
+ "has-unicode-2.0.1" = {
+ name = "has-unicode";
+ packageName = "has-unicode";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
+ sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
+ };
+ };
+ "he-1.2.0" = {
+ name = "he";
+ packageName = "he";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/he/-/he-1.2.0.tgz";
+ sha512 = "F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==";
+ };
+ };
+ "http-signature-1.2.0" = {
+ name = "http-signature";
+ packageName = "http-signature";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
+ sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+ };
+ };
+ "human-signals-2.1.0" = {
+ name = "human-signals";
+ packageName = "human-signals";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz";
+ sha512 = "B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==";
+ };
+ };
+ "iconv-lite-0.4.24" = {
+ name = "iconv-lite";
+ packageName = "iconv-lite";
+ version = "0.4.24";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
+ sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
+ };
+ };
+ "ignore-4.0.6" = {
+ name = "ignore";
+ packageName = "ignore";
+ version = "4.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz";
+ sha512 = "cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==";
+ };
+ };
+ "ignore-5.1.8" = {
+ name = "ignore";
+ packageName = "ignore";
+ version = "5.1.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz";
+ sha512 = "BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==";
+ };
+ };
+ "ignore-walk-3.0.3" = {
+ name = "ignore-walk";
+ packageName = "ignore-walk";
+ version = "3.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz";
+ sha512 = "m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==";
+ };
+ };
+ "image-size-0.5.5" = {
+ name = "image-size";
+ packageName = "image-size";
+ version = "0.5.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz";
+ sha1 = "09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c";
+ };
+ };
+ "import-fresh-3.3.0" = {
+ name = "import-fresh";
+ packageName = "import-fresh";
+ version = "3.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz";
+ sha512 = "veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==";
+ };
+ };
+ "import-local-3.0.2" = {
+ name = "import-local";
+ packageName = "import-local";
+ version = "3.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz";
+ sha512 = "vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==";
+ };
+ };
+ "imurmurhash-0.1.4" = {
+ name = "imurmurhash";
+ packageName = "imurmurhash";
+ version = "0.1.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz";
+ sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
+ };
+ };
+ "inflight-1.0.6" = {
+ name = "inflight";
+ packageName = "inflight";
+ version = "1.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
+ sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+ };
+ };
+ "inherits-2.0.4" = {
+ name = "inherits";
+ packageName = "inherits";
+ version = "2.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
+ sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
+ };
+ };
+ "ini-1.3.8" = {
+ name = "ini";
+ packageName = "ini";
+ version = "1.3.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz";
+ sha512 = "JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==";
+ };
+ };
+ "inquirer-7.3.3" = {
+ name = "inquirer";
+ packageName = "inquirer";
+ version = "7.3.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz";
+ sha512 = "JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==";
+ };
+ };
+ "interpret-2.2.0" = {
+ name = "interpret";
+ packageName = "interpret";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz";
+ sha512 = "Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==";
+ };
+ };
+ "is-core-module-2.2.0" = {
+ name = "is-core-module";
+ packageName = "is-core-module";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz";
+ sha512 = "XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==";
+ };
+ };
+ "is-extglob-2.1.1" = {
+ name = "is-extglob";
+ packageName = "is-extglob";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz";
+ sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
+ };
+ };
+ "is-fullwidth-code-point-1.0.0" = {
+ name = "is-fullwidth-code-point";
+ packageName = "is-fullwidth-code-point";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
+ sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
+ };
+ };
+ "is-fullwidth-code-point-2.0.0" = {
+ name = "is-fullwidth-code-point";
+ packageName = "is-fullwidth-code-point";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+ sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+ };
+ };
+ "is-fullwidth-code-point-3.0.0" = {
+ name = "is-fullwidth-code-point";
+ packageName = "is-fullwidth-code-point";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz";
+ sha512 = "zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==";
+ };
+ };
+ "is-glob-4.0.1" = {
+ name = "is-glob";
+ packageName = "is-glob";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz";
+ sha512 = "5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==";
+ };
+ };
+ "is-number-7.0.0" = {
+ name = "is-number";
+ packageName = "is-number";
+ version = "7.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz";
+ sha512 = "41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==";
+ };
+ };
+ "is-plain-object-2.0.4" = {
+ name = "is-plain-object";
+ packageName = "is-plain-object";
+ version = "2.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz";
+ sha512 = "h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==";
+ };
+ };
+ "is-stream-2.0.0" = {
+ name = "is-stream";
+ packageName = "is-stream";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz";
+ sha512 = "XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==";
+ };
+ };
+ "is-typedarray-1.0.0" = {
+ name = "is-typedarray";
+ packageName = "is-typedarray";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
+ sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+ };
+ };
+ "is-what-3.14.1" = {
+ name = "is-what";
+ packageName = "is-what";
+ version = "3.14.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz";
+ sha512 = "sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==";
+ };
+ };
+ "isarray-1.0.0" = {
+ name = "isarray";
+ packageName = "isarray";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
+ sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+ };
+ };
+ "isexe-2.0.0" = {
+ name = "isexe";
+ packageName = "isexe";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
+ sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
+ };
+ };
+ "isobject-3.0.1" = {
+ name = "isobject";
+ packageName = "isobject";
+ version = "3.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz";
+ sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
+ };
+ };
+ "isstream-0.1.2" = {
+ name = "isstream";
+ packageName = "isstream";
+ version = "0.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
+ sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+ };
+ };
+ "jest-worker-26.6.2" = {
+ name = "jest-worker";
+ packageName = "jest-worker";
+ version = "26.6.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz";
+ sha512 = "KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==";
+ };
+ };
+ "js-beautify-1.13.13" = {
+ name = "js-beautify";
+ packageName = "js-beautify";
+ version = "1.13.13";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.13.tgz";
+ sha512 = "oH+nc0U5mOAqX8M5JO1J0Pw/7Q35sAdOsM5W3i87pir9Ntx6P/5Gx1xLNoK+MGyvHk4rqqRCE4Oq58H6xl2W7A==";
+ };
+ };
+ "js-tokens-4.0.0" = {
+ name = "js-tokens";
+ packageName = "js-tokens";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz";
+ sha512 = "RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==";
+ };
+ };
+ "js-yaml-3.14.1" = {
+ name = "js-yaml";
+ packageName = "js-yaml";
+ version = "3.14.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz";
+ sha512 = "okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==";
+ };
+ };
+ "jsbn-0.1.1" = {
+ name = "jsbn";
+ packageName = "jsbn";
+ version = "0.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
+ sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+ };
+ };
+ "json-parse-better-errors-1.0.2" = {
+ name = "json-parse-better-errors";
+ packageName = "json-parse-better-errors";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
+ sha512 = "mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==";
+ };
+ };
+ "json-schema-0.2.3" = {
+ name = "json-schema";
+ packageName = "json-schema";
+ version = "0.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
+ sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+ };
+ };
+ "json-schema-traverse-0.4.1" = {
+ name = "json-schema-traverse";
+ packageName = "json-schema-traverse";
+ version = "0.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+ sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
+ };
+ };
+ "json-stable-stringify-without-jsonify-1.0.1" = {
+ name = "json-stable-stringify-without-jsonify";
+ packageName = "json-stable-stringify-without-jsonify";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz";
+ sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
+ };
+ };
+ "json-stringify-safe-5.0.1" = {
+ name = "json-stringify-safe";
+ packageName = "json-stringify-safe";
+ version = "5.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+ sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+ };
+ };
+ "jsprim-1.4.1" = {
+ name = "jsprim";
+ packageName = "jsprim";
+ version = "1.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
+ sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+ };
+ };
+ "kind-of-6.0.3" = {
+ name = "kind-of";
+ packageName = "kind-of";
+ version = "6.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz";
+ sha512 = "dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==";
+ };
+ };
+ "less-3.13.1" = {
+ name = "less";
+ packageName = "less";
+ version = "3.13.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/less/-/less-3.13.1.tgz";
+ sha512 = "SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==";
+ };
+ };
+ "levn-0.3.0" = {
+ name = "levn";
+ packageName = "levn";
+ version = "0.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
+ sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
+ };
+ };
+ "loader-runner-4.2.0" = {
+ name = "loader-runner";
+ packageName = "loader-runner";
+ version = "4.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz";
+ sha512 = "92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==";
+ };
+ };
+ "locate-path-5.0.0" = {
+ name = "locate-path";
+ packageName = "locate-path";
+ version = "5.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz";
+ sha512 = "t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==";
+ };
+ };
+ "lodash-4.17.21" = {
+ name = "lodash";
+ packageName = "lodash";
+ version = "4.17.21";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz";
+ sha512 = "v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==";
+ };
+ };
+ "lru-cache-4.1.5" = {
+ name = "lru-cache";
+ packageName = "lru-cache";
+ version = "4.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz";
+ sha512 = "sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==";
+ };
+ };
+ "lru-cache-6.0.0" = {
+ name = "lru-cache";
+ packageName = "lru-cache";
+ version = "6.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz";
+ sha512 = "Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==";
+ };
+ };
+ "make-dir-2.1.0" = {
+ name = "make-dir";
+ packageName = "make-dir";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz";
+ sha512 = "LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==";
+ };
+ };
+ "merge-stream-2.0.0" = {
+ name = "merge-stream";
+ packageName = "merge-stream";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz";
+ sha512 = "abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==";
+ };
+ };
+ "merge2-1.4.1" = {
+ name = "merge2";
+ packageName = "merge2";
+ version = "1.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz";
+ sha512 = "8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==";
+ };
+ };
+ "micromatch-4.0.4" = {
+ name = "micromatch";
+ packageName = "micromatch";
+ version = "4.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz";
+ sha512 = "pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==";
+ };
+ };
+ "mime-1.6.0" = {
+ name = "mime";
+ packageName = "mime";
+ version = "1.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
+ sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
+ };
+ };
+ "mime-db-1.47.0" = {
+ name = "mime-db";
+ packageName = "mime-db";
+ version = "1.47.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz";
+ sha512 = "QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==";
+ };
+ };
+ "mime-types-2.1.30" = {
+ name = "mime-types";
+ packageName = "mime-types";
+ version = "2.1.30";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz";
+ sha512 = "crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==";
+ };
+ };
+ "mimic-fn-2.1.0" = {
+ name = "mimic-fn";
+ packageName = "mimic-fn";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz";
+ sha512 = "OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==";
+ };
+ };
+ "minimatch-3.0.4" = {
+ name = "minimatch";
+ packageName = "minimatch";
+ version = "3.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
+ sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
+ };
+ };
+ "minimist-1.2.5" = {
+ name = "minimist";
+ packageName = "minimist";
+ version = "1.2.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
+ sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
+ };
+ };
+ "minipass-2.9.0" = {
+ name = "minipass";
+ packageName = "minipass";
+ version = "2.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz";
+ sha512 = "wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==";
+ };
+ };
+ "minizlib-1.3.3" = {
+ name = "minizlib";
+ packageName = "minizlib";
+ version = "1.3.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz";
+ sha512 = "6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==";
+ };
+ };
+ "mkdirp-0.5.5" = {
+ name = "mkdirp";
+ packageName = "mkdirp";
+ version = "0.5.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
+ sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
+ };
+ };
+ "mkdirp-1.0.4" = {
+ name = "mkdirp";
+ packageName = "mkdirp";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz";
+ sha512 = "vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==";
+ };
+ };
+ "mnemonist-0.38.3" = {
+ name = "mnemonist";
+ packageName = "mnemonist";
+ version = "0.38.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz";
+ sha512 = "2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==";
+ };
+ };
+ "ms-2.1.2" = {
+ name = "ms";
+ packageName = "ms";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+ sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
+ };
+ };
+ "mute-stream-0.0.8" = {
+ name = "mute-stream";
+ packageName = "mute-stream";
+ version = "0.0.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz";
+ sha512 = "nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==";
+ };
+ };
+ "native-request-1.0.8" = {
+ name = "native-request";
+ packageName = "native-request";
+ version = "1.0.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz";
+ sha512 = "vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==";
+ };
+ };
+ "natural-compare-1.4.0" = {
+ name = "natural-compare";
+ packageName = "natural-compare";
+ version = "1.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz";
+ sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
+ };
+ };
+ "needle-2.6.0" = {
+ name = "needle";
+ packageName = "needle";
+ version = "2.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz";
+ sha512 = "KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==";
+ };
+ };
+ "neo-async-2.6.2" = {
+ name = "neo-async";
+ packageName = "neo-async";
+ version = "2.6.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz";
+ sha512 = "Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==";
+ };
+ };
+ "nice-try-1.0.5" = {
+ name = "nice-try";
+ packageName = "nice-try";
+ version = "1.0.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz";
+ sha512 = "1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==";
+ };
+ };
+ "node-addon-api-3.1.0" = {
+ name = "node-addon-api";
+ packageName = "node-addon-api";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz";
+ sha512 = "flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==";
+ };
+ };
+ "node-gyp-3.8.0" = {
+ name = "node-gyp";
+ packageName = "node-gyp";
+ version = "3.8.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz";
+ sha512 = "3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==";
+ };
+ };
+ "node-pre-gyp-0.11.0" = {
+ name = "node-pre-gyp";
+ packageName = "node-pre-gyp";
+ version = "0.11.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz";
+ sha512 = "TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==";
+ };
+ };
+ "node-releases-1.1.71" = {
+ name = "node-releases";
+ packageName = "node-releases";
+ version = "1.1.71";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz";
+ sha512 = "zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==";
+ };
+ };
+ "nopt-3.0.6" = {
+ name = "nopt";
+ packageName = "nopt";
+ version = "3.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz";
+ sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
+ };
+ };
+ "nopt-4.0.3" = {
+ name = "nopt";
+ packageName = "nopt";
+ version = "4.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz";
+ sha512 = "CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==";
+ };
+ };
+ "nopt-5.0.0" = {
+ name = "nopt";
+ packageName = "nopt";
+ version = "5.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz";
+ sha512 = "Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==";
+ };
+ };
+ "npm-bundled-1.1.1" = {
+ name = "npm-bundled";
+ packageName = "npm-bundled";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz";
+ sha512 = "gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==";
+ };
+ };
+ "npm-normalize-package-bin-1.0.1" = {
+ name = "npm-normalize-package-bin";
+ packageName = "npm-normalize-package-bin";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz";
+ sha512 = "EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==";
+ };
+ };
+ "npm-packlist-1.4.8" = {
+ name = "npm-packlist";
+ packageName = "npm-packlist";
+ version = "1.4.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz";
+ sha512 = "5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==";
+ };
+ };
+ "npm-run-path-4.0.1" = {
+ name = "npm-run-path";
+ packageName = "npm-run-path";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz";
+ sha512 = "S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==";
+ };
+ };
+ "npmlog-4.1.2" = {
+ name = "npmlog";
+ packageName = "npmlog";
+ version = "4.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
+ sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==";
+ };
+ };
+ "number-is-nan-1.0.1" = {
+ name = "number-is-nan";
+ packageName = "number-is-nan";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
+ sha1 = "097b602b53422a522c1afb8790318336941a011d";
+ };
+ };
+ "oauth-sign-0.9.0" = {
+ name = "oauth-sign";
+ packageName = "oauth-sign";
+ version = "0.9.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
+ sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
+ };
+ };
+ "object-assign-4.1.1" = {
+ name = "object-assign";
+ packageName = "object-assign";
+ version = "4.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
+ sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+ };
+ };
+ "obliterator-1.6.1" = {
+ name = "obliterator";
+ packageName = "obliterator";
+ version = "1.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz";
+ sha512 = "9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==";
+ };
+ };
+ "once-1.4.0" = {
+ name = "once";
+ packageName = "once";
+ version = "1.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+ sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+ };
+ };
+ "onetime-5.1.2" = {
+ name = "onetime";
+ packageName = "onetime";
+ version = "5.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz";
+ sha512 = "kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==";
+ };
+ };
+ "optionator-0.8.3" = {
+ name = "optionator";
+ packageName = "optionator";
+ version = "0.8.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz";
+ sha512 = "+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==";
+ };
+ };
+ "os-homedir-1.0.2" = {
+ name = "os-homedir";
+ packageName = "os-homedir";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
+ sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
+ };
+ };
+ "os-tmpdir-1.0.2" = {
+ name = "os-tmpdir";
+ packageName = "os-tmpdir";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
+ sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
+ };
+ };
+ "osenv-0.1.5" = {
+ name = "osenv";
+ packageName = "osenv";
+ version = "0.1.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
+ sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
+ };
+ };
+ "p-limit-2.3.0" = {
+ name = "p-limit";
+ packageName = "p-limit";
+ version = "2.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz";
+ sha512 = "//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==";
+ };
+ };
+ "p-limit-3.1.0" = {
+ name = "p-limit";
+ packageName = "p-limit";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz";
+ sha512 = "TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==";
+ };
+ };
+ "p-locate-4.1.0" = {
+ name = "p-locate";
+ packageName = "p-locate";
+ version = "4.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz";
+ sha512 = "R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==";
+ };
+ };
+ "p-try-2.2.0" = {
+ name = "p-try";
+ packageName = "p-try";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz";
+ sha512 = "R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==";
+ };
+ };
+ "packet-reader-1.0.0" = {
+ name = "packet-reader";
+ packageName = "packet-reader";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz";
+ sha512 = "HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==";
+ };
+ };
+ "parent-module-1.0.1" = {
+ name = "parent-module";
+ packageName = "parent-module";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz";
+ sha512 = "GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==";
+ };
+ };
+ "path-exists-4.0.0" = {
+ name = "path-exists";
+ packageName = "path-exists";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz";
+ sha512 = "ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==";
+ };
+ };
+ "path-is-absolute-1.0.1" = {
+ name = "path-is-absolute";
+ packageName = "path-is-absolute";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+ sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+ };
+ };
+ "path-key-2.0.1" = {
+ name = "path-key";
+ packageName = "path-key";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz";
+ sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
+ };
+ };
+ "path-key-3.1.1" = {
+ name = "path-key";
+ packageName = "path-key";
+ version = "3.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz";
+ sha512 = "ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==";
+ };
+ };
+ "path-parse-1.0.6" = {
+ name = "path-parse";
+ packageName = "path-parse";
+ version = "1.0.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz";
+ sha512 = "GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==";
+ };
+ };
+ "path-type-4.0.0" = {
+ name = "path-type";
+ packageName = "path-type";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz";
+ sha512 = "gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==";
+ };
+ };
+ "performance-now-2.1.0" = {
+ name = "performance-now";
+ packageName = "performance-now";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
+ sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+ };
+ };
+ "pg-8.6.0" = {
+ name = "pg";
+ packageName = "pg";
+ version = "8.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pg/-/pg-8.6.0.tgz";
+ sha512 = "qNS9u61lqljTDFvmk/N66EeGq3n6Ujzj0FFyNMGQr6XuEv4tgNTXvJQTfJdcvGit5p5/DWPu+wj920hAJFI+QQ==";
+ };
+ };
+ "pg-connection-string-2.5.0" = {
+ name = "pg-connection-string";
+ packageName = "pg-connection-string";
+ version = "2.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz";
+ sha512 = "r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==";
+ };
+ };
+ "pg-int8-1.0.1" = {
+ name = "pg-int8";
+ packageName = "pg-int8";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz";
+ sha512 = "WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==";
+ };
+ };
+ "pg-pool-3.3.0" = {
+ name = "pg-pool";
+ packageName = "pg-pool";
+ version = "3.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pg-pool/-/pg-pool-3.3.0.tgz";
+ sha512 = "0O5huCql8/D6PIRFAlmccjphLYWC+JIzvUhSzXSpGaf+tjTZc4nn+Lr7mLXBbFJfvwbP0ywDv73EiaBsxn7zdg==";
+ };
+ };
+ "pg-protocol-1.5.0" = {
+ name = "pg-protocol";
+ packageName = "pg-protocol";
+ version = "1.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz";
+ sha512 = "muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==";
+ };
+ };
+ "pg-types-2.2.0" = {
+ name = "pg-types";
+ packageName = "pg-types";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz";
+ sha512 = "qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==";
+ };
+ };
+ "pgpass-1.0.4" = {
+ name = "pgpass";
+ packageName = "pgpass";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz";
+ sha512 = "YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==";
+ };
+ };
+ "picomatch-2.2.3" = {
+ name = "picomatch";
+ packageName = "picomatch";
+ version = "2.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz";
+ sha512 = "KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==";
+ };
+ };
+ "pify-4.0.1" = {
+ name = "pify";
+ packageName = "pify";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz";
+ sha512 = "uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==";
+ };
+ };
+ "pkg-dir-4.2.0" = {
+ name = "pkg-dir";
+ packageName = "pkg-dir";
+ version = "4.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz";
+ sha512 = "HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==";
+ };
+ };
+ "postgres-array-2.0.0" = {
+ name = "postgres-array";
+ packageName = "postgres-array";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz";
+ sha512 = "VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==";
+ };
+ };
+ "postgres-bytea-1.0.0" = {
+ name = "postgres-bytea";
+ packageName = "postgres-bytea";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
+ sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
+ };
+ };
+ "postgres-date-1.0.7" = {
+ name = "postgres-date";
+ packageName = "postgres-date";
+ version = "1.0.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz";
+ sha512 = "suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==";
+ };
+ };
+ "postgres-interval-1.2.0" = {
+ name = "postgres-interval";
+ packageName = "postgres-interval";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz";
+ sha512 = "9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==";
+ };
+ };
+ "prelude-ls-1.1.2" = {
+ name = "prelude-ls";
+ packageName = "prelude-ls";
+ version = "1.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
+ sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
+ };
+ };
+ "process-nextick-args-2.0.1" = {
+ name = "process-nextick-args";
+ packageName = "process-nextick-args";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
+ sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
+ };
+ };
+ "progress-2.0.3" = {
+ name = "progress";
+ packageName = "progress";
+ version = "2.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz";
+ sha512 = "7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==";
+ };
+ };
+ "proto-list-1.2.4" = {
+ name = "proto-list";
+ packageName = "proto-list";
+ version = "1.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz";
+ sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
+ };
+ };
+ "prr-1.0.1" = {
+ name = "prr";
+ packageName = "prr";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz";
+ sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
+ };
+ };
+ "pseudomap-1.0.2" = {
+ name = "pseudomap";
+ packageName = "pseudomap";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz";
+ sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
+ };
+ };
+ "psl-1.8.0" = {
+ name = "psl";
+ packageName = "psl";
+ version = "1.8.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
+ sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
+ };
+ };
+ "punycode-2.1.1" = {
+ name = "punycode";
+ packageName = "punycode";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
+ sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
+ };
+ };
+ "qs-6.5.2" = {
+ name = "qs";
+ packageName = "qs";
+ version = "6.5.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
+ sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
+ };
+ };
+ "queue-microtask-1.2.3" = {
+ name = "queue-microtask";
+ packageName = "queue-microtask";
+ version = "1.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz";
+ sha512 = "NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==";
+ };
+ };
+ "randombytes-2.1.0" = {
+ name = "randombytes";
+ packageName = "randombytes";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz";
+ sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==";
+ };
+ };
+ "rc-1.2.8" = {
+ name = "rc";
+ packageName = "rc";
+ version = "1.2.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz";
+ sha512 = "y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==";
+ };
+ };
+ "readable-stream-2.3.7" = {
+ name = "readable-stream";
+ packageName = "readable-stream";
+ version = "2.3.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
+ sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
+ };
+ };
+ "readable-stream-3.6.0" = {
+ name = "readable-stream";
+ packageName = "readable-stream";
+ version = "3.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
+ sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
+ };
+ };
+ "rechoir-0.7.0" = {
+ name = "rechoir";
+ packageName = "rechoir";
+ version = "0.7.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz";
+ sha512 = "ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==";
+ };
+ };
+ "regexpp-2.0.1" = {
+ name = "regexpp";
+ packageName = "regexpp";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz";
+ sha512 = "lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==";
+ };
+ };
+ "regexpp-3.1.0" = {
+ name = "regexpp";
+ packageName = "regexpp";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz";
+ sha512 = "ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==";
+ };
+ };
+ "request-2.88.2" = {
+ name = "request";
+ packageName = "request";
+ version = "2.88.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
+ sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
+ };
+ };
+ "resolve-1.20.0" = {
+ name = "resolve";
+ packageName = "resolve";
+ version = "1.20.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz";
+ sha512 = "wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==";
+ };
+ };
+ "resolve-cwd-3.0.0" = {
+ name = "resolve-cwd";
+ packageName = "resolve-cwd";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz";
+ sha512 = "OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==";
+ };
+ };
+ "resolve-from-4.0.0" = {
+ name = "resolve-from";
+ packageName = "resolve-from";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz";
+ sha512 = "pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==";
+ };
+ };
+ "resolve-from-5.0.0" = {
+ name = "resolve-from";
+ packageName = "resolve-from";
+ version = "5.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz";
+ sha512 = "qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==";
+ };
+ };
+ "restore-cursor-3.1.0" = {
+ name = "restore-cursor";
+ packageName = "restore-cursor";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz";
+ sha512 = "l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==";
+ };
+ };
+ "reusify-1.0.4" = {
+ name = "reusify";
+ packageName = "reusify";
+ version = "1.0.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz";
+ sha512 = "U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==";
+ };
+ };
+ "rimraf-2.6.3" = {
+ name = "rimraf";
+ packageName = "rimraf";
+ version = "2.6.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz";
+ sha512 = "mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==";
+ };
+ };
+ "run-async-2.4.1" = {
+ name = "run-async";
+ packageName = "run-async";
+ version = "2.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz";
+ sha512 = "tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==";
+ };
+ };
+ "run-parallel-1.2.0" = {
+ name = "run-parallel";
+ packageName = "run-parallel";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz";
+ sha512 = "5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==";
+ };
+ };
+ "rxjs-6.6.7" = {
+ name = "rxjs";
+ packageName = "rxjs";
+ version = "6.6.7";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz";
+ sha512 = "hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==";
+ };
+ };
+ "safe-buffer-5.1.2" = {
+ name = "safe-buffer";
+ packageName = "safe-buffer";
+ version = "5.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
+ sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
+ };
+ };
+ "safe-buffer-5.2.1" = {
+ name = "safe-buffer";
+ packageName = "safe-buffer";
+ version = "5.2.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz";
+ sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==";
+ };
+ };
+ "safer-buffer-2.1.2" = {
+ name = "safer-buffer";
+ packageName = "safer-buffer";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
+ sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
+ };
+ };
+ "sax-1.2.4" = {
+ name = "sax";
+ packageName = "sax";
+ version = "1.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
+ sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
+ };
+ };
+ "schema-utils-3.0.0" = {
+ name = "schema-utils";
+ packageName = "schema-utils";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz";
+ sha512 = "6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==";
+ };
+ };
+ "semver-5.3.0" = {
+ name = "semver";
+ packageName = "semver";
+ version = "5.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz";
+ sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
+ };
+ };
+ "semver-5.7.1" = {
+ name = "semver";
+ packageName = "semver";
+ version = "5.7.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz";
+ sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==";
+ };
+ };
+ "semver-6.3.0" = {
+ name = "semver";
+ packageName = "semver";
+ version = "6.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz";
+ sha512 = "b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==";
+ };
+ };
+ "semver-7.3.5" = {
+ name = "semver";
+ packageName = "semver";
+ version = "7.3.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz";
+ sha512 = "PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==";
+ };
+ };
+ "serialize-javascript-5.0.1" = {
+ name = "serialize-javascript";
+ packageName = "serialize-javascript";
+ version = "5.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz";
+ sha512 = "SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==";
+ };
+ };
+ "set-blocking-2.0.0" = {
+ name = "set-blocking";
+ packageName = "set-blocking";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
+ sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
+ };
+ };
+ "shallow-clone-3.0.1" = {
+ name = "shallow-clone";
+ packageName = "shallow-clone";
+ version = "3.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz";
+ sha512 = "/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==";
+ };
+ };
+ "shebang-command-1.2.0" = {
+ name = "shebang-command";
+ packageName = "shebang-command";
+ version = "1.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz";
+ sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
+ };
+ };
+ "shebang-command-2.0.0" = {
+ name = "shebang-command";
+ packageName = "shebang-command";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz";
+ sha512 = "kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==";
+ };
+ };
+ "shebang-regex-1.0.0" = {
+ name = "shebang-regex";
+ packageName = "shebang-regex";
+ version = "1.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz";
+ sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
+ };
+ };
+ "shebang-regex-3.0.0" = {
+ name = "shebang-regex";
+ packageName = "shebang-regex";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz";
+ sha512 = "7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==";
+ };
+ };
+ "sigmund-1.0.1" = {
+ name = "sigmund";
+ packageName = "sigmund";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz";
+ sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
+ };
+ };
+ "signal-exit-3.0.3" = {
+ name = "signal-exit";
+ packageName = "signal-exit";
+ version = "3.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz";
+ sha512 = "VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==";
+ };
+ };
+ "slash-3.0.0" = {
+ name = "slash";
+ packageName = "slash";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz";
+ sha512 = "g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==";
+ };
+ };
+ "slice-ansi-2.1.0" = {
+ name = "slice-ansi";
+ packageName = "slice-ansi";
+ version = "2.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz";
+ sha512 = "Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==";
+ };
+ };
+ "source-list-map-2.0.1" = {
+ name = "source-list-map";
+ packageName = "source-list-map";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz";
+ sha512 = "qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==";
+ };
+ };
+ "source-map-0.6.1" = {
+ name = "source-map";
+ packageName = "source-map";
+ version = "0.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
+ sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
+ };
+ };
+ "source-map-0.7.3" = {
+ name = "source-map";
+ packageName = "source-map";
+ version = "0.7.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz";
+ sha512 = "CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==";
+ };
+ };
+ "source-map-support-0.5.19" = {
+ name = "source-map-support";
+ packageName = "source-map-support";
+ version = "0.5.19";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz";
+ sha512 = "Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==";
+ };
+ };
+ "spectre.css-0.5.9" = {
+ name = "spectre.css";
+ packageName = "spectre.css";
+ version = "0.5.9";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/spectre.css/-/spectre.css-0.5.9.tgz";
+ sha512 = "9jUqwZmCnvflrxFGcK+ize43TvjwDjqMwZPVubEtSIHzvinH0TBUESm1LcOJx3Ur7bdPaeOHQIjOqBl1Y5kLFw==";
+ };
+ };
+ "split2-3.2.2" = {
+ name = "split2";
+ packageName = "split2";
+ version = "3.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz";
+ sha512 = "9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==";
+ };
+ };
+ "sprintf-js-1.0.3" = {
+ name = "sprintf-js";
+ packageName = "sprintf-js";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
+ sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+ };
+ };
+ "sqlite3-5.0.2" = {
+ name = "sqlite3";
+ packageName = "sqlite3";
+ version = "5.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz";
+ sha512 = "1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==";
+ };
+ };
+ "sshpk-1.16.1" = {
+ name = "sshpk";
+ packageName = "sshpk";
+ version = "1.16.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
+ sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
+ };
+ };
+ "string-width-1.0.2" = {
+ name = "string-width";
+ packageName = "string-width";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
+ sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
+ };
+ };
+ "string-width-2.1.1" = {
+ name = "string-width";
+ packageName = "string-width";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz";
+ sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==";
+ };
+ };
+ "string-width-3.1.0" = {
+ name = "string-width";
+ packageName = "string-width";
+ version = "3.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz";
+ sha512 = "vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==";
+ };
+ };
+ "string-width-4.2.2" = {
+ name = "string-width";
+ packageName = "string-width";
+ version = "4.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz";
+ sha512 = "XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==";
+ };
+ };
+ "string_decoder-1.1.1" = {
+ name = "string_decoder";
+ packageName = "string_decoder";
+ version = "1.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
+ sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
+ };
+ };
+ "string_decoder-1.3.0" = {
+ name = "string_decoder";
+ packageName = "string_decoder";
+ version = "1.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz";
+ sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==";
+ };
+ };
+ "strip-ansi-3.0.1" = {
+ name = "strip-ansi";
+ packageName = "strip-ansi";
+ version = "3.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
+ sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+ };
+ };
+ "strip-ansi-4.0.0" = {
+ name = "strip-ansi";
+ packageName = "strip-ansi";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
+ sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+ };
+ };
+ "strip-ansi-5.2.0" = {
+ name = "strip-ansi";
+ packageName = "strip-ansi";
+ version = "5.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz";
+ sha512 = "DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==";
+ };
+ };
+ "strip-ansi-6.0.0" = {
+ name = "strip-ansi";
+ packageName = "strip-ansi";
+ version = "6.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz";
+ sha512 = "AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==";
+ };
+ };
+ "strip-final-newline-2.0.0" = {
+ name = "strip-final-newline";
+ packageName = "strip-final-newline";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz";
+ sha512 = "BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==";
+ };
+ };
+ "strip-json-comments-2.0.1" = {
+ name = "strip-json-comments";
+ packageName = "strip-json-comments";
+ version = "2.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
+ sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
+ };
+ };
+ "strip-json-comments-3.1.1" = {
+ name = "strip-json-comments";
+ packageName = "strip-json-comments";
+ version = "3.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz";
+ sha512 = "6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==";
+ };
+ };
+ "supports-color-5.5.0" = {
+ name = "supports-color";
+ packageName = "supports-color";
+ version = "5.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz";
+ sha512 = "QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==";
+ };
+ };
+ "supports-color-7.2.0" = {
+ name = "supports-color";
+ packageName = "supports-color";
+ version = "7.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz";
+ sha512 = "qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==";
+ };
+ };
+ "table-5.4.6" = {
+ name = "table";
+ packageName = "table";
+ version = "5.4.6";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/table/-/table-5.4.6.tgz";
+ sha512 = "wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==";
+ };
+ };
+ "tapable-2.2.0" = {
+ name = "tapable";
+ packageName = "tapable";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz";
+ sha512 = "FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==";
+ };
+ };
+ "tar-2.2.2" = {
+ name = "tar";
+ packageName = "tar";
+ version = "2.2.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz";
+ sha512 = "FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==";
+ };
+ };
+ "tar-4.4.13" = {
+ name = "tar";
+ packageName = "tar";
+ version = "4.4.13";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz";
+ sha512 = "w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==";
+ };
+ };
+ "terser-5.6.1" = {
+ name = "terser";
+ packageName = "terser";
+ version = "5.6.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz";
+ sha512 = "yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==";
+ };
+ };
+ "terser-webpack-plugin-5.1.1" = {
+ name = "terser-webpack-plugin";
+ packageName = "terser-webpack-plugin";
+ version = "5.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz";
+ sha512 = "5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==";
+ };
+ };
+ "text-table-0.2.0" = {
+ name = "text-table";
+ packageName = "text-table";
+ version = "0.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz";
+ sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
+ };
+ };
+ "through-2.3.8" = {
+ name = "through";
+ packageName = "through";
+ version = "2.3.8";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
+ sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
+ };
+ };
+ "tmp-0.0.33" = {
+ name = "tmp";
+ packageName = "tmp";
+ version = "0.0.33";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz";
+ sha512 = "jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==";
+ };
+ };
+ "to-regex-range-5.0.1" = {
+ name = "to-regex-range";
+ packageName = "to-regex-range";
+ version = "5.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz";
+ sha512 = "65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==";
+ };
+ };
+ "tough-cookie-2.5.0" = {
+ name = "tough-cookie";
+ packageName = "tough-cookie";
+ version = "2.5.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
+ sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
+ };
+ };
+ "tslib-1.14.1" = {
+ name = "tslib";
+ packageName = "tslib";
+ version = "1.14.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz";
+ sha512 = "Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==";
+ };
+ };
+ "tsutils-3.21.0" = {
+ name = "tsutils";
+ packageName = "tsutils";
+ version = "3.21.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz";
+ sha512 = "mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==";
+ };
+ };
+ "tunnel-agent-0.6.0" = {
+ name = "tunnel-agent";
+ packageName = "tunnel-agent";
+ version = "0.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+ sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+ };
+ };
+ "tweetnacl-0.14.5" = {
+ name = "tweetnacl";
+ packageName = "tweetnacl";
+ version = "0.14.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
+ sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+ };
+ };
+ "type-check-0.3.2" = {
+ name = "type-check";
+ packageName = "type-check";
+ version = "0.3.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
+ sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
+ };
+ };
+ "type-fest-0.21.3" = {
+ name = "type-fest";
+ packageName = "type-fest";
+ version = "0.21.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz";
+ sha512 = "t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==";
+ };
+ };
+ "type-fest-0.8.1" = {
+ name = "type-fest";
+ packageName = "type-fest";
+ version = "0.8.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz";
+ sha512 = "4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==";
+ };
+ };
+ "typescript-4.2.4" = {
+ name = "typescript";
+ packageName = "typescript";
+ version = "4.2.4";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz";
+ sha512 = "V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==";
+ };
+ };
+ "uri-js-4.4.1" = {
+ name = "uri-js";
+ packageName = "uri-js";
+ version = "4.4.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz";
+ sha512 = "7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==";
+ };
+ };
+ "util-deprecate-1.0.2" = {
+ name = "util-deprecate";
+ packageName = "util-deprecate";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
+ sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+ };
+ };
+ "uuid-3.4.0" = {
+ name = "uuid";
+ packageName = "uuid";
+ version = "3.4.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
+ sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
+ };
+ };
+ "v8-compile-cache-2.3.0" = {
+ name = "v8-compile-cache";
+ packageName = "v8-compile-cache";
+ version = "2.3.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz";
+ sha512 = "l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==";
+ };
+ };
+ "verror-1.10.0" = {
+ name = "verror";
+ packageName = "verror";
+ version = "1.10.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
+ sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+ };
+ };
+ "vue-2.6.10" = {
+ name = "vue";
+ packageName = "vue";
+ version = "2.6.10";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz";
+ sha512 = "ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==";
+ };
+ };
+ "vue-eslint-parser-7.6.0" = {
+ name = "vue-eslint-parser";
+ packageName = "vue-eslint-parser";
+ version = "7.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz";
+ sha512 = "QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==";
+ };
+ };
+ "vue-template-compiler-2.6.10" = {
+ name = "vue-template-compiler";
+ packageName = "vue-template-compiler";
+ version = "2.6.10";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz";
+ sha512 = "jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==";
+ };
+ };
+ "watchpack-2.1.1" = {
+ name = "watchpack";
+ packageName = "watchpack";
+ version = "2.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz";
+ sha512 = "Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==";
+ };
+ };
+ "webpack-5.33.2" = {
+ name = "webpack";
+ packageName = "webpack";
+ version = "5.33.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/webpack/-/webpack-5.33.2.tgz";
+ sha512 = "X4b7F1sYBmJx8mlh2B7mV5szEkE0jYNJ2y3akgAP0ERi0vLCG1VvdsIxt8lFd4st6SUy0lf7W0CCQS566MBpJg==";
+ };
+ };
+ "webpack-cli-4.6.0" = {
+ name = "webpack-cli";
+ packageName = "webpack-cli";
+ version = "4.6.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.6.0.tgz";
+ sha512 = "9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==";
+ };
+ };
+ "webpack-merge-5.7.3" = {
+ name = "webpack-merge";
+ packageName = "webpack-merge";
+ version = "5.7.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz";
+ sha512 = "6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==";
+ };
+ };
+ "webpack-sources-2.2.0" = {
+ name = "webpack-sources";
+ packageName = "webpack-sources";
+ version = "2.2.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz";
+ sha512 = "bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==";
+ };
+ };
+ "which-1.3.1" = {
+ name = "which";
+ packageName = "which";
+ version = "1.3.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz";
+ sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==";
+ };
+ };
+ "which-2.0.2" = {
+ name = "which";
+ packageName = "which";
+ version = "2.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/which/-/which-2.0.2.tgz";
+ sha512 = "BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==";
+ };
+ };
+ "wide-align-1.1.3" = {
+ name = "wide-align";
+ packageName = "wide-align";
+ version = "1.1.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
+ sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
+ };
+ };
+ "wildcard-2.0.0" = {
+ name = "wildcard";
+ packageName = "wildcard";
+ version = "2.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz";
+ sha512 = "JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==";
+ };
+ };
+ "word-wrap-1.2.3" = {
+ name = "word-wrap";
+ packageName = "word-wrap";
+ version = "1.2.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz";
+ sha512 = "Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==";
+ };
+ };
+ "wrappy-1.0.2" = {
+ name = "wrappy";
+ packageName = "wrappy";
+ version = "1.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+ sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+ };
+ };
+ "write-1.0.3" = {
+ name = "write";
+ packageName = "write";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/write/-/write-1.0.3.tgz";
+ sha512 = "/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==";
+ };
+ };
+ "xtend-4.0.2" = {
+ name = "xtend";
+ packageName = "xtend";
+ version = "4.0.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
+ sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
+ };
+ };
+ "yallist-2.1.2" = {
+ name = "yallist";
+ packageName = "yallist";
+ version = "2.1.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz";
+ sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
+ };
+ };
+ "yallist-3.1.1" = {
+ name = "yallist";
+ packageName = "yallist";
+ version = "3.1.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz";
+ sha512 = "a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==";
+ };
+ };
+ "yallist-4.0.0" = {
+ name = "yallist";
+ packageName = "yallist";
+ version = "4.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz";
+ sha512 = "3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==";
+ };
+ };
+ "yocto-queue-0.1.0" = {
+ name = "yocto-queue";
+ packageName = "yocto-queue";
+ version = "0.1.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz";
+ sha512 = "rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==";
+ };
+ };
+ };
+ args = {
+ name = "terraforming-mars";
+ packageName = "terraforming-mars";
+ version = "1.0.0";
+ inherit src;
+ dependencies = [
+ sources."@babel/code-frame-7.12.13"
+ sources."@babel/helper-validator-identifier-7.12.11"
+ sources."@babel/highlight-7.13.10"
+ sources."@discoveryjs/json-ext-0.5.2"
+ sources."@nodelib/fs.scandir-2.1.4"
+ sources."@nodelib/fs.stat-2.0.4"
+ sources."@nodelib/fs.walk-1.2.6"
+ sources."@types/eslint-7.2.10"
+ sources."@types/eslint-scope-3.7.0"
+ sources."@types/estree-0.0.46"
+ sources."@types/json-schema-7.0.7"
+ sources."@types/node-10.17.58"
+ sources."@types/pg-7.14.11"
+ sources."@types/sqlite3-3.1.7"
+ sources."@typescript-eslint/eslint-plugin-4.22.0"
+ sources."@typescript-eslint/experimental-utils-4.22.0"
+ sources."@typescript-eslint/parser-4.22.0"
+ sources."@typescript-eslint/scope-manager-4.22.0"
+ sources."@typescript-eslint/types-4.22.0"
+ sources."@typescript-eslint/typescript-estree-4.22.0"
+ sources."@typescript-eslint/visitor-keys-4.22.0"
+ sources."@webassemblyjs/ast-1.11.0"
+ sources."@webassemblyjs/floating-point-hex-parser-1.11.0"
+ sources."@webassemblyjs/helper-api-error-1.11.0"
+ sources."@webassemblyjs/helper-buffer-1.11.0"
+ sources."@webassemblyjs/helper-numbers-1.11.0"
+ sources."@webassemblyjs/helper-wasm-bytecode-1.11.0"
+ sources."@webassemblyjs/helper-wasm-section-1.11.0"
+ sources."@webassemblyjs/ieee754-1.11.0"
+ sources."@webassemblyjs/leb128-1.11.0"
+ sources."@webassemblyjs/utf8-1.11.0"
+ sources."@webassemblyjs/wasm-edit-1.11.0"
+ sources."@webassemblyjs/wasm-gen-1.11.0"
+ sources."@webassemblyjs/wasm-opt-1.11.0"
+ sources."@webassemblyjs/wasm-parser-1.11.0"
+ sources."@webassemblyjs/wast-printer-1.11.0"
+ sources."@webpack-cli/configtest-1.0.2"
+ sources."@webpack-cli/info-1.2.3"
+ sources."@webpack-cli/serve-1.3.1"
+ sources."@xtuc/ieee754-1.2.0"
+ sources."@xtuc/long-4.2.2"
+ sources."abbrev-1.1.1"
+ sources."acorn-7.4.1"
+ sources."acorn-jsx-5.3.1"
+ sources."ajv-6.12.6"
+ sources."ajv-keywords-3.5.2"
+ sources."ansi-colors-4.1.1"
+ (sources."ansi-escapes-4.3.2" // {
+ dependencies = [
+ sources."type-fest-0.21.3"
+ ];
+ })
+ sources."ansi-regex-4.1.0"
+ sources."ansi-styles-3.2.1"
+ sources."aproba-1.2.0"
+ (sources."are-we-there-yet-1.1.5" // {
+ dependencies = [
+ sources."readable-stream-2.3.7"
+ sources."string_decoder-1.1.1"
+ ];
+ })
+ sources."argparse-1.0.10"
+ sources."array-union-2.1.0"
+ sources."asn1-0.2.4"
+ sources."assert-plus-1.0.0"
+ sources."astral-regex-1.0.0"
+ sources."asynckit-0.4.0"
+ sources."aws-sign2-0.7.0"
+ sources."aws4-1.11.0"
+ sources."balanced-match-1.0.2"
+ sources."bcrypt-pbkdf-1.0.2"
+ sources."block-stream-0.0.9"
+ sources."brace-expansion-1.1.11"
+ sources."braces-3.0.2"
+ sources."browserslist-4.16.4"
+ sources."buffer-from-1.1.1"
+ sources."buffer-writer-2.0.0"
+ sources."callsites-3.1.0"
+ sources."caniuse-lite-1.0.30001209"
+ sources."caseless-0.12.0"
+ sources."chalk-2.4.2"
+ sources."chardet-0.7.0"
+ sources."chownr-1.1.4"
+ sources."chrome-trace-event-1.0.3"
+ sources."cli-cursor-3.1.0"
+ sources."cli-width-3.0.0"
+ (sources."clone-deep-4.0.1" // {
+ dependencies = [
+ sources."kind-of-6.0.3"
+ ];
+ })
+ sources."code-point-at-1.1.0"
+ sources."color-convert-1.9.3"
+ sources."color-name-1.1.3"
+ sources."colorette-1.2.2"
+ sources."combined-stream-1.0.8"
+ sources."commander-2.20.3"
+ sources."compression-webpack-plugin-7.1.2"
+ sources."concat-map-0.0.1"
+ sources."config-chain-1.1.12"
+ sources."console-control-strings-1.1.0"
+ sources."console-stamp-3.0.0-rc4.2"
+ sources."copy-anything-2.0.3"
+ sources."core-util-is-1.0.2"
+ (sources."cross-spawn-6.0.5" // {
+ dependencies = [
+ sources."semver-5.7.1"
+ ];
+ })
+ sources."dashdash-1.14.1"
+ sources."dateformat-3.0.3"
+ sources."de-indent-1.0.2"
+ sources."debug-4.3.1"
+ sources."deep-extend-0.6.0"
+ sources."deep-is-0.1.3"
+ sources."delayed-stream-1.0.0"
+ sources."delegates-1.0.0"
+ sources."detect-libc-1.0.3"
+ sources."dialog-polyfill-0.5.6"
+ sources."dir-glob-3.0.1"
+ sources."doctrine-3.0.0"
+ sources."dotenv-8.2.0"
+ sources."ecc-jsbn-0.1.2"
+ (sources."editorconfig-0.15.3" // {
+ dependencies = [
+ sources."semver-5.7.1"
+ ];
+ })
+ sources."electron-to-chromium-1.3.717"
+ sources."emoji-regex-8.0.0"
+ sources."enhanced-resolve-5.7.0"
+ sources."enquirer-2.3.6"
+ sources."envinfo-7.8.1"
+ sources."errno-0.1.8"
+ sources."es-module-lexer-0.4.1"
+ sources."escalade-3.1.1"
+ sources."escape-string-regexp-1.0.5"
+ (sources."eslint-6.8.0" // {
+ dependencies = [
+ sources."eslint-utils-1.4.3"
+ sources."eslint-visitor-keys-1.3.0"
+ sources."regexpp-2.0.1"
+ sources."semver-6.3.0"
+ ];
+ })
+ sources."eslint-config-google-0.14.0"
+ (sources."eslint-plugin-vue-6.2.2" // {
+ dependencies = [
+ sources."semver-5.7.1"
+ ];
+ })
+ sources."eslint-scope-5.1.1"
+ (sources."eslint-utils-2.1.0" // {
+ dependencies = [
+ sources."eslint-visitor-keys-1.3.0"
+ ];
+ })
+ sources."eslint-visitor-keys-2.0.0"
+ (sources."espree-6.2.1" // {
+ dependencies = [
+ sources."eslint-visitor-keys-1.3.0"
+ ];
+ })
+ sources."esprima-4.0.1"
+ (sources."esquery-1.4.0" // {
+ dependencies = [
+ sources."estraverse-5.2.0"
+ ];
+ })
+ (sources."esrecurse-4.3.0" // {
+ dependencies = [
+ sources."estraverse-5.2.0"
+ ];
+ })
+ sources."estraverse-4.3.0"
+ sources."esutils-2.0.3"
+ sources."events-3.3.0"
+ (sources."execa-5.0.0" // {
+ dependencies = [
+ sources."cross-spawn-7.0.3"
+ sources."is-stream-2.0.0"
+ sources."path-key-3.1.1"
+ sources."shebang-command-2.0.0"
+ sources."shebang-regex-3.0.0"
+ sources."which-2.0.2"
+ ];
+ })
+ sources."extend-3.0.2"
+ sources."external-editor-3.1.0"
+ sources."extsprintf-1.3.0"
+ sources."fast-deep-equal-3.1.3"
+ sources."fast-glob-3.2.5"
+ sources."fast-json-stable-stringify-2.1.0"
+ sources."fast-levenshtein-2.0.6"
+ sources."fastest-levenshtein-1.0.12"
+ sources."fastq-1.11.0"
+ sources."figures-3.2.0"
+ sources."file-entry-cache-5.0.1"
+ sources."fill-range-7.0.1"
+ sources."flat-cache-2.0.1"
+ sources."flatted-2.0.2"
+ sources."forever-agent-0.6.1"
+ sources."form-data-2.3.3"
+ sources."fs-minipass-1.2.7"
+ sources."fs.realpath-1.0.0"
+ sources."fstream-1.0.12"
+ sources."function-bind-1.1.1"
+ sources."functional-red-black-tree-1.0.1"
+ (sources."gauge-2.7.4" // {
+ dependencies = [
+ sources."ansi-regex-2.1.1"
+ sources."is-fullwidth-code-point-1.0.0"
+ sources."string-width-1.0.2"
+ sources."strip-ansi-3.0.1"
+ ];
+ })
+ sources."get-stream-6.0.1"
+ sources."getpass-0.1.7"
+ sources."glob-7.1.6"
+ sources."glob-parent-5.1.2"
+ sources."glob-to-regexp-0.4.1"
+ sources."globals-12.4.0"
+ (sources."globby-11.0.3" // {
+ dependencies = [
+ sources."ignore-5.1.8"
+ ];
+ })
+ sources."graceful-fs-4.2.6"
+ sources."har-schema-2.0.0"
+ sources."har-validator-5.1.5"
+ sources."has-1.0.3"
+ sources."has-flag-3.0.0"
+ sources."has-unicode-2.0.1"
+ sources."he-1.2.0"
+ sources."http-signature-1.2.0"
+ sources."human-signals-2.1.0"
+ sources."iconv-lite-0.4.24"
+ sources."ignore-4.0.6"
+ sources."ignore-walk-3.0.3"
+ sources."image-size-0.5.5"
+ sources."import-fresh-3.3.0"
+ (sources."import-local-3.0.2" // {
+ dependencies = [
+ sources."find-up-4.1.0"
+ sources."locate-path-5.0.0"
+ sources."p-limit-2.3.0"
+ sources."p-locate-4.1.0"
+ sources."pkg-dir-4.2.0"
+ ];
+ })
+ sources."imurmurhash-0.1.4"
+ sources."inflight-1.0.6"
+ sources."inherits-2.0.4"
+ sources."ini-1.3.8"
+ (sources."inquirer-7.3.3" // {
+ dependencies = [
+ sources."ansi-regex-5.0.0"
+ sources."ansi-styles-4.3.0"
+ sources."chalk-4.1.0"
+ sources."color-convert-2.0.1"
+ sources."color-name-1.1.4"
+ sources."has-flag-4.0.0"
+ sources."strip-ansi-6.0.0"
+ sources."supports-color-7.2.0"
+ ];
+ })
+ sources."interpret-2.2.0"
+ sources."is-core-module-2.2.0"
+ sources."is-extglob-2.1.1"
+ sources."is-fullwidth-code-point-3.0.0"
+ sources."is-glob-4.0.1"
+ sources."is-number-7.0.0"
+ sources."is-plain-object-2.0.4"
+ sources."is-typedarray-1.0.0"
+ sources."is-what-3.14.1"
+ sources."isarray-1.0.0"
+ sources."isexe-2.0.0"
+ sources."isobject-3.0.1"
+ sources."isstream-0.1.2"
+ (sources."jest-worker-26.6.2" // {
+ dependencies = [
+ sources."has-flag-4.0.0"
+ sources."supports-color-7.2.0"
+ ];
+ })
+ (sources."js-beautify-1.13.13" // {
+ dependencies = [
+ sources."mkdirp-1.0.4"
+ ];
+ })
+ sources."js-tokens-4.0.0"
+ sources."js-yaml-3.14.1"
+ sources."jsbn-0.1.1"
+ sources."json-parse-better-errors-1.0.2"
+ sources."json-schema-0.2.3"
+ sources."json-schema-traverse-0.4.1"
+ sources."json-stable-stringify-without-jsonify-1.0.1"
+ sources."json-stringify-safe-5.0.1"
+ sources."jsprim-1.4.1"
+ sources."less-3.13.1"
+ sources."levn-0.3.0"
+ sources."loader-runner-4.2.0"
+ sources."lodash-4.17.21"
+ sources."lru-cache-4.1.5"
+ (sources."make-dir-2.1.0" // {
+ dependencies = [
+ sources."semver-5.7.1"
+ ];
+ })
+ sources."merge-stream-2.0.0"
+ sources."merge2-1.4.1"
+ sources."micromatch-4.0.4"
+ sources."mime-1.6.0"
+ sources."mime-db-1.47.0"
+ sources."mime-types-2.1.30"
+ sources."mimic-fn-2.1.0"
+ sources."minimatch-3.0.4"
+ sources."minimist-1.2.5"
+ (sources."minipass-2.9.0" // {
+ dependencies = [
+ sources."yallist-3.1.1"
+ ];
+ })
+ sources."minizlib-1.3.3"
+ sources."mkdirp-0.5.5"
+ sources."mnemonist-0.38.3"
+ sources."ms-2.1.2"
+ sources."mute-stream-0.0.8"
+ sources."native-request-1.0.8"
+ sources."natural-compare-1.4.0"
+ (sources."needle-2.6.0" // {
+ dependencies = [
+ sources."debug-3.2.7"
+ ];
+ })
+ sources."neo-async-2.6.2"
+ sources."nice-try-1.0.5"
+ sources."node-addon-api-3.1.0"
+ (sources."node-gyp-3.8.0" // {
+ dependencies = [
+ sources."nopt-3.0.6"
+ sources."semver-5.3.0"
+ ];
+ })
+ (sources."node-pre-gyp-0.11.0" // {
+ dependencies = [
+ sources."nopt-4.0.3"
+ sources."semver-5.7.1"
+ sources."tar-4.4.13"
+ sources."yallist-3.1.1"
+ ];
+ })
+ sources."node-releases-1.1.71"
+ sources."nopt-5.0.0"
+ sources."npm-bundled-1.1.1"
+ sources."npm-normalize-package-bin-1.0.1"
+ sources."npm-packlist-1.4.8"
+ (sources."npm-run-path-4.0.1" // {
+ dependencies = [
+ sources."path-key-3.1.1"
+ ];
+ })
+ sources."npmlog-4.1.2"
+ sources."number-is-nan-1.0.1"
+ sources."oauth-sign-0.9.0"
+ sources."object-assign-4.1.1"
+ sources."obliterator-1.6.1"
+ sources."once-1.4.0"
+ sources."onetime-5.1.2"
+ sources."optionator-0.8.3"
+ sources."os-homedir-1.0.2"
+ sources."os-tmpdir-1.0.2"
+ sources."osenv-0.1.5"
+ sources."p-limit-3.1.0"
+ sources."p-try-2.2.0"
+ sources."packet-reader-1.0.0"
+ sources."parent-module-1.0.1"
+ sources."path-exists-4.0.0"
+ sources."path-is-absolute-1.0.1"
+ sources."path-key-2.0.1"
+ sources."path-parse-1.0.6"
+ sources."path-type-4.0.0"
+ sources."performance-now-2.1.0"
+ sources."pg-8.6.0"
+ sources."pg-connection-string-2.5.0"
+ sources."pg-int8-1.0.1"
+ sources."pg-pool-3.3.0"
+ sources."pg-protocol-1.5.0"
+ sources."pg-types-2.2.0"
+ sources."pgpass-1.0.4"
+ sources."picomatch-2.2.3"
+ sources."pify-4.0.1"
+ sources."postgres-array-2.0.0"
+ sources."postgres-bytea-1.0.0"
+ sources."postgres-date-1.0.7"
+ sources."postgres-interval-1.2.0"
+ sources."prelude-ls-1.1.2"
+ sources."process-nextick-args-2.0.1"
+ sources."progress-2.0.3"
+ sources."proto-list-1.2.4"
+ sources."prr-1.0.1"
+ sources."pseudomap-1.0.2"
+ sources."psl-1.8.0"
+ sources."punycode-2.1.1"
+ sources."qs-6.5.2"
+ sources."queue-microtask-1.2.3"
+ sources."randombytes-2.1.0"
+ (sources."rc-1.2.8" // {
+ dependencies = [
+ sources."strip-json-comments-2.0.1"
+ ];
+ })
+ sources."readable-stream-3.6.0"
+ sources."rechoir-0.7.0"
+ sources."regexpp-3.1.0"
+ (sources."request-2.88.2" // {
+ dependencies = [
+ sources."tough-cookie-2.5.0"
+ ];
+ })
+ sources."resolve-1.20.0"
+ (sources."resolve-cwd-3.0.0" // {
+ dependencies = [
+ sources."resolve-from-5.0.0"
+ ];
+ })
+ sources."resolve-from-4.0.0"
+ sources."restore-cursor-3.1.0"
+ sources."reusify-1.0.4"
+ sources."rimraf-2.6.3"
+ sources."run-async-2.4.1"
+ sources."run-parallel-1.2.0"
+ sources."rxjs-6.6.7"
+ sources."safe-buffer-5.1.2"
+ sources."safer-buffer-2.1.2"
+ sources."sax-1.2.4"
+ sources."schema-utils-3.0.0"
+ (sources."semver-7.3.5" // {
+ dependencies = [
+ sources."lru-cache-6.0.0"
+ sources."yallist-4.0.0"
+ ];
+ })
+ sources."serialize-javascript-5.0.1"
+ sources."set-blocking-2.0.0"
+ (sources."shallow-clone-3.0.1" // {
+ dependencies = [
+ sources."kind-of-6.0.3"
+ ];
+ })
+ sources."shebang-command-1.2.0"
+ sources."shebang-regex-1.0.0"
+ sources."sigmund-1.0.1"
+ sources."signal-exit-3.0.3"
+ sources."slash-3.0.0"
+ (sources."slice-ansi-2.1.0" // {
+ dependencies = [
+ sources."is-fullwidth-code-point-2.0.0"
+ ];
+ })
+ sources."source-list-map-2.0.1"
+ sources."source-map-0.6.1"
+ sources."source-map-support-0.5.19"
+ sources."spectre.css-0.5.9"
+ sources."split2-3.2.2"
+ sources."sprintf-js-1.0.3"
+ sources."sqlite3-5.0.2"
+ sources."sshpk-1.16.1"
+ (sources."string-width-4.2.2" // {
+ dependencies = [
+ sources."ansi-regex-5.0.0"
+ sources."strip-ansi-6.0.0"
+ ];
+ })
+ (sources."string_decoder-1.3.0" // {
+ dependencies = [
+ sources."safe-buffer-5.2.1"
+ ];
+ })
+ sources."strip-ansi-5.2.0"
+ sources."strip-final-newline-2.0.0"
+ sources."strip-json-comments-3.1.1"
+ sources."supports-color-5.5.0"
+ (sources."table-5.4.6" // {
+ dependencies = [
+ sources."emoji-regex-7.0.3"
+ sources."is-fullwidth-code-point-2.0.0"
+ sources."string-width-3.1.0"
+ ];
+ })
+ sources."tapable-2.2.0"
+ sources."tar-2.2.2"
+ (sources."terser-5.6.1" // {
+ dependencies = [
+ sources."source-map-0.7.3"
+ ];
+ })
+ sources."terser-webpack-plugin-5.1.1"
+ sources."text-table-0.2.0"
+ sources."through-2.3.8"
+ sources."tmp-0.0.33"
+ sources."to-regex-range-5.0.1"
+ sources."tslib-1.14.1"
+ sources."tsutils-3.21.0"
+ sources."tunnel-agent-0.6.0"
+ sources."tweetnacl-0.14.5"
+ sources."type-check-0.3.2"
+ sources."type-fest-0.8.1"
+ sources."typescript-4.2.4"
+ sources."uri-js-4.4.1"
+ sources."util-deprecate-1.0.2"
+ sources."uuid-3.4.0"
+ sources."v8-compile-cache-2.3.0"
+ sources."verror-1.10.0"
+ sources."vue-2.6.10"
+ (sources."vue-eslint-parser-7.6.0" // {
+ dependencies = [
+ sources."eslint-visitor-keys-1.3.0"
+ ];
+ })
+ sources."vue-template-compiler-2.6.10"
+ sources."watchpack-2.1.1"
+ (sources."webpack-5.33.2" // {
+ dependencies = [
+ sources."acorn-8.1.1"
+ ];
+ })
+ (sources."webpack-cli-4.6.0" // {
+ dependencies = [
+ sources."commander-7.2.0"
+ ];
+ })
+ sources."webpack-merge-5.7.3"
+ sources."webpack-sources-2.2.0"
+ sources."which-1.3.1"
+ (sources."wide-align-1.1.3" // {
+ dependencies = [
+ sources."ansi-regex-3.0.0"
+ sources."is-fullwidth-code-point-2.0.0"
+ sources."string-width-2.1.1"
+ sources."strip-ansi-4.0.0"
+ ];
+ })
+ sources."wildcard-2.0.0"
+ sources."word-wrap-1.2.3"
+ sources."wrappy-1.0.2"
+ sources."write-1.0.3"
+ sources."xtend-4.0.2"
+ sources."yallist-2.1.2"
+ sources."yocto-queue-0.1.0"
+ ];
+ buildInputs = globalBuildInputs;
+ meta = {
+ description = "Terraforming Mars Game";
+ homepage = "https://github.com/bafolts/terraforming-mars#readme";
+ license = "ISC";
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = false;
+ };
+in
+{
+ args = args;
+ sources = sources;
+ tarball = nodeEnv.buildNodeSourceDist args;
+ package = nodeEnv.buildNodePackage args;
+ shell = nodeEnv.buildNodeShell args;
+}
diff --git a/systems/eldiron/websites/games/terraforming-mars/terraforming-mars.nix b/systems/eldiron/websites/games/terraforming-mars/terraforming-mars.nix
new file mode 100644
index 0000000..f190221
--- /dev/null
+++ b/systems/eldiron/websites/games/terraforming-mars/terraforming-mars.nix
@@ -0,0 +1,39 @@
+{ fetchgit, runCommand, callPackage, mylibs, nodePackages, nodejs_16, git }:
+let
+ source = fetchgit {
+ url = "https://github.com/bafolts/terraforming-mars";
+ rev = "25b3f80e276cc0c1fc283a78b6ae94b13c545ab6";
+ sha256 = "03xcwvxv2mlmswngklzqp3lf30hgkvdilqq7p1z4h8xmy50cy12k";
+ leaveDotGit = true;
+ fetchSubmodules = true;
+ };
+ patchedSource = runCommand "patch-source" {} ''
+ cp -r ${source} $out
+ chmod -R u+w $out
+ sed -i -e 's/"lockfileVersion": 2,/"lockfileVersion": 1,/' $out/package-lock.json
+ '';
+ packages = callPackage ./node-packages.nix {
+ src = patchedSource;
+ nodeEnv = callPackage mylibs.nodeEnv { nodejs = nodejs_16; };
+ globalBuildInputs = [ nodejs_16.pkgs.node-pre-gyp ];
+ };
+ terraforming-mars = runCommand "terraforming-mars" {
+ buildInputs = [ nodejs_16 git ];
+ } ''
+ cp -r ${source} ./source
+ chmod -R u+w source
+ cd source
+ patch -p1 < ${./immae-assets.patch}
+ ln -s ${packages.package}/lib/node_modules/terraforming-mars/node_modules .
+ # See https://stackoverflow.com/questions/74548318/how-to-resolve-error-error0308010cdigital-envelope-routinesunsupported-no
+ export NODE_OPTIONS=--openssl-legacy-provider
+ npm run build
+ mkdir $out
+ cp -a build $out/
+ cp -a assets $out/
+ cp package.json $out/
+ ln -s ${packages.package}/lib/node_modules/terraforming-mars/node_modules $out
+ ln -s /var/lib/terraforming-mars/db $out/db
+ '';
+in
+ terraforming-mars
diff --git a/systems/eldiron/websites/git/cgit_js.html b/systems/eldiron/websites/git/cgit_js.html
new file mode 100644
index 0000000..4101071
--- /dev/null
+++ b/systems/eldiron/websites/git/cgit_js.html
@@ -0,0 +1,16 @@
+
+
diff --git a/systems/eldiron/websites/git/default.nix b/systems/eldiron/websites/git/default.nix
new file mode 100644
index 0000000..46ba34d
--- /dev/null
+++ b/systems/eldiron/websites/git/default.nix
@@ -0,0 +1,98 @@
+{ lib, pkgs, config, ... }:
+let
+ mantisbt = pkgs.callPackage ./mantisbt.nix {
+ mantisbt_2 = pkgs.webapps-mantisbt_2;
+ mantisbt_2-plugins = pkgs.webapps-mantisbt_2-plugins;
+ env = config.myEnv.tools.mantisbt;
+ inherit config;
+ };
+ gitweb = pkgs.callPackage ./gitweb.nix {
+ gitoliteDir = config.myServices.gitolite.gitoliteDir;
+ };
+
+ cfg = config.myServices.websites.tools.git;
+in {
+ options.myServices.websites.tools.git = {
+ enable = lib.mkEnableOption "enable git's website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.chatonsProperties.services.mantisbt = {
+ file.datetime = "2022-08-21T10:08:00";
+ service = {
+ name = "MantisBT";
+ description = "Mantis Bug Tracker";
+ website = "https://git.immae.eu/mantisbt";
+ logo = "https://git.immae.eu/mantisbt/images/favicon.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ guide.user = "https://www.immae.eu/docs/forge-logicielle.html";
+ };
+ software = {
+ name = "MantisBT";
+ website = "https://mantisbt.org/";
+ license.url = "https://opensource.org/licenses/gpl-license";
+ license.name = "GNU General Public License";
+ version = mantisbt.webRoot.version;
+ source.url = "https://github.com/mantisbt/mantisbt";
+ modules = mantisbt.webRoot.pluginNames;
+ };
+ };
+ secrets.keys = mantisbt.keys;
+ services.websites.env.tools.modules =
+ gitweb.apache.modules ++
+ mantisbt.apache.modules;
+
+ security.acme.certs.eldiron.extraDomainNames = [ "git.immae.eu" ];
+ services.websites.env.tools.vhostConfs.git = {
+ certName = "eldiron";
+ hosts = ["git.immae.eu" ];
+ root = gitweb.apache.root;
+ extraConfig = [
+ gitweb.apache.vhostConf
+ (mantisbt.apache.vhostConf config.services.phpfpm.pools.mantisbt.socket)
+ ''
+ RewriteEngine on
+ RewriteCond %{REQUEST_URI} ^/releases
+ RewriteRule /releases(.*) https://release.immae.eu$1 [P,L]
+ ''
+ ];
+ };
+ services.phpfpm.pools = {
+ mantisbt = {
+ user = config.services.websites.env.tools.user;
+ group = config.services.websites.env.tools.group;
+ settings = mantisbt.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ };
+
+ myServices.monitoring.fromMasterActivatedPlugins = [ "http" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "gitweb website is running on git.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "git.immae.eu" "/cgit" "Immae’s git"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Git";
+ _webstatus_url = "https://git.immae.eu/";
+ }
+
+ {
+ service_description = "mantisbt website is running on git.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "git.immae.eu" "/mantisbt/" "My View - MantisBT"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Mantisbt";
+ _webstatus_url = "https://git.immae.eu/mantisbt";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/websites/git/gitweb.nix b/systems/eldiron/websites/git/gitweb.nix
new file mode 100644
index 0000000..40f99e0
--- /dev/null
+++ b/systems/eldiron/websites/git/gitweb.nix
@@ -0,0 +1,124 @@
+{ gitweb, writeText, stdenv, coreutils, writeScript, gitolite, git, cgit, gitoliteDir, mailcap, highlight }:
+rec {
+ varDir = gitoliteDir;
+ config = writeText "gitweb.conf" ''
+ $git_temp = "/tmp";
+
+ # The directories where your projects are. Must not end with a
+ # slash.
+ $projectroot = "${varDir}/repositories";
+
+ $projects_list = "${varDir}/projects.list";
+ $strict_export = "true";
+
+ # Base URLs for links displayed in the web interface.
+ our @git_base_url_list = qw(ssh://gitolite@git.immae.eu https://git.immae.eu);
+
+ $feature{'blame'}{'default'} = [1];
+ $feature{'avatar'}{'default'} = ['gravatar'];
+ $feature{'highlight'}{'default'} = [1];
+
+ @stylesheets = ("gitweb-theme/gitweb.css");
+ $logo = "gitweb-theme/git-logo.png";
+ $favicon = "gitweb-theme/git-favicon.png";
+ $javascript = "gitweb-theme/gitweb.js";
+ $logo_url = "https://git.immae.eu/";
+ $projects_list_group_categories = "true";
+ $projects_list_description_width = 60;
+ $project_list_default_category = "__Others__";
+ $highlight_bin = "${highlight}/bin/highlight";
+ '';
+ aboutFilter = writeScript "about-filter.sh" ''
+ #!${stdenv.shell}
+
+ if [ -f "$CGIT_REPO_PATH/README.html" ]; then
+ cat "$CGIT_REPO_PATH/README.html"
+ else
+ ${cgit}/lib/cgit/filters/about-formatting.sh "$@"
+ fi
+ '';
+ cgitConfig = writeText "cgitrc" ''
+ css=/cgit-css/cgit.css
+ logo=/cgit-css/cgit.png
+ favicon=/cgit-css/favicon.ico
+ head-include=${./cgit_js.html}
+
+ root-title=Immae’s git
+ root-desc=To go back to the old interface: https://git.immae.eu/?old
+ readme=:README.md
+ readme=:readme.md
+ readme=:README
+ readme=:DOCUMENTATION.md
+ about-filter=${aboutFilter}
+ #${cgit}/lib/cgit/filters/about-formatting.sh
+ source-filter=${cgit}/lib/cgit/filters/syntax-highlighting.py
+
+ enable-blame=1
+ enable-index-links=1
+ enable-commit-graph=1
+ enable-log-filecount=1
+ enable-log-linecount=1
+
+ enable-html-serving=1
+ # Allow using gitweb.* keys
+ enable-git-config=1
+
+ side-by-side-diffs=1
+ snapshots=tar.gz tar.zst zip
+ mimetype-file=${mailcap}/etc/mime.types
+
+ section=__Others__
+ clone-url=ssh://gitolite@git.immae.eu/$CGIT_REPO_URL https://git.immae.eu/$CGIT_REPO_URL
+ #section-from-path=1
+ project-list=${varDir}/projects.list
+ scan-path=${varDir}/repositories
+ '';
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "cgid" ];
+ root = gitweb;
+ vhostConf = ''
+ SetEnv GIT_PROJECT_ROOT ${varDir}/repositories/
+ ScriptAliasMatch \
+ "(?x)^/(.*/(HEAD | \
+ info/refs | \
+ objects/(info/[^/]+ | \
+ [0-9a-f]{2}/[0-9a-f]{38} | \
+ pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
+ git-(upload|receive)-pack))$" \
+ ${git}/libexec/git-core/git-http-backend/$1
+
+
+ Require all granted
+
+
+ DirectoryIndex gitweb.cgi
+ Require all granted
+ AllowOverride None
+ Options ExecCGI FollowSymLinks
+
+ SetHandler cgi-script
+ SetEnv GITWEB_CONFIG "${config}"
+
+
+
+ SetEnv CGIT_CONFIG ${cgitConfig}
+ ScriptAlias /cgit "${cgit}/cgit/cgit.cgi/"
+ Alias /cgit-css "${cgit}/cgit"
+
+ AllowOverride None
+ Options ExecCGI FollowSymlinks
+ Require all granted
+
+
+ RewriteEngine On
+ RewriteCond %{QUERY_STRING} ^$
+ RewriteRule ^/?$ /cgit [L,R=302]
+
+ RewriteCond %{REQUEST_URI} ^(.*)(\.git)?/?$
+ RewriteCond ${varDir}/repositories/%1.git/HEAD -f
+ RewriteRule ^(.+)$ /cgit$1 [L,R=302]
+ '';
+ };
+}
diff --git a/systems/eldiron/websites/git/mantisbt.nix b/systems/eldiron/websites/git/mantisbt.nix
new file mode 100644
index 0000000..3bd78e1
--- /dev/null
+++ b/systems/eldiron/websites/git/mantisbt.nix
@@ -0,0 +1,86 @@
+{ env, mantisbt_2, mantisbt_2-plugins, config }:
+rec {
+ keys."webapps/tools-mantisbt" = {
+ user = apache.user;
+ group = apache.group;
+ permissions = "0400";
+ text = ''
+
+ DirectoryIndex index.php
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ AllowOverride All
+ SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
+ Options FollowSymlinks
+ Require all granted
+
+
+ #Reenable during upgrade
+ Require all denied
+
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "postgresql.service" "openldap.service" ];
+ basedir = builtins.concatStringsSep ":" (
+ [ webRoot config.secrets.fullPaths."webapps/tools-mantisbt" ]
+ ++ webRoot.plugins);
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ "php_admin_value[upload_max_filesize]" = "5000000";
+
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:MantisBT:'";
+ };
+ };
+}
diff --git a/systems/eldiron/websites/im/default.nix b/systems/eldiron/websites/im/default.nix
new file mode 100644
index 0000000..7755a5c
--- /dev/null
+++ b/systems/eldiron/websites/im/default.nix
@@ -0,0 +1,118 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.myServices.websites.tools.im;
+ converseVersion = "9.1.1";
+ www = pkgs.runCommand "www" {} ''
+ cp -a ${./www} $out
+ substituteInPlace $out/converse.html --replace {{converseVersion}} ${converseVersion}
+ '';
+in
+{
+ options.myServices.websites.tools.im = {
+ enable = lib.mkEnableOption "enable im website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.chatonsProperties.services.converse = {
+ file.datetime = "2022-08-21T19:20:00";
+ service = {
+ name = "Converse";
+ description = "A free and open-source XMPP chat client in your browser";
+ website = "https://im.immae.fr/converse";
+ logo = "https://conversejs.org/docs/html/_static/favicon.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["NONE" "FREE"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Converse";
+ website = "https://conversejs.org/";
+ license.name = "Mozilla Public License 2.0";
+ license.url = "https://github.com/conversejs/converse.js/blob/master/LICENSE";
+ version = "9.1.1";
+ source.url = "https://github.com/conversejs/converse.js";
+ };
+ };
+ myServices.chatonsProperties.services.weechat-bridge = {
+ file.datetime = "2022-08-21T19:20:00";
+ service = {
+ name = "Weechat bridge";
+ description = "WeeChat web frontend";
+ website = "https://im.immae.fr/glowing-bear";
+ logo = "https://im.immae.fr/glowing-bear/assets/img/glowing_bear_128x128.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["NONE" "FREE"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Glowing bear";
+ website = "https://www.ejabberd.im/";
+ license.name = "GNU General Public License v3.0";
+ license.url = "https://github.com/processone/ejabberd";
+ version = pkgs.glowing-bear.version;
+ source.url = "https://github.com/glowing-bear/glowing-bear";
+ };
+ };
+ myServices.chatonsProperties.services.xmpp = {
+ file.datetime = "2022-08-21T19:20:00";
+ service = {
+ name = "XMPP";
+ description = "Universal messaging standard";
+ website = "https://im.immae.fr/";
+ logo = "https://xmpp.org/favicon-32x32.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "ejabberd";
+ website = "https://www.ejabberd.im/";
+ license.url = "https://github.com/processone/ejabberd/blob/master/COPYING";
+ license.name = "GNU GENERAL PUBLIC LICENSE Version 2";
+ version = pkgs.ejabberd.version;
+ source.url = "https://github.com/processone/ejabberd";
+ modules = "converse";
+ };
+ };
+ security.acme.certs.eldiron.extraDomainNames = [ "im.immae.fr" ];
+ services.websites.env.tools.vhostConfs.im = {
+ certName = "eldiron";
+ hosts = ["im.immae.fr"];
+ root = www;
+ extraConfig = [
+ ''
+ Alias /glowing-bear ${pkgs.glowing-bear}
+ Alias /converse ${www}/converse.html
+ ProxyPreserveHost On
+
+ ProxyPass http://localhost:5280/bosh
+ ProxyPassReverse http://localhost:5280/bosh
+
+
+ ProxyPass ws://localhost:5280/ws
+
+ ProxyPass /upload http://localhost:5280/upload
+ ProxyPassReverse /upload http://localhost:5280/upload
+ ProxyPass /admin http://localhost:5280/admin
+ ProxyPassReverse /admin http://localhost:5280/admin
+ ProxyPass /api http://localhost:5280/api
+ ProxyPassReverse /api http://localhost:5280/api
+
+ AllowOverride none
+ Require all granted
+
+
+ Require all granted
+ AllowOverride none
+
+ ''
+ ];
+ };
+ };
+}
diff --git a/systems/eldiron/websites/im/www/converse.html b/systems/eldiron/websites/im/www/converse.html
new file mode 100644
index 0000000..4ca451d
--- /dev/null
+++ b/systems/eldiron/websites/im/www/converse.html
@@ -0,0 +1,57 @@
+
+
+
+ Converse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/systems/eldiron/websites/im/www/index.html b/systems/eldiron/websites/im/www/index.html
new file mode 100644
index 0000000..90c5458
--- /dev/null
+++ b/systems/eldiron/websites/im/www/index.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+ Instant messaging configuration (Jabber/XMPP)
+
+
+
+
+ Pre-configured clients:
+
+
+
+ Technical details:
+
+ HTTP-bind/BOSH access (XEP-0124 / XEP-0206): https://im.immae.fr/bosh
+ WS access (RFC 7395): wss://im.immae.fr/ws
+
+
+
+
diff --git a/systems/eldiron/websites/immae/matrix/client b/systems/eldiron/websites/immae/matrix/client
new file mode 100644
index 0000000..89136a0
--- /dev/null
+++ b/systems/eldiron/websites/immae/matrix/client
@@ -0,0 +1,11 @@
+{
+ "m.homeserver": {
+ "base_url": "https://immae.ems.host"
+ },
+ "m.identity_server": {
+ "base_url": "https://vector.im"
+ },
+ "org.matrix.msc3575.proxy": {
+ "url": "https://immae.ems.host"
+ }
+}
diff --git a/systems/eldiron/websites/immae/matrix/server b/systems/eldiron/websites/immae/matrix/server
new file mode 100644
index 0000000..449155a
--- /dev/null
+++ b/systems/eldiron/websites/immae/matrix/server
@@ -0,0 +1,3 @@
+{
+ "m.server": "immae.ems.host:443"
+}
diff --git a/systems/eldiron/websites/immae/production.nix b/systems/eldiron/websites/immae/production.nix
new file mode 100644
index 0000000..e4060ba
--- /dev/null
+++ b/systems/eldiron/websites/immae/production.nix
@@ -0,0 +1,107 @@
+{ lib, pkgs, config, ... }:
+let
+ cfg = config.myServices.websites.immae.production;
+ varDir = "/var/lib/buildbot/outputs/immae/blog";
+ historyDir = "/var/lib/buildbot/outputs/immae/history";
+ docsDir = "/var/lib/buildbot/outputs/immae/docs/";
+in {
+ options.myServices.websites.immae.production.enable = lib.mkEnableOption "enable Immae's website";
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains = with config.myServices.dns.helpers;
+ {
+ www = ips servers.eldiron.ips.production;
+ matrix.CNAME = [ "immae.element.io." ];
+ };
+ services.webstats.sites = [ { name = "www.immae.eu"; } ];
+
+ security.acme.certs.immae.domain = "www.immae.eu";
+ security.acme.certs.immae.extraDomainNames = [ "immae.eu" ];
+ services.websites.env.production.bindMounts."${varDir}" = {};
+ services.websites.env.production.bindMounts."${docsDir}" = {};
+ services.websites.env.production.bindMounts."${historyDir}" = {};
+ services.websites.env.production.vhostConfs.immae_production = {
+ certName = "immae";
+ hosts = [ "www.immae.eu" "immae.eu" ];
+ root = varDir;
+ extraConfig = [
+ ''
+ Use Stats www.immae.eu
+ Header always set Strict-Transport-Security "max-age=31536000"
+
+
+ Header always set Referrer-Policy "strict-origin-when-cross-origin"
+ RequestHeader set X-Forwarded-Proto "https"
+
+ RewriteRule ^(.*)$ https://mastodon.immae.eu%{REQUEST_URI} [QSA,L]
+
+
+ RewriteEngine On
+ RewriteCond "%{REQUEST_URI}" "!^/.well-known/(webfinger|host-meta)"
+ RewriteCond "%{HTTP_HOST}" "!^www\.immae\.eu$" [NC]
+ RewriteRule ^(.+)$ https://www.immae.eu$1 [R=302,L]
+
+
+ DirectoryIndex index.htm index.html
+ Options Indexes FollowSymLinks MultiViews Includes
+ AllowOverride All
+ Require all granted
+
+
+ Alias /.well-known/matrix ${./matrix}
+
+ Options Indexes FollowSymLinks MultiViews Includes
+ AllowOverride None
+ Require all granted
+ Header always set Access-Control-Allow-Origin "*"
+
+
+ Alias /docs ${docsDir}
+
+ DirectoryIndex index.htm index.html
+ Options Indexes FollowSymLinks MultiViews Includes
+ AllowOverride All
+ Require all granted
+
+
+ Alias /eurl ${./sarl}
+ Alias /eurl ${./sarl}
+
+ DirectoryIndex index.htm index.html
+ Options Indexes FollowSymLinks MultiViews Includes
+ AllowOverride None
+ Require all granted
+
+
+ Alias /history ${historyDir}
+
+ DirectoryIndex index.html
+ AllowOverride None
+ Require all granted
+
+
+ Alias /.well-known/chatonsinfos ${config.myServices.chatonsProperties.propertiesPath}
+
+ Options Indexes FollowSymLinks MultiViews Includes
+ AllowOverride None
+ Require all granted
+
+ ''
+ ];
+ };
+
+ myServices.monitoring.fromMasterActivatedPlugins = [ "http" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "blog website is running on immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "www.immae.eu" "/blog/" "egrep -ri TODO /etc"];
+
+ servicegroups = "webstatus-websites";
+ _webstatus_name = "Immae’s Blog";
+ _webstatus_url = "https://www.immae.eu/blog";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/websites/immae/release.nix b/systems/eldiron/websites/immae/release.nix
new file mode 100644
index 0000000..4882bac
--- /dev/null
+++ b/systems/eldiron/websites/immae/release.nix
@@ -0,0 +1,40 @@
+{ lib, pkgs, config, ... }:
+let
+ cfg = config.myServices.websites.immae.release;
+ varDir = "/var/lib/ftp/release.immae.eu";
+in {
+ options.myServices.websites.immae.release.enable = lib.mkEnableOption "enable Release' website";
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.release = with config.myServices.dns.helpers;
+ ips servers.eldiron.ips.production;
+ services.webstats.sites = [ { name = "release.immae.eu"; } ];
+
+ security.acme.certs.immae.extraDomainNames = [ "release.immae.eu" ];
+ services.websites.env.production.vhostConfs.immae_release = {
+ certName = "immae";
+ hosts = [ "release.immae.eu" ];
+ root = varDir;
+ extraConfig = [
+ ''
+ Use Stats release.immae.eu
+
+ Use Apaxy "${varDir}" "title .duplicity-ignore"
+
+ Use LDAPConnect
+ Options Indexes
+ AllowOverride All
+ Require all granted
+
+
+
+ Use LDAPConnect
+ Options Indexes FollowSymlinks
+ AllowOverride None
+ Require all granted
+
+ ''
+ ];
+ };
+ };
+}
diff --git a/systems/eldiron/websites/immae/sarl/certificates/2021-certificate.crt b/systems/eldiron/websites/immae/sarl/certificates/2021-certificate.crt
new file mode 100644
index 0000000..671534c
--- /dev/null
+++ b/systems/eldiron/websites/immae/sarl/certificates/2021-certificate.crt
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDyzCCArOgAwIBAgIUXNW7Lmte+fa5YxI7Gdznl7ZaLPIwDQYJKoZIhvcNAQEL
+BQAwdTELMAkGA1UEBhMCRlIxGDAWBgNVBAgMD0FscGVzLU1hcml0aW1lczEPMA0G
+A1UEBwwGR3Jhc3NlMRUwEwYDVQQKDAxJbW1hZUV1IEVVUkwxJDAiBgkqhkiG9w0B
+CQEWFWNvbnRhY3RAbWFpbC5pbW1hZS5ldTAeFw0yMTAxMTkwMDI5MDlaFw0yMjAx
+MTkwMDI5MDlaMHUxCzAJBgNVBAYTAkZSMRgwFgYDVQQIDA9BbHBlcy1NYXJpdGlt
+ZXMxDzANBgNVBAcMBkdyYXNzZTEVMBMGA1UECgwMSW1tYWVFdSBFVVJMMSQwIgYJ
+KoZIhvcNAQkBFhVjb250YWN0QG1haWwuaW1tYWUuZXUwggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQDeyWKvTu2kuJ2HSgRzZZL6yFNHUXGgcl/q8vlRKFI4
+P0yHwcEwDCaCXquqS09WN99H55aNTjHfnu70dZXogyWHGk4vlaUkGiUoCAYK5tFU
+34fzpZuInhBL8nRY0pRV4H2t02jQMyiYowZXTqR86BRocbXZ4TY5EwD/hlrH6iDc
+pIlC7cVnWV4J5qXX9fXALbpXseD9PF0/y2tP5dM658jBL9KdW1PqlPGudvB44Z+a
+pE8XCXF9PGrVBNN7aPmizOb42scx/2XghX1DYCikiUf8m+FGjidxGlXmj4B6Dukp
+b7RxdkY7p97svH91uMQuUvDW5d93ZiatHNeYuAl8yI39AgMBAAGjUzBRMB0GA1Ud
+DgQWBBSgsFwzEybKyLF/Bkuz7FA5SwfwPTAfBgNVHSMEGDAWgBSgsFwzEybKyLF/
+Bkuz7FA5SwfwPTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQDX
+Wij/gDT+7N/pSSVWImiYoe+/KsAJd0TLs39GJkvW0114RXKINYNU8exNY7rKMVCl
+TKePEevSo5CCartNfLXGIr3uqPlR+V3XF6KmyMSiB6k+GukoUtUg2Bp7ESGlpZXi
+wkHYclk0NIzxWyUrzNdflxu3gPU278qFMbUIlbdWNsHtrLbpHypelPQ+IaEbNoWV
+Q+M8Vg6ifsDmhp7TqFXpIoGa6CIxXuknDOidBpeE9kPjVu0kKrjXQULirNl3eEe6
+H1XUQ7lSdt/l3N1cHTj70x2xIi6fdwPQRqhXILrIuST+C0wpPiqPCv1rfcwh0PvU
+mZVZ/+83y3Zuo9lVqkbB
+-----END CERTIFICATE-----
diff --git a/systems/eldiron/websites/kanboard/farm.nix b/systems/eldiron/websites/kanboard/farm.nix
new file mode 100644
index 0000000..a70d0d6
--- /dev/null
+++ b/systems/eldiron/websites/kanboard/farm.nix
@@ -0,0 +1,183 @@
+{ lib, pkgs, config, ... }:
+let
+ cfg = config.myServices.tools.kanboard.farm;
+ apacheUser = config.services.websites.env.tools.user;
+ apacheGroup = config.services.websites.env.tools.group;
+ toVardir = name: "/var/lib/kanboard_farm/${name}";
+ varDirs = lib.mapAttrsToList (name: v: toVardir name) cfg.instances;
+ toPhpBaseDir = name: [ rootDir (toVardir name) ];
+ phpBaseDir = builtins.concatStringsSep ":" (lib.unique (lib.flatten (lib.mapAttrsToList (name: v: toPhpBaseDir name) cfg.instances)));
+ rootDir = pkgs.kanboard;
+
+ toVhost = name: ''
+ Alias /${name} "${rootDir}"
+
+ SetEnv DATA_DIR "${toVardir name}"
+ SetEnv MAIL_FROM "kanboard@tools.immae.eu"
+
+ '';
+ toCustomVhost = name: lib.optionalAttrs (cfg.instances."${name}".customHost != null) {
+ "kanboard_farm_${name}" = {
+ certName = "eldiron";
+ hosts = [cfg.instances."${name}".customHost];
+ root = null;
+ extraConfig = [
+ ''
+ Alias / "${rootDir}"
+
+ SetEnv DATA_DIR "${toVardir name}"
+ SetEnv MAIL_FROM "kanboard@tools.immae.eu"
+
+
+ DirectoryIndex index.php
+ AllowOverride All
+ Options FollowSymlinks
+ Require all granted
+
+
+ SetHandler "proxy:unix:${config.services.phpfpm.pools.kanboard_farm.socket}|fcgi://localhost"
+
+
+
+ Require all denied
+
+ ''
+ ];
+ };
+ };
+ customHosts = lib.filter (n: n != null) (map (n: cfg.instances."${n}".customHost) (builtins.attrNames cfg.instances));
+ customVhosts = lib.foldl (o: n: o // n) {} (map toCustomVhost (builtins.attrNames cfg.instances));
+ phpPackage = pkgs.php74.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+in
+{
+ options.myServices.tools.kanboard.farm = {
+ instances = lib.mkOption {
+ description = "Instances names for the kanboard Farm";
+ default = {};
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ customHost = lib.mkOption {
+ description = "Custom host to use for the kanboard instance";
+ default = null;
+ type = lib.types.nullOr lib.types.str;
+ };
+ };
+ });
+ };
+ vhosts = lib.mkOption {
+ description = "Instance vhosts configs";
+ readOnly = true;
+ type = lib.types.attrsOf lib.types.str;
+ default = lib.mapAttrs (name: v: toVhost name) cfg.instances;
+ };
+ };
+
+ config = lib.mkIf (builtins.length (builtins.attrNames cfg.instances) > 0) {
+ myServices.dns.zones."immae.eu".subdomains.kanboard =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.hostings.kanboard = {
+ file.datetime = "2022-08-21T19:40:00";
+ hosting = {
+ name = "Kanboard";
+ description = "Kanban project management software";
+ website = "https://tools.immae.eu/kanboard";
+ logo = "https://tools.immae.eu/kanboard/assets/img/favicon.png";
+ type = "INSTANCE";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ };
+ myServices.chatonsProperties.services.kanboard = {
+ file.datetime = "2022-08-21T19:40:00";
+ service = {
+ name = "Kanboard";
+ description = "Kanban project management software";
+ website = "https://tools.immae.eu/kanboard";
+ logo = "https://tools.immae.eu/kanboard/assets/img/favicon.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Kanboard";
+ website = "https://kanboard.org/";
+ license.url = "https://github.com/kanboard/kanboard/blob/main/LICENSE";
+ license.name = "MIT License";
+ version = pkgs.kanboard.version;
+ source.url = "https://github.com/kanboard/kanboard";
+ };
+ };
+ system.activationScripts.kanboard_farm_vardirs = {
+ deps = [ "httpd" ];
+ text = ''
+ install -m 0755 -o ${apacheUser} -g ${apacheGroup} -d ${builtins.concatStringsSep " " varDirs}
+ '';
+ };
+ services.phpfpm.pools.kanboard_farm = {
+ user = apacheUser;
+ group = apacheGroup;
+ settings = let
+ instanceNb = builtins.length (builtins.attrNames cfg.instances);
+ in {
+ "listen.owner" = apacheUser;
+ "listen.group" = apacheGroup;
+ "pm" = "dynamic";
+ "pm.max_children" = builtins.toString (60 * instanceNb);
+ "pm.start_servers" = builtins.toString (2 * instanceNb);
+ "pm.min_spare_servers" = builtins.toString (2 * instanceNb);
+ "pm.max_spare_servers" = builtins.toString (3 * instanceNb);
+ "pm.process_idle_timeout" = "60";
+
+ "php_admin_value[output_buffering]" = "0";
+ "php_admin_value[max_execution_time]" = "1800";
+ "php_admin_value[zend_extension]" = "opcache";
+ "php_value[apcu.enable_cli]" = "1";
+ "php_value[apcu.enabled]" = "1";
+ #already enabled by default?
+ #"php_value[opcache.enable]" = "1";
+ "php_value[opcache.enable_cli]" = "1";
+ "php_value[opcache.interned_strings_buffer]" = "8";
+ "php_value[opcache.max_accelerated_files]" = "10000";
+ "php_value[opcache.memory_consumption]" = "128";
+ "php_value[opcache.save_comments]" = "1";
+ "php_value[opcache.revalidate_freq]" = "1";
+ "php_admin_value[memory_limit]" = "512M";
+
+ "php_admin_value[open_basedir]" = "/run/wrappers/bin/sendmail:${phpBaseDir}:/proc/meminfo:/dev/urandom:/proc/self/fd:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:KanboardFarm:'";
+ };
+ inherit phpPackage;
+ };
+ security.acme.certs.eldiron.extraDomainNames = customHosts ++ [ "kanboard.immae.eu" ];
+ services.websites.env.tools.vhostConfs = {
+ kanboard = {
+ certName = "eldiron";
+ hosts = ["kanboard.immae.eu"];
+ root = null;
+ extraConfig = [
+ ''
+
+ DirectoryIndex index.php
+ AllowOverride All
+ Options FollowSymlinks
+ Require all granted
+
+
+ SetHandler "proxy:unix:${config.services.phpfpm.pools.kanboard_farm.socket}|fcgi://localhost"
+
+
+
+ Require all denied
+
+ ''
+ ] ++ builtins.attrValues cfg.vhosts;
+ };
+ } // customVhosts;
+ };
+}
diff --git a/systems/eldiron/websites/mail/default.nix b/systems/eldiron/websites/mail/default.nix
new file mode 100644
index 0000000..0a0342b
--- /dev/null
+++ b/systems/eldiron/websites/mail/default.nix
@@ -0,0 +1,141 @@
+{ lib, pkgs, config, ... }:
+let
+ roundcubemail = pkgs.callPackage ./roundcubemail.nix {
+ roundcubemail = pkgs.webapps-roundcubemail;
+ env = config.myEnv.tools.roundcubemail;
+ inherit config;
+ };
+ rainloop = pkgs.callPackage ./rainloop.nix {
+ rainloop = pkgs.rainloop-community;
+ };
+ cfg = config.myServices.websites.tools.email;
+ pcfg = config.services.phpfpm.pools;
+in
+{
+ options.myServices.websites.tools.email = {
+ enable = lib.mkEnableOption "enable email website";
+ };
+
+ imports = [
+ ./mta-sts.nix
+ ];
+
+ config = lib.mkIf cfg.enable {
+ #myServices.chatonsProperties.services.mail-rainloop = {
+ # file.datetime = "2022-08-22T00:30:00";
+ # service = {
+ # name = "Rainloop";
+ # description = "Simple, modern & fast web-based email client";
+ # website = "https://mail.immae.eu/rainloop";
+ # logo = "https://www.rainloop.net/static/img/logo-16x16.png";
+ # status.level = "ERROR";
+ # status.description = "Stopped due to CVE-2022-29360";
+ # registration."" = ["MEMBER" "CLIENT"];
+ # registration.load = "OPEN";
+ # install.type = "PACKAGE";
+ # };
+ # software = {
+ # name = "Rainloop";
+ # website = "https://www.rainloop.net/";
+ # license.url = "https://www.rainloop.net/licensing/";
+ # license.name = "GNU Affero General Public License v3.0";
+ # version = rainloop.webRoot.version;
+ # source.url = "https://github.com/RainLoop/rainloop-webmail";
+ # };
+ #};
+ #myServices.chatonsProperties.services.mail-roundcube = {
+ # file.datetime = "2022-08-22T00:30:00";
+ # service = {
+ # name = "Roundcube";
+ # description = "The Roundcube Webmail suite";
+ # website = "https://mail.immae.eu/roundcube";
+ # logo = "https://mail.immae.eu/roundcube/skins/elastic/images/favicon.ico";
+ # status.level = "OK";
+ # status.description = "OK";
+ # registration."" = ["MEMBER" "CLIENT"];
+ # registration.load = "OPEN";
+ # install.type = "PACKAGE";
+ # };
+ # software = {
+ # name = "Roundcube";
+ # website = "https://roundcube.net/";
+ # license.url = "https://github.com/roundcube/roundcubemail/blob/master/LICENSE";
+ # license.name = "GNU General Public License v3.0";
+ # version = roundcubemail.webRoot.version;
+ # source.url = "https://github.com/roundcube/roundcubemail";
+ # modules = map (a: a.pluginName) roundcubemail.webRoot.plugins ++ map (a: a.skinName) roundcubemail.webRoot.skins;
+ # };
+ #};
+
+ myServices.dns.zones."immae.eu".subdomains.mail =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ secrets.keys = roundcubemail.keys;
+
+ services.websites.env.tools.modules =
+ [ "proxy_fcgi" ]
+ ++ rainloop.apache.modules
+ ++ roundcubemail.apache.modules;
+
+ security.acme.certs.mail.extraDomainNames = [ "mail.immae.eu" ];
+ services.websites.env.tools.vhostConfs.mail = {
+ certName = "mail";
+ hosts = ["mail.immae.eu"];
+ root = ./www;
+ extraConfig = [
+ (rainloop.apache.vhostConf pcfg.rainloop.socket)
+ (roundcubemail.apache.vhostConf pcfg.roundcubemail.socket)
+ ''
+
+ Require all granted
+ Options -Indexes
+
+ ''
+ ];
+ };
+ systemd.services = {
+ phpfpm-rainloop = {
+ after = lib.mkAfter rainloop.phpFpm.serviceDeps;
+ wants = rainloop.phpFpm.serviceDeps;
+ };
+ phpfpm-roundcubemail = {
+ after = lib.mkAfter roundcubemail.phpFpm.serviceDeps;
+ wants = roundcubemail.phpFpm.serviceDeps;
+ };
+ };
+
+ services.phpfpm.pools.roundcubemail = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = roundcubemail.phpFpm.pool;
+ phpOptions = config.services.phpfpm.phpOptions + ''
+ date.timezone = 'CET'
+ '';
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [ all.imagick all.redis ]);
+ };
+ services.phpfpm.pools.rainloop = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = rainloop.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [ all.redis ]);
+ };
+ system.activationScripts = {
+ roundcubemail = roundcubemail.activationScript;
+ rainloop = rainloop.activationScript;
+ };
+ myServices.monitoring.fromMasterActivatedPlugins = [ "http" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "roundcube website is running on mail.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "mail.immae.eu" "/roundcube/" "Roundcube"];
+
+ servicegroups = "webstatus-webapps,webstatus-email";
+ _webstatus_name = "Roundcube";
+ _webstatus_url = "https://mail.immae.eu/roundcube/";
+ }
+ ];
+ };
+
+}
diff --git a/systems/eldiron/websites/mail/mta-sts.nix b/systems/eldiron/websites/mail/mta-sts.nix
new file mode 100644
index 0000000..2438702
--- /dev/null
+++ b/systems/eldiron/websites/mail/mta-sts.nix
@@ -0,0 +1,42 @@
+{ lib, pkgs, config, ... }:
+let
+ getDomains = p: lib.mapAttrsToList (n: v: v) (lib.filterAttrs (n: v: v.receive) p.emailPolicies);
+ bydomain = builtins.mapAttrs (n: getDomains) config.myServices.dns.zones;
+ domains = lib.flatten (builtins.attrValues bydomain);
+ mxes = lib.mapAttrsToList
+ (n: v: v.mx.subdomain)
+ (lib.attrsets.filterAttrs (n: v: v.mx.enable) config.myEnv.servers);
+ file = d: pkgs.writeText "mta-sts-${d.fqdn}.txt" (
+ builtins.concatStringsSep "\r\n" ([ "version: STSv1" "mode: testing" ]
+ ++ (map (v: "mx: ${v}.${d.domain}") mxes)
+ ++ [ "max_age: 604800" ]
+ ));
+ root = pkgs.runCommand "mta-sts_root" {} ''
+ mkdir -p $out
+ ${builtins.concatStringsSep "\n" (map (d:
+ "cp ${file d} $out/${d.fqdn}.txt"
+ ) domains)}
+ '';
+ cfg = config.myServices.websites.tools.email;
+in
+{
+ config = lib.mkIf cfg.enable {
+ security.acme.certs.mail.extraDomainNames = ["mta-sts.mail.immae.eu"] ++ map (v: "mta-sts.${v.fqdn}") domains;
+ services.websites.env.tools.vhostConfs.mta_sts = {
+ certName = "mail";
+ hosts = ["mta-sts.mail.immae.eu"] ++ map (v: "mta-sts.${v.fqdn}") domains;
+ root = root;
+ extraConfig = [
+ ''
+ RewriteEngine on
+ RewriteCond %{HTTP_HOST} ^mta-sts.(.*)$
+ RewriteRule ^/.well-known/mta-sts.txt$ %{DOCUMENT_ROOT}/%1.txt [L]
+
+ Require all granted
+ Options -Indexes
+
+ ''
+ ];
+ };
+ };
+}
diff --git a/systems/eldiron/websites/mail/rainloop.nix b/systems/eldiron/websites/mail/rainloop.nix
new file mode 100644
index 0000000..f821005
--- /dev/null
+++ b/systems/eldiron/websites/mail/rainloop.nix
@@ -0,0 +1,54 @@
+{ lib, rainloop, writeText, stdenv, fetchurl }:
+rec {
+ varDir = "/var/lib/rainloop";
+ activationScript = {
+ deps = [ "wrappers" ];
+ text = ''
+ install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}
+ install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/data
+ '';
+ };
+ webRoot = rainloop.override { dataPath = "${varDir}/data"; };
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /rainloop "${root}"
+
+ DirectoryIndex index.php
+ AllowOverride All
+ Options -FollowSymlinks
+ Require all denied
+
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+
+
+ Require all denied
+
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "postgresql.service" ];
+ basedir = builtins.concatStringsSep ":" [ webRoot varDir ];
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "RainloopPHPSESSID";
+ "php_admin_value[upload_max_filesize]" = "200M";
+ "php_admin_value[post_max_size]" = "200M";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Rainloop:'";
+ };
+ };
+}
diff --git a/systems/eldiron/websites/mail/roundcubemail.nix b/systems/eldiron/websites/mail/roundcubemail.nix
new file mode 100644
index 0000000..21a10fe
--- /dev/null
+++ b/systems/eldiron/websites/mail/roundcubemail.nix
@@ -0,0 +1,119 @@
+{ env, roundcubemail, apacheHttpd, config }:
+rec {
+ varDir = "/var/lib/roundcubemail";
+ activationScript = {
+ deps = [ "wrappers" ];
+ text = ''
+ install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
+ ${varDir}/cache ${varDir}/logs
+ '';
+ };
+ keys."webapps/tools-roundcube" = {
+ user = apache.user;
+ group = apache.group;
+ permissions = "0400";
+ text =
+ let
+ psql_url = with env.postgresql; "pgsql://${user}:${password}@unix(${socket}:${port})/${database}";
+ in ''
+ "mail.immae.eu"
+ );
+ $config['imap_conn_options'] = array("ssl" => array("verify_peer" => false));
+ $config['smtp_server'] = 'tls://smtp.immae.eu';
+ $config['smtp_port'] = '587';
+ $config['managesieve_host'] = 'imap.immae.eu';
+ $config['managesieve_port'] = '4190';
+ $config['managesieve_usetls'] = true;
+ $config['managesieve_conn_options'] = array("ssl" => array("verify_peer" => false));
+
+ $config['imap_cache'] = 'db';
+ $config['messages_cache'] = 'db';
+
+ $config['support_url'] = ''';
+
+ $config['des_key'] = '${env.secret}';
+
+ $config['skin'] = 'elastic';
+ $config['plugins'] = array(
+ 'attachment_reminder',
+ 'emoticons',
+ 'filesystem_attachments',
+ 'hide_blockquote',
+ 'identicon',
+ 'identity_select',
+ 'jqueryui',
+ 'markasjunk',
+ 'managesieve',
+ 'newmail_notifier',
+ 'vcard_attachments',
+ 'zipdownload',
+
+ 'automatic_addressbook',
+ 'message_highlight',
+ 'carddav',
+ // Ne marche pas ?: 'ident_switch',
+ // Ne marche pas ?: 'thunderbird_labels',
+ );
+
+ $config['language'] = 'fr_FR';
+
+ $config['drafts_mbox'] = 'Drafts';
+ $config['junk_mbox'] = 'Junk';
+ $config['sent_mbox'] = 'Sent';
+ $config['trash_mbox'] = 'Trash';
+ $config['default_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash');
+ $config['draft_autosave'] = 60;
+ $config['enable_installer'] = false;
+ $config['log_driver'] = 'file';
+ $config['temp_dir'] = '${varDir}/cache';
+ $config['mime_types'] = '${apacheHttpd}/conf/mime.types';
+ '';
+ keyDependencies = [ apacheHttpd ];
+ };
+ webRoot = (roundcubemail.override { roundcube_config = config.secrets.fullPaths."webapps/tools-roundcube"; }).withPlugins (p: [ p.automatic_addressbook p.carddav p.contextmenu p.contextmenu_folder p.html5_notifier p.ident_switch p.message_highlight p.thunderbird_labels ]);
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /roundcube "${root}"
+
+ DirectoryIndex index.php
+ AllowOverride All
+ Options FollowSymlinks
+ Require all granted
+
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "postgresql.service" ];
+ basedir = builtins.concatStringsSep ":" (
+ [ webRoot config.secrets.fullPaths."webapps/tools-roundcube" varDir ]
+ ++ webRoot.plugins
+ ++ webRoot.skins);
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "RoundcubemailPHPSESSID";
+ "php_admin_value[upload_max_filesize]" = "200M";
+ "php_admin_value[post_max_size]" = "200M";
+ "php_admin_value[open_basedir]" = "${basedir}:${apacheHttpd}/conf/mime.types:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Roundcubemail:'";
+ };
+ };
+}
diff --git a/systems/eldiron/websites/mail/www/index.html b/systems/eldiron/websites/mail/www/index.html
new file mode 100644
index 0000000..88b0ebd
--- /dev/null
+++ b/systems/eldiron/websites/mail/www/index.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+ E-mail configuration
+
+
+
+
+ Email configuration. For automatic configuration in your smart e-mail
+ client, use login@mail.immae.eu . If it
+ doesn’t work, the details are there:
+
+ IMAP: imap.immae.eu
+
+ No unencrypted access
+ STARTTLS: 143
+ SSL: 993
+
+
+ POP3: pop3.immae.eu
+
+ No unencrypted access
+ STARTTLS: 110
+ SSL: 995
+
+
+ SMTP: smtp.immae.eu
+
+ No unencrypted access
+ STARTTLS: 587
+ SSL: 465
+
+
+ Sieve: imap.immae.eu
+
+ No unencrypted access
+ STARTTLS: 4190
+
+
+
+
+ Webmails:
+
+
+
+
+
diff --git a/systems/eldiron/websites/mastodon/default.nix b/systems/eldiron/websites/mastodon/default.nix
new file mode 100644
index 0000000..603fc9e
--- /dev/null
+++ b/systems/eldiron/websites/mastodon/default.nix
@@ -0,0 +1,174 @@
+{ lib, pkgs, config, ... }:
+let
+ env = config.myEnv.tools.mastodon;
+ root = "${mcfg.workdir}/public/";
+ cfg = config.myServices.websites.tools.mastodon;
+ mcfg = config.immaeServices.mastodon;
+in {
+ options.myServices.websites.tools.mastodon = {
+ enable = lib.mkEnableOption "enable mastodon's website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.mastodon =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.mastodon = {
+ file.datetime = "2022-08-21T19:50:00";
+ service = {
+ name = "Mastodon";
+ description = "Your self-hosted, globally interconnected microblogging community";
+ website = "https://mastodon.immae.eu/";
+ logo = "https://mastodon.immae.eu/apple-touch-icon.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Mastodon";
+ website = "https://joinmastodon.org/";
+ license.url = "https://github.com/tootsuite/mastodon/blob/master/LICENSE";
+ license.name = "GNU General Public License v3.0";
+ version = mcfg.package.version;
+ source.url = "https://github.com/tootsuite/mastodon";
+ };
+ };
+ secrets.keys."webapps/tools-mastodon" = {
+ user = "mastodon";
+ group = "mastodon";
+ permissions = "0400";
+ text = ''
+ REDIS_HOST=${env.redis.host}
+ REDIS_PORT=${env.redis.port}
+ REDIS_DB=${env.redis.db}
+ DB_HOST=${env.postgresql.socket}
+ DB_USER=${env.postgresql.user}
+ DB_NAME=${env.postgresql.database}
+ DB_PASS=${env.postgresql.password}
+ DB_PORT=${env.postgresql.port}
+
+ LOCAL_DOMAIN=mastodon.immae.eu
+ LOCAL_HTTPS=true
+ ALTERNATE_DOMAINS=immae.eu
+
+ PAPERCLIP_SECRET=${env.paperclip_secret}
+ SECRET_KEY_BASE=${env.secret_key_base}
+ OTP_SECRET=${env.otp_secret}
+
+ VAPID_PRIVATE_KEY=${env.vapid.private}
+ VAPID_PUBLIC_KEY=${env.vapid.public}
+
+ SMTP_DELIVERY_METHOD=sendmail
+ SMTP_FROM_ADDRESS=mastodon@tools.immae.eu
+ SENDMAIL_LOCATION="/run/wrappers/bin/sendmail"
+ PAPERCLIP_ROOT_PATH=${mcfg.dataDir}
+
+ STREAMING_CLUSTER_NUM=1
+
+ RAILS_LOG_LEVEL=warn
+
+ # LDAP authentication (optional)
+ LDAP_ENABLED=true
+ LDAP_HOST=${env.ldap.host}
+ LDAP_PORT=636
+ LDAP_METHOD=simple_tls
+ LDAP_BASE="${env.ldap.base}"
+ LDAP_BIND_DN="${env.ldap.dn}"
+ LDAP_PASSWORD="${env.ldap.password}"
+ LDAP_UID="uid"
+ LDAP_SEARCH_FILTER="${env.ldap.filter}"
+ '';
+ };
+ immaeServices.mastodon = {
+ enable = true;
+ configFile = config.secrets.fullPaths."webapps/tools-mastodon";
+ socketsPrefix = "live_immae";
+ dataDir = "/var/lib/mastodon_immae";
+ };
+ services.filesWatcher.mastodon-streaming = {
+ restart = true;
+ paths = [ mcfg.configFile ];
+ };
+ services.filesWatcher.mastodon-web = {
+ restart = true;
+ paths = [ mcfg.configFile ];
+ };
+ services.filesWatcher.mastodon-sidekiq = {
+ restart = true;
+ paths = [ mcfg.configFile ];
+ };
+
+
+ services.websites.env.tools.modules = [
+ "headers" "proxy" "proxy_wstunnel" "proxy_http"
+ ];
+ security.acme.certs.eldiron.extraDomainNames = [ "mastodon.immae.eu" ];
+ services.websites.env.tools.vhostConfs.mastodon = {
+ certName = "eldiron";
+ hosts = ["mastodon.immae.eu" ];
+ root = root;
+ extraConfig = [ ''
+ Header always set Referrer-Policy "strict-origin-when-cross-origin"
+ Header always set Strict-Transport-Security "max-age=31536000"
+
+
+ Header always set Cache-Control "public, max-age=31536000, immutable"
+ Require all granted
+
+
+ ProxyPreserveHost On
+ RequestHeader set X-Forwarded-Proto "https"
+
+ RewriteEngine On
+
+ RewriteRule ^/api/v1/streaming/(.+)$ unix://${mcfg.sockets.node}|http://mastodon.immae.eu/api/v1/streaming/$1 [P,NE,QSA,L]
+ RewriteRule ^/api/v1/streaming/public$ unix://${mcfg.sockets.node}|http://mastodon.immae.eu/api/v1/streaming/public [P,NE,QSA,L]
+ RewriteRule ^/api/v1/streaming/$ unix://${mcfg.sockets.node}|ws://mastodon.immae.eu/ [P,NE,QSA,L]
+ RewriteCond %{REQUEST_URI} !/500.html
+ RewriteCond %{REQUEST_URI} !/sw.js
+ RewriteCond %{REQUEST_URI} !/embed.js
+ RewriteCond %{REQUEST_URI} !/robots.txt
+ RewriteCond %{REQUEST_URI} !/manifest.json
+ RewriteCond %{REQUEST_URI} !/browserconfig.xml
+ RewriteCond %{REQUEST_URI} !/mask-icon.svg
+ RewriteCond %{REQUEST_URI} !^(/.*\.(png|ico|gif)$)
+ RewriteCond %{REQUEST_URI} !^/(assets|avatars|emoji|headers|packs|sounds|system|.well-known/acme-challenge)
+ RewriteRule ^/(.*)$ unix:///run/mastodon/live_immae_puma.sock|http://mastodon.immae.eu/$1 [P,NE,QSA,L]
+ ProxyPassReverse / unix://${mcfg.sockets.rails}|http://mastodon.immae.eu/
+
+ Alias /system ${mcfg.dataDir}
+
+
+ Require all granted
+ Options -MultiViews
+
+
+
+ Require all granted
+ Options -MultiViews +FollowSymlinks
+
+
+ ErrorDocument 500 /500.html
+ ErrorDocument 501 /500.html
+ ErrorDocument 502 /500.html
+ ErrorDocument 503 /500.html
+ ErrorDocument 504 /500.html
+ '' ];
+ };
+ myServices.monitoring.fromMasterActivatedPlugins = [ "http" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "mastodon website is running on mastodon.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "mastodon.immae.eu" "/" "Mastodon "];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Mastodon";
+ _webstatus_url = "https://mastodon.immae.eu/";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/websites/mgoblin/default.nix b/systems/eldiron/websites/mgoblin/default.nix
new file mode 100644
index 0000000..f276c62
--- /dev/null
+++ b/systems/eldiron/websites/mgoblin/default.nix
@@ -0,0 +1,173 @@
+{ lib, pkgs, config, mediagoblin, ... }:
+let
+ env = config.myEnv.tools.mediagoblin;
+ cfg = config.myServices.websites.tools.mediagoblin;
+ mcfg = config.services.mediagoblin;
+in {
+ options.myServices.websites.tools.mediagoblin = {
+ enable = lib.mkEnableOption "enable mediagoblin's website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.mgoblin =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.mediagoblin = {
+ file.datetime = "2022-08-21T20:00:00";
+ service = {
+ name = "Mediagoblin";
+ description = "MediaGoblin is a free software media publishing platform that anyone can run";
+ website = "https://mgoblin.immae.eu/";
+ logo = "https://mgoblin.immae.eu/mgoblin_static/images/goblin.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Mediagoblin";
+ website = "https://mediagoblin.org/";
+ license.url = "http://www.gnu.org/licenses/agpl.html";
+ license.name = "GNU Affero General Public License";
+ version = mcfg.package.version;
+ source.url = "https://git.savannah.gnu.org/git/mediagoblin.git";
+ modules = map (a: a.pluginName) mcfg.package.plugins;
+ };
+ };
+ secrets.keys."webapps/tools-mediagoblin" = {
+ user = "mediagoblin";
+ group = "mediagoblin";
+ permissions = "0400";
+ text =
+ let
+ psql_url = with env.postgresql; "postgresql://${user}:${password}@:${port}/${database}?host=${socket}";
+ redis_url = with env.redis; "redis+socket://${socket}?virtual_host=${db}";
+ in
+ ''
+ [DEFAULT]
+ data_basedir = "${mcfg.dataDir}"
+
+ [mediagoblin]
+ direct_remote_path = /mgoblin_static/
+ email_sender_address = "mediagoblin@tools.immae.eu"
+
+ #sql_engine = sqlite:///%(data_basedir)s/mediagoblin.db
+ sql_engine = ${psql_url}
+
+ email_debug_mode = false
+ allow_registration = false
+ allow_reporting = true
+
+ theme = airymodified
+
+ user_privilege_scheme = "uploader,commenter,reporter"
+
+ # We need to redefine them here since we override data_basedir
+ # cf /usr/share/webapps/mediagoblin/mediagoblin/config_spec.ini
+ workbench_path = %(data_basedir)s/media/workbench
+ crypto_path = %(data_basedir)s/crypto
+ theme_install_dir = %(data_basedir)s/themes/
+ theme_linked_assets_dir = %(data_basedir)s/theme_static/
+ plugin_linked_assets_dir = %(data_basedir)s/plugin_static/
+
+ [storage:queuestore]
+ base_dir = %(data_basedir)s/media/queue
+
+ [storage:publicstore]
+ base_dir = %(data_basedir)s/media/public
+ base_url = /mgoblin_media/
+
+ [celery]
+ CELERY_RESULT_DBURI = ${redis_url}
+ BROKER_URL = ${redis_url}
+ CELERYD_CONCURRENCY = 1
+
+ [plugins]
+ [[mediagoblin.plugins.geolocation]]
+ [[mediagoblin.plugins.ldap]]
+ [[[immae.eu]]]
+ LDAP_SERVER_URI = 'ldaps://${env.ldap.host}:636'
+ LDAP_SEARCH_BASE = '${env.ldap.base}'
+ LDAP_BIND_DN = '${env.ldap.dn}'
+ LDAP_BIND_PW = '${env.ldap.password}'
+ LDAP_SEARCH_FILTER = '${env.ldap.filter}'
+ EMAIL_SEARCH_FIELD = 'mail'
+ [[mediagoblin.plugins.basicsearch]]
+ [[mediagoblin.plugins.piwigo]]
+ [[mediagoblin.plugins.processing_info]]
+ [[mediagoblin.media_types.image]]
+ [[mediagoblin.media_types.video]]
+ '';
+ };
+
+ users.users.mediagoblin.extraGroups = [ "keys" ];
+
+ services.mediagoblin = {
+ enable = true;
+ package = mediagoblin.withPlugins (p: [p.basicsearch]);
+ configFile = config.secrets.fullPaths."webapps/tools-mediagoblin";
+ };
+ services.filesWatcher.mediagoblin-web = {
+ restart = true;
+ paths = [ mcfg.configFile ];
+ };
+ services.filesWatcher.mediagoblin-celeryd = {
+ restart = true;
+ paths = [ mcfg.configFile ];
+ };
+
+ services.websites.env.tools.modules = [
+ "proxy" "proxy_http"
+ ];
+ users.users.wwwrun.extraGroups = [ "mediagoblin" ];
+ security.acme.certs.eldiron.extraDomainNames = [ "mgoblin.immae.eu" ];
+ services.websites.env.tools.vhostConfs.mgoblin = {
+ certName = "eldiron";
+ hosts = ["mgoblin.immae.eu" ];
+ root = null;
+ extraConfig = [ ''
+ Alias /mgoblin_media ${mcfg.dataDir}/media/public
+
+ Options -Indexes +FollowSymLinks +MultiViews +Includes
+ Require all granted
+
+
+ Alias /theme_static ${mcfg.dataDir}/theme_static
+
+ Options -Indexes +FollowSymLinks +MultiViews +Includes
+ Require all granted
+
+
+ Alias /plugin_static ${mcfg.dataDir}/plugin_static
+
+ Options -Indexes +FollowSymLinks +MultiViews +Includes
+ Require all granted
+
+
+ ProxyPreserveHost on
+ ProxyVia On
+ ProxyRequests Off
+ ProxyPass /mgoblin_media !
+ ProxyPass /theme_static !
+ ProxyPass /plugin_static !
+ ProxyPassMatch ^/.well-known/acme-challenge !
+ ProxyPass / unix://${mcfg.sockets.paster}|http://mgoblin.immae.eu/
+ ProxyPassReverse / unix://${mcfg.sockets.paster}|http://mgoblin.immae.eu/
+ '' ];
+ };
+ myServices.monitoring.fromMasterActivatedPlugins = [ "http" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "mediagoblin website is running on mgoblin.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "mgoblin.immae.eu" "/" "GNU MediaGoblin"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Mediagoblin";
+ _webstatus_url = "https://mgoblin.immae.eu/";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/websites/moomin.txt b/systems/eldiron/websites/moomin.txt
new file mode 100644
index 0000000..036fb1c
--- /dev/null
+++ b/systems/eldiron/websites/moomin.txt
@@ -0,0 +1,16 @@
+⠀⠀⠀⠀⠀⠀⠀⢠⢦⡀⠀⡰⣩⠃
+⠀⠀⠀⠀⠀⠀⠀⠘⣄⠙⠍⠁⠙⠦⡀
+⠀⠀⠀⠀⠀⠀⠀⠀⡎⠀⠀⡠⠄⠔⠊⠉⠒⠒⠒⢄
+⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⠆
+⠀⠀⢠⢤⠜⡆⠀⢸⠀⠰⣄⠀⠀⠀⠀⠀⠀⠀⣠⠎
+⠀⠀⠱⠤⡁⠈⠑⠇⠀⠀⠀⠉⠒⠤⠤⠄⢖⠊⠀⡐⠧⣄⣀
+⠀⠀⠀⠀⠘⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡉⠀⣀⣨⡷
+⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⠜⠁
+⠀⠀⠀⠀⠀⠀⢇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣸⠱⡀
+⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠁⠀⣣
+⠀⠀⠀⠀⠀⠀⠀⠑⣄⠀⠀⠀⠀⠀⠀⠀⢀⣠⣀⠴⠊⠁
+⠰⢍⢒⢄⠀⠀⠀⠀⢸⢳⢆⠀⠀⠀⠰⡖⠋⠁
+⠀⠳⠴⣙⢄⠀⢀⡠⣣⠃⠈⠑⢤⡄⠀⡸⠂
+⠀⠀⠀⠀⠑⠋⠓⠊⠁⠀⠀⠀⠓⠒⠉
+Credentials: https://twitter.com/thingskatedid/status/1278274012754309120
+Credentials: https://gist.github.com/katef/09581d7c84eddf784508fa430f6ef47a
diff --git a/systems/eldiron/websites/nossl/index.html b/systems/eldiron/websites/nossl/index.html
new file mode 100644
index 0000000..4401a80
--- /dev/null
+++ b/systems/eldiron/websites/nossl/index.html
@@ -0,0 +1,11 @@
+
+
+
+ No SSL site
+
+
+ No SSL on this site
+ Use for wifi networks with login page that doesn't work well with
+ https.
+
+
diff --git a/systems/eldiron/websites/peertube/default.nix b/systems/eldiron/websites/peertube/default.nix
new file mode 100644
index 0000000..0ebe4e7
--- /dev/null
+++ b/systems/eldiron/websites/peertube/default.nix
@@ -0,0 +1,147 @@
+{ lib, pkgs, config, ... }:
+let
+ env = config.myEnv.tools.peertube;
+ cfg = config.myServices.websites.tools.peertube;
+ pcfg = config.immaeServices.peertube;
+in {
+ options.myServices.websites.tools.peertube = {
+ enable = lib.mkEnableOption "enable Peertube's website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.peertube =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.hostings.peertube = {
+ file.datetime = "2022-08-21T20:00:00";
+ hosting = {
+ name = "Peertube";
+ description = "Free software to take back control of your videos";
+ website = "https://peertube.immae.eu/";
+ logo = "https://peertube.immae.eu/client/assets/images/icons/icon-192x192.png";
+ type = "INSTANCE";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ };
+ myServices.chatonsProperties.services.peertube = {
+ file.datetime = "2022-08-21T20:00:00";
+ service = {
+ name = "Peertube";
+ description = "Free software to take back control of your videos";
+ website = "https://peertube.immae.eu/";
+ logo = "https://peertube.immae.eu/client/assets/images/icons/icon-192x192.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Peertube";
+ website = "https://joinpeertube.org/";
+ license.url = "https://github.com/Chocobozzz/PeerTube/blob/develop/LICENSE";
+ license.name = "GNU Affero General Public License";
+ version = pcfg.package.version;
+ source.url = "https://github.com/Chocobozzz/PeerTube";
+ };
+ };
+ immaeServices.peertube = {
+ enable = true;
+ configFile = config.secrets.fullPaths."webapps/tools-peertube";
+ };
+ users.users.peertube.extraGroups = [ "keys" ];
+
+ secrets.keys."webapps/tools-peertube" = {
+ user = "peertube";
+ group = "peertube";
+ permissions = "0640";
+ text = ''
+ listen:
+ hostname: 'localhost'
+ port: ${toString config.myEnv.ports.peertube}
+ webserver:
+ https: true
+ hostname: 'peertube.immae.eu'
+ port: 443
+ database:
+ hostname: '${env.postgresql.socket}'
+ port: 5432
+ suffix: '_prod'
+ username: '${env.postgresql.user}'
+ password: '${env.postgresql.password}'
+ pool:
+ max: 5
+ redis:
+ socket: '${env.redis.socket}'
+ auth: null
+ db: ${env.redis.db}
+ smtp:
+ transport: sendmail
+ sendmail: '/run/wrappers/bin/sendmail'
+ from_address: 'peertube@tools.immae.eu'
+ storage:
+ tmp: '${pcfg.dataDir}/storage/tmp/'
+ avatars: '${pcfg.dataDir}/storage/avatars/'
+ videos: '${pcfg.dataDir}/storage/videos/'
+ streaming_playlists: '${pcfg.dataDir}/storage/streaming-playlists/'
+ redundancy: '${pcfg.dataDir}/storage/videos/'
+ logs: '${pcfg.dataDir}/storage/logs/'
+ previews: '${pcfg.dataDir}/storage/previews/'
+ thumbnails: '${pcfg.dataDir}/storage/thumbnails/'
+ torrents: '${pcfg.dataDir}/storage/torrents/'
+ captions: '${pcfg.dataDir}/storage/captions/'
+ cache: '${pcfg.dataDir}/storage/cache/'
+ plugins: '${pcfg.dataDir}/storage/plugins/'
+ client_overrides: '${pcfg.dataDir}/storage/client-overrides/'
+ '';
+ };
+
+ services.websites.env.tools.modules = [
+ "headers" "proxy" "proxy_http" "proxy_wstunnel"
+ ];
+ services.filesWatcher.peertube = {
+ restart = true;
+ paths = [ pcfg.configFile ];
+ };
+
+ security.acme.certs.eldiron.extraDomainNames = [ "peertube.immae.eu" ];
+ services.websites.env.tools.vhostConfs.peertube = {
+ certName = "eldiron";
+ hosts = [ "peertube.immae.eu" ];
+ root = null;
+ extraConfig = [ ''
+ RewriteEngine On
+
+ RewriteCond %{REQUEST_URI} ^/socket.io [NC]
+ RewriteCond %{QUERY_STRING} transport=websocket [NC]
+ RewriteRule /(.*) ws://localhost:${toString env.listenPort}/$1 [P,NE,QSA,L]
+
+ RewriteCond %{REQUEST_URI} ^/tracker/socket [NC]
+ RewriteRule /(.*) ws://localhost:${toString env.listenPort}/$1 [P,NE,QSA,L]
+
+ ProxyPass / http://localhost:${toString env.listenPort}/
+ ProxyPassReverse / http://localhost:${toString env.listenPort}/
+
+ ProxyPreserveHost On
+ RequestHeader set X-Real-IP %{REMOTE_ADDR}s
+ '' ];
+ };
+
+ myServices.monitoring.fromMasterActivatedPlugins = [ "http" ];
+ myServices.monitoring.fromMasterObjects.service = [
+ {
+ service_description = "peertube website is running on peertube.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "peertube.immae.eu" "/" "Immae’s PeerTube"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Peertube";
+ _webstatus_url = "https://peertube.immae.eu/";
+ }
+ ];
+ };
+}
diff --git a/systems/eldiron/websites/performance/default.nix b/systems/eldiron/websites/performance/default.nix
new file mode 100644
index 0000000..23f754a
--- /dev/null
+++ b/systems/eldiron/websites/performance/default.nix
@@ -0,0 +1,93 @@
+{ pkgs, lib, config, ... }:
+let
+ env = config.myEnv.tools.status_engine;
+ package = pkgs.status-engine-interface.override({ config_file = config.secrets.fullPaths."status_engine_ui"; });
+ apacheRoot = "${package}/public";
+ cfg = config.myServices.websites.tools.performance;
+in
+{
+ options.myServices.websites.tools.performance = {
+ enable = lib.mkEnableOption "Enable performance website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.performance =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ secrets.keys = {
+ status_engine_ui = {
+ permissions = "0400";
+ user = "wwwrun";
+ group = "wwwrun";
+ text = ''
+ allow_anonymous: 0
+ anonymous_can_submit_commands: 0
+ urls_without_login:
+ - login
+ - loginstate
+ auth_type: ldap
+ ldap_server: ${env.ldap.host}
+ ldap_use_ssl: 1
+ ldap_port: 636
+ ldap_bind_dn: ${env.ldap.dn}
+ ldap_bind_password: ${env.ldap.password}
+ ldap_base_dn: ${env.ldap.base}
+ ldap_filter: "${env.ldap.filter}"
+ ldap_attribute:
+ - memberOf
+ use_crate: 0
+ use_mysql: 1
+ mysql:
+ host: 127.0.0.1
+ port: ${builtins.toString env.mysql.port}
+ username: ${env.mysql.user}
+ password: ${env.mysql.password}
+ database: ${env.mysql.database}
+ display_perfdata: 1
+ perfdata_backend: mysql
+ '';
+ };
+ };
+
+ services.websites.env.tools.modules = [ "proxy_fcgi" ];
+
+ security.acme.certs.eldiron.extraDomainNames = [ "performance.immae.eu" ];
+ services.websites.env.tools.vhostConfs.performance = {
+ certName = "eldiron";
+ hosts = [ "performance.immae.eu" ];
+ root = apacheRoot;
+ extraConfig = [
+ ''
+
+ DirectoryIndex index.html
+ AllowOverride None
+ Require all granted
+
+ SetHandler "proxy:unix:${config.services.phpfpm.pools.status_engine.socket}|fcgi://localhost"
+
+
+ ''
+ ];
+ };
+
+ services.phpfpm.pools.status_engine = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = {
+ "listen.owner" = "wwwrun";
+ "listen.group" = "wwwrun";
+ "pm" = "dynamic";
+ "pm.max_children" = "60";
+ "pm.start_servers" = "2";
+ "pm.min_spare_servers" = "1";
+ "pm.max_spare_servers" = "10";
+
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:StatusEngine:'";
+ "php_admin_value[open_basedir]" = "${package}:/tmp:${config.secrets.fullPaths."status_engine_ui"}";
+ };
+ phpPackage = pkgs.php74.withExtensions({ enabled, all }: enabled ++ [ all.redis ]);
+ };
+
+ };
+}
diff --git a/systems/eldiron/websites/stats/default.nix b/systems/eldiron/websites/stats/default.nix
new file mode 100644
index 0000000..665010b
--- /dev/null
+++ b/systems/eldiron/websites/stats/default.nix
@@ -0,0 +1,51 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.myServices.websites.tools.stats;
+ myCfg = config.myEnv.tools.umami;
+in
+{
+ options.myServices.websites.tools.stats.enable = lib.mkEnableOption "Enable stats site";
+ config = lib.mkIf cfg.enable {
+ secrets.keys = {
+ "uami/env" = {
+ permission = "0400";
+ text = ''
+ PORT=${toString myCfg.listenPort}
+ HOSTNAME=127.0.0.1
+ DATABASE_URL=postgresql://${myCfg.postgresql.user}:${myCfg.postgresql.password}@localhost:${myCfg.postgresql.port}/${myCfg.postgresql.database}?sslmode=disable&host=${myCfg.postgresql.socket}
+ HASH_SALT=${myCfg.hashSalt}
+ '';
+ };
+ };
+
+ security.acme.certs.eldiron.extraDomainNames = [ "stats.immae.eu" ];
+ services.websites.env.tools.vhostConfs.stats = {
+ certName = "eldiron";
+ hosts = [ "stats.immae.eu" ];
+ root = null;
+ extraConfig = [
+ ''
+ ProxyPass / http://localhost:${toString myCfg.listenPort}/
+ ProxyPassReverse / http://localhost:${toString myCfg.listenPort}/
+ ProxyPreserveHost On
+ ''
+ ];
+ };
+ systemd.services.umami = {
+ description = "Umami service";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+ wants = [ "postgresql.service" ];
+ path = [ pkgs.nodejs pkgs.bashInteractive ];
+ serviceConfig = {
+ Type = "simple";
+ User = "umami";
+ Group = "umami";
+ DynamicUser = true;
+ SupplementaryGroups = [ "keys" ];
+ ExecStart = "${pkgs.umami}/bin/umami";
+ EnvironmentFile = config.secrets.fullPaths."umami/env";
+ };
+ };
+ };
+}
diff --git a/systems/eldiron/websites/tools/adminer.nix b/systems/eldiron/websites/tools/adminer.nix
new file mode 100644
index 0000000..5e865b1
--- /dev/null
+++ b/systems/eldiron/websites/tools/adminer.nix
@@ -0,0 +1,83 @@
+{ config, webapps-adminer, php82, lib, forcePhpSocket ? null }:
+rec {
+ webRoot = webapps-adminer;
+ phpFpm = rec {
+ user = apache.user;
+ group = apache.group;
+ phpPackage = let
+ #mysqli_pam = php81.extensions.mysqli.overrideAttrs(old: {
+ # configureFlags = [ "--with-mysqli=${libmysqlclient_pam.dev}/bin/mysql_config" "--with-mysql-sock=/run/mysqld/mysqld.sock" ];
+ #});
+ in
+ php82.withExtensions ({ enabled, all }: [all.mysqli all.redis all.pgsql]);
+ settings = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "5";
+ "pm.process_idle_timeout" = "60";
+ #"php_admin_flag[log_errors]" = "on";
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "AdminerPHPSESSID";
+ "php_admin_value[open_basedir]" = "${webRoot}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Adminer:'";
+ };
+ };
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /adminer ${webRoot}
+
+ DirectoryIndex index.php
+
+ SetHandler "proxy:unix:${if forcePhpSocket != null then forcePhpSocket else socket}|fcgi://localhost"
+
+
+ Use LDAPConnect
+ Require ldap-group cn=users,cn=mysql,cn=pam,ou=services,dc=immae,dc=eu
+ Require ldap-group cn=users,cn=postgresql,cn=pam,ou=services,dc=immae,dc=eu
+
+ '';
+ };
+ monitoringPlugins = [ "http" ];
+ monitoringObjects.service = [
+ {
+ service_description = "adminer website is running on tools.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https_auth" "tools.immae.eu" "/adminer/" "www.adminerevo.org"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Adminer";
+ _webstatus_url = "https://tools.immae.eu/adminer/";
+ }
+ ];
+
+ chatonsProperties = {
+ published = false;
+ file.datetime = "2023-08-21T15:20:00";
+ service = {
+ name = "Adminer";
+ description = "Database management in a single PHP file";
+ website = "https://tools.immae.eu/adminer/";
+ logo = "https://tools.immae.eu/adminer/?file=favicon.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Adminer";
+ website = "https://docs.adminerevo.org/";
+ license.url = "https://github.com/adminerevo/adminerevo/blob/main/readme.md";
+ license.name = "Apache License 2.0 or GPL 2";
+ version = webRoot.version;
+ source.url = "https://github.com/adminerevo/adminerevo/";
+ };
+ };
+}
diff --git a/systems/eldiron/websites/tools/default.nix b/systems/eldiron/websites/tools/default.nix
new file mode 100644
index 0000000..4d9e3c1
--- /dev/null
+++ b/systems/eldiron/websites/tools/default.nix
@@ -0,0 +1,547 @@
+{ lib, pkgs, config, mypackages-lib, grocy, ... }:
+let
+ composerEnv = mypackages-lib.composerEnv;
+ adminer = pkgs.callPackage ./adminer.nix { inherit config; };
+ ympd = pkgs.callPackage ./ympd.nix {
+ env = config.myEnv.tools.ympd;
+ inherit config;
+ };
+ ttrss = pkgs.callPackage ./ttrss.nix {
+ ttrss = pkgs.webapps-ttrss;
+ ttrss-plugins = pkgs.webapps-ttrss-plugins;
+ env = config.myEnv.tools.ttrss;
+ php = pkgs.php72;
+ inherit config;
+ };
+ kanboard = pkgs.callPackage ./kanboard.nix {
+ inherit config;
+ env = config.myEnv.tools.kanboard;
+ };
+ wallabag = pkgs.callPackage ./wallabag.nix {
+ wallabag = pkgs.webapps-wallabag.override {
+ composerEnv = composerEnv.override {
+ php = pkgs.php73.withExtensions({ enabled, all }: enabled ++ [all.tidy]);
+ };
+ };
+ env = config.myEnv.tools.wallabag;
+ inherit config;
+ };
+ yourls = pkgs.callPackage ./yourls.nix {
+ yourls = pkgs.webapps-yourls;
+ yourls-plugins = pkgs.webapps-yourls-plugins;
+ env = config.myEnv.tools.yourls;
+ inherit config;
+ };
+ rompr = pkgs.callPackage ./rompr.nix {
+ rompr = pkgs.webapps-rompr;
+ env = config.myEnv.tools.rompr;
+ inherit config;
+ };
+ shaarli = pkgs.callPackage ./shaarli.nix {
+ env = config.myEnv.tools.shaarli;
+ inherit config;
+ };
+ dokuwiki = pkgs.callPackage ./dokuwiki.nix {
+ dokuwiki = pkgs.webapps-dokuwiki;
+ dokuwiki-plugins = pkgs.webapps-dokuwiki-plugins;
+ inherit config;
+ };
+ ldap = pkgs.callPackage ./ldap.nix {
+ phpldapadmin = pkgs.webapps-phpldapadmin;
+ env = config.myEnv.tools.phpldapadmin;
+ inherit config;
+ };
+ grocy' = pkgs.callPackage ./grocy.nix {
+ grocy = grocy.override { composerEnv = composerEnv.override { php = pkgs.php72; }; };
+ };
+ phpbb = pkgs.callPackage ./phpbb.nix {
+ phpbb = (pkgs.webapps-phpbb.withLangs (l: [ l.fr ])).withExts (e: [
+ e.alfredoramos.markdown e.davidiq.mailinglist e.dmzx.mchat
+ e.empteintesduweb.monitoranswers e.lr94.autosubscribe
+ e.phpbbmodders.adduser ]);
+ };
+ webhooks-bin-env = pkgs.buildEnv {
+ name = "webhook-env";
+ paths = [ pkgs.apprise ];
+ pathsToLink = [ "/bin" ];
+ };
+ webhooks = pkgs.callPackage ./webhooks.nix {
+ env = config.myEnv.tools.webhooks;
+ binEnv = webhooks-bin-env;
+ };
+ dmarc-reports = pkgs.callPackage ./dmarc_reports.nix {
+ env = config.myEnv.tools.dmarc_reports;
+ inherit config;
+ };
+
+ landing = pkgs.callPackage ./landing.nix { };
+
+ cfg = config.myServices.websites.tools.tools;
+ pcfg = config.services.phpfpm.pools;
+in {
+ options.myServices.websites.tools.tools = {
+ enable = lib.mkEnableOption "enable tools website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ # Services needing to send e-mails
+ myServices.dns.zones."immae.eu".emailPolicies."tools".receive = true;
+ myServices.dns.zones."immae.eu".subdomains =
+ with config.myServices.dns.helpers;
+ {
+ outils = ips servers.eldiron.ips.main;
+ tools = lib.mkMerge [
+ (mailCommon "immae.eu")
+ mailSend
+ (ips servers.eldiron.ips.main)
+ ];
+ };
+
+ myServices.chatonsProperties.services = {
+ adminer = adminer.chatonsProperties;
+ dokuwiki = dokuwiki.chatonsProperties;
+ shaarli = shaarli.chatonsProperties;
+ ttrss = ttrss.chatonsProperties;
+ wallabag = wallabag.chatonsProperties;
+ paste = {
+ file.datetime = "2022-08-22T00:15:00";
+ service = {
+ name = "Paste";
+ description = "A simple paster script with syntax highlight";
+ website = "https://tools.immae.eu/paste/";
+ logo = "https://assets.immae.eu/logo.jpg";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ guide.user = "https://tools.immae.eu/paste/";
+ };
+ software = {
+ name = "Paste";
+ website = "https://tools.immae.eu/paste/";
+ license.url = "https://tools.immae.eu/paste/license";
+ license.name = "MIT License";
+ version = "Unversioned";
+ source.url = "https://tools.immae.eu/paste/abcd123/py";
+ };
+ };
+ };
+ myServices.chatonsProperties.hostings = {
+ dokuwiki = dokuwiki.chatonsHostingProperties;
+ phpbb = phpbb.chatonsHostingProperties;
+ };
+ secrets.keys =
+ kanboard.keys
+ // ldap.keys
+ // shaarli.keys
+ // ttrss.keys
+ // wallabag.keys
+ // yourls.keys
+ // dmarc-reports.keys
+ // webhooks.keys
+ // ({ "webapps/tools-landing-sql-rw" = {
+ user = "wwwrun";
+ group = "wwwrun";
+ permissions = "0400";
+ text = let
+ env = config.myEnv.tools.landing;
+ in ''
+ SetEnv PGUSER "${env.postgresql.user}"
+ SetEnv PGPASSWORD "${env.postgresql.password}"
+ SetEnv PGDATABASE "${env.postgresql.database}"
+ SetEnv PGHOST "${env.postgresql.socket}"
+ '';
+ }; });
+ services.websites.env.tools.modules =
+ [ "proxy_fcgi" ]
+ ++ adminer.apache.modules
+ ++ ympd.apache.modules
+ ++ ttrss.apache.modules
+ ++ wallabag.apache.modules
+ ++ yourls.apache.modules
+ ++ rompr.apache.modules
+ ++ shaarli.apache.modules
+ ++ dokuwiki.apache.modules
+ ++ dmarc-reports.apache.modules
+ ++ phpbb.apache.modules
+ ++ ldap.apache.modules
+ ++ kanboard.apache.modules;
+
+ myServices.dns.zones."immae.dev" = with config.myServices.dns.helpers; {
+ subdomains.tools = ips servers.eldiron.ips.integration;
+ };
+ security.acme.certs.integration.domain = "tools.immae.dev";
+ services.websites.env.integration.vhostConfs.devtools = {
+ certName = "integration";
+ hosts = [ "tools.immae.dev" ];
+ root = "/var/lib/ftp/immae/devtools";
+ extraConfig = [
+ ''
+ Use Apaxy "/var/lib/ftp/immae/devtools" "title"
+ Timeout 600
+ ProxyTimeout 600
+ Header always set Content-Security-Policy-Report-Only "${config.myEnv.tools.csp_reports.policies.inline}"
+
+ DirectoryIndex index.php index.htm index.html
+ AllowOverride all
+ Require all granted
+
+ SetHandler "proxy:unix:${pcfg.devtools.socket}|fcgi://localhost"
+
+
+ ''
+ ];
+ };
+
+
+ security.acme.certs.eldiron.extraDomainNames = [ "outils.immae.eu" "tools.immae.eu" ];
+ services.websites.env.tools.vhostConfs.tools = {
+ certName = "eldiron";
+ hosts = ["tools.immae.eu" ];
+ root = landing;
+ extraConfig = [
+ ''
+ RedirectMatch 301 ^/vpn(.*)$ https://vpn.immae.eu$1
+ RedirectMatch 301 ^/roundcube(.*)$ https://mail.immae.eu/roundcube$1
+ RedirectMatch 301 ^/jappix(.*)$ https://im.immae.fr/converse
+
+
+ Include ${config.secrets.fullPaths."webapps/tools-landing-sql-rw"}
+ DirectoryIndex index.html
+ AllowOverride None
+ Require all granted
+
+
+ SetHandler "proxy:unix:${pcfg.tools.socket}|fcgi://localhost"
+
+
+ ''
+ (adminer.apache.vhostConf pcfg.adminer.socket)
+ ympd.apache.vhostConf
+ (ttrss.apache.vhostConf pcfg.ttrss.socket)
+ (wallabag.apache.vhostConf pcfg.wallabag.socket)
+ (yourls.apache.vhostConf pcfg.yourls.socket)
+ (rompr.apache.vhostConf pcfg.rompr.socket)
+ (shaarli.apache.vhostConf pcfg.shaarli.socket)
+ (dokuwiki.apache.vhostConf pcfg.dokuwiki.socket)
+ (ldap.apache.vhostConf pcfg.ldap.socket)
+ (kanboard.apache.vhostConf pcfg.kanboard.socket)
+ (grocy'.apache.vhostConf pcfg.grocy.socket)
+ (phpbb.apache.vhostConf pcfg.phpbb.socket)
+ (dmarc-reports.apache.vhostConf pcfg.dmarc-reports.socket)
+ ''
+
+ ProxyPass unix://${config.services.paste.sockets.gunicorn}|http://tools.immae.eu/paste/
+ ProxyPassReverse unix://${config.services.paste.sockets.gunicorn}|http://tools.immae.eu/paste/
+ ProxyPreserveHost on
+
+
+ ProxyPass unix://${config.services.paste.sockets.gunicorn}|http://tools.immae.eu/paste/
+ ProxyPassReverse unix://${config.services.paste.sockets.gunicorn}|http://tools.immae.eu/paste/
+ ProxyPreserveHost on
+
+
+
+ SetEnv proxy-nokeepalive 1
+ SetEnv proxy-sendchunked 1
+ LimitRequestBody 102400
+
+ RewriteEngine On
+
+ # FIXME: why is landing prefixed in the url?
+ RewriteCond %{HTTP:Upgrade} websocket [NC]
+ RewriteCond %{HTTP:Connection} upgrade [NC]
+ RewriteRule ^(${landing}/ntfy)?/?(.*) unix:///run/ntfy/ntfy.sock|ws://tools.immae.eu/$2 [P,NE,QSA,L]
+
+ RewriteRule ^(${landing}/ntfy)?/?(.*) unix:///run/ntfy/ntfy.sock|http://tools.immae.eu/$2 [P,NE,QSA,L]
+
+ Alias /BIP39 /var/lib/buildbot/outputs/immae/bip39
+
+ DirectoryIndex index.html
+ AllowOverride None
+ Require all granted
+
+
+ Alias /webhooks ${config.secrets.fullPaths."webapps/webhooks"}
+
+ Options -Indexes
+ DirectoryIndex index.php
+ Require all granted
+ AllowOverride None
+
+ SetHandler "proxy:unix:${pcfg.tools.socket}|fcgi://localhost"
+
+
+ ''
+ ];
+ };
+
+ services.websites.env.tools.vhostConfs.outils = {
+ certName = "eldiron";
+ hosts = [ "outils.immae.eu" ];
+ root = null;
+ extraConfig = [
+ ''
+ RedirectMatch 301 ^/mediagoblin(.*)$ https://mgoblin.immae.eu$1
+
+ RedirectMatch 301 ^/ether(.*)$ https://ether.immae.eu$1
+
+ RedirectMatch 301 ^/nextcloud(.*)$ https://cloud.immae.eu$1
+ RedirectMatch 301 ^/owncloud(.*)$ https://cloud.immae.eu$1
+
+ RedirectMatch 301 ^/carddavmate(.*)$ https://dav.immae.eu/infcloud$1
+ RedirectMatch 301 ^/caldavzap(.*)$ https://dav.immae.eu/infcloud$1
+ RedirectMatch 301 ^/caldav.php(.*)$ https://dav.immae.eu/caldav.php$1
+ RedirectMatch 301 ^/davical(.*)$ https://dav.immae.eu/davical$1
+
+ RedirectMatch 301 ^/taskweb(.*)$ https://task.immae.eu/taskweb$1
+
+ RedirectMatch 301 ^/roundcube(.*)$ https://mail.immae.eu/roundcube$1
+
+ RedirectMatch 301 ^/jappix(.*)$ https://im.immae.fr/converse
+
+ RedirectMatch 301 ^/vpn(.*)$ https://vpn.immae.eu$1
+
+ RedirectMatch 301 ^/(.*)$ https://tools.immae.eu/$1
+ ''
+ ];
+ };
+
+ systemd.services = {
+ phpfpm-dokuwiki = {
+ after = lib.mkAfter dokuwiki.phpFpm.serviceDeps;
+ wants = dokuwiki.phpFpm.serviceDeps;
+ };
+ phpfpm-phpbb = {
+ after = lib.mkAfter phpbb.phpFpm.serviceDeps;
+ wants = phpbb.phpFpm.serviceDeps;
+ };
+ phpfpm-kanboard = {
+ after = lib.mkAfter kanboard.phpFpm.serviceDeps;
+ wants = kanboard.phpFpm.serviceDeps;
+ };
+ phpfpm-ldap = {
+ after = lib.mkAfter ldap.phpFpm.serviceDeps;
+ wants = ldap.phpFpm.serviceDeps;
+ };
+ phpfpm-shaarli = {
+ after = lib.mkAfter shaarli.phpFpm.serviceDeps;
+ wants = shaarli.phpFpm.serviceDeps;
+ };
+ phpfpm-ttrss = {
+ after = lib.mkAfter ttrss.phpFpm.serviceDeps;
+ wants = ttrss.phpFpm.serviceDeps;
+ };
+ phpfpm-wallabag = {
+ after = lib.mkAfter wallabag.phpFpm.serviceDeps;
+ wants = wallabag.phpFpm.serviceDeps;
+ preStart = lib.mkAfter wallabag.phpFpm.preStart;
+ };
+ phpfpm-yourls = {
+ after = lib.mkAfter yourls.phpFpm.serviceDeps;
+ wants = yourls.phpFpm.serviceDeps;
+ };
+ ntfy = {
+ description = "send push notifications to your phone or desktop via scripts from any computer";
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ ExecStart = "${pkgs.ntfy-sh}/bin/ntfy serve --listen-http '' --listen-unix %t/ntfy/ntfy.sock --cache-file %S/ntfy/cache.db --cache-duration 120h --behind-proxy --attachment-cache-dir %S/ntfy/attachments --base-url https://tools.immae.eu/ntfy";
+ Type = "simple";
+ WorkingDirectory = "%S/ntfy";
+ RuntimeDirectory = "ntfy";
+ StateDirectory = "ntfy";
+ User = "wwwrun";
+ };
+ };
+ ympd = {
+ description = "Standalone MPD Web GUI written in C";
+ wantedBy = [ "multi-user.target" ];
+ script = ''
+ export MPD_PASSWORD=$(cat ${config.secrets.fullPaths."mpd"})
+ ${pkgs.ympd}/bin/ympd --host ${ympd.config.host} --port ${toString ympd.config.port} --webport ${ympd.config.webPort} --user nobody
+ '';
+ };
+ tt-rss = {
+ description = "Tiny Tiny RSS feeds update daemon";
+ serviceConfig = {
+ User = "wwwrun";
+ ExecStart = "${pkgs.php72}/bin/php ${ttrss.webRoot}/update.php --daemon";
+ StandardOutput = "syslog";
+ StandardError = "syslog";
+ PermissionsStartOnly = true;
+ };
+
+ wantedBy = [ "multi-user.target" ];
+ requires = ["postgresql.service"];
+ after = ["network.target" "postgresql.service"];
+ };
+ };
+
+ services.filesWatcher.ympd = {
+ restart = true;
+ paths = [ config.secrets.fullPaths."mpd" ];
+ };
+
+ services.phpfpm.pools = {
+ tools = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = {
+ "listen.owner" = "wwwrun";
+ "listen.group" = "wwwrun";
+ "pm" = "dynamic";
+ "pm.max_children" = "60";
+ "pm.start_servers" = "2";
+ "pm.min_spare_servers" = "1";
+ "pm.max_spare_servers" = "10";
+
+ "php_admin_value[sendmail_path]" = "/run/wrappers/bin/sendmail -t -i";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Tools:'";
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "ToolsPHPSESSID";
+ "php_admin_value[open_basedir]" = builtins.concatStringsSep ":" [
+ "/run/wrappers/bin/sendmail" landing "/tmp"
+ config.secrets.fullPaths."webapps/webhooks"
+ "${webhooks-bin-env}/bin"
+ ];
+ };
+ phpEnv = {
+ CONTACT_EMAIL = config.myEnv.tools.contact;
+ };
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [ all.redis ]);
+ };
+ devtools = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = {
+ "listen.owner" = "wwwrun";
+ "listen.group" = "wwwrun";
+ "pm" = "dynamic";
+ "pm.max_children" = "60";
+ "pm.start_servers" = "2";
+ "pm.min_spare_servers" = "1";
+ "pm.max_spare_servers" = "10";
+
+ "php_admin_value[sendmail_path]" = "/run/wrappers/bin/sendmail -t -i";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Devtools:'";
+ "php_admin_value[open_basedir]" = "/run/wrappers/bin/sendmail:/var/lib/ftp/immae/devtools:/tmp";
+ };
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.mysqli all.sqlite3 all.redis all.apcu all.opcache ]);
+ };
+ adminer = adminer.phpFpm;
+ ttrss = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = ttrss.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ wallabag = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = wallabag.phpFpm.pool;
+ phpPackage = pkgs.php73.withExtensions({ enabled, all }: enabled ++ [all.tidy all.redis]);
+ };
+ yourls = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = yourls.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ rompr = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = rompr.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ shaarli = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = shaarli.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ dmarc-reports = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = dmarc-reports.phpFpm.pool;
+ phpEnv = dmarc-reports.phpFpm.phpEnv;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ dokuwiki = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = dokuwiki.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ phpbb = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = phpbb.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ ldap = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = ldap.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ kanboard = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = kanboard.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ grocy = {
+ user = "wwwrun";
+ group = "wwwrun";
+ settings = grocy'.phpFpm.pool;
+ phpPackage = pkgs.php72.withExtensions({ enabled, all }: enabled ++ [all.redis]);
+ };
+ };
+
+ system.activationScripts = {
+ grocy = grocy'.activationScript;
+ ttrss = ttrss.activationScript;
+ wallabag = wallabag.activationScript;
+ rompr = rompr.activationScript;
+ shaarli = shaarli.activationScript;
+ dokuwiki = dokuwiki.activationScript;
+ phpbb = phpbb.activationScript;
+ kanboard = kanboard.activationScript;
+ };
+
+ services.websites.env.tools.watchPaths = [
+ config.secrets.fullPaths."webapps/tools-shaarli"
+ ];
+ services.filesWatcher.phpfpm-wallabag = {
+ restart = true;
+ paths = [ config.secrets.fullPaths."webapps/tools-wallabag" ];
+ };
+
+ myServices.monitoring.fromMasterActivatedPlugins = lib.mkMerge [
+ ttrss.monitoringPlugins
+ rompr.monitoringPlugins
+ wallabag.monitoringPlugins
+ yourls.monitoringPlugins
+ ympd.monitoringPlugins
+ dokuwiki.monitoringPlugins
+ shaarli.monitoringPlugins
+ ldap.monitoringPlugins
+ adminer.monitoringPlugins
+ ];
+ myServices.monitoring.fromMasterObjects = lib.mkMerge [
+ ttrss.monitoringObjects
+ rompr.monitoringObjects
+ wallabag.monitoringObjects
+ yourls.monitoringObjects
+ ympd.monitoringObjects
+ dokuwiki.monitoringObjects
+ shaarli.monitoringObjects
+ ldap.monitoringObjects
+ adminer.monitoringObjects
+ ];
+ };
+}
+
diff --git a/systems/eldiron/websites/tools/dmarc_reports.nix b/systems/eldiron/websites/tools/dmarc_reports.nix
new file mode 100644
index 0000000..8b3aa99
--- /dev/null
+++ b/systems/eldiron/websites/tools/dmarc_reports.nix
@@ -0,0 +1,61 @@
+{ env, config }:
+rec {
+ keys."webapps/tools-dmarc-reports.php" = {
+ user = "wwwrun";
+ group = "wwwrun";
+ permissions = "0400";
+ text = ''
+
+ '';
+ };
+ webRoot = ./dmarc_reports;
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /dmarc-reports "${root}"
+
+ DirectoryIndex index.html
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ AllowOverride None
+ Options +FollowSymlinks
+
+ SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
+ Use LDAPConnect
+ Require all granted
+ Require ldap-attribute uid=immae
+
+ '';
+ };
+ phpFpm = rec {
+ basedir = builtins.concatStringsSep ":"
+ [ webRoot config.secrets.fullPaths."webapps/tools-dmarc-reports.php" ];
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:DmarcReports:'";
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ };
+ phpEnv = {
+ SECRETS_FILE = config.secrets.fullPaths."webapps/tools-dmarc-reports.php";
+ };
+ };
+}
diff --git a/systems/eldiron/websites/tools/dmarc_reports/api.php b/systems/eldiron/websites/tools/dmarc_reports/api.php
new file mode 100644
index 0000000..850f9ce
--- /dev/null
+++ b/systems/eldiron/websites/tools/dmarc_reports/api.php
@@ -0,0 +1,122 @@
+ "ok",
+);
+$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname, $dbport);
+
+function error_die($text, $number) {
+ http_response_code("500");
+ $message = array(
+ "status" => "error",
+ "message" => $text,
+ "code" => $number
+ );
+
+ die(json_encode($message));
+}
+
+$anonymous = isset($_GET['anonymous']) && $_GET['anonymous'];
+function maybe_anonymize($string, $long = false) {
+ global $anonymous_key;
+ global $anonymous;
+ if ($anonymous) {
+ if ($long) {
+ return md5($anonymous_key . ":" . $string);
+ } else {
+ return substr(md5($anonymous_key . ":" . $string), 0, 6);
+ }
+ } else {
+ return $string;
+ }
+}
+
+if (!$anonymous && (!isset($_SERVER['HTTP_AUTHORIZATION']) || $_SERVER['HTTP_AUTHORIZATION'] === "")) {
+ header('WWW-Authenticate: Basic realm="Immae"');
+ header('HTTP/1.0 401 Unauthorized');
+ echo "You need to be authenticated to access private information";
+ exit;
+}
+
+if ($mysqli->connect_errno) {
+ error_die($mysqli->connect_error, $mysqli->connect_errno);
+}
+
+if (!isset($_GET['serial'])) {
+ $response["domains"] = array();
+ $query = $mysqli->query("SELECT DISTINCT domain FROM `report` ORDER BY domain");
+ if ($mysqli->error) { error_die($mysqli->error, $mysqli->errno); }
+ while($row = $query->fetch_assoc()) {
+ $response["domains"][] = maybe_anonymize($row['domain']);
+ }
+
+ $response["orgs"] = array();
+ $query = $mysqli->query("SELECT DISTINCT org FROM `report` ORDER BY org");
+ if ($mysqli->error) { error_die($mysqli->error, $mysqli->errno); }
+ while($row = $query->fetch_assoc()) {
+ $response["orgs"][] = maybe_anonymize($row['org']);
+ }
+
+ $response["dates"] = array();
+ $query = $mysqli->query("SELECT DISTINCT DISTINCT year(mindate) as year, month(mindate) as month FROM `report` ORDER BY year DESC,month DESC");
+ if ($mysqli->error) { error_die($mysqli->error, $mysqli->errno); }
+ while($row = $query->fetch_assoc()) {
+ $response["dates"][] = sprintf( "%'.04d-%'.02d", $row['year'], $row['month'] );
+ }
+
+ $response["summaries"] = array();
+ if (isset($_GET['errors_only'])) {
+ $where = " WHERE (spfresult != 'pass' or dkimresult != 'pass')";
+ } else {
+ $where = "";
+ }
+
+ $sql = "SELECT report.* , sum(rptrecord.rcount) AS rcount, MIN(rptrecord.dkimresult) AS dkimresult, MIN(rptrecord.spfresult) AS spfresult FROM report LEFT JOIN (SELECT rcount, COALESCE(dkimresult, 'neutral') AS dkimresult, COALESCE(spfresult, 'neutral') AS spfresult, serial FROM rptrecord) AS rptrecord ON report.serial = rptrecord.serial$where GROUP BY serial ORDER BY mindate ASC, maxdate ASC, org";
+ $query = $mysqli->query($sql);
+ if ($mysqli->error) { error_die($mysqli->error, $mysqli->errno); }
+ while($row = $query->fetch_assoc()) {
+ $wanted_keys = array(
+ 'domain', 'org', 'reportid', 'mindate', 'maxdate', 'rcount', 'serial', 'policy_adkim', 'policy_aspf', 'policy_none', 'policy_sp', 'policy_pct', 'spfresult', 'dkimresult'
+ );
+ $row = array_intersect_key($row, array_fill_keys($wanted_keys, '1'));
+ $row["domain"] = maybe_anonymize($row["domain"]);
+ $row["org"] = maybe_anonymize($row["org"]);
+ $row["reportid"] = maybe_anonymize($row["reportid"], true);
+ $response["summaries"][] = $row;
+ }
+} else {
+ $response["rptrecord"] = [];
+ $sql = $mysqli->prepare("SELECT * FROM rptrecord where serial = ?");
+ $sql->bind_param("s", $_GET["serial"]);
+ $sql->execute();
+ $query = $sql->get_result();
+ if ($mysqli->error) { error_die($mysqli->error, $mysqli->errno); }
+ while($row = $query->fetch_assoc()) {
+ if ($row['ip']) {
+ $ip = long2ip($row['ip']);
+ $host = gethostbyaddr($ip);
+ } elseif ( $row['ip6'] ) {
+ $ip = inet_ntop($row['ip6']);
+ $host = gethostbyaddr($ip);
+ } else {
+ $ip = "-";
+ $host = "-";
+ }
+ $wanted_keys = array(
+ 'ip', 'host', 'rcount', 'disposition', 'reason', 'dkimdomain', 'dkimresult', 'spfdomain', 'spfresult'
+ );
+ $row = array_intersect_key($row, array_fill_keys($wanted_keys, '1'));
+ $row['ip'] = maybe_anonymize($ip);
+ $row['host'] = maybe_anonymize($host);
+ $row['dkimdomain'] = maybe_anonymize($row['dkimdomain']);
+ $row['spfdomain'] = maybe_anonymize($row['spfdomain']);
+ $response["rptrecord"][] = $row;
+ }
+}
+
+header("Content-Type: application/json");
+
+echo json_encode($response, JSON_PRETTY_PRINT);
+?>
diff --git a/systems/eldiron/websites/tools/dmarc_reports/app.js b/systems/eldiron/websites/tools/dmarc_reports/app.js
new file mode 100644
index 0000000..8e8a6c4
--- /dev/null
+++ b/systems/eldiron/websites/tools/dmarc_reports/app.js
@@ -0,0 +1,103 @@
+const app = new Vue({
+ el: '#app',
+ data: {
+ info: null,
+ summaries: null,
+ selectedSummary: null,
+ filterGreen: true,
+ filterDomain: null,
+ filterOrg: null,
+ //filterDate: (new Date()).toISOString().substring(0, 7),
+ filterDate: null,
+ reverse: true,
+ anonymous: true,
+ },
+ created: async function () {
+ let that = this;
+
+ if ('anonymous' in localStorage) {
+ this.anonymous = JSON.parse(localStorage.anonymous);
+ }
+ this.fetchAll();
+ },
+ methods: {
+ fetchAll: async function() {
+ try {
+ this.info = await this.getInfo();
+ this.summaries = this.info.summaries;
+ } catch (error) {
+ this.info = null;
+ this.summaries = null;
+ }
+ },
+ toggleAnonymous: function() {
+ this.anonymous = !this.anonymous;
+ localStorage.anonymous = this.anonymous;
+ this.fetchAll();
+ },
+ filtered: function () {
+ let that = this;
+ let filtered = this.summaries.filter(function (summary) {
+ return (!that.filterGreen || that.getColor(summary) !== "lime")
+ && (!that.filterDomain || summary.domain === that.filterDomain)
+ && (!that.filterOrg || summary.org === that.filterOrg)
+ && (!that.filterDate || that.inDates(summary));
+ });
+ if (this.reverse) {
+ return filtered.reverse();
+ } else {
+ return filtered;
+ }
+ },
+ toggle: async function(summary) {
+ if (this.selectedSummary && this.selectedSummary.serial === summary.serial) {
+ this.selectedSummary = null;
+ } else {
+ if (!summary.details) {
+ summary.details = await this.getDetails(summary.serial);
+ }
+ this.selectedSummary = summary;
+ }
+ },
+ inDates: function(summary) {
+ if (!this.filterDate) { return true; }
+
+ let mindate = (new Date(summary.mindate)).toISOString().substring(0, 7);
+ let maxdate = (new Date(summary.maxdate)).toISOString().substring(0, 7);
+
+ return mindate === this.filterDate || maxdate === this.filterDate;
+ },
+ printDate: function (date) {
+ return (new Date(date)).toISOString().replace("T", " ").replace(/\..*Z$/, " UTC");
+ },
+ getColor: function (element) {
+ if (element.dkimresult === "fail" && element.spfresult === "fail") {
+ return "red";
+ } else if (element.dkimresult === "fail" || element.spfresult === "fail") {
+ return "orange";
+ } else if (element.dkimresult === "pass" && element.spfresult === "pass") {
+ return "lime";
+ } else {
+ return "yellow";
+ }
+ },
+ getInfo: function (event) {
+ let anonymous = this.anonymous ? "anonymous=1" : "";
+ return fetch(`api.php?${anonymous}`).then(function (response) {
+ if (response.status != 200) { return; }
+ return response.text().then(function (body) {
+ return JSON.parse(body);
+ });
+ });
+ },
+ getDetails: function (serial) {
+ let anonymous = this.anonymous ? "&anonymous=1" : "";
+ return fetch(`api.php?serial=${serial}${anonymous}`).then(function (response) {
+ if (response.status != 200) { return; }
+ return response.text().then(function (body) {
+ return JSON.parse(body);
+ });
+ });
+ }
+ }
+});
diff --git a/systems/eldiron/websites/tools/dmarc_reports/default.css b/systems/eldiron/websites/tools/dmarc_reports/default.css
new file mode 100644
index 0000000..9e0c63f
--- /dev/null
+++ b/systems/eldiron/websites/tools/dmarc_reports/default.css
@@ -0,0 +1,130 @@
+h1 {
+ text-align: center;
+}
+
+p.warninginfo {
+ text-align: center;
+}
+
+table.reportlist {
+ margin: 2em auto 2em auto;
+ border-collapse: collapse;
+ clear: both;
+}
+
+table.reportlist td, table.reportlist th {
+ padding:3px;
+}
+
+table.reportlist thead {
+ border-top: 1px solid grey;
+ border-bottom: 1px solid grey;
+
+}
+table.reportlist tbody tr:first-child td {
+ padding-top: 10px;
+}
+table.reportlist tr.sum {
+ border-top: 1px solid grey;
+}
+table.reportlist tr.selected {
+ background-color: lightgrey;
+}
+.reportdesc {
+ font-weight: bold;
+ width: 90%;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+tr.summaryrow {
+ cursor: pointer;
+}
+
+tr.summaryrow:hover, tr.summaryrow.selected {
+ background-color: lightgray;
+ border-left: 1px solid lightgray;
+}
+
+td.reportcell {
+ border-bottom: 1px solid lightgray;
+ border-left: 1px solid lightgray;
+ border-right: 1px solid lightgray;
+}
+
+table.reportdata {
+ margin: 0px auto 0px auto;
+ border-collapse: separate;
+ border-spacing: 2px;
+}
+
+table.reportdata tr th, table.reportdata tr td {
+ text-align: center;
+ padding: 3px;
+}
+
+table.reportdata tr.red {
+ background-color: #FF0000;
+}
+
+table.reportdata tr.orange {
+ background-color: #FFA500;
+}
+
+table.reportdata tr.lime {
+ background-color: #00FF00;
+}
+
+table.reportdata tr.yellow {
+ background-color: #FFFF00;
+}
+
+.optionblock {
+ background: lightgrey;
+ padding: 0.4em;
+ float: right;
+ margin: auto 2em 1em auto;
+ white-space: nowrap;
+}
+
+.optionlabel {
+ font-weight: bold;
+ float: left; clear: left;
+ margin-right: 1em;
+}
+
+.options {
+ font-size: 70%;
+ text-align: right;
+ border: none;
+ width: 97%;
+ padding: 0.4em;
+}
+
+.center {
+ text-align:center;
+}
+
+.circle_lime:before {
+ content: ' \25CF';
+ font-size: 25px;
+ color: #00FF00;
+}
+
+.circle_red:before {
+ content: ' \25CF';
+ font-size: 25px;
+ color: #FF0000;
+}
+
+.circle_yellow:before {
+ content: ' \25CF';
+ font-size: 25px;
+ color: #FFFF00;
+}
+
+.circle_orange:before {
+ content: ' \25CF';
+ font-size: 25px;
+ color: #FFA500;
+}
diff --git a/systems/eldiron/websites/tools/dmarc_reports/index.html b/systems/eldiron/websites/tools/dmarc_reports/index.html
new file mode 100644
index 0000000..0afc82f
--- /dev/null
+++ b/systems/eldiron/websites/tools/dmarc_reports/index.html
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+ Dmarc reports
+
+
+
+
+
+
+
+
DMARC Reports
+
+ No information could be fetched. If in non-anonymous mode you need to be logged-in
+
+
+
+
+
+ Start Date
+ End Date
+ Domain
+ Reporting Organization
+ Report ID
+ Messages
+
+
+
+
+
+
+ {{ printDate(summary.mindate) }}
+ {{ printDate(summary.maxdate) }}
+ {{ summary.domain }}
+ {{ summary.org }}
+ {{ summary.reportid }}
+ {{ summary.rcount }}
+
+
+
+
+
Policies: adkim={{ summary.policy_adkim }}, aspf={{ summary.policy_aspf }}, p={{ summary.policy_none }}, sp={{ summary.policy_sp }}, pct={{ summary.policy_pct }}
+
+
+
+
+ IP Address
+ Host Name
+ Message Count
+ Disposition
+ Reason
+ DKIM Domain
+ Raw DKIM Result
+ SPF Domain
+ Raw SPF Result
+
+
+
+
+ {{ record.ip }}
+ {{ record.host }}
+ {{ record.rcount }}
+ {{ record.disposition }}
+ {{ record.reason }}
+ {{ record.dkimdomain }}
+ {{ record.dkimresult }}
+ {{ record.spfdomain }}
+ {{ record.spfresult }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/systems/eldiron/websites/tools/dokuwiki.nix b/systems/eldiron/websites/tools/dokuwiki.nix
new file mode 100644
index 0000000..813c426
--- /dev/null
+++ b/systems/eldiron/websites/tools/dokuwiki.nix
@@ -0,0 +1,106 @@
+{ lib, stdenv, dokuwiki, dokuwiki-plugins, config }:
+rec {
+ varDir = "/var/lib/dokuwiki";
+ activationScript = {
+ deps = [ "wrappers" ];
+ text = ''
+ if [ ! -d ${varDir} ]; then
+ install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
+ ${varDir}/animals
+ cp -a ${webRoot}/conf.dist ${varDir}/conf
+ cp -a ${webRoot}/data.dist ${varDir}/data
+ cp -a ${webRoot}/
+ chown -R ${apache.user}:${apache.user} ${varDir}/config ${varDir}/data
+ chmod -R 755 ${varDir}/config ${varDir}/data
+ fi
+ '';
+ };
+ chatonsHostingProperties = {
+ file.datetime = "2022-08-21T22:50:00";
+ hosting = {
+ name = "Dokuwiki";
+ description = "DokuWiki is a simple to use and highly versatile Open Source wiki software";
+ website = "https://tools.immae.eu/dokuwiki/";
+ logo = "https://tools.immae.eu/dokuwiki/lib/tpl/dokuwiki/images/apple-touch-icon.png";
+ type = "INSTANCE";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ };
+ chatonsProperties = {
+ file.datetime = "2022-08-21T22:50:00";
+ service = {
+ name = "Dokuwiki";
+ description = "DokuWiki is a simple to use and highly versatile Open Source wiki software";
+ website = "https://tools.immae.eu/dokuwiki/";
+ logo = "https://tools.immae.eu/dokuwiki/lib/tpl/dokuwiki/images/apple-touch-icon.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Dokuwiki";
+ website = "https://www.dokuwiki.org/dokuwiki";
+ license.url = "http://www.gnu.org/licenses/gpl-2.0.html";
+ license.name = "GNU General Public License Version 2";
+ version = webRoot.version;
+ source.url = "https://download.dokuwiki.org/";
+ modules = map (a: a.pluginName) webRoot.plugins;
+ };
+ };
+ webRoot = dokuwiki.withPlugins (p: [ p.farmer p.todo ]);
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /dokuwiki "${root}"
+
+ DirectoryIndex index.php
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ AllowOverride All
+ Options +FollowSymlinks
+ Require all granted
+
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "openldap.service" ];
+ basedir = builtins.concatStringsSep ":" (
+ [ webRoot varDir ] ++ webRoot.plugins);
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "DokuwikiPHPSESSID";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Dokuwiki:'";
+ };
+ };
+ monitoringPlugins = [ "http" ];
+ monitoringObjects.service = [
+ {
+ service_description = "dokuwiki website is running on tools.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "tools.immae.eu" "/dokuwiki/" "start"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Dokuwiki";
+ _webstatus_url = "https://tools.immae.eu/dokuwiki/";
+ }
+ ];
+}
diff --git a/systems/eldiron/websites/tools/grocy.nix b/systems/eldiron/websites/tools/grocy.nix
new file mode 100644
index 0000000..96e18a3
--- /dev/null
+++ b/systems/eldiron/websites/tools/grocy.nix
@@ -0,0 +1,48 @@
+{ lib, stdenv, grocy }:
+rec {
+ varDir = "/var/lib/grocy";
+ activationScript = {
+ deps = [ "wrappers" ];
+ text = ''
+ install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/data
+ '';
+ };
+ webRoot = grocy.webRoot;
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /grocy "${root}"
+
+ DirectoryIndex index.php
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ AllowOverride All
+ Options +FollowSymlinks
+ Require all granted
+
+ '';
+ };
+ phpFpm = rec {
+ basedir = builtins.concatStringsSep ":" (
+ [ grocy grocy.yarnModules varDir ]);
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "grocyPHPSESSID";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Grocy:'";
+ };
+ };
+}
+
diff --git a/systems/eldiron/websites/tools/kanboard.nix b/systems/eldiron/websites/tools/kanboard.nix
new file mode 100644
index 0000000..db39ecd
--- /dev/null
+++ b/systems/eldiron/websites/tools/kanboard.nix
@@ -0,0 +1,81 @@
+{ env, kanboard, config }:
+rec {
+ varDir = "/var/lib/kanboard";
+ activationScript = {
+ deps = [ "wrappers" ];
+ text = ''
+ install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/data
+ install -TDm644 ${webRoot}/dataold/.htaccess ${varDir}/data/.htaccess
+ install -TDm644 ${webRoot}/dataold/web.config ${varDir}/data/web.config
+ '';
+ };
+ keys."webapps/tools-kanboard" = {
+ user = apache.user;
+ group = apache.group;
+ permissions = "0400";
+ text = ''
+ SetEnv MAIL_FROM "kanboard@tools.immae.eu"
+
+ SetEnv DB_DRIVER "postgres"
+ SetEnv DB_USERNAME "${env.postgresql.user}"
+ SetEnv DB_PASSWORD "${env.postgresql.password}"
+ SetEnv DB_HOSTNAME "${env.postgresql.socket}"
+ SetEnv DB_NAME "${env.postgresql.database}"
+
+ SetEnv DATA_DIR "${varDir}"
+ SetEnv LDAP_AUTH "true"
+ SetEnv LDAP_SERVER "${env.ldap.host}"
+ SetEnv LDAP_START_TLS "true"
+
+ SetEnv LDAP_BIND_TYPE "proxy"
+ SetEnv LDAP_USERNAME "${env.ldap.dn}"
+ SetEnv LDAP_PASSWORD "${env.ldap.password}"
+ SetEnv LDAP_USER_BASE_DN "${env.ldap.base}"
+ SetEnv LDAP_USER_FILTER "${env.ldap.filter}"
+ SetEnv LDAP_GROUP_ADMIN_DN "${env.ldap.admin_dn}"
+ '';
+ };
+ webRoot = kanboard;
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /kanboard "${root}"
+
+ Include ${config.secrets.fullPaths."webapps/tools-kanboard"}
+
+
+ DirectoryIndex index.php
+ AllowOverride All
+ Options FollowSymlinks
+ Require all granted
+
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+
+ Require all denied
+
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "postgresql.service" "openldap.service" ];
+ basedir = builtins.concatStringsSep ":" [ webRoot varDir ];
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "KanboardPHPSESSID";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Kanboard:'";
+ };
+ };
+}
diff --git a/systems/eldiron/websites/tools/landing.nix b/systems/eldiron/websites/tools/landing.nix
new file mode 100644
index 0000000..f5d851e
--- /dev/null
+++ b/systems/eldiron/websites/tools/landing.nix
@@ -0,0 +1,38 @@
+{ stdenv, yarn2nix-moretea, nodejs_16 }:
+let
+ source = builtins.fetchGit {
+ url = "https://git.immae.eu/github/bastienwirtz/homer.git";
+ ref = "gitolite_local/local_changes";
+ rev = "bb60c5b869931f305f15c5bfa9cdb3f68702f01f";
+ narHash = "sha256-xBIBUJhQ7KPY0d92pW9ErA9OvGafWcxyuGkbHShF4Bs=";
+ };
+ yarnModules = yarn2nix-moretea.mkYarnModules rec {
+ nodejs = nodejs_16;
+ name = "landing";
+ pname = name;
+ version = "v1.0.0";
+ packageJSON = "${source}/package.json";
+ yarnLock = "${source}/yarn.lock";
+ yarnNix = ./landing/yarn-packages.nix;
+ };
+in
+ stdenv.mkDerivation rec {
+ pname = "landing";
+ version = "v1.0.0";
+ src = source;
+
+ buildInputs = [ yarnModules yarn2nix-moretea.yarn ];
+ configurePhase = ''
+ ln -s ${yarnModules}/node_modules .
+ '';
+ buildPhase = ''
+ # See https://stackoverflow.com/questions/74548318/how-to-resolve-error-error0308010cdigital-envelope-routinesunsupported-no
+ export NODE_OPTIONS=--openssl-legacy-provider
+ yarn build
+ '';
+ installPhase = ''
+ cp -a dist $out
+ cp ${./landing}/*.php $out/
+ ln -s service-worker.js $out/worker.js
+ '';
+ }
diff --git a/systems/eldiron/websites/tools/landing/ldap_password.php b/systems/eldiron/websites/tools/landing/ldap_password.php
new file mode 100644
index 0000000..efb4f57
--- /dev/null
+++ b/systems/eldiron/websites/tools/landing/ldap_password.php
@@ -0,0 +1,170 @@
+
+ * @website: http://technology.mattrude.com/2010/11/ldap-php-change-password-webpage/
+ *
+ *
+ * GNU GENERAL PUBLIC LICENSE
+ * Version 2, June 1991
+ *
+ * Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * Everyone is permitted to copy and distribute verbatim copies
+ * of this license document, but changing it is not allowed.
+ */
+
+$message = array();
+$message_css = "";
+
+function changePasswordLDAP($con, $user_dn, $newPassword){
+ global $message;
+ $salt = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',4)),0,4);
+ $encoded_newPassword = "{SSHA}" . base64_encode(pack("H*", sha1($newPassword.$salt)).$salt);
+
+ $entry = array();
+ $entry["userPassword"] = "$encoded_newPassword";
+
+ if (ldap_modify($con,$user_dn,$entry) === false){
+ $error = ldap_error($con);
+ $errno = ldap_errno($con);
+ $message[] = "$errno - $error";
+ return false;
+ } else {
+ return true;
+ }
+}
+
+function changePasswordSQL($user_realm, $newPassword) {
+ global $message;
+
+ foreach(["PGUSER", "PGPASSWORD", "PGDATABASE", "PGHOST"] as $k) {
+ if (isset($_SERVER[$k]) && !isset($_ENV[$k])) {
+ putenv("${k}=" . $_SERVER[$k]);
+ }
+ }
+ $con = pg_connect("");
+ $result = pg_query_params($con, "WITH newsalt as (SELECT gen_random_bytes(4)) UPDATE ldap_users SET password = encode(digest( $1 || (SELECT * FROM newsalt), 'sha1'), 'hex'), mechanism = 'SSHA', salt = (SELECT * FROM newsalt) where login || '@' || realm = $2", array($newPassword, $user_realm));
+ if (!$result) {
+ $message[] = "Error when accessing database";
+ return false;
+ } else {
+ return true;
+ }
+}
+
+function changePassword($user,$oldPassword,$newPassword,$newPasswordCnf){
+ global $message;
+ global $message_css;
+
+ $server = "ldaps://ldap.immae.eu";
+
+ error_reporting(0);
+ $con = ldap_connect($server);
+ ldap_set_option($con, LDAP_OPT_PROTOCOL_VERSION, 3);
+
+ $user_dn = "uid=$user,ou=users,dc=immae,dc=eu";
+
+ if (ldap_bind($con, $user_dn, $oldPassword) === false) {
+ $user_dn = "uid=$user,ou=group_users,dc=immae,dc=eu";
+ if (ldap_bind($con, $user_dn, $oldPassword) === false) {
+ $message[] = "Error E101 - Current Username or Password is wrong.";
+ return false;
+ }
+ }
+ if ($newPassword != $newPasswordCnf ) {
+ $message[] = "Error E102 - Your New passwords do not match!";
+ return false;
+ }
+ if (strlen($newPassword) < 6 ) {
+ $message[] = "Error E103 - Your new password is too short. Your password must be at least 6 characters long.";
+ return false;
+ }
+
+ $user_search = ldap_search($con,"dc=immae,dc=eu","(uid=$user)");
+ $auth_entry = ldap_first_entry($con, $user_search);
+
+ $mail_address = ldap_get_values($con, $auth_entry, "mail")[0];
+ $first_name = ldap_get_values($con, $auth_entry, "givenName")[0];
+ $existing_password = ldap_get_values($con, $auth_entry, "userPassword")[0];
+ if (substr($existing_password, 0, 6) == "{SASL}") {
+ $result = changePasswordSQL(substr($existing_password, 6), $newPassword);
+ } else {
+ $result = changePasswordLDAP($con, $user_dn, $newPassword);
+ }
+
+ if (!$result) {
+ $message[] = "E201 - Your password cannot be changed, please contact the administrator.";
+ } else {
+ $message_css = "yes";
+ mail($mail_address,"Password change notice","Dear $first_name,
+Your password on https://tools.immae.eu/ldap_password.php for account $user was just changed.
+If you did not make this change, please contact me.
+If you were the one who changed your password, you may disregard this message.
+
+Thanks
+--
+Immae / Ismaël", "From: " . getenv("CONTACT_EMAIL"));
+ $message[] = "The password for $user has been changed. An informational email has been sent to $mail_address. Your new password is now fully active.";
+ }
+}
+
+?>
+
+
+
+Password Change Page
+
+
+
+
+
+
+
+
+Password Change Page
+';
+ changePassword($_POST['username'],$_POST['oldPassword'],$_POST['newPassword1'],$_POST['newPassword2']);
+ global $message_css;
+ if ($message_css == "yes") {
+ echo '';
+ } else {
+ echo '
';
+ $message[] = "Your password was not changed.";
+ }
+ foreach ( $message as $one ) { echo "
$one
"; }
+ ?>
+
+
+
+
+
New password (again)
+
+
+
+
+
+
+
diff --git a/systems/eldiron/websites/tools/landing/ldap_ssh_keys.php b/systems/eldiron/websites/tools/landing/ldap_ssh_keys.php
new file mode 100644
index 0000000..85ed973
--- /dev/null
+++ b/systems/eldiron/websites/tools/landing/ldap_ssh_keys.php
@@ -0,0 +1,343 @@
+
+
+
+ ImmaeEu Account
+
+
+
+
+
+
+
+
Gestion des clés SSH
+ $row["id"],
+ 'apps' => json_decode($row["usage"]),
+ 'public_key' => $row["key"],
+ 'comment' => $row["comment"],
+ );
+ }
+
+ pg_close($pg);
+ return $keys;
+}
+
+function saveKeys($keys)
+{
+ if (!isset($_SESSION["login"])) {
+ return false;
+ }
+ $pg = connectPg();
+ $existingIds = pg_fetch_all_columns(pg_query_params($pg, "SELECT id FROM ldap_users_ssh_keys WHERE realm = 'immae' AND login = $1", array($_SESSION["login"])));
+ foreach ($keys as $key) {
+ if (isset($key["id"])) {
+ unset($existingIds[array_search($key["id"],$existingIds)]);
+ pg_query_params($pg, "UPDATE ldap_users_ssh_keys SET key = $2, usage = ARRAY(SELECT * FROM json_array_elements_text($3))::ldap_users_ssh_key_usage[], comment = $4 WHERE id = $5 AND login = $1 AND realm = 'immae'", array($_SESSION["login"], $key["public_key"], json_encode($key["apps"]), $key["comment"], $key["id"]));
+ } else {
+ pg_query_params($pg, "INSERT INTO ldap_users_ssh_keys (login,realm,key,usage,comment) values ($1,'immae',$2,ARRAY(SELECT * FROM json_array_elements_text($3))::ldap_users_ssh_key_usage[],$4)", array($_SESSION["login"], $key["public_key"], json_encode($key["apps"]), $key["comment"]));
+ }
+ }
+ foreach ($existingIds as $removedKeyId) {
+ pg_query_params($pg, "DELETE FROM ldap_users_ssh_keys WHERE login = $1 AND realm = 'immae' AND id = $2", array($_SESSION["login"], $removedKeyId));
+ }
+}
+
+
+// Script
+if (isset($_POST['deconnexion'])) {
+ $_SESSION = [];
+}
+
+if (isset($_POST['sauvegarder'])) {
+ $editedKeys = [];
+ $errors = false;
+ $keysToSave = [];
+ foreach($_POST['keys'] as $id => $key) {
+ $editedKeys[$id] = $key;
+ if (!checkSshKey($key['public_key'])) {
+ $editedKeys[$id]['error'] = true;
+ $errors = true;
+ }
+
+ if (!isset($key['apps'])) {
+ $editedKeys[$id]['apps'] = $key['apps'] = [];
+
+ }
+ foreach ($key['apps'] as $app) {
+ if (!in_array($app, apps)) {
+ die("integrity");
+ }
+ }
+
+ if (!isset($editedKeys[$id]['error']) || $editedKeys[$id]['error'] !== true) {
+ $keysToSave[] = $key;
+ }
+ }
+
+ if (!$errors) {
+ $successSave = saveKeys($keysToSave);
+ }
+}
+
+$loginErrors = "";
+if (isset($_POST['login'])) {
+ if (empty($_POST['username']) || empty($_POST['password'])) {
+ $loginErrors = "Le nom d'utilisateur et le mot de passe sont requis.";
+ } elseif (!checkLogin($_POST['username'], $_POST['password'])) {
+ $loginErrors = "Identifiants incorrects.";
+ } else {
+ $_SESSION['login'] = $_POST['username'];
+ }
+}
+
+if (isUserLogged()) :
+ $keys = isset($editedKeys) ? $editedKeys : getKeys();
+?>
+
Connecté en tant que = $_SESSION['login']; ?>
+
+
+
+
+
+
+
Clés enregistrées avec succès.
+
+
+
+
+
+ Ajouter
+
+
+
+
+
+
+
+
+ Login
+
+
+ = $loginErrors; ?>
+
+
+ Utilisateur :
+
+
+ Mot de passe :
+
+
+
+
+
+
+
+
+
+
diff --git a/systems/eldiron/websites/tools/landing/myip.php b/systems/eldiron/websites/tools/landing/myip.php
new file mode 100644
index 0000000..9ec1c6c
--- /dev/null
+++ b/systems/eldiron/websites/tools/landing/myip.php
@@ -0,0 +1 @@
+
diff --git a/systems/eldiron/websites/tools/landing/node-packages.nix b/systems/eldiron/websites/tools/landing/node-packages.nix
new file mode 100644
index 0000000..9ebf254
--- /dev/null
+++ b/systems/eldiron/websites/tools/landing/node-packages.nix
@@ -0,0 +1,130 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, src, globalBuildInputs ? []}:
+
+let
+ sources = {
+ "@fortawesome/fontawesome-free-5.13.1" = {
+ name = "_at_fortawesome_slash_fontawesome-free";
+ packageName = "@fortawesome/fontawesome-free";
+ version = "5.13.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.1.tgz";
+ sha512 = "D819f34FLHeBN/4xvw0HR0u7U2G7RqjPSggXqf7LktsxWQ48VAfGwvMrhcVuaZV2fF069c/619RdgCCms0DHhw==";
+ };
+ };
+ "argparse-1.0.10" = {
+ name = "argparse";
+ packageName = "argparse";
+ version = "1.0.10";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
+ sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
+ };
+ };
+ "bulma-0.8.2" = {
+ name = "bulma";
+ packageName = "bulma";
+ version = "0.8.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/bulma/-/bulma-0.8.2.tgz";
+ sha512 = "vMM/ijYSxX+Sm+nD7Lmc1UgWDy2JcL2nTKqwgEqXuOMU+IGALbXd5MLt/BcjBAPLIx36TtzhzBcSnOP974gcqA==";
+ };
+ };
+ "core-js-3.6.5" = {
+ name = "core-js";
+ packageName = "core-js";
+ version = "3.6.5";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz";
+ sha512 = "vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==";
+ };
+ };
+ "esprima-4.0.1" = {
+ name = "esprima";
+ packageName = "esprima";
+ version = "4.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
+ sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==";
+ };
+ };
+ "js-yaml-3.14.0" = {
+ name = "js-yaml";
+ packageName = "js-yaml";
+ version = "3.14.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz";
+ sha512 = "/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==";
+ };
+ };
+ "lodash.merge-4.6.2" = {
+ name = "lodash.merge";
+ packageName = "lodash.merge";
+ version = "4.6.2";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz";
+ sha512 = "0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==";
+ };
+ };
+ "register-service-worker-1.7.1" = {
+ name = "register-service-worker";
+ packageName = "register-service-worker";
+ version = "1.7.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.1.tgz";
+ sha512 = "IdTfUZ4u8iJL8o1w8es8l6UMGPmkwHolUdT+UmM1UypC80IB4KbpuIlvwWVj8UDS7eJwkEYRcKRgfRX+oTmJsw==";
+ };
+ };
+ "sprintf-js-1.0.3" = {
+ name = "sprintf-js";
+ packageName = "sprintf-js";
+ version = "1.0.3";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
+ sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+ };
+ };
+ "vue-2.6.11" = {
+ name = "vue";
+ packageName = "vue";
+ version = "2.6.11";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz";
+ sha512 = "VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==";
+ };
+ };
+ };
+ args = {
+ name = "homer";
+ packageName = "homer";
+ version = "20.06.1";
+ inherit src;
+ dependencies = [
+ sources."@fortawesome/fontawesome-free-5.13.1"
+ sources."argparse-1.0.10"
+ sources."bulma-0.8.2"
+ sources."core-js-3.6.5"
+ sources."esprima-4.0.1"
+ sources."js-yaml-3.14.0"
+ sources."lodash.merge-4.6.2"
+ sources."register-service-worker-1.7.1"
+ sources."sprintf-js-1.0.3"
+ sources."vue-2.6.11"
+ ];
+ buildInputs = globalBuildInputs;
+ meta = {
+ license = "Apache-2.0";
+ };
+ production = true;
+ bypassCache = true;
+ reconstructLock = true;
+ };
+in
+{
+ args = args;
+ sources = sources;
+ tarball = nodeEnv.buildNodeSourceDist args;
+ package = nodeEnv.buildNodePackage args;
+ shell = nodeEnv.buildNodeShell args;
+}
diff --git a/systems/eldiron/websites/tools/landing/yarn-packages.nix b/systems/eldiron/websites/tools/landing/yarn-packages.nix
new file mode 100644
index 0000000..9621c3e
--- /dev/null
+++ b/systems/eldiron/websites/tools/landing/yarn-packages.nix
@@ -0,0 +1,9357 @@
+{ fetchurl, fetchgit, linkFarm, runCommandNoCC, gnutar }: rec {
+ offline_cache = linkFarm "offline" packages;
+ packages = [
+ {
+ name = "_babel_code_frame___code_frame_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_code_frame___code_frame_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.1.tgz";
+ sha1 = "d5481c5095daa1c57e16e54c6f9198443afb49ff";
+ };
+ }
+ {
+ name = "_babel_compat_data___compat_data_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_compat_data___compat_data_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.1.tgz";
+ sha1 = "b1085ffe72cd17bf2c0ee790fc09f9626011b2db";
+ };
+ }
+ {
+ name = "_babel_core___core_7.10.2.tgz";
+ path = fetchurl {
+ name = "_babel_core___core_7.10.2.tgz";
+ url = "https://registry.yarnpkg.com/@babel/core/-/core-7.10.2.tgz";
+ sha1 = "bd6786046668a925ac2bd2fd95b579b92a23b36a";
+ };
+ }
+ {
+ name = "_babel_generator___generator_7.10.2.tgz";
+ path = fetchurl {
+ name = "_babel_generator___generator_7.10.2.tgz";
+ url = "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.2.tgz";
+ sha1 = "0fa5b5b2389db8bfdfcc3492b551ee20f5dd69a9";
+ };
+ }
+ {
+ name = "_babel_helper_annotate_as_pure___helper_annotate_as_pure_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_annotate_as_pure___helper_annotate_as_pure_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz";
+ sha1 = "f6d08acc6f70bbd59b436262553fb2e259a1a268";
+ };
+ }
+ {
+ name = "_babel_helper_builder_binary_assignment_operator_visitor___helper_builder_binary_assignment_operator_visitor_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_builder_binary_assignment_operator_visitor___helper_builder_binary_assignment_operator_visitor_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz";
+ sha1 = "0ec7d9be8174934532661f87783eb18d72290059";
+ };
+ }
+ {
+ name = "_babel_helper_compilation_targets___helper_compilation_targets_7.10.2.tgz";
+ path = fetchurl {
+ name = "_babel_helper_compilation_targets___helper_compilation_targets_7.10.2.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz";
+ sha1 = "a17d9723b6e2c750299d2a14d4637c76936d8285";
+ };
+ }
+ {
+ name = "_babel_helper_create_class_features_plugin___helper_create_class_features_plugin_7.10.2.tgz";
+ path = fetchurl {
+ name = "_babel_helper_create_class_features_plugin___helper_create_class_features_plugin_7.10.2.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz";
+ sha1 = "7474295770f217dbcf288bf7572eb213db46ee67";
+ };
+ }
+ {
+ name = "_babel_helper_create_regexp_features_plugin___helper_create_regexp_features_plugin_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_create_regexp_features_plugin___helper_create_regexp_features_plugin_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz";
+ sha1 = "1b8feeab1594cbcfbf3ab5a3bbcabac0468efdbd";
+ };
+ }
+ {
+ name = "_babel_helper_define_map___helper_define_map_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_define_map___helper_define_map_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz";
+ sha1 = "5e69ee8308648470dd7900d159c044c10285221d";
+ };
+ }
+ {
+ name = "_babel_helper_explode_assignable_expression___helper_explode_assignable_expression_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_explode_assignable_expression___helper_explode_assignable_expression_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz";
+ sha1 = "e9d76305ee1162ca467357ae25df94f179af2b7e";
+ };
+ }
+ {
+ name = "_babel_helper_function_name___helper_function_name_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_function_name___helper_function_name_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz";
+ sha1 = "92bd63829bfc9215aca9d9defa85f56b539454f4";
+ };
+ }
+ {
+ name = "_babel_helper_get_function_arity___helper_get_function_arity_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_get_function_arity___helper_get_function_arity_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz";
+ sha1 = "7303390a81ba7cb59613895a192b93850e373f7d";
+ };
+ }
+ {
+ name = "_babel_helper_hoist_variables___helper_hoist_variables_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_hoist_variables___helper_hoist_variables_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz";
+ sha1 = "7e77c82e5dcae1ebf123174c385aaadbf787d077";
+ };
+ }
+ {
+ name = "_babel_helper_member_expression_to_functions___helper_member_expression_to_functions_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_member_expression_to_functions___helper_member_expression_to_functions_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz";
+ sha1 = "432967fd7e12a4afef66c4687d4ca22bc0456f15";
+ };
+ }
+ {
+ name = "_babel_helper_module_imports___helper_module_imports_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_module_imports___helper_module_imports_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz";
+ sha1 = "dd331bd45bccc566ce77004e9d05fe17add13876";
+ };
+ }
+ {
+ name = "_babel_helper_module_transforms___helper_module_transforms_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_module_transforms___helper_module_transforms_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz";
+ sha1 = "24e2f08ee6832c60b157bb0936c86bef7210c622";
+ };
+ }
+ {
+ name = "_babel_helper_optimise_call_expression___helper_optimise_call_expression_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_optimise_call_expression___helper_optimise_call_expression_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz";
+ sha1 = "b4a1f2561870ce1247ceddb02a3860fa96d72543";
+ };
+ }
+ {
+ name = "_babel_helper_plugin_utils___helper_plugin_utils_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_plugin_utils___helper_plugin_utils_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz";
+ sha1 = "ec5a5cf0eec925b66c60580328b122c01230a127";
+ };
+ }
+ {
+ name = "_babel_helper_regex___helper_regex_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_regex___helper_regex_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.1.tgz";
+ sha1 = "021cf1a7ba99822f993222a001cc3fec83255b96";
+ };
+ }
+ {
+ name = "_babel_helper_remap_async_to_generator___helper_remap_async_to_generator_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_remap_async_to_generator___helper_remap_async_to_generator_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz";
+ sha1 = "bad6aaa4ff39ce8d4b82ccaae0bfe0f7dbb5f432";
+ };
+ }
+ {
+ name = "_babel_helper_replace_supers___helper_replace_supers_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_replace_supers___helper_replace_supers_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz";
+ sha1 = "ec6859d20c5d8087f6a2dc4e014db7228975f13d";
+ };
+ }
+ {
+ name = "_babel_helper_simple_access___helper_simple_access_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_simple_access___helper_simple_access_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz";
+ sha1 = "08fb7e22ace9eb8326f7e3920a1c2052f13d851e";
+ };
+ }
+ {
+ name = "_babel_helper_split_export_declaration___helper_split_export_declaration_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_split_export_declaration___helper_split_export_declaration_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz";
+ sha1 = "c6f4be1cbc15e3a868e4c64a17d5d31d754da35f";
+ };
+ }
+ {
+ name = "_babel_helper_validator_identifier___helper_validator_identifier_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_validator_identifier___helper_validator_identifier_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz";
+ sha1 = "5770b0c1a826c4f53f5ede5e153163e0318e94b5";
+ };
+ }
+ {
+ name = "_babel_helper_wrap_function___helper_wrap_function_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helper_wrap_function___helper_wrap_function_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz";
+ sha1 = "956d1310d6696257a7afd47e4c42dfda5dfcedc9";
+ };
+ }
+ {
+ name = "_babel_helpers___helpers_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_helpers___helpers_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz";
+ sha1 = "a6827b7cb975c9d9cef5fd61d919f60d8844a973";
+ };
+ }
+ {
+ name = "_babel_highlight___highlight_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_highlight___highlight_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.1.tgz";
+ sha1 = "841d098ba613ba1a427a2b383d79e35552c38ae0";
+ };
+ }
+ {
+ name = "_babel_parser___parser_7.10.2.tgz";
+ path = fetchurl {
+ name = "_babel_parser___parser_7.10.2.tgz";
+ url = "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.2.tgz";
+ sha1 = "871807f10442b92ff97e4783b9b54f6a0ca812d0";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_async_generator_functions___plugin_proposal_async_generator_functions_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_async_generator_functions___plugin_proposal_async_generator_functions_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz";
+ sha1 = "6911af5ba2e615c4ff3c497fe2f47b35bf6d7e55";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_class_properties___plugin_proposal_class_properties_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_class_properties___plugin_proposal_class_properties_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz";
+ sha1 = "046bc7f6550bb08d9bd1d4f060f5f5a4f1087e01";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_decorators___plugin_proposal_decorators_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_decorators___plugin_proposal_decorators_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.1.tgz";
+ sha1 = "9373c2d8db45345c6e30452ad77b469758e5c8f7";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_dynamic_import___plugin_proposal_dynamic_import_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_dynamic_import___plugin_proposal_dynamic_import_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz";
+ sha1 = "e36979dc1dc3b73f6d6816fc4951da2363488ef0";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_json_strings___plugin_proposal_json_strings_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_json_strings___plugin_proposal_json_strings_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz";
+ sha1 = "b1e691ee24c651b5a5e32213222b2379734aff09";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_nullish_coalescing_operator___plugin_proposal_nullish_coalescing_operator_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_nullish_coalescing_operator___plugin_proposal_nullish_coalescing_operator_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz";
+ sha1 = "02dca21673842ff2fe763ac253777f235e9bbf78";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_numeric_separator___plugin_proposal_numeric_separator_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_numeric_separator___plugin_proposal_numeric_separator_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz";
+ sha1 = "a9a38bc34f78bdfd981e791c27c6fdcec478c123";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_object_rest_spread___plugin_proposal_object_rest_spread_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_object_rest_spread___plugin_proposal_object_rest_spread_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz";
+ sha1 = "cba44908ac9f142650b4a65b8aa06bf3478d5fb6";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_optional_catch_binding___plugin_proposal_optional_catch_binding_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_optional_catch_binding___plugin_proposal_optional_catch_binding_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz";
+ sha1 = "c9f86d99305f9fa531b568ff5ab8c964b8b223d2";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_optional_chaining___plugin_proposal_optional_chaining_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_optional_chaining___plugin_proposal_optional_chaining_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz";
+ sha1 = "15f5d6d22708629451a91be28f8facc55b0e818c";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_private_methods___plugin_proposal_private_methods_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_private_methods___plugin_proposal_private_methods_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz";
+ sha1 = "ed85e8058ab0fe309c3f448e5e1b73ca89cdb598";
+ };
+ }
+ {
+ name = "_babel_plugin_proposal_unicode_property_regex___plugin_proposal_unicode_property_regex_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_proposal_unicode_property_regex___plugin_proposal_unicode_property_regex_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz";
+ sha1 = "dc04feb25e2dd70c12b05d680190e138fa2c0c6f";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_async_generators___plugin_syntax_async_generators_7.8.4.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_async_generators___plugin_syntax_async_generators_7.8.4.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz";
+ sha1 = "a983fb1aeb2ec3f6ed042a210f640e90e786fe0d";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_class_properties___plugin_syntax_class_properties_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_class_properties___plugin_syntax_class_properties_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz";
+ sha1 = "d5bc0645913df5b17ad7eda0fa2308330bde34c5";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_decorators___plugin_syntax_decorators_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_decorators___plugin_syntax_decorators_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz";
+ sha1 = "16b869c4beafc9a442565147bda7ce0967bd4f13";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_dynamic_import___plugin_syntax_dynamic_import_7.8.3.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_dynamic_import___plugin_syntax_dynamic_import_7.8.3.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz";
+ sha1 = "62bf98b2da3cd21d626154fc96ee5b3cb68eacb3";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_json_strings___plugin_syntax_json_strings_7.8.3.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_json_strings___plugin_syntax_json_strings_7.8.3.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz";
+ sha1 = "01ca21b668cd8218c9e640cb6dd88c5412b2c96a";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_jsx___plugin_syntax_jsx_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_jsx___plugin_syntax_jsx_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz";
+ sha1 = "0ae371134a42b91d5418feb3c8c8d43e1565d2da";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_nullish_coalescing_operator___plugin_syntax_nullish_coalescing_operator_7.8.3.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_nullish_coalescing_operator___plugin_syntax_nullish_coalescing_operator_7.8.3.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz";
+ sha1 = "167ed70368886081f74b5c36c65a88c03b66d1a9";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_numeric_separator___plugin_syntax_numeric_separator_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_numeric_separator___plugin_syntax_numeric_separator_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz";
+ sha1 = "25761ee7410bc8cf97327ba741ee94e4a61b7d99";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_object_rest_spread___plugin_syntax_object_rest_spread_7.8.3.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_object_rest_spread___plugin_syntax_object_rest_spread_7.8.3.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz";
+ sha1 = "60e225edcbd98a640332a2e72dd3e66f1af55871";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_optional_catch_binding___plugin_syntax_optional_catch_binding_7.8.3.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_optional_catch_binding___plugin_syntax_optional_catch_binding_7.8.3.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz";
+ sha1 = "6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_optional_chaining___plugin_syntax_optional_chaining_7.8.3.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_optional_chaining___plugin_syntax_optional_chaining_7.8.3.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz";
+ sha1 = "4f69c2ab95167e0180cd5336613f8c5788f7d48a";
+ };
+ }
+ {
+ name = "_babel_plugin_syntax_top_level_await___plugin_syntax_top_level_await_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_syntax_top_level_await___plugin_syntax_top_level_await_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz";
+ sha1 = "8b8733f8c57397b3eaa47ddba8841586dcaef362";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_arrow_functions___plugin_transform_arrow_functions_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_arrow_functions___plugin_transform_arrow_functions_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz";
+ sha1 = "cb5ee3a36f0863c06ead0b409b4cc43a889b295b";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_async_to_generator___plugin_transform_async_to_generator_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_async_to_generator___plugin_transform_async_to_generator_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz";
+ sha1 = "e5153eb1a3e028f79194ed8a7a4bf55f862b2062";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_block_scoped_functions___plugin_transform_block_scoped_functions_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_block_scoped_functions___plugin_transform_block_scoped_functions_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz";
+ sha1 = "146856e756d54b20fff14b819456b3e01820b85d";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_block_scoping___plugin_transform_block_scoping_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_block_scoping___plugin_transform_block_scoping_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz";
+ sha1 = "47092d89ca345811451cd0dc5d91605982705d5e";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_classes___plugin_transform_classes_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_classes___plugin_transform_classes_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz";
+ sha1 = "6e11dd6c4dfae70f540480a4702477ed766d733f";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_computed_properties___plugin_transform_computed_properties_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_computed_properties___plugin_transform_computed_properties_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz";
+ sha1 = "59aa399064429d64dce5cf76ef9b90b7245ebd07";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_destructuring___plugin_transform_destructuring_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_destructuring___plugin_transform_destructuring_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz";
+ sha1 = "abd58e51337815ca3a22a336b85f62b998e71907";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_dotall_regex___plugin_transform_dotall_regex_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_dotall_regex___plugin_transform_dotall_regex_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz";
+ sha1 = "920b9fec2d78bb57ebb64a644d5c2ba67cc104ee";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_duplicate_keys___plugin_transform_duplicate_keys_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_duplicate_keys___plugin_transform_duplicate_keys_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz";
+ sha1 = "c900a793beb096bc9d4d0a9d0cde19518ffc83b9";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_exponentiation_operator___plugin_transform_exponentiation_operator_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_exponentiation_operator___plugin_transform_exponentiation_operator_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz";
+ sha1 = "279c3116756a60dd6e6f5e488ba7957db9c59eb3";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_for_of___plugin_transform_for_of_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_for_of___plugin_transform_for_of_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz";
+ sha1 = "ff01119784eb0ee32258e8646157ba2501fcfda5";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_function_name___plugin_transform_function_name_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_function_name___plugin_transform_function_name_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz";
+ sha1 = "4ed46fd6e1d8fde2a2ec7b03c66d853d2c92427d";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_literals___plugin_transform_literals_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_literals___plugin_transform_literals_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz";
+ sha1 = "5794f8da82846b22e4e6631ea1658bce708eb46a";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_member_expression_literals___plugin_transform_member_expression_literals_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_member_expression_literals___plugin_transform_member_expression_literals_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz";
+ sha1 = "90347cba31bca6f394b3f7bd95d2bbfd9fce2f39";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_modules_amd___plugin_transform_modules_amd_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_modules_amd___plugin_transform_modules_amd_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz";
+ sha1 = "65950e8e05797ebd2fe532b96e19fc5482a1d52a";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_modules_commonjs___plugin_transform_modules_commonjs_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_modules_commonjs___plugin_transform_modules_commonjs_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz";
+ sha1 = "d5ff4b4413ed97ffded99961056e1fb980fb9301";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_modules_systemjs___plugin_transform_modules_systemjs_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_modules_systemjs___plugin_transform_modules_systemjs_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz";
+ sha1 = "9962e4b0ac6aaf2e20431ada3d8ec72082cbffb6";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_modules_umd___plugin_transform_modules_umd_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_modules_umd___plugin_transform_modules_umd_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz";
+ sha1 = "ea080911ffc6eb21840a5197a39ede4ee67b1595";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_named_capturing_groups_regex___plugin_transform_named_capturing_groups_regex_7.8.3.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_named_capturing_groups_regex___plugin_transform_named_capturing_groups_regex_7.8.3.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz";
+ sha1 = "a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_new_target___plugin_transform_new_target_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_new_target___plugin_transform_new_target_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz";
+ sha1 = "6ee41a5e648da7632e22b6fb54012e87f612f324";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_object_super___plugin_transform_object_super_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_object_super___plugin_transform_object_super_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz";
+ sha1 = "2e3016b0adbf262983bf0d5121d676a5ed9c4fde";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_parameters___plugin_transform_parameters_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_parameters___plugin_transform_parameters_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz";
+ sha1 = "b25938a3c5fae0354144a720b07b32766f683ddd";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_property_literals___plugin_transform_property_literals_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_property_literals___plugin_transform_property_literals_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz";
+ sha1 = "cffc7315219230ed81dc53e4625bf86815b6050d";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_regenerator___plugin_transform_regenerator_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_regenerator___plugin_transform_regenerator_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz";
+ sha1 = "10e175cbe7bdb63cc9b39f9b3f823c5c7c5c5490";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_reserved_words___plugin_transform_reserved_words_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_reserved_words___plugin_transform_reserved_words_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz";
+ sha1 = "0fc1027312b4d1c3276a57890c8ae3bcc0b64a86";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_runtime___plugin_transform_runtime_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_runtime___plugin_transform_runtime_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.1.tgz";
+ sha1 = "fd1887f749637fb2ed86dc278e79eb41df37f4b1";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_shorthand_properties___plugin_transform_shorthand_properties_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_shorthand_properties___plugin_transform_shorthand_properties_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz";
+ sha1 = "e8b54f238a1ccbae482c4dce946180ae7b3143f3";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_spread___plugin_transform_spread_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_spread___plugin_transform_spread_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz";
+ sha1 = "0c6d618a0c4461a274418460a28c9ccf5239a7c8";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_sticky_regex___plugin_transform_sticky_regex_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_sticky_regex___plugin_transform_sticky_regex_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz";
+ sha1 = "90fc89b7526228bed9842cff3588270a7a393b00";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_template_literals___plugin_transform_template_literals_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_template_literals___plugin_transform_template_literals_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz";
+ sha1 = "914c7b7f4752c570ea00553b4284dad8070e8628";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_typeof_symbol___plugin_transform_typeof_symbol_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_typeof_symbol___plugin_transform_typeof_symbol_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz";
+ sha1 = "60c0239b69965d166b80a84de7315c1bc7e0bb0e";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_unicode_escapes___plugin_transform_unicode_escapes_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_unicode_escapes___plugin_transform_unicode_escapes_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz";
+ sha1 = "add0f8483dab60570d9e03cecef6c023aa8c9940";
+ };
+ }
+ {
+ name = "_babel_plugin_transform_unicode_regex___plugin_transform_unicode_regex_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_plugin_transform_unicode_regex___plugin_transform_unicode_regex_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz";
+ sha1 = "6b58f2aea7b68df37ac5025d9c88752443a6b43f";
+ };
+ }
+ {
+ name = "_babel_preset_env___preset_env_7.10.2.tgz";
+ path = fetchurl {
+ name = "_babel_preset_env___preset_env_7.10.2.tgz";
+ url = "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.2.tgz";
+ sha1 = "715930f2cf8573b0928005ee562bed52fb65fdfb";
+ };
+ }
+ {
+ name = "_babel_preset_modules___preset_modules_0.1.3.tgz";
+ path = fetchurl {
+ name = "_babel_preset_modules___preset_modules_0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz";
+ sha1 = "13242b53b5ef8c883c3cf7dddd55b36ce80fbc72";
+ };
+ }
+ {
+ name = "_babel_runtime___runtime_7.10.2.tgz";
+ path = fetchurl {
+ name = "_babel_runtime___runtime_7.10.2.tgz";
+ url = "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.2.tgz";
+ sha1 = "d103f21f2602497d38348a32e008637d506db839";
+ };
+ }
+ {
+ name = "_babel_template___template_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_template___template_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/template/-/template-7.10.1.tgz";
+ sha1 = "e167154a94cb5f14b28dc58f5356d2162f539811";
+ };
+ }
+ {
+ name = "_babel_traverse___traverse_7.10.1.tgz";
+ path = fetchurl {
+ name = "_babel_traverse___traverse_7.10.1.tgz";
+ url = "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz";
+ sha1 = "bbcef3031e4152a6c0b50147f4958df54ca0dd27";
+ };
+ }
+ {
+ name = "_babel_types___types_7.10.2.tgz";
+ path = fetchurl {
+ name = "_babel_types___types_7.10.2.tgz";
+ url = "https://registry.yarnpkg.com/@babel/types/-/types-7.10.2.tgz";
+ sha1 = "30283be31cad0dbf6fb00bd40641ca0ea675172d";
+ };
+ }
+ {
+ name = "_fortawesome_fontawesome_free___fontawesome_free_5.13.0.tgz";
+ path = fetchurl {
+ name = "_fortawesome_fontawesome_free___fontawesome_free_5.13.0.tgz";
+ url = "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.0.tgz";
+ sha1 = "fcb113d1aca4b471b709e8c9c168674fbd6e06d9";
+ };
+ }
+ {
+ name = "_hapi_address___address_2.1.4.tgz";
+ path = fetchurl {
+ name = "_hapi_address___address_2.1.4.tgz";
+ url = "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz";
+ sha1 = "5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5";
+ };
+ }
+ {
+ name = "_hapi_bourne___bourne_1.3.2.tgz";
+ path = fetchurl {
+ name = "_hapi_bourne___bourne_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz";
+ sha1 = "0a7095adea067243ce3283e1b56b8a8f453b242a";
+ };
+ }
+ {
+ name = "_hapi_hoek___hoek_8.5.1.tgz";
+ path = fetchurl {
+ name = "_hapi_hoek___hoek_8.5.1.tgz";
+ url = "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz";
+ sha1 = "fde96064ca446dec8c55a8c2f130957b070c6e06";
+ };
+ }
+ {
+ name = "_hapi_joi___joi_15.1.1.tgz";
+ path = fetchurl {
+ name = "_hapi_joi___joi_15.1.1.tgz";
+ url = "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz";
+ sha1 = "c675b8a71296f02833f8d6d243b34c57b8ce19d7";
+ };
+ }
+ {
+ name = "_hapi_topo___topo_3.1.6.tgz";
+ path = fetchurl {
+ name = "_hapi_topo___topo_3.1.6.tgz";
+ url = "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz";
+ sha1 = "68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29";
+ };
+ }
+ {
+ name = "_intervolga_optimize_cssnano_plugin___optimize_cssnano_plugin_1.0.6.tgz";
+ path = fetchurl {
+ name = "_intervolga_optimize_cssnano_plugin___optimize_cssnano_plugin_1.0.6.tgz";
+ url = "https://registry.yarnpkg.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz";
+ sha1 = "be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8";
+ };
+ }
+ {
+ name = "_mrmlnc_readdir_enhanced___readdir_enhanced_2.2.1.tgz";
+ path = fetchurl {
+ name = "_mrmlnc_readdir_enhanced___readdir_enhanced_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz";
+ sha1 = "524af240d1a360527b730475ecfa1344aa540dde";
+ };
+ }
+ {
+ name = "_nodelib_fs.stat___fs.stat_1.1.3.tgz";
+ path = fetchurl {
+ name = "_nodelib_fs.stat___fs.stat_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz";
+ sha1 = "2b5a3ab3f918cca48a8c754c08168e3f03eba61b";
+ };
+ }
+ {
+ name = "_soda_friendly_errors_webpack_plugin___friendly_errors_webpack_plugin_1.7.1.tgz";
+ path = fetchurl {
+ name = "_soda_friendly_errors_webpack_plugin___friendly_errors_webpack_plugin_1.7.1.tgz";
+ url = "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz";
+ sha1 = "706f64bcb4a8b9642b48ae3ace444c70334d615d";
+ };
+ }
+ {
+ name = "_soda_get_current_script___get_current_script_1.0.1.tgz";
+ path = fetchurl {
+ name = "_soda_get_current_script___get_current_script_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/@soda/get-current-script/-/get-current-script-1.0.1.tgz";
+ sha1 = "f4afffcb36e069a801d5339c90499601c47a2516";
+ };
+ }
+ {
+ name = "_types_color_name___color_name_1.1.1.tgz";
+ path = fetchurl {
+ name = "_types_color_name___color_name_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz";
+ sha1 = "1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0";
+ };
+ }
+ {
+ name = "_types_glob___glob_7.1.2.tgz";
+ path = fetchurl {
+ name = "_types_glob___glob_7.1.2.tgz";
+ url = "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.2.tgz";
+ sha1 = "06ca26521353a545d94a0adc74f38a59d232c987";
+ };
+ }
+ {
+ name = "_types_json_schema___json_schema_7.0.4.tgz";
+ path = fetchurl {
+ name = "_types_json_schema___json_schema_7.0.4.tgz";
+ url = "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz";
+ sha1 = "38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339";
+ };
+ }
+ {
+ name = "_types_minimatch___minimatch_3.0.3.tgz";
+ path = fetchurl {
+ name = "_types_minimatch___minimatch_3.0.3.tgz";
+ url = "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz";
+ sha1 = "3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d";
+ };
+ }
+ {
+ name = "_types_node___node_14.0.11.tgz";
+ path = fetchurl {
+ name = "_types_node___node_14.0.11.tgz";
+ url = "https://registry.yarnpkg.com/@types/node/-/node-14.0.11.tgz";
+ sha1 = "61d4886e2424da73b7b25547f59fdcb534c165a3";
+ };
+ }
+ {
+ name = "_types_normalize_package_data___normalize_package_data_2.4.0.tgz";
+ path = fetchurl {
+ name = "_types_normalize_package_data___normalize_package_data_2.4.0.tgz";
+ url = "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
+ sha1 = "e486d0d97396d79beedd0a6e33f4534ff6b4973e";
+ };
+ }
+ {
+ name = "_types_q___q_1.5.4.tgz";
+ path = fetchurl {
+ name = "_types_q___q_1.5.4.tgz";
+ url = "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz";
+ sha1 = "15925414e0ad2cd765bfef58842f7e26a7accb24";
+ };
+ }
+ {
+ name = "_vue_babel_helper_vue_jsx_merge_props___babel_helper_vue_jsx_merge_props_1.0.0.tgz";
+ path = fetchurl {
+ name = "_vue_babel_helper_vue_jsx_merge_props___babel_helper_vue_jsx_merge_props_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz";
+ sha1 = "048fe579958da408fb7a8b2a3ec050b50a661040";
+ };
+ }
+ {
+ name = "_vue_babel_plugin_transform_vue_jsx___babel_plugin_transform_vue_jsx_1.1.2.tgz";
+ path = fetchurl {
+ name = "_vue_babel_plugin_transform_vue_jsx___babel_plugin_transform_vue_jsx_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.1.2.tgz";
+ sha1 = "c0a3e6efc022e75e4247b448a8fc6b86f03e91c0";
+ };
+ }
+ {
+ name = "_vue_babel_preset_app___babel_preset_app_4.4.1.tgz";
+ path = fetchurl {
+ name = "_vue_babel_preset_app___babel_preset_app_4.4.1.tgz";
+ url = "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.4.1.tgz";
+ sha1 = "97c6796183cd0abf96a17297dc335c4c702fd8c4";
+ };
+ }
+ {
+ name = "_vue_babel_preset_jsx___babel_preset_jsx_1.1.2.tgz";
+ path = fetchurl {
+ name = "_vue_babel_preset_jsx___babel_preset_jsx_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.2.tgz";
+ sha1 = "2e169eb4c204ea37ca66c2ea85a880bfc99d4f20";
+ };
+ }
+ {
+ name = "_vue_babel_sugar_functional_vue___babel_sugar_functional_vue_1.1.2.tgz";
+ path = fetchurl {
+ name = "_vue_babel_sugar_functional_vue___babel_sugar_functional_vue_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.1.2.tgz";
+ sha1 = "f7e24fba09e6f1ee70104560a8808057555f1a9a";
+ };
+ }
+ {
+ name = "_vue_babel_sugar_inject_h___babel_sugar_inject_h_1.1.2.tgz";
+ path = fetchurl {
+ name = "_vue_babel_sugar_inject_h___babel_sugar_inject_h_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.1.2.tgz";
+ sha1 = "8a5276b6d8e2ed16ffc8078aad94236274e6edf0";
+ };
+ }
+ {
+ name = "_vue_babel_sugar_v_model___babel_sugar_v_model_1.1.2.tgz";
+ path = fetchurl {
+ name = "_vue_babel_sugar_v_model___babel_sugar_v_model_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.1.2.tgz";
+ sha1 = "1ff6fd1b800223fc9cb1e84dceb5e52d737a8192";
+ };
+ }
+ {
+ name = "_vue_babel_sugar_v_on___babel_sugar_v_on_1.1.2.tgz";
+ path = fetchurl {
+ name = "_vue_babel_sugar_v_on___babel_sugar_v_on_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.2.tgz";
+ sha1 = "b2ef99b8f2fab09fbead25aad70ef42e1cf5b13b";
+ };
+ }
+ {
+ name = "_vue_cli_overlay___cli_overlay_4.4.1.tgz";
+ path = fetchurl {
+ name = "_vue_cli_overlay___cli_overlay_4.4.1.tgz";
+ url = "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.4.1.tgz";
+ sha1 = "f1f51f31f7a00d371e9a5b5a941525184475bf8b";
+ };
+ }
+ {
+ name = "_vue_cli_plugin_babel___cli_plugin_babel_4.4.1.tgz";
+ path = fetchurl {
+ name = "_vue_cli_plugin_babel___cli_plugin_babel_4.4.1.tgz";
+ url = "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.4.1.tgz";
+ sha1 = "2c6e969fe51f1b4b211bea84afb7cad18240f70f";
+ };
+ }
+ {
+ name = "_vue_cli_plugin_eslint___cli_plugin_eslint_4.4.1.tgz";
+ path = fetchurl {
+ name = "_vue_cli_plugin_eslint___cli_plugin_eslint_4.4.1.tgz";
+ url = "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.4.1.tgz";
+ sha1 = "e39d6517da6de231195d227f995f495e2958a74a";
+ };
+ }
+ {
+ name = "_vue_cli_plugin_pwa___cli_plugin_pwa_4.4.1.tgz";
+ path = fetchurl {
+ name = "_vue_cli_plugin_pwa___cli_plugin_pwa_4.4.1.tgz";
+ url = "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.4.1.tgz";
+ sha1 = "e7bc010bc78cfaf74968c11fb332f3abc1ef298d";
+ };
+ }
+ {
+ name = "_vue_cli_plugin_router___cli_plugin_router_4.4.1.tgz";
+ path = fetchurl {
+ name = "_vue_cli_plugin_router___cli_plugin_router_4.4.1.tgz";
+ url = "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.4.1.tgz";
+ sha1 = "07d09df0f4bea816e637da814f578b808f1f93b2";
+ };
+ }
+ {
+ name = "_vue_cli_plugin_vuex___cli_plugin_vuex_4.4.1.tgz";
+ path = fetchurl {
+ name = "_vue_cli_plugin_vuex___cli_plugin_vuex_4.4.1.tgz";
+ url = "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.4.1.tgz";
+ sha1 = "98d18fc5d36fa6e0d1fc2ecaeea37aa965564f19";
+ };
+ }
+ {
+ name = "_vue_cli_service___cli_service_4.4.1.tgz";
+ path = fetchurl {
+ name = "_vue_cli_service___cli_service_4.4.1.tgz";
+ url = "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.4.1.tgz";
+ sha1 = "b26a435d8c953bc7efaf7b784c9835c1415bcf1c";
+ };
+ }
+ {
+ name = "_vue_cli_shared_utils___cli_shared_utils_4.4.1.tgz";
+ path = fetchurl {
+ name = "_vue_cli_shared_utils___cli_shared_utils_4.4.1.tgz";
+ url = "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.4.1.tgz";
+ sha1 = "930304ade5a9f9bf0d2fd67d9305cad83d04aae1";
+ };
+ }
+ {
+ name = "_vue_component_compiler_utils___component_compiler_utils_3.1.2.tgz";
+ path = fetchurl {
+ name = "_vue_component_compiler_utils___component_compiler_utils_3.1.2.tgz";
+ url = "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.1.2.tgz";
+ sha1 = "8213a5ff3202f9f2137fe55370f9e8b9656081c3";
+ };
+ }
+ {
+ name = "_vue_eslint_config_prettier___eslint_config_prettier_6.0.0.tgz";
+ path = fetchurl {
+ name = "_vue_eslint_config_prettier___eslint_config_prettier_6.0.0.tgz";
+ url = "https://registry.yarnpkg.com/@vue/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz";
+ sha1 = "ad5912b308f4ae468458e02a2b05db0b9d246700";
+ };
+ }
+ {
+ name = "_vue_preload_webpack_plugin___preload_webpack_plugin_1.1.1.tgz";
+ path = fetchurl {
+ name = "_vue_preload_webpack_plugin___preload_webpack_plugin_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz";
+ sha1 = "18723530d304f443021da2292d6ec9502826104a";
+ };
+ }
+ {
+ name = "_vue_web_component_wrapper___web_component_wrapper_1.2.0.tgz";
+ path = fetchurl {
+ name = "_vue_web_component_wrapper___web_component_wrapper_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz";
+ sha1 = "bb0e46f1585a7e289b4ee6067dcc5a6ae62f1dd1";
+ };
+ }
+ {
+ name = "_webassemblyjs_ast___ast_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_ast___ast_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz";
+ sha1 = "bd850604b4042459a5a41cd7d338cbed695ed964";
+ };
+ }
+ {
+ name = "_webassemblyjs_floating_point_hex_parser___floating_point_hex_parser_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_floating_point_hex_parser___floating_point_hex_parser_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz";
+ sha1 = "3c3d3b271bddfc84deb00f71344438311d52ffb4";
+ };
+ }
+ {
+ name = "_webassemblyjs_helper_api_error___helper_api_error_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_helper_api_error___helper_api_error_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz";
+ sha1 = "203f676e333b96c9da2eeab3ccef33c45928b6a2";
+ };
+ }
+ {
+ name = "_webassemblyjs_helper_buffer___helper_buffer_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_helper_buffer___helper_buffer_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz";
+ sha1 = "a1442d269c5feb23fcbc9ef759dac3547f29de00";
+ };
+ }
+ {
+ name = "_webassemblyjs_helper_code_frame___helper_code_frame_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_helper_code_frame___helper_code_frame_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz";
+ sha1 = "647f8892cd2043a82ac0c8c5e75c36f1d9159f27";
+ };
+ }
+ {
+ name = "_webassemblyjs_helper_fsm___helper_fsm_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_helper_fsm___helper_fsm_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz";
+ sha1 = "c05256b71244214671f4b08ec108ad63b70eddb8";
+ };
+ }
+ {
+ name = "_webassemblyjs_helper_module_context___helper_module_context_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_helper_module_context___helper_module_context_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz";
+ sha1 = "25d8884b76839871a08a6c6f806c3979ef712f07";
+ };
+ }
+ {
+ name = "_webassemblyjs_helper_wasm_bytecode___helper_wasm_bytecode_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_helper_wasm_bytecode___helper_wasm_bytecode_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz";
+ sha1 = "4fed8beac9b8c14f8c58b70d124d549dd1fe5790";
+ };
+ }
+ {
+ name = "_webassemblyjs_helper_wasm_section___helper_wasm_section_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_helper_wasm_section___helper_wasm_section_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz";
+ sha1 = "5a4138d5a6292ba18b04c5ae49717e4167965346";
+ };
+ }
+ {
+ name = "_webassemblyjs_ieee754___ieee754_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_ieee754___ieee754_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz";
+ sha1 = "15c7a0fbaae83fb26143bbacf6d6df1702ad39e4";
+ };
+ }
+ {
+ name = "_webassemblyjs_leb128___leb128_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_leb128___leb128_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz";
+ sha1 = "f19ca0b76a6dc55623a09cffa769e838fa1e1c95";
+ };
+ }
+ {
+ name = "_webassemblyjs_utf8___utf8_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_utf8___utf8_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz";
+ sha1 = "04d33b636f78e6a6813227e82402f7637b6229ab";
+ };
+ }
+ {
+ name = "_webassemblyjs_wasm_edit___wasm_edit_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_wasm_edit___wasm_edit_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz";
+ sha1 = "3fe6d79d3f0f922183aa86002c42dd256cfee9cf";
+ };
+ }
+ {
+ name = "_webassemblyjs_wasm_gen___wasm_gen_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_wasm_gen___wasm_gen_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz";
+ sha1 = "50bc70ec68ded8e2763b01a1418bf43491a7a49c";
+ };
+ }
+ {
+ name = "_webassemblyjs_wasm_opt___wasm_opt_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_wasm_opt___wasm_opt_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz";
+ sha1 = "2211181e5b31326443cc8112eb9f0b9028721a61";
+ };
+ }
+ {
+ name = "_webassemblyjs_wasm_parser___wasm_parser_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_wasm_parser___wasm_parser_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz";
+ sha1 = "9d48e44826df4a6598294aa6c87469d642fff65e";
+ };
+ }
+ {
+ name = "_webassemblyjs_wast_parser___wast_parser_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_wast_parser___wast_parser_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz";
+ sha1 = "3031115d79ac5bd261556cecc3fa90a3ef451914";
+ };
+ }
+ {
+ name = "_webassemblyjs_wast_printer___wast_printer_1.9.0.tgz";
+ path = fetchurl {
+ name = "_webassemblyjs_wast_printer___wast_printer_1.9.0.tgz";
+ url = "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz";
+ sha1 = "4935d54c85fef637b00ce9f52377451d00d47899";
+ };
+ }
+ {
+ name = "_xtuc_ieee754___ieee754_1.2.0.tgz";
+ path = fetchurl {
+ name = "_xtuc_ieee754___ieee754_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz";
+ sha1 = "eef014a3145ae477a1cbc00cd1e552336dceb790";
+ };
+ }
+ {
+ name = "_xtuc_long___long_4.2.2.tgz";
+ path = fetchurl {
+ name = "_xtuc_long___long_4.2.2.tgz";
+ url = "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz";
+ sha1 = "d291c6a4e97989b5c61d9acf396ae4fe133a718d";
+ };
+ }
+ {
+ name = "accepts___accepts_1.3.7.tgz";
+ path = fetchurl {
+ name = "accepts___accepts_1.3.7.tgz";
+ url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz";
+ sha1 = "531bc726517a3b2b41f850021c6cc15eaab507cd";
+ };
+ }
+ {
+ name = "acorn_jsx___acorn_jsx_5.2.0.tgz";
+ path = fetchurl {
+ name = "acorn_jsx___acorn_jsx_5.2.0.tgz";
+ url = "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz";
+ sha1 = "4c66069173d6fdd68ed85239fc256226182b2ebe";
+ };
+ }
+ {
+ name = "acorn_walk___acorn_walk_7.1.1.tgz";
+ path = fetchurl {
+ name = "acorn_walk___acorn_walk_7.1.1.tgz";
+ url = "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz";
+ sha1 = "345f0dffad5c735e7373d2fec9a1023e6a44b83e";
+ };
+ }
+ {
+ name = "acorn___acorn_6.4.1.tgz";
+ path = fetchurl {
+ name = "acorn___acorn_6.4.1.tgz";
+ url = "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz";
+ sha1 = "531e58ba3f51b9dacb9a6646ca4debf5b14ca474";
+ };
+ }
+ {
+ name = "acorn___acorn_7.2.0.tgz";
+ path = fetchurl {
+ name = "acorn___acorn_7.2.0.tgz";
+ url = "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz";
+ sha1 = "17ea7e40d7c8640ff54a694c889c26f31704effe";
+ };
+ }
+ {
+ name = "address___address_1.1.2.tgz";
+ path = fetchurl {
+ name = "address___address_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz";
+ sha1 = "bf1116c9c758c51b7a933d296b72c221ed9428b6";
+ };
+ }
+ {
+ name = "aggregate_error___aggregate_error_3.0.1.tgz";
+ path = fetchurl {
+ name = "aggregate_error___aggregate_error_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz";
+ sha1 = "db2fe7246e536f40d9b5442a39e117d7dd6a24e0";
+ };
+ }
+ {
+ name = "ajv_errors___ajv_errors_1.0.1.tgz";
+ path = fetchurl {
+ name = "ajv_errors___ajv_errors_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz";
+ sha1 = "f35986aceb91afadec4102fbd85014950cefa64d";
+ };
+ }
+ {
+ name = "ajv_keywords___ajv_keywords_3.4.1.tgz";
+ path = fetchurl {
+ name = "ajv_keywords___ajv_keywords_3.4.1.tgz";
+ url = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz";
+ sha1 = "ef916e271c64ac12171fd8384eaae6b2345854da";
+ };
+ }
+ {
+ name = "ajv___ajv_6.12.2.tgz";
+ path = fetchurl {
+ name = "ajv___ajv_6.12.2.tgz";
+ url = "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz";
+ sha1 = "c629c5eced17baf314437918d2da88c99d5958cd";
+ };
+ }
+ {
+ name = "alphanum_sort___alphanum_sort_1.0.2.tgz";
+ path = fetchurl {
+ name = "alphanum_sort___alphanum_sort_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz";
+ sha1 = "97a1119649b211ad33691d9f9f486a8ec9fbe0a3";
+ };
+ }
+ {
+ name = "ansi_colors___ansi_colors_3.2.4.tgz";
+ path = fetchurl {
+ name = "ansi_colors___ansi_colors_3.2.4.tgz";
+ url = "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz";
+ sha1 = "e3a3da4bfbae6c86a9c285625de124a234026fbf";
+ };
+ }
+ {
+ name = "ansi_escapes___ansi_escapes_4.3.1.tgz";
+ path = fetchurl {
+ name = "ansi_escapes___ansi_escapes_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz";
+ sha1 = "a5c47cc43181f1f38ffd7076837700d395522a61";
+ };
+ }
+ {
+ name = "ansi_html___ansi_html_0.0.7.tgz";
+ path = fetchurl {
+ name = "ansi_html___ansi_html_0.0.7.tgz";
+ url = "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz";
+ sha1 = "813584021962a9e9e6fd039f940d12f56ca7859e";
+ };
+ }
+ {
+ name = "ansi_regex___ansi_regex_2.1.1.tgz";
+ path = fetchurl {
+ name = "ansi_regex___ansi_regex_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
+ sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+ };
+ }
+ {
+ name = "ansi_regex___ansi_regex_3.0.0.tgz";
+ path = fetchurl {
+ name = "ansi_regex___ansi_regex_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
+ sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
+ };
+ }
+ {
+ name = "ansi_regex___ansi_regex_4.1.0.tgz";
+ path = fetchurl {
+ name = "ansi_regex___ansi_regex_4.1.0.tgz";
+ url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz";
+ sha1 = "8b9f8f08cf1acb843756a839ca8c7e3168c51997";
+ };
+ }
+ {
+ name = "ansi_regex___ansi_regex_5.0.0.tgz";
+ path = fetchurl {
+ name = "ansi_regex___ansi_regex_5.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz";
+ sha1 = "388539f55179bf39339c81af30a654d69f87cb75";
+ };
+ }
+ {
+ name = "ansi_styles___ansi_styles_2.2.1.tgz";
+ path = fetchurl {
+ name = "ansi_styles___ansi_styles_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz";
+ sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
+ };
+ }
+ {
+ name = "ansi_styles___ansi_styles_3.2.1.tgz";
+ path = fetchurl {
+ name = "ansi_styles___ansi_styles_3.2.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz";
+ sha1 = "41fbb20243e50b12be0f04b8dedbf07520ce841d";
+ };
+ }
+ {
+ name = "ansi_styles___ansi_styles_4.2.1.tgz";
+ path = fetchurl {
+ name = "ansi_styles___ansi_styles_4.2.1.tgz";
+ url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz";
+ sha1 = "90ae75c424d008d2624c5bf29ead3177ebfcf359";
+ };
+ }
+ {
+ name = "any_promise___any_promise_1.3.0.tgz";
+ path = fetchurl {
+ name = "any_promise___any_promise_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz";
+ sha1 = "abc6afeedcea52e809cdc0376aed3ce39635d17f";
+ };
+ }
+ {
+ name = "anymatch___anymatch_2.0.0.tgz";
+ path = fetchurl {
+ name = "anymatch___anymatch_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz";
+ sha1 = "bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb";
+ };
+ }
+ {
+ name = "anymatch___anymatch_3.1.1.tgz";
+ path = fetchurl {
+ name = "anymatch___anymatch_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz";
+ sha1 = "c55ecf02185e2469259399310c173ce31233b142";
+ };
+ }
+ {
+ name = "aproba___aproba_1.2.0.tgz";
+ path = fetchurl {
+ name = "aproba___aproba_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
+ sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
+ };
+ }
+ {
+ name = "arch___arch_2.1.2.tgz";
+ path = fetchurl {
+ name = "arch___arch_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz";
+ sha1 = "0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf";
+ };
+ }
+ {
+ name = "argparse___argparse_1.0.10.tgz";
+ path = fetchurl {
+ name = "argparse___argparse_1.0.10.tgz";
+ url = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz";
+ sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911";
+ };
+ }
+ {
+ name = "arr_diff___arr_diff_4.0.0.tgz";
+ path = fetchurl {
+ name = "arr_diff___arr_diff_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz";
+ sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
+ };
+ }
+ {
+ name = "arr_flatten___arr_flatten_1.1.0.tgz";
+ path = fetchurl {
+ name = "arr_flatten___arr_flatten_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz";
+ sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1";
+ };
+ }
+ {
+ name = "arr_union___arr_union_3.1.0.tgz";
+ path = fetchurl {
+ name = "arr_union___arr_union_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz";
+ sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
+ };
+ }
+ {
+ name = "array_flatten___array_flatten_1.1.1.tgz";
+ path = fetchurl {
+ name = "array_flatten___array_flatten_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz";
+ sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
+ };
+ }
+ {
+ name = "array_flatten___array_flatten_2.1.2.tgz";
+ path = fetchurl {
+ name = "array_flatten___array_flatten_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz";
+ sha1 = "24ef80a28c1a893617e2149b0c6d0d788293b099";
+ };
+ }
+ {
+ name = "array_union___array_union_1.0.2.tgz";
+ path = fetchurl {
+ name = "array_union___array_union_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz";
+ sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
+ };
+ }
+ {
+ name = "array_uniq___array_uniq_1.0.3.tgz";
+ path = fetchurl {
+ name = "array_uniq___array_uniq_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz";
+ sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
+ };
+ }
+ {
+ name = "array_unique___array_unique_0.3.2.tgz";
+ path = fetchurl {
+ name = "array_unique___array_unique_0.3.2.tgz";
+ url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz";
+ sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
+ };
+ }
+ {
+ name = "asn1.js___asn1.js_4.10.1.tgz";
+ path = fetchurl {
+ name = "asn1.js___asn1.js_4.10.1.tgz";
+ url = "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz";
+ sha1 = "b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0";
+ };
+ }
+ {
+ name = "asn1___asn1_0.2.4.tgz";
+ path = fetchurl {
+ name = "asn1___asn1_0.2.4.tgz";
+ url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
+ sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
+ };
+ }
+ {
+ name = "assert_plus___assert_plus_1.0.0.tgz";
+ path = fetchurl {
+ name = "assert_plus___assert_plus_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
+ sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+ };
+ }
+ {
+ name = "assert___assert_1.5.0.tgz";
+ path = fetchurl {
+ name = "assert___assert_1.5.0.tgz";
+ url = "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz";
+ sha1 = "55c109aaf6e0aefdb3dc4b71240c70bf574b18eb";
+ };
+ }
+ {
+ name = "assign_symbols___assign_symbols_1.0.0.tgz";
+ path = fetchurl {
+ name = "assign_symbols___assign_symbols_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz";
+ sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
+ };
+ }
+ {
+ name = "astral_regex___astral_regex_1.0.0.tgz";
+ path = fetchurl {
+ name = "astral_regex___astral_regex_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz";
+ sha1 = "6c8c3fb827dd43ee3918f27b82782ab7658a6fd9";
+ };
+ }
+ {
+ name = "async_each___async_each_1.0.3.tgz";
+ path = fetchurl {
+ name = "async_each___async_each_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz";
+ sha1 = "b727dbf87d7651602f06f4d4ac387f47d91b0cbf";
+ };
+ }
+ {
+ name = "async_limiter___async_limiter_1.0.1.tgz";
+ path = fetchurl {
+ name = "async_limiter___async_limiter_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz";
+ sha1 = "dd379e94f0db8310b08291f9d64c3209766617fd";
+ };
+ }
+ {
+ name = "async___async_2.6.3.tgz";
+ path = fetchurl {
+ name = "async___async_2.6.3.tgz";
+ url = "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz";
+ sha1 = "d72625e2344a3656e3a3ad4fa749fa83299d82ff";
+ };
+ }
+ {
+ name = "asynckit___asynckit_0.4.0.tgz";
+ path = fetchurl {
+ name = "asynckit___asynckit_0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
+ sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+ };
+ }
+ {
+ name = "atob___atob_2.1.2.tgz";
+ path = fetchurl {
+ name = "atob___atob_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz";
+ sha1 = "6d9517eb9e030d2436666651e86bd9f6f13533c9";
+ };
+ }
+ {
+ name = "autoprefixer___autoprefixer_9.8.0.tgz";
+ path = fetchurl {
+ name = "autoprefixer___autoprefixer_9.8.0.tgz";
+ url = "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz";
+ sha1 = "68e2d2bef7ba4c3a65436f662d0a56a741e56511";
+ };
+ }
+ {
+ name = "aws_sign2___aws_sign2_0.7.0.tgz";
+ path = fetchurl {
+ name = "aws_sign2___aws_sign2_0.7.0.tgz";
+ url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
+ sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+ };
+ }
+ {
+ name = "aws4___aws4_1.10.0.tgz";
+ path = fetchurl {
+ name = "aws4___aws4_1.10.0.tgz";
+ url = "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz";
+ sha1 = "a17b3a8ea811060e74d47d306122400ad4497ae2";
+ };
+ }
+ {
+ name = "babel_eslint___babel_eslint_10.1.0.tgz";
+ path = fetchurl {
+ name = "babel_eslint___babel_eslint_10.1.0.tgz";
+ url = "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz";
+ sha1 = "6968e568a910b78fb3779cdd8b6ac2f479943232";
+ };
+ }
+ {
+ name = "babel_extract_comments___babel_extract_comments_1.0.0.tgz";
+ path = fetchurl {
+ name = "babel_extract_comments___babel_extract_comments_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz";
+ sha1 = "0a2aedf81417ed391b85e18b4614e693a0351a21";
+ };
+ }
+ {
+ name = "babel_loader___babel_loader_8.1.0.tgz";
+ path = fetchurl {
+ name = "babel_loader___babel_loader_8.1.0.tgz";
+ url = "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz";
+ sha1 = "c611d5112bd5209abe8b9fa84c3e4da25275f1c3";
+ };
+ }
+ {
+ name = "babel_plugin_dynamic_import_node___babel_plugin_dynamic_import_node_2.3.3.tgz";
+ path = fetchurl {
+ name = "babel_plugin_dynamic_import_node___babel_plugin_dynamic_import_node_2.3.3.tgz";
+ url = "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz";
+ sha1 = "84fda19c976ec5c6defef57f9427b3def66e17a3";
+ };
+ }
+ {
+ name = "babel_plugin_syntax_object_rest_spread___babel_plugin_syntax_object_rest_spread_6.13.0.tgz";
+ path = fetchurl {
+ name = "babel_plugin_syntax_object_rest_spread___babel_plugin_syntax_object_rest_spread_6.13.0.tgz";
+ url = "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz";
+ sha1 = "fd6536f2bce13836ffa3a5458c4903a597bb3bf5";
+ };
+ }
+ {
+ name = "babel_plugin_transform_object_rest_spread___babel_plugin_transform_object_rest_spread_6.26.0.tgz";
+ path = fetchurl {
+ name = "babel_plugin_transform_object_rest_spread___babel_plugin_transform_object_rest_spread_6.26.0.tgz";
+ url = "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz";
+ sha1 = "0f36692d50fef6b7e2d4b3ac1478137a963b7b06";
+ };
+ }
+ {
+ name = "babel_runtime___babel_runtime_6.26.0.tgz";
+ path = fetchurl {
+ name = "babel_runtime___babel_runtime_6.26.0.tgz";
+ url = "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz";
+ sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
+ };
+ }
+ {
+ name = "babylon___babylon_6.18.0.tgz";
+ path = fetchurl {
+ name = "babylon___babylon_6.18.0.tgz";
+ url = "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz";
+ sha1 = "af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3";
+ };
+ }
+ {
+ name = "balanced_match___balanced_match_1.0.0.tgz";
+ path = fetchurl {
+ name = "balanced_match___balanced_match_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
+ sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+ };
+ }
+ {
+ name = "base64_js___base64_js_1.3.1.tgz";
+ path = fetchurl {
+ name = "base64_js___base64_js_1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz";
+ sha1 = "58ece8cb75dd07e71ed08c736abc5fac4dbf8df1";
+ };
+ }
+ {
+ name = "base___base_0.11.2.tgz";
+ path = fetchurl {
+ name = "base___base_0.11.2.tgz";
+ url = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz";
+ sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f";
+ };
+ }
+ {
+ name = "batch___batch_0.6.1.tgz";
+ path = fetchurl {
+ name = "batch___batch_0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz";
+ sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
+ };
+ }
+ {
+ name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
+ path = fetchurl {
+ name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+ sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+ };
+ }
+ {
+ name = "bfj___bfj_6.1.2.tgz";
+ path = fetchurl {
+ name = "bfj___bfj_6.1.2.tgz";
+ url = "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz";
+ sha1 = "325c861a822bcb358a41c78a33b8e6e2086dde7f";
+ };
+ }
+ {
+ name = "big.js___big.js_3.2.0.tgz";
+ path = fetchurl {
+ name = "big.js___big.js_3.2.0.tgz";
+ url = "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz";
+ sha1 = "a5fc298b81b9e0dca2e458824784b65c52ba588e";
+ };
+ }
+ {
+ name = "big.js___big.js_5.2.2.tgz";
+ path = fetchurl {
+ name = "big.js___big.js_5.2.2.tgz";
+ url = "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz";
+ sha1 = "65f0af382f578bcdc742bd9c281e9cb2d7768328";
+ };
+ }
+ {
+ name = "binary_extensions___binary_extensions_1.13.1.tgz";
+ path = fetchurl {
+ name = "binary_extensions___binary_extensions_1.13.1.tgz";
+ url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz";
+ sha1 = "598afe54755b2868a5330d2aff9d4ebb53209b65";
+ };
+ }
+ {
+ name = "binary_extensions___binary_extensions_2.0.0.tgz";
+ path = fetchurl {
+ name = "binary_extensions___binary_extensions_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz";
+ sha1 = "23c0df14f6a88077f5f986c0d167ec03c3d5537c";
+ };
+ }
+ {
+ name = "bindings___bindings_1.5.0.tgz";
+ path = fetchurl {
+ name = "bindings___bindings_1.5.0.tgz";
+ url = "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz";
+ sha1 = "10353c9e945334bc0511a6d90b38fbc7c9c504df";
+ };
+ }
+ {
+ name = "bluebird___bluebird_3.7.2.tgz";
+ path = fetchurl {
+ name = "bluebird___bluebird_3.7.2.tgz";
+ url = "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz";
+ sha1 = "9f229c15be272454ffa973ace0dbee79a1b0c36f";
+ };
+ }
+ {
+ name = "bn.js___bn.js_4.11.9.tgz";
+ path = fetchurl {
+ name = "bn.js___bn.js_4.11.9.tgz";
+ url = "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz";
+ sha1 = "26d556829458f9d1e81fc48952493d0ba3507828";
+ };
+ }
+ {
+ name = "bn.js___bn.js_5.1.2.tgz";
+ path = fetchurl {
+ name = "bn.js___bn.js_5.1.2.tgz";
+ url = "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz";
+ sha1 = "c9686902d3c9a27729f43ab10f9d79c2004da7b0";
+ };
+ }
+ {
+ name = "body_parser___body_parser_1.19.0.tgz";
+ path = fetchurl {
+ name = "body_parser___body_parser_1.19.0.tgz";
+ url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz";
+ sha1 = "96b2709e57c9c4e09a6fd66a8fd979844f69f08a";
+ };
+ }
+ {
+ name = "bonjour___bonjour_3.5.0.tgz";
+ path = fetchurl {
+ name = "bonjour___bonjour_3.5.0.tgz";
+ url = "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz";
+ sha1 = "8e890a183d8ee9a2393b3844c691a42bcf7bc9f5";
+ };
+ }
+ {
+ name = "boolbase___boolbase_1.0.0.tgz";
+ path = fetchurl {
+ name = "boolbase___boolbase_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz";
+ sha1 = "68dff5fbe60c51eb37725ea9e3ed310dcc1e776e";
+ };
+ }
+ {
+ name = "brace_expansion___brace_expansion_1.1.11.tgz";
+ path = fetchurl {
+ name = "brace_expansion___brace_expansion_1.1.11.tgz";
+ url = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz";
+ sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd";
+ };
+ }
+ {
+ name = "braces___braces_2.3.2.tgz";
+ path = fetchurl {
+ name = "braces___braces_2.3.2.tgz";
+ url = "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz";
+ sha1 = "5979fd3f14cd531565e5fa2df1abfff1dfaee729";
+ };
+ }
+ {
+ name = "braces___braces_3.0.2.tgz";
+ path = fetchurl {
+ name = "braces___braces_3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz";
+ sha1 = "3454e1a462ee8d599e236df336cd9ea4f8afe107";
+ };
+ }
+ {
+ name = "brorand___brorand_1.1.0.tgz";
+ path = fetchurl {
+ name = "brorand___brorand_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz";
+ sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f";
+ };
+ }
+ {
+ name = "browserify_aes___browserify_aes_1.2.0.tgz";
+ path = fetchurl {
+ name = "browserify_aes___browserify_aes_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz";
+ sha1 = "326734642f403dabc3003209853bb70ad428ef48";
+ };
+ }
+ {
+ name = "browserify_cipher___browserify_cipher_1.0.1.tgz";
+ path = fetchurl {
+ name = "browserify_cipher___browserify_cipher_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz";
+ sha1 = "8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0";
+ };
+ }
+ {
+ name = "browserify_des___browserify_des_1.0.2.tgz";
+ path = fetchurl {
+ name = "browserify_des___browserify_des_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz";
+ sha1 = "3af4f1f59839403572f1c66204375f7a7f703e9c";
+ };
+ }
+ {
+ name = "browserify_rsa___browserify_rsa_4.0.1.tgz";
+ path = fetchurl {
+ name = "browserify_rsa___browserify_rsa_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz";
+ sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524";
+ };
+ }
+ {
+ name = "browserify_sign___browserify_sign_4.2.0.tgz";
+ path = fetchurl {
+ name = "browserify_sign___browserify_sign_4.2.0.tgz";
+ url = "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz";
+ sha1 = "545d0b1b07e6b2c99211082bf1b12cce7a0b0e11";
+ };
+ }
+ {
+ name = "browserify_zlib___browserify_zlib_0.2.0.tgz";
+ path = fetchurl {
+ name = "browserify_zlib___browserify_zlib_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
+ sha1 = "2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f";
+ };
+ }
+ {
+ name = "browserslist___browserslist_4.12.0.tgz";
+ path = fetchurl {
+ name = "browserslist___browserslist_4.12.0.tgz";
+ url = "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz";
+ sha1 = "06c6d5715a1ede6c51fc39ff67fd647f740b656d";
+ };
+ }
+ {
+ name = "buffer_from___buffer_from_1.1.1.tgz";
+ path = fetchurl {
+ name = "buffer_from___buffer_from_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz";
+ sha1 = "32713bc028f75c02fdb710d7c7bcec1f2c6070ef";
+ };
+ }
+ {
+ name = "buffer_indexof___buffer_indexof_1.1.1.tgz";
+ path = fetchurl {
+ name = "buffer_indexof___buffer_indexof_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz";
+ sha1 = "52fabcc6a606d1a00302802648ef68f639da268c";
+ };
+ }
+ {
+ name = "buffer_json___buffer_json_2.0.0.tgz";
+ path = fetchurl {
+ name = "buffer_json___buffer_json_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz";
+ sha1 = "f73e13b1e42f196fe2fd67d001c7d7107edd7c23";
+ };
+ }
+ {
+ name = "buffer_xor___buffer_xor_1.0.3.tgz";
+ path = fetchurl {
+ name = "buffer_xor___buffer_xor_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz";
+ sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9";
+ };
+ }
+ {
+ name = "buffer___buffer_4.9.2.tgz";
+ path = fetchurl {
+ name = "buffer___buffer_4.9.2.tgz";
+ url = "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz";
+ sha1 = "230ead344002988644841ab0244af8c44bbe3ef8";
+ };
+ }
+ {
+ name = "builtin_status_codes___builtin_status_codes_3.0.0.tgz";
+ path = fetchurl {
+ name = "builtin_status_codes___builtin_status_codes_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
+ sha1 = "85982878e21b98e1c66425e03d0174788f569ee8";
+ };
+ }
+ {
+ name = "bulma___bulma_0.8.2.tgz";
+ path = fetchurl {
+ name = "bulma___bulma_0.8.2.tgz";
+ url = "https://registry.yarnpkg.com/bulma/-/bulma-0.8.2.tgz";
+ sha1 = "5d928f16ed4a84549c2873f95c92c38c69c631a7";
+ };
+ }
+ {
+ name = "bytes___bytes_3.0.0.tgz";
+ path = fetchurl {
+ name = "bytes___bytes_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz";
+ sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
+ };
+ }
+ {
+ name = "bytes___bytes_3.1.0.tgz";
+ path = fetchurl {
+ name = "bytes___bytes_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz";
+ sha1 = "f6cf7933a360e0588fa9fde85651cdc7f805d1f6";
+ };
+ }
+ {
+ name = "cacache___cacache_12.0.4.tgz";
+ path = fetchurl {
+ name = "cacache___cacache_12.0.4.tgz";
+ url = "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz";
+ sha1 = "668bcbd105aeb5f1d92fe25570ec9525c8faa40c";
+ };
+ }
+ {
+ name = "cacache___cacache_13.0.1.tgz";
+ path = fetchurl {
+ name = "cacache___cacache_13.0.1.tgz";
+ url = "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz";
+ sha1 = "a8000c21697089082f85287a1aec6e382024a71c";
+ };
+ }
+ {
+ name = "cache_base___cache_base_1.0.1.tgz";
+ path = fetchurl {
+ name = "cache_base___cache_base_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz";
+ sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2";
+ };
+ }
+ {
+ name = "cache_loader___cache_loader_4.1.0.tgz";
+ path = fetchurl {
+ name = "cache_loader___cache_loader_4.1.0.tgz";
+ url = "https://registry.yarnpkg.com/cache-loader/-/cache-loader-4.1.0.tgz";
+ sha1 = "9948cae353aec0a1fcb1eafda2300816ec85387e";
+ };
+ }
+ {
+ name = "call_me_maybe___call_me_maybe_1.0.1.tgz";
+ path = fetchurl {
+ name = "call_me_maybe___call_me_maybe_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz";
+ sha1 = "26d208ea89e37b5cbde60250a15f031c16a4d66b";
+ };
+ }
+ {
+ name = "caller_callsite___caller_callsite_2.0.0.tgz";
+ path = fetchurl {
+ name = "caller_callsite___caller_callsite_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz";
+ sha1 = "847e0fce0a223750a9a027c54b33731ad3154134";
+ };
+ }
+ {
+ name = "caller_path___caller_path_2.0.0.tgz";
+ path = fetchurl {
+ name = "caller_path___caller_path_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz";
+ sha1 = "468f83044e369ab2010fac5f06ceee15bb2cb1f4";
+ };
+ }
+ {
+ name = "callsites___callsites_2.0.0.tgz";
+ path = fetchurl {
+ name = "callsites___callsites_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz";
+ sha1 = "06eb84f00eea413da86affefacbffb36093b3c50";
+ };
+ }
+ {
+ name = "callsites___callsites_3.1.0.tgz";
+ path = fetchurl {
+ name = "callsites___callsites_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz";
+ sha1 = "b3630abd8943432f54b3f0519238e33cd7df2f73";
+ };
+ }
+ {
+ name = "camel_case___camel_case_3.0.0.tgz";
+ path = fetchurl {
+ name = "camel_case___camel_case_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz";
+ sha1 = "ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73";
+ };
+ }
+ {
+ name = "camelcase___camelcase_5.3.1.tgz";
+ path = fetchurl {
+ name = "camelcase___camelcase_5.3.1.tgz";
+ url = "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz";
+ sha1 = "e3c9b31569e106811df242f715725a1f4c494320";
+ };
+ }
+ {
+ name = "caniuse_api___caniuse_api_3.0.0.tgz";
+ path = fetchurl {
+ name = "caniuse_api___caniuse_api_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz";
+ sha1 = "5e4d90e2274961d46291997df599e3ed008ee4c0";
+ };
+ }
+ {
+ name = "caniuse_lite___caniuse_lite_1.0.30001078.tgz";
+ path = fetchurl {
+ name = "caniuse_lite___caniuse_lite_1.0.30001078.tgz";
+ url = "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001078.tgz";
+ sha1 = "e1b6e2ae327b6a1ec11f65ec7a0dde1e7093074c";
+ };
+ }
+ {
+ name = "case_sensitive_paths_webpack_plugin___case_sensitive_paths_webpack_plugin_2.3.0.tgz";
+ path = fetchurl {
+ name = "case_sensitive_paths_webpack_plugin___case_sensitive_paths_webpack_plugin_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz";
+ sha1 = "23ac613cc9a856e4f88ff8bb73bbb5e989825cf7";
+ };
+ }
+ {
+ name = "caseless___caseless_0.12.0.tgz";
+ path = fetchurl {
+ name = "caseless___caseless_0.12.0.tgz";
+ url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
+ sha1 = "1b681c21ff84033c826543090689420d187151dc";
+ };
+ }
+ {
+ name = "chalk___chalk_1.1.3.tgz";
+ path = fetchurl {
+ name = "chalk___chalk_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz";
+ sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
+ };
+ }
+ {
+ name = "chalk___chalk_2.4.2.tgz";
+ path = fetchurl {
+ name = "chalk___chalk_2.4.2.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz";
+ sha1 = "cd42541677a54333cf541a49108c1432b44c9424";
+ };
+ }
+ {
+ name = "chalk___chalk_3.0.0.tgz";
+ path = fetchurl {
+ name = "chalk___chalk_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz";
+ sha1 = "3f73c2bf526591f574cc492c51e2456349f844e4";
+ };
+ }
+ {
+ name = "chalk___chalk_4.0.0.tgz";
+ path = fetchurl {
+ name = "chalk___chalk_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz";
+ sha1 = "6e98081ed2d17faab615eb52ac66ec1fe6209e72";
+ };
+ }
+ {
+ name = "chardet___chardet_0.7.0.tgz";
+ path = fetchurl {
+ name = "chardet___chardet_0.7.0.tgz";
+ url = "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz";
+ sha1 = "90094849f0937f2eedc2425d0d28a9e5f0cbad9e";
+ };
+ }
+ {
+ name = "check_types___check_types_8.0.3.tgz";
+ path = fetchurl {
+ name = "check_types___check_types_8.0.3.tgz";
+ url = "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz";
+ sha1 = "3356cca19c889544f2d7a95ed49ce508a0ecf552";
+ };
+ }
+ {
+ name = "chokidar___chokidar_3.4.0.tgz";
+ path = fetchurl {
+ name = "chokidar___chokidar_3.4.0.tgz";
+ url = "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz";
+ sha1 = "b30611423ce376357c765b9b8f904b9fba3c0be8";
+ };
+ }
+ {
+ name = "chokidar___chokidar_2.1.8.tgz";
+ path = fetchurl {
+ name = "chokidar___chokidar_2.1.8.tgz";
+ url = "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz";
+ sha1 = "804b3a7b6a99358c3c5c61e71d8728f041cff917";
+ };
+ }
+ {
+ name = "chownr___chownr_1.1.4.tgz";
+ path = fetchurl {
+ name = "chownr___chownr_1.1.4.tgz";
+ url = "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz";
+ sha1 = "6fc9d7b42d32a583596337666e7d08084da2cc6b";
+ };
+ }
+ {
+ name = "chrome_trace_event___chrome_trace_event_1.0.2.tgz";
+ path = fetchurl {
+ name = "chrome_trace_event___chrome_trace_event_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz";
+ sha1 = "234090ee97c7d4ad1a2c4beae27505deffc608a4";
+ };
+ }
+ {
+ name = "ci_info___ci_info_1.6.0.tgz";
+ path = fetchurl {
+ name = "ci_info___ci_info_1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz";
+ sha1 = "2ca20dbb9ceb32d4524a683303313f0304b1e497";
+ };
+ }
+ {
+ name = "cipher_base___cipher_base_1.0.4.tgz";
+ path = fetchurl {
+ name = "cipher_base___cipher_base_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz";
+ sha1 = "8760e4ecc272f4c363532f926d874aae2c1397de";
+ };
+ }
+ {
+ name = "class_utils___class_utils_0.3.6.tgz";
+ path = fetchurl {
+ name = "class_utils___class_utils_0.3.6.tgz";
+ url = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz";
+ sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463";
+ };
+ }
+ {
+ name = "clean_css___clean_css_4.2.3.tgz";
+ path = fetchurl {
+ name = "clean_css___clean_css_4.2.3.tgz";
+ url = "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz";
+ sha1 = "507b5de7d97b48ee53d84adb0160ff6216380f78";
+ };
+ }
+ {
+ name = "clean_stack___clean_stack_2.2.0.tgz";
+ path = fetchurl {
+ name = "clean_stack___clean_stack_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz";
+ sha1 = "ee8472dbb129e727b31e8a10a427dee9dfe4008b";
+ };
+ }
+ {
+ name = "cli_cursor___cli_cursor_2.1.0.tgz";
+ path = fetchurl {
+ name = "cli_cursor___cli_cursor_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz";
+ sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5";
+ };
+ }
+ {
+ name = "cli_cursor___cli_cursor_3.1.0.tgz";
+ path = fetchurl {
+ name = "cli_cursor___cli_cursor_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz";
+ sha1 = "264305a7ae490d1d03bf0c9ba7c925d1753af307";
+ };
+ }
+ {
+ name = "cli_highlight___cli_highlight_2.1.4.tgz";
+ path = fetchurl {
+ name = "cli_highlight___cli_highlight_2.1.4.tgz";
+ url = "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.4.tgz";
+ sha1 = "098cb642cf17f42adc1c1145e07f960ec4d7522b";
+ };
+ }
+ {
+ name = "cli_spinners___cli_spinners_2.3.0.tgz";
+ path = fetchurl {
+ name = "cli_spinners___cli_spinners_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.3.0.tgz";
+ sha1 = "0632239a4b5aa4c958610142c34bb7a651fc8df5";
+ };
+ }
+ {
+ name = "cli_width___cli_width_2.2.1.tgz";
+ path = fetchurl {
+ name = "cli_width___cli_width_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz";
+ sha1 = "b0433d0b4e9c847ef18868a4ef16fd5fc8271c48";
+ };
+ }
+ {
+ name = "clipboardy___clipboardy_2.3.0.tgz";
+ path = fetchurl {
+ name = "clipboardy___clipboardy_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz";
+ sha1 = "3c2903650c68e46a91b388985bc2774287dba290";
+ };
+ }
+ {
+ name = "cliui___cliui_5.0.0.tgz";
+ path = fetchurl {
+ name = "cliui___cliui_5.0.0.tgz";
+ url = "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz";
+ sha1 = "deefcfdb2e800784aa34f46fa08e06851c7bbbc5";
+ };
+ }
+ {
+ name = "cliui___cliui_6.0.0.tgz";
+ path = fetchurl {
+ name = "cliui___cliui_6.0.0.tgz";
+ url = "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz";
+ sha1 = "511d702c0c4e41ca156d7d0e96021f23e13225b1";
+ };
+ }
+ {
+ name = "clone_deep___clone_deep_4.0.1.tgz";
+ path = fetchurl {
+ name = "clone_deep___clone_deep_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz";
+ sha1 = "c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387";
+ };
+ }
+ {
+ name = "clone___clone_1.0.4.tgz";
+ path = fetchurl {
+ name = "clone___clone_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz";
+ sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
+ };
+ }
+ {
+ name = "coa___coa_2.0.2.tgz";
+ path = fetchurl {
+ name = "coa___coa_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz";
+ sha1 = "43f6c21151b4ef2bf57187db0d73de229e3e7ec3";
+ };
+ }
+ {
+ name = "collection_visit___collection_visit_1.0.0.tgz";
+ path = fetchurl {
+ name = "collection_visit___collection_visit_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz";
+ sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
+ };
+ }
+ {
+ name = "color_convert___color_convert_1.9.3.tgz";
+ path = fetchurl {
+ name = "color_convert___color_convert_1.9.3.tgz";
+ url = "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz";
+ sha1 = "bb71850690e1f136567de629d2d5471deda4c1e8";
+ };
+ }
+ {
+ name = "color_convert___color_convert_2.0.1.tgz";
+ path = fetchurl {
+ name = "color_convert___color_convert_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz";
+ sha1 = "72d3a68d598c9bdb3af2ad1e84f21d896abd4de3";
+ };
+ }
+ {
+ name = "color_name___color_name_1.1.3.tgz";
+ path = fetchurl {
+ name = "color_name___color_name_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz";
+ sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
+ };
+ }
+ {
+ name = "color_name___color_name_1.1.4.tgz";
+ path = fetchurl {
+ name = "color_name___color_name_1.1.4.tgz";
+ url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz";
+ sha1 = "c2a09a87acbde69543de6f63fa3995c826c536a2";
+ };
+ }
+ {
+ name = "color_string___color_string_1.5.3.tgz";
+ path = fetchurl {
+ name = "color_string___color_string_1.5.3.tgz";
+ url = "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz";
+ sha1 = "c9bbc5f01b58b5492f3d6857459cb6590ce204cc";
+ };
+ }
+ {
+ name = "color___color_3.1.2.tgz";
+ path = fetchurl {
+ name = "color___color_3.1.2.tgz";
+ url = "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz";
+ sha1 = "68148e7f85d41ad7649c5fa8c8106f098d229e10";
+ };
+ }
+ {
+ name = "combined_stream___combined_stream_1.0.8.tgz";
+ path = fetchurl {
+ name = "combined_stream___combined_stream_1.0.8.tgz";
+ url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz";
+ sha1 = "c3d45a8b34fd730631a110a8a2520682b31d5a7f";
+ };
+ }
+ {
+ name = "commander___commander_2.17.1.tgz";
+ path = fetchurl {
+ name = "commander___commander_2.17.1.tgz";
+ url = "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz";
+ sha1 = "bd77ab7de6de94205ceacc72f1716d29f20a77bf";
+ };
+ }
+ {
+ name = "commander___commander_2.20.3.tgz";
+ path = fetchurl {
+ name = "commander___commander_2.20.3.tgz";
+ url = "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz";
+ sha1 = "fd485e84c03eb4881c20722ba48035e8531aeb33";
+ };
+ }
+ {
+ name = "commander___commander_2.19.0.tgz";
+ path = fetchurl {
+ name = "commander___commander_2.19.0.tgz";
+ url = "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz";
+ sha1 = "f6198aa84e5b83c46054b94ddedbfed5ee9ff12a";
+ };
+ }
+ {
+ name = "common_tags___common_tags_1.8.0.tgz";
+ path = fetchurl {
+ name = "common_tags___common_tags_1.8.0.tgz";
+ url = "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz";
+ sha1 = "8e3153e542d4a39e9b10554434afaaf98956a937";
+ };
+ }
+ {
+ name = "commondir___commondir_1.0.1.tgz";
+ path = fetchurl {
+ name = "commondir___commondir_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz";
+ sha1 = "ddd800da0c66127393cca5950ea968a3aaf1253b";
+ };
+ }
+ {
+ name = "component_emitter___component_emitter_1.3.0.tgz";
+ path = fetchurl {
+ name = "component_emitter___component_emitter_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz";
+ sha1 = "16e4070fba8ae29b679f2215853ee181ab2eabc0";
+ };
+ }
+ {
+ name = "compressible___compressible_2.0.18.tgz";
+ path = fetchurl {
+ name = "compressible___compressible_2.0.18.tgz";
+ url = "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz";
+ sha1 = "af53cca6b070d4c3c0750fbd77286a6d7cc46fba";
+ };
+ }
+ {
+ name = "compression___compression_1.7.4.tgz";
+ path = fetchurl {
+ name = "compression___compression_1.7.4.tgz";
+ url = "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz";
+ sha1 = "95523eff170ca57c29a0ca41e6fe131f41e5bb8f";
+ };
+ }
+ {
+ name = "concat_map___concat_map_0.0.1.tgz";
+ path = fetchurl {
+ name = "concat_map___concat_map_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
+ sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+ };
+ }
+ {
+ name = "concat_stream___concat_stream_1.6.2.tgz";
+ path = fetchurl {
+ name = "concat_stream___concat_stream_1.6.2.tgz";
+ url = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz";
+ sha1 = "904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34";
+ };
+ }
+ {
+ name = "connect_history_api_fallback___connect_history_api_fallback_1.6.0.tgz";
+ path = fetchurl {
+ name = "connect_history_api_fallback___connect_history_api_fallback_1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz";
+ sha1 = "8b32089359308d111115d81cad3fceab888f97bc";
+ };
+ }
+ {
+ name = "console_browserify___console_browserify_1.2.0.tgz";
+ path = fetchurl {
+ name = "console_browserify___console_browserify_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz";
+ sha1 = "67063cef57ceb6cf4993a2ab3a55840ae8c49336";
+ };
+ }
+ {
+ name = "consolidate___consolidate_0.15.1.tgz";
+ path = fetchurl {
+ name = "consolidate___consolidate_0.15.1.tgz";
+ url = "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz";
+ sha1 = "21ab043235c71a07d45d9aad98593b0dba56bab7";
+ };
+ }
+ {
+ name = "constants_browserify___constants_browserify_1.0.0.tgz";
+ path = fetchurl {
+ name = "constants_browserify___constants_browserify_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz";
+ sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
+ };
+ }
+ {
+ name = "content_disposition___content_disposition_0.5.3.tgz";
+ path = fetchurl {
+ name = "content_disposition___content_disposition_0.5.3.tgz";
+ url = "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz";
+ sha1 = "e130caf7e7279087c5616c2007d0485698984fbd";
+ };
+ }
+ {
+ name = "content_type___content_type_1.0.4.tgz";
+ path = fetchurl {
+ name = "content_type___content_type_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
+ sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
+ };
+ }
+ {
+ name = "convert_source_map___convert_source_map_1.7.0.tgz";
+ path = fetchurl {
+ name = "convert_source_map___convert_source_map_1.7.0.tgz";
+ url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz";
+ sha1 = "17a2cb882d7f77d3490585e2ce6c524424a3a442";
+ };
+ }
+ {
+ name = "cookie_signature___cookie_signature_1.0.6.tgz";
+ path = fetchurl {
+ name = "cookie_signature___cookie_signature_1.0.6.tgz";
+ url = "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz";
+ sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
+ };
+ }
+ {
+ name = "cookie___cookie_0.4.0.tgz";
+ path = fetchurl {
+ name = "cookie___cookie_0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz";
+ sha1 = "beb437e7022b3b6d49019d088665303ebe9c14ba";
+ };
+ }
+ {
+ name = "copy_concurrently___copy_concurrently_1.0.5.tgz";
+ path = fetchurl {
+ name = "copy_concurrently___copy_concurrently_1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz";
+ sha1 = "92297398cae34937fcafd6ec8139c18051f0b5e0";
+ };
+ }
+ {
+ name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
+ path = fetchurl {
+ name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
+ sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
+ };
+ }
+ {
+ name = "copy_webpack_plugin___copy_webpack_plugin_5.1.1.tgz";
+ path = fetchurl {
+ name = "copy_webpack_plugin___copy_webpack_plugin_5.1.1.tgz";
+ url = "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz";
+ sha1 = "5481a03dea1123d88a988c6ff8b78247214f0b88";
+ };
+ }
+ {
+ name = "core_js_compat___core_js_compat_3.6.5.tgz";
+ path = fetchurl {
+ name = "core_js_compat___core_js_compat_3.6.5.tgz";
+ url = "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz";
+ sha1 = "2a51d9a4e25dfd6e690251aa81f99e3c05481f1c";
+ };
+ }
+ {
+ name = "core_js___core_js_2.6.11.tgz";
+ path = fetchurl {
+ name = "core_js___core_js_2.6.11.tgz";
+ url = "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz";
+ sha1 = "38831469f9922bded8ee21c9dc46985e0399308c";
+ };
+ }
+ {
+ name = "core_js___core_js_3.6.5.tgz";
+ path = fetchurl {
+ name = "core_js___core_js_3.6.5.tgz";
+ url = "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz";
+ sha1 = "7395dc273af37fb2e50e9bd3d9fe841285231d1a";
+ };
+ }
+ {
+ name = "core_util_is___core_util_is_1.0.2.tgz";
+ path = fetchurl {
+ name = "core_util_is___core_util_is_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
+ sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+ };
+ }
+ {
+ name = "cosmiconfig___cosmiconfig_5.2.1.tgz";
+ path = fetchurl {
+ name = "cosmiconfig___cosmiconfig_5.2.1.tgz";
+ url = "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz";
+ sha1 = "040f726809c591e77a17c0a3626ca45b4f168b1a";
+ };
+ }
+ {
+ name = "create_ecdh___create_ecdh_4.0.3.tgz";
+ path = fetchurl {
+ name = "create_ecdh___create_ecdh_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz";
+ sha1 = "c9111b6f33045c4697f144787f9254cdc77c45ff";
+ };
+ }
+ {
+ name = "create_hash___create_hash_1.2.0.tgz";
+ path = fetchurl {
+ name = "create_hash___create_hash_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz";
+ sha1 = "889078af11a63756bcfb59bd221996be3a9ef196";
+ };
+ }
+ {
+ name = "create_hmac___create_hmac_1.1.7.tgz";
+ path = fetchurl {
+ name = "create_hmac___create_hmac_1.1.7.tgz";
+ url = "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz";
+ sha1 = "69170c78b3ab957147b2b8b04572e47ead2243ff";
+ };
+ }
+ {
+ name = "cross_spawn___cross_spawn_5.1.0.tgz";
+ path = fetchurl {
+ name = "cross_spawn___cross_spawn_5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz";
+ sha1 = "e8bd0efee58fcff6f8f94510a0a554bbfa235449";
+ };
+ }
+ {
+ name = "cross_spawn___cross_spawn_6.0.5.tgz";
+ path = fetchurl {
+ name = "cross_spawn___cross_spawn_6.0.5.tgz";
+ url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz";
+ sha1 = "4a5ec7c64dfae22c3a14124dbacdee846d80cbc4";
+ };
+ }
+ {
+ name = "cross_spawn___cross_spawn_7.0.3.tgz";
+ path = fetchurl {
+ name = "cross_spawn___cross_spawn_7.0.3.tgz";
+ url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz";
+ sha1 = "f73a85b9d5d41d045551c177e2882d4ac85728a6";
+ };
+ }
+ {
+ name = "crypto_browserify___crypto_browserify_3.12.0.tgz";
+ path = fetchurl {
+ name = "crypto_browserify___crypto_browserify_3.12.0.tgz";
+ url = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
+ sha1 = "396cf9f3137f03e4b8e532c58f698254e00f80ec";
+ };
+ }
+ {
+ name = "css_color_names___css_color_names_0.0.4.tgz";
+ path = fetchurl {
+ name = "css_color_names___css_color_names_0.0.4.tgz";
+ url = "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz";
+ sha1 = "808adc2e79cf84738069b646cb20ec27beb629e0";
+ };
+ }
+ {
+ name = "css_declaration_sorter___css_declaration_sorter_4.0.1.tgz";
+ path = fetchurl {
+ name = "css_declaration_sorter___css_declaration_sorter_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz";
+ sha1 = "c198940f63a76d7e36c1e71018b001721054cb22";
+ };
+ }
+ {
+ name = "css_loader___css_loader_3.5.3.tgz";
+ path = fetchurl {
+ name = "css_loader___css_loader_3.5.3.tgz";
+ url = "https://registry.yarnpkg.com/css-loader/-/css-loader-3.5.3.tgz";
+ sha1 = "95ac16468e1adcd95c844729e0bb167639eb0bcf";
+ };
+ }
+ {
+ name = "css_select_base_adapter___css_select_base_adapter_0.1.1.tgz";
+ path = fetchurl {
+ name = "css_select_base_adapter___css_select_base_adapter_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz";
+ sha1 = "3b2ff4972cc362ab88561507a95408a1432135d7";
+ };
+ }
+ {
+ name = "css_select___css_select_1.2.0.tgz";
+ path = fetchurl {
+ name = "css_select___css_select_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz";
+ sha1 = "2b3a110539c5355f1cd8d314623e870b121ec858";
+ };
+ }
+ {
+ name = "css_select___css_select_2.1.0.tgz";
+ path = fetchurl {
+ name = "css_select___css_select_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz";
+ sha1 = "6a34653356635934a81baca68d0255432105dbef";
+ };
+ }
+ {
+ name = "css_tree___css_tree_1.0.0_alpha.37.tgz";
+ path = fetchurl {
+ name = "css_tree___css_tree_1.0.0_alpha.37.tgz";
+ url = "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz";
+ sha1 = "98bebd62c4c1d9f960ec340cf9f7522e30709a22";
+ };
+ }
+ {
+ name = "css_tree___css_tree_1.0.0_alpha.39.tgz";
+ path = fetchurl {
+ name = "css_tree___css_tree_1.0.0_alpha.39.tgz";
+ url = "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz";
+ sha1 = "2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb";
+ };
+ }
+ {
+ name = "css_what___css_what_2.1.3.tgz";
+ path = fetchurl {
+ name = "css_what___css_what_2.1.3.tgz";
+ url = "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz";
+ sha1 = "a6d7604573365fe74686c3f311c56513d88285f2";
+ };
+ }
+ {
+ name = "css_what___css_what_3.3.0.tgz";
+ path = fetchurl {
+ name = "css_what___css_what_3.3.0.tgz";
+ url = "https://registry.yarnpkg.com/css-what/-/css-what-3.3.0.tgz";
+ sha1 = "10fec696a9ece2e591ac772d759aacabac38cd39";
+ };
+ }
+ {
+ name = "cssesc___cssesc_3.0.0.tgz";
+ path = fetchurl {
+ name = "cssesc___cssesc_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz";
+ sha1 = "37741919903b868565e1c09ea747445cd18983ee";
+ };
+ }
+ {
+ name = "cssnano_preset_default___cssnano_preset_default_4.0.7.tgz";
+ path = fetchurl {
+ name = "cssnano_preset_default___cssnano_preset_default_4.0.7.tgz";
+ url = "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz";
+ sha1 = "51ec662ccfca0f88b396dcd9679cdb931be17f76";
+ };
+ }
+ {
+ name = "cssnano_util_get_arguments___cssnano_util_get_arguments_4.0.0.tgz";
+ path = fetchurl {
+ name = "cssnano_util_get_arguments___cssnano_util_get_arguments_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz";
+ sha1 = "ed3a08299f21d75741b20f3b81f194ed49cc150f";
+ };
+ }
+ {
+ name = "cssnano_util_get_match___cssnano_util_get_match_4.0.0.tgz";
+ path = fetchurl {
+ name = "cssnano_util_get_match___cssnano_util_get_match_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz";
+ sha1 = "c0e4ca07f5386bb17ec5e52250b4f5961365156d";
+ };
+ }
+ {
+ name = "cssnano_util_raw_cache___cssnano_util_raw_cache_4.0.1.tgz";
+ path = fetchurl {
+ name = "cssnano_util_raw_cache___cssnano_util_raw_cache_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz";
+ sha1 = "b26d5fd5f72a11dfe7a7846fb4c67260f96bf282";
+ };
+ }
+ {
+ name = "cssnano_util_same_parent___cssnano_util_same_parent_4.0.1.tgz";
+ path = fetchurl {
+ name = "cssnano_util_same_parent___cssnano_util_same_parent_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz";
+ sha1 = "574082fb2859d2db433855835d9a8456ea18bbf3";
+ };
+ }
+ {
+ name = "cssnano___cssnano_4.1.10.tgz";
+ path = fetchurl {
+ name = "cssnano___cssnano_4.1.10.tgz";
+ url = "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz";
+ sha1 = "0ac41f0b13d13d465487e111b778d42da631b8b2";
+ };
+ }
+ {
+ name = "csso___csso_4.0.3.tgz";
+ path = fetchurl {
+ name = "csso___csso_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz";
+ sha1 = "0d9985dc852c7cc2b2cacfbbe1079014d1a8e903";
+ };
+ }
+ {
+ name = "cyclist___cyclist_1.0.1.tgz";
+ path = fetchurl {
+ name = "cyclist___cyclist_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz";
+ sha1 = "596e9698fd0c80e12038c2b82d6eb1b35b6224d9";
+ };
+ }
+ {
+ name = "dashdash___dashdash_1.14.1.tgz";
+ path = fetchurl {
+ name = "dashdash___dashdash_1.14.1.tgz";
+ url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
+ sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+ };
+ }
+ {
+ name = "de_indent___de_indent_1.0.2.tgz";
+ path = fetchurl {
+ name = "de_indent___de_indent_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz";
+ sha1 = "b2038e846dc33baa5796128d0804b455b8c1e21d";
+ };
+ }
+ {
+ name = "debug___debug_2.6.9.tgz";
+ path = fetchurl {
+ name = "debug___debug_2.6.9.tgz";
+ url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
+ sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
+ };
+ }
+ {
+ name = "debug___debug_3.2.6.tgz";
+ path = fetchurl {
+ name = "debug___debug_3.2.6.tgz";
+ url = "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz";
+ sha1 = "e83d17de16d8a7efb7717edbe5fb10135eee629b";
+ };
+ }
+ {
+ name = "debug___debug_4.1.1.tgz";
+ path = fetchurl {
+ name = "debug___debug_4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz";
+ sha1 = "3b72260255109c6b589cee050f1d516139664791";
+ };
+ }
+ {
+ name = "decamelize___decamelize_1.2.0.tgz";
+ path = fetchurl {
+ name = "decamelize___decamelize_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
+ sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
+ };
+ }
+ {
+ name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
+ path = fetchurl {
+ name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
+ sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
+ };
+ }
+ {
+ name = "deep_equal___deep_equal_1.1.1.tgz";
+ path = fetchurl {
+ name = "deep_equal___deep_equal_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz";
+ sha1 = "b5c98c942ceffaf7cb051e24e1434a25a2e6076a";
+ };
+ }
+ {
+ name = "deep_is___deep_is_0.1.3.tgz";
+ path = fetchurl {
+ name = "deep_is___deep_is_0.1.3.tgz";
+ url = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz";
+ sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
+ };
+ }
+ {
+ name = "deepmerge___deepmerge_1.5.2.tgz";
+ path = fetchurl {
+ name = "deepmerge___deepmerge_1.5.2.tgz";
+ url = "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz";
+ sha1 = "10499d868844cdad4fee0842df8c7f6f0c95a753";
+ };
+ }
+ {
+ name = "default_gateway___default_gateway_4.2.0.tgz";
+ path = fetchurl {
+ name = "default_gateway___default_gateway_4.2.0.tgz";
+ url = "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz";
+ sha1 = "167104c7500c2115f6dd69b0a536bb8ed720552b";
+ };
+ }
+ {
+ name = "default_gateway___default_gateway_5.0.5.tgz";
+ path = fetchurl {
+ name = "default_gateway___default_gateway_5.0.5.tgz";
+ url = "https://registry.yarnpkg.com/default-gateway/-/default-gateway-5.0.5.tgz";
+ sha1 = "4fd6bd5d2855d39b34cc5a59505486e9aafc9b10";
+ };
+ }
+ {
+ name = "defaults___defaults_1.0.3.tgz";
+ path = fetchurl {
+ name = "defaults___defaults_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz";
+ sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d";
+ };
+ }
+ {
+ name = "define_properties___define_properties_1.1.3.tgz";
+ path = fetchurl {
+ name = "define_properties___define_properties_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz";
+ sha1 = "cf88da6cbee26fe6db7094f61d870cbd84cee9f1";
+ };
+ }
+ {
+ name = "define_property___define_property_0.2.5.tgz";
+ path = fetchurl {
+ name = "define_property___define_property_0.2.5.tgz";
+ url = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz";
+ sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
+ };
+ }
+ {
+ name = "define_property___define_property_1.0.0.tgz";
+ path = fetchurl {
+ name = "define_property___define_property_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz";
+ sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
+ };
+ }
+ {
+ name = "define_property___define_property_2.0.2.tgz";
+ path = fetchurl {
+ name = "define_property___define_property_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz";
+ sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d";
+ };
+ }
+ {
+ name = "del___del_4.1.1.tgz";
+ path = fetchurl {
+ name = "del___del_4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz";
+ sha1 = "9e8f117222ea44a31ff3a156c049b99052a9f0b4";
+ };
+ }
+ {
+ name = "delayed_stream___delayed_stream_1.0.0.tgz";
+ path = fetchurl {
+ name = "delayed_stream___delayed_stream_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
+ sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+ };
+ }
+ {
+ name = "depd___depd_1.1.2.tgz";
+ path = fetchurl {
+ name = "depd___depd_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
+ sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
+ };
+ }
+ {
+ name = "des.js___des.js_1.0.1.tgz";
+ path = fetchurl {
+ name = "des.js___des.js_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz";
+ sha1 = "5382142e1bdc53f85d86d53e5f4aa7deb91e0843";
+ };
+ }
+ {
+ name = "destroy___destroy_1.0.4.tgz";
+ path = fetchurl {
+ name = "destroy___destroy_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
+ sha1 = "978857442c44749e4206613e37946205826abd80";
+ };
+ }
+ {
+ name = "detect_node___detect_node_2.0.4.tgz";
+ path = fetchurl {
+ name = "detect_node___detect_node_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz";
+ sha1 = "014ee8f8f669c5c58023da64b8179c083a28c46c";
+ };
+ }
+ {
+ name = "diffie_hellman___diffie_hellman_5.0.3.tgz";
+ path = fetchurl {
+ name = "diffie_hellman___diffie_hellman_5.0.3.tgz";
+ url = "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz";
+ sha1 = "40e8ee98f55a2149607146921c63e1ae5f3d2875";
+ };
+ }
+ {
+ name = "dir_glob___dir_glob_2.2.2.tgz";
+ path = fetchurl {
+ name = "dir_glob___dir_glob_2.2.2.tgz";
+ url = "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz";
+ sha1 = "fa09f0694153c8918b18ba0deafae94769fc50c4";
+ };
+ }
+ {
+ name = "dns_equal___dns_equal_1.0.0.tgz";
+ path = fetchurl {
+ name = "dns_equal___dns_equal_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz";
+ sha1 = "b39e7f1da6eb0a75ba9c17324b34753c47e0654d";
+ };
+ }
+ {
+ name = "dns_packet___dns_packet_1.3.1.tgz";
+ path = fetchurl {
+ name = "dns_packet___dns_packet_1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz";
+ sha1 = "12aa426981075be500b910eedcd0b47dd7deda5a";
+ };
+ }
+ {
+ name = "dns_txt___dns_txt_2.0.2.tgz";
+ path = fetchurl {
+ name = "dns_txt___dns_txt_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz";
+ sha1 = "b91d806f5d27188e4ab3e7d107d881a1cc4642b6";
+ };
+ }
+ {
+ name = "doctrine___doctrine_3.0.0.tgz";
+ path = fetchurl {
+ name = "doctrine___doctrine_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz";
+ sha1 = "addebead72a6574db783639dc87a121773973961";
+ };
+ }
+ {
+ name = "dom_converter___dom_converter_0.2.0.tgz";
+ path = fetchurl {
+ name = "dom_converter___dom_converter_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz";
+ sha1 = "6721a9daee2e293682955b6afe416771627bb768";
+ };
+ }
+ {
+ name = "dom_serializer___dom_serializer_0.2.2.tgz";
+ path = fetchurl {
+ name = "dom_serializer___dom_serializer_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz";
+ sha1 = "1afb81f533717175d478655debc5e332d9f9bb51";
+ };
+ }
+ {
+ name = "domain_browser___domain_browser_1.2.0.tgz";
+ path = fetchurl {
+ name = "domain_browser___domain_browser_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz";
+ sha1 = "3d31f50191a6749dd1375a7f522e823d42e54eda";
+ };
+ }
+ {
+ name = "domelementtype___domelementtype_1.3.1.tgz";
+ path = fetchurl {
+ name = "domelementtype___domelementtype_1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz";
+ sha1 = "d048c44b37b0d10a7f2a3d5fee3f4333d790481f";
+ };
+ }
+ {
+ name = "domelementtype___domelementtype_2.0.1.tgz";
+ path = fetchurl {
+ name = "domelementtype___domelementtype_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz";
+ sha1 = "1f8bdfe91f5a78063274e803b4bdcedf6e94f94d";
+ };
+ }
+ {
+ name = "domhandler___domhandler_2.4.2.tgz";
+ path = fetchurl {
+ name = "domhandler___domhandler_2.4.2.tgz";
+ url = "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz";
+ sha1 = "8805097e933d65e85546f726d60f5eb88b44f803";
+ };
+ }
+ {
+ name = "domutils___domutils_1.5.1.tgz";
+ path = fetchurl {
+ name = "domutils___domutils_1.5.1.tgz";
+ url = "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz";
+ sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
+ };
+ }
+ {
+ name = "domutils___domutils_1.7.0.tgz";
+ path = fetchurl {
+ name = "domutils___domutils_1.7.0.tgz";
+ url = "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz";
+ sha1 = "56ea341e834e06e6748af7a1cb25da67ea9f8c2a";
+ };
+ }
+ {
+ name = "dot_prop___dot_prop_5.2.0.tgz";
+ path = fetchurl {
+ name = "dot_prop___dot_prop_5.2.0.tgz";
+ url = "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz";
+ sha1 = "c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb";
+ };
+ }
+ {
+ name = "dotenv_expand___dotenv_expand_5.1.0.tgz";
+ path = fetchurl {
+ name = "dotenv_expand___dotenv_expand_5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz";
+ sha1 = "3fbaf020bfd794884072ea26b1e9791d45a629f0";
+ };
+ }
+ {
+ name = "dotenv___dotenv_8.2.0.tgz";
+ path = fetchurl {
+ name = "dotenv___dotenv_8.2.0.tgz";
+ url = "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz";
+ sha1 = "97e619259ada750eea3e4ea3e26bceea5424b16a";
+ };
+ }
+ {
+ name = "duplexer___duplexer_0.1.1.tgz";
+ path = fetchurl {
+ name = "duplexer___duplexer_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz";
+ sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1";
+ };
+ }
+ {
+ name = "duplexify___duplexify_3.7.1.tgz";
+ path = fetchurl {
+ name = "duplexify___duplexify_3.7.1.tgz";
+ url = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz";
+ sha1 = "2a4df5317f6ccfd91f86d6fd25d8d8a103b88309";
+ };
+ }
+ {
+ name = "easy_stack___easy_stack_1.0.0.tgz";
+ path = fetchurl {
+ name = "easy_stack___easy_stack_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.0.tgz";
+ sha1 = "12c91b3085a37f0baa336e9486eac4bf94e3e788";
+ };
+ }
+ {
+ name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
+ path = fetchurl {
+ name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+ sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+ };
+ }
+ {
+ name = "ee_first___ee_first_1.1.1.tgz";
+ path = fetchurl {
+ name = "ee_first___ee_first_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
+ sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+ };
+ }
+ {
+ name = "ejs___ejs_2.7.4.tgz";
+ path = fetchurl {
+ name = "ejs___ejs_2.7.4.tgz";
+ url = "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz";
+ sha1 = "48661287573dcc53e366c7a1ae52c3a120eec9ba";
+ };
+ }
+ {
+ name = "electron_to_chromium___electron_to_chromium_1.3.464.tgz";
+ path = fetchurl {
+ name = "electron_to_chromium___electron_to_chromium_1.3.464.tgz";
+ url = "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.464.tgz";
+ sha1 = "fe13feaa08f6f865d3c89d5d72e54c194f463aa5";
+ };
+ }
+ {
+ name = "elliptic___elliptic_6.5.2.tgz";
+ path = fetchurl {
+ name = "elliptic___elliptic_6.5.2.tgz";
+ url = "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz";
+ sha1 = "05c5678d7173c049d8ca433552224a495d0e3762";
+ };
+ }
+ {
+ name = "emoji_regex___emoji_regex_7.0.3.tgz";
+ path = fetchurl {
+ name = "emoji_regex___emoji_regex_7.0.3.tgz";
+ url = "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz";
+ sha1 = "933a04052860c85e83c122479c4748a8e4c72156";
+ };
+ }
+ {
+ name = "emoji_regex___emoji_regex_8.0.0.tgz";
+ path = fetchurl {
+ name = "emoji_regex___emoji_regex_8.0.0.tgz";
+ url = "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz";
+ sha1 = "e818fd69ce5ccfcb404594f842963bf53164cc37";
+ };
+ }
+ {
+ name = "emojis_list___emojis_list_2.1.0.tgz";
+ path = fetchurl {
+ name = "emojis_list___emojis_list_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz";
+ sha1 = "4daa4d9db00f9819880c79fa457ae5b09a1fd389";
+ };
+ }
+ {
+ name = "emojis_list___emojis_list_3.0.0.tgz";
+ path = fetchurl {
+ name = "emojis_list___emojis_list_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz";
+ sha1 = "5570662046ad29e2e916e71aae260abdff4f6a78";
+ };
+ }
+ {
+ name = "encodeurl___encodeurl_1.0.2.tgz";
+ path = fetchurl {
+ name = "encodeurl___encodeurl_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
+ sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+ };
+ }
+ {
+ name = "end_of_stream___end_of_stream_1.4.4.tgz";
+ path = fetchurl {
+ name = "end_of_stream___end_of_stream_1.4.4.tgz";
+ url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz";
+ sha1 = "5ae64a5f45057baf3626ec14da0ca5e4b2431eb0";
+ };
+ }
+ {
+ name = "enhanced_resolve___enhanced_resolve_4.1.1.tgz";
+ path = fetchurl {
+ name = "enhanced_resolve___enhanced_resolve_4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz";
+ sha1 = "2937e2b8066cd0fe7ce0990a98f0d71a35189f66";
+ };
+ }
+ {
+ name = "entities___entities_1.1.2.tgz";
+ path = fetchurl {
+ name = "entities___entities_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz";
+ sha1 = "bdfa735299664dfafd34529ed4f8522a275fea56";
+ };
+ }
+ {
+ name = "entities___entities_2.0.3.tgz";
+ path = fetchurl {
+ name = "entities___entities_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz";
+ sha1 = "5c487e5742ab93c15abb5da22759b8590ec03b7f";
+ };
+ }
+ {
+ name = "errno___errno_0.1.7.tgz";
+ path = fetchurl {
+ name = "errno___errno_0.1.7.tgz";
+ url = "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz";
+ sha1 = "4684d71779ad39af177e3f007996f7c67c852618";
+ };
+ }
+ {
+ name = "error_ex___error_ex_1.3.2.tgz";
+ path = fetchurl {
+ name = "error_ex___error_ex_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz";
+ sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf";
+ };
+ }
+ {
+ name = "error_stack_parser___error_stack_parser_2.0.6.tgz";
+ path = fetchurl {
+ name = "error_stack_parser___error_stack_parser_2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz";
+ sha1 = "5a99a707bd7a4c58a797902d48d82803ede6aad8";
+ };
+ }
+ {
+ name = "es_abstract___es_abstract_1.17.5.tgz";
+ path = fetchurl {
+ name = "es_abstract___es_abstract_1.17.5.tgz";
+ url = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz";
+ sha1 = "d8c9d1d66c8981fb9200e2251d799eee92774ae9";
+ };
+ }
+ {
+ name = "es_to_primitive___es_to_primitive_1.2.1.tgz";
+ path = fetchurl {
+ name = "es_to_primitive___es_to_primitive_1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz";
+ sha1 = "e55cd4c9cdc188bcefb03b366c736323fc5c898a";
+ };
+ }
+ {
+ name = "escape_html___escape_html_1.0.3.tgz";
+ path = fetchurl {
+ name = "escape_html___escape_html_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
+ sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+ };
+ }
+ {
+ name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
+ path = fetchurl {
+ name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+ sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+ };
+ }
+ {
+ name = "eslint_config_prettier___eslint_config_prettier_6.11.0.tgz";
+ path = fetchurl {
+ name = "eslint_config_prettier___eslint_config_prettier_6.11.0.tgz";
+ url = "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz";
+ sha1 = "f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1";
+ };
+ }
+ {
+ name = "eslint_loader___eslint_loader_2.2.1.tgz";
+ path = fetchurl {
+ name = "eslint_loader___eslint_loader_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz";
+ sha1 = "28b9c12da54057af0845e2a6112701a2f6bf8337";
+ };
+ }
+ {
+ name = "eslint_plugin_prettier___eslint_plugin_prettier_3.1.3.tgz";
+ path = fetchurl {
+ name = "eslint_plugin_prettier___eslint_plugin_prettier_3.1.3.tgz";
+ url = "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz";
+ sha1 = "ae116a0fc0e598fdae48743a4430903de5b4e6ca";
+ };
+ }
+ {
+ name = "eslint_plugin_vue___eslint_plugin_vue_6.2.2.tgz";
+ path = fetchurl {
+ name = "eslint_plugin_vue___eslint_plugin_vue_6.2.2.tgz";
+ url = "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz";
+ sha1 = "27fecd9a3a24789b0f111ecdd540a9e56198e0fe";
+ };
+ }
+ {
+ name = "eslint_scope___eslint_scope_4.0.3.tgz";
+ path = fetchurl {
+ name = "eslint_scope___eslint_scope_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz";
+ sha1 = "ca03833310f6889a3264781aa82e63eb9cfe7848";
+ };
+ }
+ {
+ name = "eslint_scope___eslint_scope_5.1.0.tgz";
+ path = fetchurl {
+ name = "eslint_scope___eslint_scope_5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz";
+ sha1 = "d0f971dfe59c69e0cada684b23d49dbf82600ce5";
+ };
+ }
+ {
+ name = "eslint_utils___eslint_utils_2.0.0.tgz";
+ path = fetchurl {
+ name = "eslint_utils___eslint_utils_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz";
+ sha1 = "7be1cc70f27a72a76cd14aa698bcabed6890e1cd";
+ };
+ }
+ {
+ name = "eslint_visitor_keys___eslint_visitor_keys_1.2.0.tgz";
+ path = fetchurl {
+ name = "eslint_visitor_keys___eslint_visitor_keys_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz";
+ sha1 = "74415ac884874495f78ec2a97349525344c981fa";
+ };
+ }
+ {
+ name = "eslint___eslint_7.2.0.tgz";
+ path = fetchurl {
+ name = "eslint___eslint_7.2.0.tgz";
+ url = "https://registry.yarnpkg.com/eslint/-/eslint-7.2.0.tgz";
+ sha1 = "d41b2e47804b30dbabb093a967fb283d560082e6";
+ };
+ }
+ {
+ name = "espree___espree_6.2.1.tgz";
+ path = fetchurl {
+ name = "espree___espree_6.2.1.tgz";
+ url = "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz";
+ sha1 = "77fc72e1fd744a2052c20f38a5b575832e82734a";
+ };
+ }
+ {
+ name = "espree___espree_7.1.0.tgz";
+ path = fetchurl {
+ name = "espree___espree_7.1.0.tgz";
+ url = "https://registry.yarnpkg.com/espree/-/espree-7.1.0.tgz";
+ sha1 = "a9c7f18a752056735bf1ba14cb1b70adc3a5ce1c";
+ };
+ }
+ {
+ name = "esprima___esprima_4.0.1.tgz";
+ path = fetchurl {
+ name = "esprima___esprima_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz";
+ sha1 = "13b04cdb3e6c5d19df91ab6987a8695619b0aa71";
+ };
+ }
+ {
+ name = "esquery___esquery_1.3.1.tgz";
+ path = fetchurl {
+ name = "esquery___esquery_1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz";
+ sha1 = "b78b5828aa8e214e29fb74c4d5b752e1c033da57";
+ };
+ }
+ {
+ name = "esrecurse___esrecurse_4.2.1.tgz";
+ path = fetchurl {
+ name = "esrecurse___esrecurse_4.2.1.tgz";
+ url = "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz";
+ sha1 = "007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf";
+ };
+ }
+ {
+ name = "estraverse___estraverse_4.3.0.tgz";
+ path = fetchurl {
+ name = "estraverse___estraverse_4.3.0.tgz";
+ url = "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz";
+ sha1 = "398ad3f3c5a24948be7725e83d11a7de28cdbd1d";
+ };
+ }
+ {
+ name = "estraverse___estraverse_5.1.0.tgz";
+ path = fetchurl {
+ name = "estraverse___estraverse_5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz";
+ sha1 = "374309d39fd935ae500e7b92e8a6b4c720e59642";
+ };
+ }
+ {
+ name = "esutils___esutils_2.0.3.tgz";
+ path = fetchurl {
+ name = "esutils___esutils_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz";
+ sha1 = "74d2eb4de0b8da1293711910d50775b9b710ef64";
+ };
+ }
+ {
+ name = "etag___etag_1.8.1.tgz";
+ path = fetchurl {
+ name = "etag___etag_1.8.1.tgz";
+ url = "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz";
+ sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
+ };
+ }
+ {
+ name = "event_pubsub___event_pubsub_4.3.0.tgz";
+ path = fetchurl {
+ name = "event_pubsub___event_pubsub_4.3.0.tgz";
+ url = "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz";
+ sha1 = "f68d816bc29f1ec02c539dc58c8dd40ce72cb36e";
+ };
+ }
+ {
+ name = "eventemitter3___eventemitter3_4.0.4.tgz";
+ path = fetchurl {
+ name = "eventemitter3___eventemitter3_4.0.4.tgz";
+ url = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz";
+ sha1 = "b5463ace635a083d018bdc7c917b4c5f10a85384";
+ };
+ }
+ {
+ name = "events___events_3.1.0.tgz";
+ path = fetchurl {
+ name = "events___events_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz";
+ sha1 = "84279af1b34cb75aa88bf5ff291f6d0bd9b31a59";
+ };
+ }
+ {
+ name = "eventsource___eventsource_1.0.7.tgz";
+ path = fetchurl {
+ name = "eventsource___eventsource_1.0.7.tgz";
+ url = "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz";
+ sha1 = "8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0";
+ };
+ }
+ {
+ name = "evp_bytestokey___evp_bytestokey_1.0.3.tgz";
+ path = fetchurl {
+ name = "evp_bytestokey___evp_bytestokey_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
+ sha1 = "7fcbdb198dc71959432efe13842684e0525acb02";
+ };
+ }
+ {
+ name = "execa___execa_0.8.0.tgz";
+ path = fetchurl {
+ name = "execa___execa_0.8.0.tgz";
+ url = "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz";
+ sha1 = "d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da";
+ };
+ }
+ {
+ name = "execa___execa_1.0.0.tgz";
+ path = fetchurl {
+ name = "execa___execa_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz";
+ sha1 = "c6236a5bb4df6d6f15e88e7f017798216749ddd8";
+ };
+ }
+ {
+ name = "execa___execa_3.4.0.tgz";
+ path = fetchurl {
+ name = "execa___execa_3.4.0.tgz";
+ url = "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz";
+ sha1 = "c08ed4550ef65d858fac269ffc8572446f37eb89";
+ };
+ }
+ {
+ name = "expand_brackets___expand_brackets_2.1.4.tgz";
+ path = fetchurl {
+ name = "expand_brackets___expand_brackets_2.1.4.tgz";
+ url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz";
+ sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
+ };
+ }
+ {
+ name = "express___express_4.17.1.tgz";
+ path = fetchurl {
+ name = "express___express_4.17.1.tgz";
+ url = "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz";
+ sha1 = "4491fc38605cf51f8629d39c2b5d026f98a4c134";
+ };
+ }
+ {
+ name = "extend_shallow___extend_shallow_2.0.1.tgz";
+ path = fetchurl {
+ name = "extend_shallow___extend_shallow_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz";
+ sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
+ };
+ }
+ {
+ name = "extend_shallow___extend_shallow_3.0.2.tgz";
+ path = fetchurl {
+ name = "extend_shallow___extend_shallow_3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz";
+ sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
+ };
+ }
+ {
+ name = "extend___extend_3.0.2.tgz";
+ path = fetchurl {
+ name = "extend___extend_3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
+ sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
+ };
+ }
+ {
+ name = "external_editor___external_editor_3.1.0.tgz";
+ path = fetchurl {
+ name = "external_editor___external_editor_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz";
+ sha1 = "cb03f740befae03ea4d283caed2741a83f335495";
+ };
+ }
+ {
+ name = "extglob___extglob_2.0.4.tgz";
+ path = fetchurl {
+ name = "extglob___extglob_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz";
+ sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543";
+ };
+ }
+ {
+ name = "extsprintf___extsprintf_1.3.0.tgz";
+ path = fetchurl {
+ name = "extsprintf___extsprintf_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
+ sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+ };
+ }
+ {
+ name = "extsprintf___extsprintf_1.4.0.tgz";
+ path = fetchurl {
+ name = "extsprintf___extsprintf_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
+ sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
+ };
+ }
+ {
+ name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
+ path = fetchurl {
+ name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
+ sha1 = "545145077c501491e33b15ec408c294376e94ae4";
+ };
+ }
+ {
+ name = "fast_diff___fast_diff_1.2.0.tgz";
+ path = fetchurl {
+ name = "fast_diff___fast_diff_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz";
+ sha1 = "73ee11982d86caaf7959828d519cfe927fac5f03";
+ };
+ }
+ {
+ name = "fast_glob___fast_glob_2.2.7.tgz";
+ path = fetchurl {
+ name = "fast_glob___fast_glob_2.2.7.tgz";
+ url = "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz";
+ sha1 = "6953857c3afa475fff92ee6015d52da70a4cd39d";
+ };
+ }
+ {
+ name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz";
+ path = fetchurl {
+ name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
+ sha1 = "874bf69c6f404c2b5d99c481341399fd55892633";
+ };
+ }
+ {
+ name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
+ path = fetchurl {
+ name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
+ sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
+ };
+ }
+ {
+ name = "faye_websocket___faye_websocket_0.10.0.tgz";
+ path = fetchurl {
+ name = "faye_websocket___faye_websocket_0.10.0.tgz";
+ url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz";
+ sha1 = "4e492f8d04dfb6f89003507f6edbf2d501e7c6f4";
+ };
+ }
+ {
+ name = "faye_websocket___faye_websocket_0.11.3.tgz";
+ path = fetchurl {
+ name = "faye_websocket___faye_websocket_0.11.3.tgz";
+ url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz";
+ sha1 = "5c0e9a8968e8912c286639fde977a8b209f2508e";
+ };
+ }
+ {
+ name = "figgy_pudding___figgy_pudding_3.5.2.tgz";
+ path = fetchurl {
+ name = "figgy_pudding___figgy_pudding_3.5.2.tgz";
+ url = "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz";
+ sha1 = "b4eee8148abb01dcf1d1ac34367d59e12fa61d6e";
+ };
+ }
+ {
+ name = "figures___figures_3.2.0.tgz";
+ path = fetchurl {
+ name = "figures___figures_3.2.0.tgz";
+ url = "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz";
+ sha1 = "625c18bd293c604dc4a8ddb2febf0c88341746af";
+ };
+ }
+ {
+ name = "file_entry_cache___file_entry_cache_5.0.1.tgz";
+ path = fetchurl {
+ name = "file_entry_cache___file_entry_cache_5.0.1.tgz";
+ url = "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz";
+ sha1 = "ca0f6efa6dd3d561333fb14515065c2fafdf439c";
+ };
+ }
+ {
+ name = "file_loader___file_loader_4.3.0.tgz";
+ path = fetchurl {
+ name = "file_loader___file_loader_4.3.0.tgz";
+ url = "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz";
+ sha1 = "780f040f729b3d18019f20605f723e844b8a58af";
+ };
+ }
+ {
+ name = "file_uri_to_path___file_uri_to_path_1.0.0.tgz";
+ path = fetchurl {
+ name = "file_uri_to_path___file_uri_to_path_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz";
+ sha1 = "553a7b8446ff6f684359c445f1e37a05dacc33dd";
+ };
+ }
+ {
+ name = "filesize___filesize_3.6.1.tgz";
+ path = fetchurl {
+ name = "filesize___filesize_3.6.1.tgz";
+ url = "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz";
+ sha1 = "090bb3ee01b6f801a8a8be99d31710b3422bb317";
+ };
+ }
+ {
+ name = "fill_range___fill_range_4.0.0.tgz";
+ path = fetchurl {
+ name = "fill_range___fill_range_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz";
+ sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
+ };
+ }
+ {
+ name = "fill_range___fill_range_7.0.1.tgz";
+ path = fetchurl {
+ name = "fill_range___fill_range_7.0.1.tgz";
+ url = "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz";
+ sha1 = "1919a6a7c75fe38b2c7c77e5198535da9acdda40";
+ };
+ }
+ {
+ name = "finalhandler___finalhandler_1.1.2.tgz";
+ path = fetchurl {
+ name = "finalhandler___finalhandler_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz";
+ sha1 = "b7e7d000ffd11938d0fdb053506f6ebabe9f587d";
+ };
+ }
+ {
+ name = "find_cache_dir___find_cache_dir_0.1.1.tgz";
+ path = fetchurl {
+ name = "find_cache_dir___find_cache_dir_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz";
+ sha1 = "c8defae57c8a52a8a784f9e31c57c742e993a0b9";
+ };
+ }
+ {
+ name = "find_cache_dir___find_cache_dir_2.1.0.tgz";
+ path = fetchurl {
+ name = "find_cache_dir___find_cache_dir_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz";
+ sha1 = "8d0f94cd13fe43c6c7c261a0d86115ca918c05f7";
+ };
+ }
+ {
+ name = "find_cache_dir___find_cache_dir_3.3.1.tgz";
+ path = fetchurl {
+ name = "find_cache_dir___find_cache_dir_3.3.1.tgz";
+ url = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz";
+ sha1 = "89b33fad4a4670daa94f855f7fbe31d6d84fe880";
+ };
+ }
+ {
+ name = "find_up___find_up_1.1.2.tgz";
+ path = fetchurl {
+ name = "find_up___find_up_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz";
+ sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f";
+ };
+ }
+ {
+ name = "find_up___find_up_2.1.0.tgz";
+ path = fetchurl {
+ name = "find_up___find_up_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz";
+ sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
+ };
+ }
+ {
+ name = "find_up___find_up_3.0.0.tgz";
+ path = fetchurl {
+ name = "find_up___find_up_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz";
+ sha1 = "49169f1d7993430646da61ecc5ae355c21c97b73";
+ };
+ }
+ {
+ name = "find_up___find_up_4.1.0.tgz";
+ path = fetchurl {
+ name = "find_up___find_up_4.1.0.tgz";
+ url = "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz";
+ sha1 = "97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19";
+ };
+ }
+ {
+ name = "flat_cache___flat_cache_2.0.1.tgz";
+ path = fetchurl {
+ name = "flat_cache___flat_cache_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz";
+ sha1 = "5d296d6f04bda44a4630a301413bdbc2ec085ec0";
+ };
+ }
+ {
+ name = "flatted___flatted_2.0.2.tgz";
+ path = fetchurl {
+ name = "flatted___flatted_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz";
+ sha1 = "4575b21e2bcee7434aa9be662f4b7b5f9c2b5138";
+ };
+ }
+ {
+ name = "flush_write_stream___flush_write_stream_1.1.1.tgz";
+ path = fetchurl {
+ name = "flush_write_stream___flush_write_stream_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz";
+ sha1 = "8dd7d873a1babc207d94ead0c2e0e44276ebf2e8";
+ };
+ }
+ {
+ name = "follow_redirects___follow_redirects_1.11.0.tgz";
+ path = fetchurl {
+ name = "follow_redirects___follow_redirects_1.11.0.tgz";
+ url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz";
+ sha1 = "afa14f08ba12a52963140fe43212658897bc0ecb";
+ };
+ }
+ {
+ name = "for_in___for_in_1.0.2.tgz";
+ path = fetchurl {
+ name = "for_in___for_in_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz";
+ sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
+ };
+ }
+ {
+ name = "forever_agent___forever_agent_0.6.1.tgz";
+ path = fetchurl {
+ name = "forever_agent___forever_agent_0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
+ sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+ };
+ }
+ {
+ name = "form_data___form_data_2.3.3.tgz";
+ path = fetchurl {
+ name = "form_data___form_data_2.3.3.tgz";
+ url = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz";
+ sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
+ };
+ }
+ {
+ name = "forwarded___forwarded_0.1.2.tgz";
+ path = fetchurl {
+ name = "forwarded___forwarded_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz";
+ sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
+ };
+ }
+ {
+ name = "fragment_cache___fragment_cache_0.2.1.tgz";
+ path = fetchurl {
+ name = "fragment_cache___fragment_cache_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz";
+ sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
+ };
+ }
+ {
+ name = "fresh___fresh_0.5.2.tgz";
+ path = fetchurl {
+ name = "fresh___fresh_0.5.2.tgz";
+ url = "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz";
+ sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
+ };
+ }
+ {
+ name = "from2___from2_2.3.0.tgz";
+ path = fetchurl {
+ name = "from2___from2_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz";
+ sha1 = "8bfb5502bde4a4d36cfdeea007fcca21d7e382af";
+ };
+ }
+ {
+ name = "fs_extra___fs_extra_4.0.3.tgz";
+ path = fetchurl {
+ name = "fs_extra___fs_extra_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz";
+ sha1 = "0d852122e5bc5beb453fb028e9c0c9bf36340c94";
+ };
+ }
+ {
+ name = "fs_extra___fs_extra_7.0.1.tgz";
+ path = fetchurl {
+ name = "fs_extra___fs_extra_7.0.1.tgz";
+ url = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz";
+ sha1 = "4f189c44aa123b895f722804f55ea23eadc348e9";
+ };
+ }
+ {
+ name = "fs_minipass___fs_minipass_2.1.0.tgz";
+ path = fetchurl {
+ name = "fs_minipass___fs_minipass_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz";
+ sha1 = "7f5036fdbf12c63c169190cbe4199c852271f9fb";
+ };
+ }
+ {
+ name = "fs_write_stream_atomic___fs_write_stream_atomic_1.0.10.tgz";
+ path = fetchurl {
+ name = "fs_write_stream_atomic___fs_write_stream_atomic_1.0.10.tgz";
+ url = "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz";
+ sha1 = "b47df53493ef911df75731e70a9ded0189db40c9";
+ };
+ }
+ {
+ name = "fs.realpath___fs.realpath_1.0.0.tgz";
+ path = fetchurl {
+ name = "fs.realpath___fs.realpath_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
+ sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+ };
+ }
+ {
+ name = "fsevents___fsevents_1.2.13.tgz";
+ path = fetchurl {
+ name = "fsevents___fsevents_1.2.13.tgz";
+ url = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz";
+ sha1 = "f325cb0455592428bcf11b383370ef70e3bfcc38";
+ };
+ }
+ {
+ name = "fsevents___fsevents_2.1.3.tgz";
+ path = fetchurl {
+ name = "fsevents___fsevents_2.1.3.tgz";
+ url = "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz";
+ sha1 = "fb738703ae8d2f9fe900c33836ddebee8b97f23e";
+ };
+ }
+ {
+ name = "function_bind___function_bind_1.1.1.tgz";
+ path = fetchurl {
+ name = "function_bind___function_bind_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
+ sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
+ };
+ }
+ {
+ name = "functional_red_black_tree___functional_red_black_tree_1.0.1.tgz";
+ path = fetchurl {
+ name = "functional_red_black_tree___functional_red_black_tree_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz";
+ sha1 = "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327";
+ };
+ }
+ {
+ name = "gensync___gensync_1.0.0_beta.1.tgz";
+ path = fetchurl {
+ name = "gensync___gensync_1.0.0_beta.1.tgz";
+ url = "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz";
+ sha1 = "58f4361ff987e5ff6e1e7a210827aa371eaac269";
+ };
+ }
+ {
+ name = "get_caller_file___get_caller_file_2.0.5.tgz";
+ path = fetchurl {
+ name = "get_caller_file___get_caller_file_2.0.5.tgz";
+ url = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz";
+ sha1 = "4f94412a82db32f36e3b0b9741f8a97feb031f7e";
+ };
+ }
+ {
+ name = "get_own_enumerable_property_symbols___get_own_enumerable_property_symbols_3.0.2.tgz";
+ path = fetchurl {
+ name = "get_own_enumerable_property_symbols___get_own_enumerable_property_symbols_3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz";
+ sha1 = "b5fde77f22cbe35f390b4e089922c50bce6ef664";
+ };
+ }
+ {
+ name = "get_stdin___get_stdin_6.0.0.tgz";
+ path = fetchurl {
+ name = "get_stdin___get_stdin_6.0.0.tgz";
+ url = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz";
+ sha1 = "9e09bf712b360ab9225e812048f71fde9c89657b";
+ };
+ }
+ {
+ name = "get_stream___get_stream_3.0.0.tgz";
+ path = fetchurl {
+ name = "get_stream___get_stream_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz";
+ sha1 = "8e943d1358dc37555054ecbe2edb05aa174ede14";
+ };
+ }
+ {
+ name = "get_stream___get_stream_4.1.0.tgz";
+ path = fetchurl {
+ name = "get_stream___get_stream_4.1.0.tgz";
+ url = "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz";
+ sha1 = "c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5";
+ };
+ }
+ {
+ name = "get_stream___get_stream_5.1.0.tgz";
+ path = fetchurl {
+ name = "get_stream___get_stream_5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz";
+ sha1 = "01203cdc92597f9b909067c3e656cc1f4d3c4dc9";
+ };
+ }
+ {
+ name = "get_value___get_value_2.0.6.tgz";
+ path = fetchurl {
+ name = "get_value___get_value_2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz";
+ sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
+ };
+ }
+ {
+ name = "getpass___getpass_0.1.7.tgz";
+ path = fetchurl {
+ name = "getpass___getpass_0.1.7.tgz";
+ url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
+ sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+ };
+ }
+ {
+ name = "glob_parent___glob_parent_3.1.0.tgz";
+ path = fetchurl {
+ name = "glob_parent___glob_parent_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz";
+ sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae";
+ };
+ }
+ {
+ name = "glob_parent___glob_parent_5.1.1.tgz";
+ path = fetchurl {
+ name = "glob_parent___glob_parent_5.1.1.tgz";
+ url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz";
+ sha1 = "b6c1ef417c4e5663ea498f1c45afac6916bbc229";
+ };
+ }
+ {
+ name = "glob_to_regexp___glob_to_regexp_0.3.0.tgz";
+ path = fetchurl {
+ name = "glob_to_regexp___glob_to_regexp_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz";
+ sha1 = "8c5a1494d2066c570cc3bfe4496175acc4d502ab";
+ };
+ }
+ {
+ name = "glob___glob_7.1.6.tgz";
+ path = fetchurl {
+ name = "glob___glob_7.1.6.tgz";
+ url = "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz";
+ sha1 = "141f33b81a7c2492e125594307480c46679278a6";
+ };
+ }
+ {
+ name = "globals___globals_11.12.0.tgz";
+ path = fetchurl {
+ name = "globals___globals_11.12.0.tgz";
+ url = "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz";
+ sha1 = "ab8795338868a0babd8525758018c2a7eb95c42e";
+ };
+ }
+ {
+ name = "globals___globals_12.4.0.tgz";
+ path = fetchurl {
+ name = "globals___globals_12.4.0.tgz";
+ url = "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz";
+ sha1 = "a18813576a41b00a24a97e7f815918c2e19925f8";
+ };
+ }
+ {
+ name = "globby___globby_6.1.0.tgz";
+ path = fetchurl {
+ name = "globby___globby_6.1.0.tgz";
+ url = "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz";
+ sha1 = "f5a6d70e8395e21c858fb0489d64df02424d506c";
+ };
+ }
+ {
+ name = "globby___globby_7.1.1.tgz";
+ path = fetchurl {
+ name = "globby___globby_7.1.1.tgz";
+ url = "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz";
+ sha1 = "fb2ccff9401f8600945dfada97440cca972b8680";
+ };
+ }
+ {
+ name = "globby___globby_9.2.0.tgz";
+ path = fetchurl {
+ name = "globby___globby_9.2.0.tgz";
+ url = "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz";
+ sha1 = "fd029a706c703d29bdd170f4b6db3a3f7a7cb63d";
+ };
+ }
+ {
+ name = "graceful_fs___graceful_fs_4.2.4.tgz";
+ path = fetchurl {
+ name = "graceful_fs___graceful_fs_4.2.4.tgz";
+ url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz";
+ sha1 = "2256bde14d3632958c465ebc96dc467ca07a29fb";
+ };
+ }
+ {
+ name = "gzip_size___gzip_size_5.1.1.tgz";
+ path = fetchurl {
+ name = "gzip_size___gzip_size_5.1.1.tgz";
+ url = "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz";
+ sha1 = "cb9bee692f87c0612b232840a873904e4c135274";
+ };
+ }
+ {
+ name = "handle_thing___handle_thing_2.0.1.tgz";
+ path = fetchurl {
+ name = "handle_thing___handle_thing_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz";
+ sha1 = "857f79ce359580c340d43081cc648970d0bb234e";
+ };
+ }
+ {
+ name = "har_schema___har_schema_2.0.0.tgz";
+ path = fetchurl {
+ name = "har_schema___har_schema_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
+ sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+ };
+ }
+ {
+ name = "har_validator___har_validator_5.1.3.tgz";
+ path = fetchurl {
+ name = "har_validator___har_validator_5.1.3.tgz";
+ url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz";
+ sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
+ };
+ }
+ {
+ name = "has_ansi___has_ansi_2.0.0.tgz";
+ path = fetchurl {
+ name = "has_ansi___has_ansi_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz";
+ sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
+ };
+ }
+ {
+ name = "has_flag___has_flag_3.0.0.tgz";
+ path = fetchurl {
+ name = "has_flag___has_flag_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz";
+ sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
+ };
+ }
+ {
+ name = "has_flag___has_flag_4.0.0.tgz";
+ path = fetchurl {
+ name = "has_flag___has_flag_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz";
+ sha1 = "944771fd9c81c81265c4d6941860da06bb59479b";
+ };
+ }
+ {
+ name = "has_symbols___has_symbols_1.0.1.tgz";
+ path = fetchurl {
+ name = "has_symbols___has_symbols_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz";
+ sha1 = "9f5214758a44196c406d9bd76cebf81ec2dd31e8";
+ };
+ }
+ {
+ name = "has_value___has_value_0.3.1.tgz";
+ path = fetchurl {
+ name = "has_value___has_value_0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz";
+ sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
+ };
+ }
+ {
+ name = "has_value___has_value_1.0.0.tgz";
+ path = fetchurl {
+ name = "has_value___has_value_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz";
+ sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
+ };
+ }
+ {
+ name = "has_values___has_values_0.1.4.tgz";
+ path = fetchurl {
+ name = "has_values___has_values_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz";
+ sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
+ };
+ }
+ {
+ name = "has_values___has_values_1.0.0.tgz";
+ path = fetchurl {
+ name = "has_values___has_values_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz";
+ sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
+ };
+ }
+ {
+ name = "has___has_1.0.3.tgz";
+ path = fetchurl {
+ name = "has___has_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
+ sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
+ };
+ }
+ {
+ name = "hash_base___hash_base_3.1.0.tgz";
+ path = fetchurl {
+ name = "hash_base___hash_base_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz";
+ sha1 = "55c381d9e06e1d2997a883b4a3fddfe7f0d3af33";
+ };
+ }
+ {
+ name = "hash_sum___hash_sum_1.0.2.tgz";
+ path = fetchurl {
+ name = "hash_sum___hash_sum_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz";
+ sha1 = "33b40777754c6432573c120cc3808bbd10d47f04";
+ };
+ }
+ {
+ name = "hash_sum___hash_sum_2.0.0.tgz";
+ path = fetchurl {
+ name = "hash_sum___hash_sum_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz";
+ sha1 = "81d01bb5de8ea4a214ad5d6ead1b523460b0b45a";
+ };
+ }
+ {
+ name = "hash.js___hash.js_1.1.7.tgz";
+ path = fetchurl {
+ name = "hash.js___hash.js_1.1.7.tgz";
+ url = "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz";
+ sha1 = "0babca538e8d4ee4a0f8988d68866537a003cf42";
+ };
+ }
+ {
+ name = "he___he_1.2.0.tgz";
+ path = fetchurl {
+ name = "he___he_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz";
+ sha1 = "84ae65fa7eafb165fddb61566ae14baf05664f0f";
+ };
+ }
+ {
+ name = "hex_color_regex___hex_color_regex_1.1.0.tgz";
+ path = fetchurl {
+ name = "hex_color_regex___hex_color_regex_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz";
+ sha1 = "4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e";
+ };
+ }
+ {
+ name = "highlight.js___highlight.js_9.18.1.tgz";
+ path = fetchurl {
+ name = "highlight.js___highlight.js_9.18.1.tgz";
+ url = "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz";
+ sha1 = "ed21aa001fe6252bb10a3d76d47573c6539fe13c";
+ };
+ }
+ {
+ name = "hmac_drbg___hmac_drbg_1.0.1.tgz";
+ path = fetchurl {
+ name = "hmac_drbg___hmac_drbg_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
+ sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1";
+ };
+ }
+ {
+ name = "hoopy___hoopy_0.1.4.tgz";
+ path = fetchurl {
+ name = "hoopy___hoopy_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz";
+ sha1 = "609207d661100033a9a9402ad3dea677381c1b1d";
+ };
+ }
+ {
+ name = "hosted_git_info___hosted_git_info_2.8.8.tgz";
+ path = fetchurl {
+ name = "hosted_git_info___hosted_git_info_2.8.8.tgz";
+ url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz";
+ sha1 = "7539bd4bc1e0e0a895815a2e0262420b12858488";
+ };
+ }
+ {
+ name = "hpack.js___hpack.js_2.1.6.tgz";
+ path = fetchurl {
+ name = "hpack.js___hpack.js_2.1.6.tgz";
+ url = "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz";
+ sha1 = "87774c0949e513f42e84575b3c45681fade2a0b2";
+ };
+ }
+ {
+ name = "hsl_regex___hsl_regex_1.0.0.tgz";
+ path = fetchurl {
+ name = "hsl_regex___hsl_regex_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz";
+ sha1 = "d49330c789ed819e276a4c0d272dffa30b18fe6e";
+ };
+ }
+ {
+ name = "hsla_regex___hsla_regex_1.0.0.tgz";
+ path = fetchurl {
+ name = "hsla_regex___hsla_regex_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz";
+ sha1 = "c1ce7a3168c8c6614033a4b5f7877f3b225f9c38";
+ };
+ }
+ {
+ name = "html_comment_regex___html_comment_regex_1.1.2.tgz";
+ path = fetchurl {
+ name = "html_comment_regex___html_comment_regex_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz";
+ sha1 = "97d4688aeb5c81886a364faa0cad1dda14d433a7";
+ };
+ }
+ {
+ name = "html_entities___html_entities_1.3.1.tgz";
+ path = fetchurl {
+ name = "html_entities___html_entities_1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz";
+ sha1 = "fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44";
+ };
+ }
+ {
+ name = "html_minifier___html_minifier_3.5.21.tgz";
+ path = fetchurl {
+ name = "html_minifier___html_minifier_3.5.21.tgz";
+ url = "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz";
+ sha1 = "d0040e054730e354db008463593194015212d20c";
+ };
+ }
+ {
+ name = "html_tags___html_tags_2.0.0.tgz";
+ path = fetchurl {
+ name = "html_tags___html_tags_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz";
+ sha1 = "10b30a386085f43cede353cc8fa7cb0deeea668b";
+ };
+ }
+ {
+ name = "html_webpack_plugin___html_webpack_plugin_3.2.0.tgz";
+ path = fetchurl {
+ name = "html_webpack_plugin___html_webpack_plugin_3.2.0.tgz";
+ url = "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz";
+ sha1 = "b01abbd723acaaa7b37b6af4492ebda03d9dd37b";
+ };
+ }
+ {
+ name = "htmlparser2___htmlparser2_3.10.1.tgz";
+ path = fetchurl {
+ name = "htmlparser2___htmlparser2_3.10.1.tgz";
+ url = "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz";
+ sha1 = "bd679dc3f59897b6a34bb10749c855bb53a9392f";
+ };
+ }
+ {
+ name = "http_deceiver___http_deceiver_1.2.7.tgz";
+ path = fetchurl {
+ name = "http_deceiver___http_deceiver_1.2.7.tgz";
+ url = "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz";
+ sha1 = "fa7168944ab9a519d337cb0bec7284dc3e723d87";
+ };
+ }
+ {
+ name = "http_errors___http_errors_1.7.2.tgz";
+ path = fetchurl {
+ name = "http_errors___http_errors_1.7.2.tgz";
+ url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz";
+ sha1 = "4f5029cf13239f31036e5b2e55292bcfbcc85c8f";
+ };
+ }
+ {
+ name = "http_errors___http_errors_1.6.3.tgz";
+ path = fetchurl {
+ name = "http_errors___http_errors_1.6.3.tgz";
+ url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz";
+ sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
+ };
+ }
+ {
+ name = "http_errors___http_errors_1.7.3.tgz";
+ path = fetchurl {
+ name = "http_errors___http_errors_1.7.3.tgz";
+ url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz";
+ sha1 = "6c619e4f9c60308c38519498c14fbb10aacebb06";
+ };
+ }
+ {
+ name = "http_parser_js___http_parser_js_0.5.2.tgz";
+ path = fetchurl {
+ name = "http_parser_js___http_parser_js_0.5.2.tgz";
+ url = "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz";
+ sha1 = "da2e31d237b393aae72ace43882dd7e270a8ff77";
+ };
+ }
+ {
+ name = "http_proxy_middleware___http_proxy_middleware_0.19.1.tgz";
+ path = fetchurl {
+ name = "http_proxy_middleware___http_proxy_middleware_0.19.1.tgz";
+ url = "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz";
+ sha1 = "183c7dc4aa1479150306498c210cdaf96080a43a";
+ };
+ }
+ {
+ name = "http_proxy___http_proxy_1.18.1.tgz";
+ path = fetchurl {
+ name = "http_proxy___http_proxy_1.18.1.tgz";
+ url = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz";
+ sha1 = "401541f0534884bbf95260334e72f88ee3976549";
+ };
+ }
+ {
+ name = "http_signature___http_signature_1.2.0.tgz";
+ path = fetchurl {
+ name = "http_signature___http_signature_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
+ sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+ };
+ }
+ {
+ name = "https_browserify___https_browserify_1.0.0.tgz";
+ path = fetchurl {
+ name = "https_browserify___https_browserify_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz";
+ sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73";
+ };
+ }
+ {
+ name = "human_signals___human_signals_1.1.1.tgz";
+ path = fetchurl {
+ name = "human_signals___human_signals_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz";
+ sha1 = "c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3";
+ };
+ }
+ {
+ name = "iconv_lite___iconv_lite_0.4.24.tgz";
+ path = fetchurl {
+ name = "iconv_lite___iconv_lite_0.4.24.tgz";
+ url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz";
+ sha1 = "2022b4b25fbddc21d2f524974a474aafe733908b";
+ };
+ }
+ {
+ name = "icss_utils___icss_utils_4.1.1.tgz";
+ path = fetchurl {
+ name = "icss_utils___icss_utils_4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz";
+ sha1 = "21170b53789ee27447c2f47dd683081403f9a467";
+ };
+ }
+ {
+ name = "ieee754___ieee754_1.1.13.tgz";
+ path = fetchurl {
+ name = "ieee754___ieee754_1.1.13.tgz";
+ url = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz";
+ sha1 = "ec168558e95aa181fd87d37f55c32bbcb6708b84";
+ };
+ }
+ {
+ name = "iferr___iferr_0.1.5.tgz";
+ path = fetchurl {
+ name = "iferr___iferr_0.1.5.tgz";
+ url = "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz";
+ sha1 = "c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501";
+ };
+ }
+ {
+ name = "ignore___ignore_3.3.10.tgz";
+ path = fetchurl {
+ name = "ignore___ignore_3.3.10.tgz";
+ url = "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz";
+ sha1 = "0a97fb876986e8081c631160f8f9f389157f0043";
+ };
+ }
+ {
+ name = "ignore___ignore_4.0.6.tgz";
+ path = fetchurl {
+ name = "ignore___ignore_4.0.6.tgz";
+ url = "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz";
+ sha1 = "750e3db5862087b4737ebac8207ffd1ef27b25fc";
+ };
+ }
+ {
+ name = "import_cwd___import_cwd_2.1.0.tgz";
+ path = fetchurl {
+ name = "import_cwd___import_cwd_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz";
+ sha1 = "aa6cf36e722761285cb371ec6519f53e2435b0a9";
+ };
+ }
+ {
+ name = "import_fresh___import_fresh_2.0.0.tgz";
+ path = fetchurl {
+ name = "import_fresh___import_fresh_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz";
+ sha1 = "d81355c15612d386c61f9ddd3922d4304822a546";
+ };
+ }
+ {
+ name = "import_fresh___import_fresh_3.2.1.tgz";
+ path = fetchurl {
+ name = "import_fresh___import_fresh_3.2.1.tgz";
+ url = "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz";
+ sha1 = "633ff618506e793af5ac91bf48b72677e15cbe66";
+ };
+ }
+ {
+ name = "import_from___import_from_2.1.0.tgz";
+ path = fetchurl {
+ name = "import_from___import_from_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz";
+ sha1 = "335db7f2a7affd53aaa471d4b8021dee36b7f3b1";
+ };
+ }
+ {
+ name = "import_local___import_local_2.0.0.tgz";
+ path = fetchurl {
+ name = "import_local___import_local_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz";
+ sha1 = "55070be38a5993cf18ef6db7e961f5bee5c5a09d";
+ };
+ }
+ {
+ name = "imurmurhash___imurmurhash_0.1.4.tgz";
+ path = fetchurl {
+ name = "imurmurhash___imurmurhash_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz";
+ sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
+ };
+ }
+ {
+ name = "indent_string___indent_string_4.0.0.tgz";
+ path = fetchurl {
+ name = "indent_string___indent_string_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz";
+ sha1 = "624f8f4497d619b2d9768531d58f4122854d7251";
+ };
+ }
+ {
+ name = "indexes_of___indexes_of_1.0.1.tgz";
+ path = fetchurl {
+ name = "indexes_of___indexes_of_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz";
+ sha1 = "f30f716c8e2bd346c7b67d3df3915566a7c05607";
+ };
+ }
+ {
+ name = "infer_owner___infer_owner_1.0.4.tgz";
+ path = fetchurl {
+ name = "infer_owner___infer_owner_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz";
+ sha1 = "c4cefcaa8e51051c2a40ba2ce8a3d27295af9467";
+ };
+ }
+ {
+ name = "inflight___inflight_1.0.6.tgz";
+ path = fetchurl {
+ name = "inflight___inflight_1.0.6.tgz";
+ url = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
+ sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+ };
+ }
+ {
+ name = "inherits___inherits_2.0.4.tgz";
+ path = fetchurl {
+ name = "inherits___inherits_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz";
+ sha1 = "0fa2c64f932917c3433a0ded55363aae37416b7c";
+ };
+ }
+ {
+ name = "inherits___inherits_2.0.1.tgz";
+ path = fetchurl {
+ name = "inherits___inherits_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz";
+ sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
+ };
+ }
+ {
+ name = "inherits___inherits_2.0.3.tgz";
+ path = fetchurl {
+ name = "inherits___inherits_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
+ sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+ };
+ }
+ {
+ name = "inquirer___inquirer_7.1.0.tgz";
+ path = fetchurl {
+ name = "inquirer___inquirer_7.1.0.tgz";
+ url = "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz";
+ sha1 = "1298a01859883e17c7264b82870ae1034f92dd29";
+ };
+ }
+ {
+ name = "internal_ip___internal_ip_4.3.0.tgz";
+ path = fetchurl {
+ name = "internal_ip___internal_ip_4.3.0.tgz";
+ url = "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz";
+ sha1 = "845452baad9d2ca3b69c635a137acb9a0dad0907";
+ };
+ }
+ {
+ name = "invariant___invariant_2.2.4.tgz";
+ path = fetchurl {
+ name = "invariant___invariant_2.2.4.tgz";
+ url = "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz";
+ sha1 = "610f3c92c9359ce1db616e538008d23ff35158e6";
+ };
+ }
+ {
+ name = "ip_regex___ip_regex_2.1.0.tgz";
+ path = fetchurl {
+ name = "ip_regex___ip_regex_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz";
+ sha1 = "fa78bf5d2e6913c911ce9f819ee5146bb6d844e9";
+ };
+ }
+ {
+ name = "ip___ip_1.1.5.tgz";
+ path = fetchurl {
+ name = "ip___ip_1.1.5.tgz";
+ url = "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz";
+ sha1 = "bdded70114290828c0a039e72ef25f5aaec4354a";
+ };
+ }
+ {
+ name = "ipaddr.js___ipaddr.js_1.9.1.tgz";
+ path = fetchurl {
+ name = "ipaddr.js___ipaddr.js_1.9.1.tgz";
+ url = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz";
+ sha1 = "bff38543eeb8984825079ff3a2a8e6cbd46781b3";
+ };
+ }
+ {
+ name = "is_absolute_url___is_absolute_url_2.1.0.tgz";
+ path = fetchurl {
+ name = "is_absolute_url___is_absolute_url_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz";
+ sha1 = "50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6";
+ };
+ }
+ {
+ name = "is_absolute_url___is_absolute_url_3.0.3.tgz";
+ path = fetchurl {
+ name = "is_absolute_url___is_absolute_url_3.0.3.tgz";
+ url = "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz";
+ sha1 = "96c6a22b6a23929b11ea0afb1836c36ad4a5d698";
+ };
+ }
+ {
+ name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
+ path = fetchurl {
+ name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
+ url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
+ sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
+ };
+ }
+ {
+ name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
+ sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656";
+ };
+ }
+ {
+ name = "is_arguments___is_arguments_1.0.4.tgz";
+ path = fetchurl {
+ name = "is_arguments___is_arguments_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz";
+ sha1 = "3faf966c7cba0ff437fb31f6250082fcf0448cf3";
+ };
+ }
+ {
+ name = "is_arrayish___is_arrayish_0.2.1.tgz";
+ path = fetchurl {
+ name = "is_arrayish___is_arrayish_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
+ sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
+ };
+ }
+ {
+ name = "is_arrayish___is_arrayish_0.3.2.tgz";
+ path = fetchurl {
+ name = "is_arrayish___is_arrayish_0.3.2.tgz";
+ url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz";
+ sha1 = "4574a2ae56f7ab206896fb431eaeed066fdf8f03";
+ };
+ }
+ {
+ name = "is_binary_path___is_binary_path_1.0.1.tgz";
+ path = fetchurl {
+ name = "is_binary_path___is_binary_path_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz";
+ sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
+ };
+ }
+ {
+ name = "is_binary_path___is_binary_path_2.1.0.tgz";
+ path = fetchurl {
+ name = "is_binary_path___is_binary_path_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz";
+ sha1 = "ea1f7f3b80f064236e83470f86c09c254fb45b09";
+ };
+ }
+ {
+ name = "is_buffer___is_buffer_1.1.6.tgz";
+ path = fetchurl {
+ name = "is_buffer___is_buffer_1.1.6.tgz";
+ url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
+ sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
+ };
+ }
+ {
+ name = "is_callable___is_callable_1.2.0.tgz";
+ path = fetchurl {
+ name = "is_callable___is_callable_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz";
+ sha1 = "83336560b54a38e35e3a2df7afd0454d691468bb";
+ };
+ }
+ {
+ name = "is_ci___is_ci_1.2.1.tgz";
+ path = fetchurl {
+ name = "is_ci___is_ci_1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz";
+ sha1 = "e3779c8ee17fccf428488f6e281187f2e632841c";
+ };
+ }
+ {
+ name = "is_color_stop___is_color_stop_1.1.0.tgz";
+ path = fetchurl {
+ name = "is_color_stop___is_color_stop_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz";
+ sha1 = "cfff471aee4dd5c9e158598fbe12967b5cdad345";
+ };
+ }
+ {
+ name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
+ path = fetchurl {
+ name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
+ sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
+ };
+ }
+ {
+ name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
+ sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7";
+ };
+ }
+ {
+ name = "is_date_object___is_date_object_1.0.2.tgz";
+ path = fetchurl {
+ name = "is_date_object___is_date_object_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz";
+ sha1 = "bda736f2cd8fd06d32844e7743bfa7494c3bfd7e";
+ };
+ }
+ {
+ name = "is_descriptor___is_descriptor_0.1.6.tgz";
+ path = fetchurl {
+ name = "is_descriptor___is_descriptor_0.1.6.tgz";
+ url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz";
+ sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca";
+ };
+ }
+ {
+ name = "is_descriptor___is_descriptor_1.0.2.tgz";
+ path = fetchurl {
+ name = "is_descriptor___is_descriptor_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz";
+ sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec";
+ };
+ }
+ {
+ name = "is_directory___is_directory_0.3.1.tgz";
+ path = fetchurl {
+ name = "is_directory___is_directory_0.3.1.tgz";
+ url = "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz";
+ sha1 = "61339b6f2475fc772fd9c9d83f5c8575dc154ae1";
+ };
+ }
+ {
+ name = "is_docker___is_docker_2.0.0.tgz";
+ path = fetchurl {
+ name = "is_docker___is_docker_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz";
+ sha1 = "2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b";
+ };
+ }
+ {
+ name = "is_extendable___is_extendable_0.1.1.tgz";
+ path = fetchurl {
+ name = "is_extendable___is_extendable_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz";
+ sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
+ };
+ }
+ {
+ name = "is_extendable___is_extendable_1.0.1.tgz";
+ path = fetchurl {
+ name = "is_extendable___is_extendable_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz";
+ sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4";
+ };
+ }
+ {
+ name = "is_extglob___is_extglob_2.1.1.tgz";
+ path = fetchurl {
+ name = "is_extglob___is_extglob_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz";
+ sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
+ };
+ }
+ {
+ name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
+ path = fetchurl {
+ name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+ sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+ };
+ }
+ {
+ name = "is_fullwidth_code_point___is_fullwidth_code_point_3.0.0.tgz";
+ path = fetchurl {
+ name = "is_fullwidth_code_point___is_fullwidth_code_point_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz";
+ sha1 = "f116f8064fe90b3f7844a38997c0b75051269f1d";
+ };
+ }
+ {
+ name = "is_glob___is_glob_3.1.0.tgz";
+ path = fetchurl {
+ name = "is_glob___is_glob_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz";
+ sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
+ };
+ }
+ {
+ name = "is_glob___is_glob_4.0.1.tgz";
+ path = fetchurl {
+ name = "is_glob___is_glob_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz";
+ sha1 = "7567dbe9f2f5e2467bc77ab83c4a29482407a5dc";
+ };
+ }
+ {
+ name = "is_number___is_number_3.0.0.tgz";
+ path = fetchurl {
+ name = "is_number___is_number_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz";
+ sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
+ };
+ }
+ {
+ name = "is_number___is_number_7.0.0.tgz";
+ path = fetchurl {
+ name = "is_number___is_number_7.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz";
+ sha1 = "7535345b896734d5f80c4d06c50955527a14f12b";
+ };
+ }
+ {
+ name = "is_obj___is_obj_1.0.1.tgz";
+ path = fetchurl {
+ name = "is_obj___is_obj_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz";
+ sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f";
+ };
+ }
+ {
+ name = "is_obj___is_obj_2.0.0.tgz";
+ path = fetchurl {
+ name = "is_obj___is_obj_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz";
+ sha1 = "473fb05d973705e3fd9620545018ca8e22ef4982";
+ };
+ }
+ {
+ name = "is_path_cwd___is_path_cwd_2.2.0.tgz";
+ path = fetchurl {
+ name = "is_path_cwd___is_path_cwd_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz";
+ sha1 = "67d43b82664a7b5191fd9119127eb300048a9fdb";
+ };
+ }
+ {
+ name = "is_path_in_cwd___is_path_in_cwd_2.1.0.tgz";
+ path = fetchurl {
+ name = "is_path_in_cwd___is_path_in_cwd_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz";
+ sha1 = "bfe2dca26c69f397265a4009963602935a053acb";
+ };
+ }
+ {
+ name = "is_path_inside___is_path_inside_2.1.0.tgz";
+ path = fetchurl {
+ name = "is_path_inside___is_path_inside_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz";
+ sha1 = "7c9810587d659a40d27bcdb4d5616eab059494b2";
+ };
+ }
+ {
+ name = "is_plain_obj___is_plain_obj_1.1.0.tgz";
+ path = fetchurl {
+ name = "is_plain_obj___is_plain_obj_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz";
+ sha1 = "71a50c8429dfca773c92a390a4a03b39fcd51d3e";
+ };
+ }
+ {
+ name = "is_plain_object___is_plain_object_2.0.4.tgz";
+ path = fetchurl {
+ name = "is_plain_object___is_plain_object_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz";
+ sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677";
+ };
+ }
+ {
+ name = "is_regex___is_regex_1.1.0.tgz";
+ path = fetchurl {
+ name = "is_regex___is_regex_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz";
+ sha1 = "ece38e389e490df0dc21caea2bd596f987f767ff";
+ };
+ }
+ {
+ name = "is_regexp___is_regexp_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_regexp___is_regexp_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz";
+ sha1 = "fd2d883545c46bac5a633e7b9a09e87fa2cb5069";
+ };
+ }
+ {
+ name = "is_resolvable___is_resolvable_1.1.0.tgz";
+ path = fetchurl {
+ name = "is_resolvable___is_resolvable_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz";
+ sha1 = "fb18f87ce1feb925169c9a407c19318a3206ed88";
+ };
+ }
+ {
+ name = "is_stream___is_stream_1.1.0.tgz";
+ path = fetchurl {
+ name = "is_stream___is_stream_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
+ sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
+ };
+ }
+ {
+ name = "is_stream___is_stream_2.0.0.tgz";
+ path = fetchurl {
+ name = "is_stream___is_stream_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz";
+ sha1 = "bde9c32680d6fae04129d6ac9d921ce7815f78e3";
+ };
+ }
+ {
+ name = "is_svg___is_svg_3.0.0.tgz";
+ path = fetchurl {
+ name = "is_svg___is_svg_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz";
+ sha1 = "9321dbd29c212e5ca99c4fa9794c714bcafa2f75";
+ };
+ }
+ {
+ name = "is_symbol___is_symbol_1.0.3.tgz";
+ path = fetchurl {
+ name = "is_symbol___is_symbol_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz";
+ sha1 = "38e1014b9e6329be0de9d24a414fd7441ec61937";
+ };
+ }
+ {
+ name = "is_typedarray___is_typedarray_1.0.0.tgz";
+ path = fetchurl {
+ name = "is_typedarray___is_typedarray_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
+ sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+ };
+ }
+ {
+ name = "is_windows___is_windows_1.0.2.tgz";
+ path = fetchurl {
+ name = "is_windows___is_windows_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz";
+ sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d";
+ };
+ }
+ {
+ name = "is_wsl___is_wsl_1.1.0.tgz";
+ path = fetchurl {
+ name = "is_wsl___is_wsl_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz";
+ sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d";
+ };
+ }
+ {
+ name = "is_wsl___is_wsl_2.2.0.tgz";
+ path = fetchurl {
+ name = "is_wsl___is_wsl_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz";
+ sha1 = "74a4c76e77ca9fd3f932f290c17ea326cd157271";
+ };
+ }
+ {
+ name = "isarray___isarray_1.0.0.tgz";
+ path = fetchurl {
+ name = "isarray___isarray_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
+ sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+ };
+ }
+ {
+ name = "isexe___isexe_2.0.0.tgz";
+ path = fetchurl {
+ name = "isexe___isexe_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
+ sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
+ };
+ }
+ {
+ name = "isobject___isobject_2.1.0.tgz";
+ path = fetchurl {
+ name = "isobject___isobject_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz";
+ sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
+ };
+ }
+ {
+ name = "isobject___isobject_3.0.1.tgz";
+ path = fetchurl {
+ name = "isobject___isobject_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz";
+ sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
+ };
+ }
+ {
+ name = "isstream___isstream_0.1.2.tgz";
+ path = fetchurl {
+ name = "isstream___isstream_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
+ sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+ };
+ }
+ {
+ name = "javascript_stringify___javascript_stringify_2.0.1.tgz";
+ path = fetchurl {
+ name = "javascript_stringify___javascript_stringify_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.0.1.tgz";
+ sha1 = "6ef358035310e35d667c675ed63d3eb7c1aa19e5";
+ };
+ }
+ {
+ name = "jest_worker___jest_worker_25.5.0.tgz";
+ path = fetchurl {
+ name = "jest_worker___jest_worker_25.5.0.tgz";
+ url = "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz";
+ sha1 = "2611d071b79cea0f43ee57a3d118593ac1547db1";
+ };
+ }
+ {
+ name = "js_message___js_message_1.0.5.tgz";
+ path = fetchurl {
+ name = "js_message___js_message_1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/js-message/-/js-message-1.0.5.tgz";
+ sha1 = "2300d24b1af08e89dd095bc1a4c9c9cfcb892d15";
+ };
+ }
+ {
+ name = "js_queue___js_queue_2.0.0.tgz";
+ path = fetchurl {
+ name = "js_queue___js_queue_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/js-queue/-/js-queue-2.0.0.tgz";
+ sha1 = "362213cf860f468f0125fc6c96abc1742531f948";
+ };
+ }
+ {
+ name = "js_tokens___js_tokens_4.0.0.tgz";
+ path = fetchurl {
+ name = "js_tokens___js_tokens_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz";
+ sha1 = "19203fb59991df98e3a287050d4647cdeaf32499";
+ };
+ }
+ {
+ name = "js_yaml___js_yaml_3.14.0.tgz";
+ path = fetchurl {
+ name = "js_yaml___js_yaml_3.14.0.tgz";
+ url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz";
+ sha1 = "a7a34170f26a21bb162424d8adacb4113a69e482";
+ };
+ }
+ {
+ name = "jsbn___jsbn_0.1.1.tgz";
+ path = fetchurl {
+ name = "jsbn___jsbn_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
+ sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+ };
+ }
+ {
+ name = "jsesc___jsesc_2.5.2.tgz";
+ path = fetchurl {
+ name = "jsesc___jsesc_2.5.2.tgz";
+ url = "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz";
+ sha1 = "80564d2e483dacf6e8ef209650a67df3f0c283a4";
+ };
+ }
+ {
+ name = "jsesc___jsesc_0.5.0.tgz";
+ path = fetchurl {
+ name = "jsesc___jsesc_0.5.0.tgz";
+ url = "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz";
+ sha1 = "e7dee66e35d6fc16f710fe91d5cf69f70f08911d";
+ };
+ }
+ {
+ name = "json_parse_better_errors___json_parse_better_errors_1.0.2.tgz";
+ path = fetchurl {
+ name = "json_parse_better_errors___json_parse_better_errors_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
+ sha1 = "bb867cfb3450e69107c131d1c514bab3dc8bcaa9";
+ };
+ }
+ {
+ name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
+ path = fetchurl {
+ name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+ sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
+ };
+ }
+ {
+ name = "json_schema___json_schema_0.2.3.tgz";
+ path = fetchurl {
+ name = "json_schema___json_schema_0.2.3.tgz";
+ url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
+ sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+ };
+ }
+ {
+ name = "json_stable_stringify_without_jsonify___json_stable_stringify_without_jsonify_1.0.1.tgz";
+ path = fetchurl {
+ name = "json_stable_stringify_without_jsonify___json_stable_stringify_without_jsonify_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz";
+ sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
+ };
+ }
+ {
+ name = "json_stable_stringify___json_stable_stringify_1.0.1.tgz";
+ path = fetchurl {
+ name = "json_stable_stringify___json_stable_stringify_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
+ sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
+ };
+ }
+ {
+ name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
+ path = fetchurl {
+ name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
+ url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+ sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+ };
+ }
+ {
+ name = "json3___json3_3.3.3.tgz";
+ path = fetchurl {
+ name = "json3___json3_3.3.3.tgz";
+ url = "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz";
+ sha1 = "7fc10e375fc5ae42c4705a5cc0aa6f62be305b81";
+ };
+ }
+ {
+ name = "json5___json5_0.5.1.tgz";
+ path = fetchurl {
+ name = "json5___json5_0.5.1.tgz";
+ url = "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz";
+ sha1 = "1eade7acc012034ad84e2396767ead9fa5495821";
+ };
+ }
+ {
+ name = "json5___json5_1.0.1.tgz";
+ path = fetchurl {
+ name = "json5___json5_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz";
+ sha1 = "779fb0018604fa854eacbf6252180d83543e3dbe";
+ };
+ }
+ {
+ name = "json5___json5_2.1.3.tgz";
+ path = fetchurl {
+ name = "json5___json5_2.1.3.tgz";
+ url = "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz";
+ sha1 = "c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43";
+ };
+ }
+ {
+ name = "jsonfile___jsonfile_4.0.0.tgz";
+ path = fetchurl {
+ name = "jsonfile___jsonfile_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz";
+ sha1 = "8771aae0799b64076b76640fca058f9c10e33ecb";
+ };
+ }
+ {
+ name = "jsonify___jsonify_0.0.0.tgz";
+ path = fetchurl {
+ name = "jsonify___jsonify_0.0.0.tgz";
+ url = "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz";
+ sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
+ };
+ }
+ {
+ name = "jsprim___jsprim_1.4.1.tgz";
+ path = fetchurl {
+ name = "jsprim___jsprim_1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
+ sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+ };
+ }
+ {
+ name = "killable___killable_1.0.1.tgz";
+ path = fetchurl {
+ name = "killable___killable_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz";
+ sha1 = "4c8ce441187a061c7474fb87ca08e2a638194892";
+ };
+ }
+ {
+ name = "kind_of___kind_of_3.2.2.tgz";
+ path = fetchurl {
+ name = "kind_of___kind_of_3.2.2.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz";
+ sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
+ };
+ }
+ {
+ name = "kind_of___kind_of_4.0.0.tgz";
+ path = fetchurl {
+ name = "kind_of___kind_of_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz";
+ sha1 = "20813df3d712928b207378691a45066fae72dd57";
+ };
+ }
+ {
+ name = "kind_of___kind_of_5.1.0.tgz";
+ path = fetchurl {
+ name = "kind_of___kind_of_5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz";
+ sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d";
+ };
+ }
+ {
+ name = "kind_of___kind_of_6.0.3.tgz";
+ path = fetchurl {
+ name = "kind_of___kind_of_6.0.3.tgz";
+ url = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz";
+ sha1 = "07c05034a6c349fa06e24fa35aa76db4580ce4dd";
+ };
+ }
+ {
+ name = "launch_editor_middleware___launch_editor_middleware_2.2.1.tgz";
+ path = fetchurl {
+ name = "launch_editor_middleware___launch_editor_middleware_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz";
+ sha1 = "e14b07e6c7154b0a4b86a0fd345784e45804c157";
+ };
+ }
+ {
+ name = "launch_editor___launch_editor_2.2.1.tgz";
+ path = fetchurl {
+ name = "launch_editor___launch_editor_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.2.1.tgz";
+ sha1 = "871b5a3ee39d6680fcc26d37930b6eeda89db0ca";
+ };
+ }
+ {
+ name = "leven___leven_3.1.0.tgz";
+ path = fetchurl {
+ name = "leven___leven_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz";
+ sha1 = "77891de834064cccba82ae7842bb6b14a13ed7f2";
+ };
+ }
+ {
+ name = "levenary___levenary_1.1.1.tgz";
+ path = fetchurl {
+ name = "levenary___levenary_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz";
+ sha1 = "842a9ee98d2075aa7faeedbe32679e9205f46f77";
+ };
+ }
+ {
+ name = "levn___levn_0.4.1.tgz";
+ path = fetchurl {
+ name = "levn___levn_0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz";
+ sha1 = "ae4562c007473b932a6200d403268dd2fffc6ade";
+ };
+ }
+ {
+ name = "lines_and_columns___lines_and_columns_1.1.6.tgz";
+ path = fetchurl {
+ name = "lines_and_columns___lines_and_columns_1.1.6.tgz";
+ url = "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz";
+ sha1 = "1c00c743b433cd0a4e80758f7b64a57440d9ff00";
+ };
+ }
+ {
+ name = "loader_fs_cache___loader_fs_cache_1.0.3.tgz";
+ path = fetchurl {
+ name = "loader_fs_cache___loader_fs_cache_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz";
+ sha1 = "f08657646d607078be2f0a032f8bd69dd6f277d9";
+ };
+ }
+ {
+ name = "loader_runner___loader_runner_2.4.0.tgz";
+ path = fetchurl {
+ name = "loader_runner___loader_runner_2.4.0.tgz";
+ url = "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz";
+ sha1 = "ed47066bfe534d7e84c4c7b9998c2a75607d9357";
+ };
+ }
+ {
+ name = "loader_utils___loader_utils_0.2.17.tgz";
+ path = fetchurl {
+ name = "loader_utils___loader_utils_0.2.17.tgz";
+ url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz";
+ sha1 = "f86e6374d43205a6e6c60e9196f17c0299bfb348";
+ };
+ }
+ {
+ name = "loader_utils___loader_utils_1.4.0.tgz";
+ path = fetchurl {
+ name = "loader_utils___loader_utils_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz";
+ sha1 = "c579b5e34cb34b1a74edc6c1fb36bfa371d5a613";
+ };
+ }
+ {
+ name = "loader_utils___loader_utils_2.0.0.tgz";
+ path = fetchurl {
+ name = "loader_utils___loader_utils_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz";
+ sha1 = "e4cace5b816d425a166b5f097e10cd12b36064b0";
+ };
+ }
+ {
+ name = "locate_path___locate_path_2.0.0.tgz";
+ path = fetchurl {
+ name = "locate_path___locate_path_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz";
+ sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
+ };
+ }
+ {
+ name = "locate_path___locate_path_3.0.0.tgz";
+ path = fetchurl {
+ name = "locate_path___locate_path_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz";
+ sha1 = "dbec3b3ab759758071b58fe59fc41871af21400e";
+ };
+ }
+ {
+ name = "locate_path___locate_path_5.0.0.tgz";
+ path = fetchurl {
+ name = "locate_path___locate_path_5.0.0.tgz";
+ url = "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz";
+ sha1 = "1afba396afd676a6d42504d0a67a3a7eb9f62aa0";
+ };
+ }
+ {
+ name = "lodash._reinterpolate___lodash._reinterpolate_3.0.0.tgz";
+ path = fetchurl {
+ name = "lodash._reinterpolate___lodash._reinterpolate_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz";
+ sha1 = "0ccf2d89166af03b3663c796538b75ac6e114d9d";
+ };
+ }
+ {
+ name = "lodash.defaultsdeep___lodash.defaultsdeep_4.6.1.tgz";
+ path = fetchurl {
+ name = "lodash.defaultsdeep___lodash.defaultsdeep_4.6.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz";
+ sha1 = "512e9bd721d272d94e3d3a63653fa17516741ca6";
+ };
+ }
+ {
+ name = "lodash.kebabcase___lodash.kebabcase_4.1.1.tgz";
+ path = fetchurl {
+ name = "lodash.kebabcase___lodash.kebabcase_4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz";
+ sha1 = "8489b1cb0d29ff88195cceca448ff6d6cc295c36";
+ };
+ }
+ {
+ name = "lodash.mapvalues___lodash.mapvalues_4.6.0.tgz";
+ path = fetchurl {
+ name = "lodash.mapvalues___lodash.mapvalues_4.6.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz";
+ sha1 = "1bafa5005de9dd6f4f26668c30ca37230cc9689c";
+ };
+ }
+ {
+ name = "lodash.memoize___lodash.memoize_4.1.2.tgz";
+ path = fetchurl {
+ name = "lodash.memoize___lodash.memoize_4.1.2.tgz";
+ url = "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz";
+ sha1 = "bcc6c49a42a2840ed997f323eada5ecd182e0bfe";
+ };
+ }
+ {
+ name = "lodash.merge___lodash.merge_4.6.2.tgz";
+ path = fetchurl {
+ name = "lodash.merge___lodash.merge_4.6.2.tgz";
+ url = "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz";
+ sha1 = "558aa53b43b661e1925a0afdfa36a9a1085fe57a";
+ };
+ }
+ {
+ name = "lodash.template___lodash.template_4.5.0.tgz";
+ path = fetchurl {
+ name = "lodash.template___lodash.template_4.5.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz";
+ sha1 = "f976195cf3f347d0d5f52483569fe8031ccce8ab";
+ };
+ }
+ {
+ name = "lodash.templatesettings___lodash.templatesettings_4.2.0.tgz";
+ path = fetchurl {
+ name = "lodash.templatesettings___lodash.templatesettings_4.2.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz";
+ sha1 = "e481310f049d3cf6d47e912ad09313b154f0fb33";
+ };
+ }
+ {
+ name = "lodash.transform___lodash.transform_4.6.0.tgz";
+ path = fetchurl {
+ name = "lodash.transform___lodash.transform_4.6.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz";
+ sha1 = "12306422f63324aed8483d3f38332b5f670547a0";
+ };
+ }
+ {
+ name = "lodash.uniq___lodash.uniq_4.5.0.tgz";
+ path = fetchurl {
+ name = "lodash.uniq___lodash.uniq_4.5.0.tgz";
+ url = "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz";
+ sha1 = "d0225373aeb652adc1bc82e4945339a842754773";
+ };
+ }
+ {
+ name = "lodash___lodash_4.17.15.tgz";
+ path = fetchurl {
+ name = "lodash___lodash_4.17.15.tgz";
+ url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz";
+ sha1 = "b447f6670a0455bbfeedd11392eff330ea097548";
+ };
+ }
+ {
+ name = "log_symbols___log_symbols_2.2.0.tgz";
+ path = fetchurl {
+ name = "log_symbols___log_symbols_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz";
+ sha1 = "5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a";
+ };
+ }
+ {
+ name = "loglevel___loglevel_1.6.8.tgz";
+ path = fetchurl {
+ name = "loglevel___loglevel_1.6.8.tgz";
+ url = "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz";
+ sha1 = "8a25fb75d092230ecd4457270d80b54e28011171";
+ };
+ }
+ {
+ name = "loose_envify___loose_envify_1.4.0.tgz";
+ path = fetchurl {
+ name = "loose_envify___loose_envify_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz";
+ sha1 = "71ee51fa7be4caec1a63839f7e682d8132d30caf";
+ };
+ }
+ {
+ name = "lower_case___lower_case_1.1.4.tgz";
+ path = fetchurl {
+ name = "lower_case___lower_case_1.1.4.tgz";
+ url = "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz";
+ sha1 = "9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac";
+ };
+ }
+ {
+ name = "lru_cache___lru_cache_4.1.5.tgz";
+ path = fetchurl {
+ name = "lru_cache___lru_cache_4.1.5.tgz";
+ url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz";
+ sha1 = "8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd";
+ };
+ }
+ {
+ name = "lru_cache___lru_cache_5.1.1.tgz";
+ path = fetchurl {
+ name = "lru_cache___lru_cache_5.1.1.tgz";
+ url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz";
+ sha1 = "1da27e6710271947695daf6848e847f01d84b920";
+ };
+ }
+ {
+ name = "make_dir___make_dir_2.1.0.tgz";
+ path = fetchurl {
+ name = "make_dir___make_dir_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz";
+ sha1 = "5f0310e18b8be898cc07009295a30ae41e91e6f5";
+ };
+ }
+ {
+ name = "make_dir___make_dir_3.1.0.tgz";
+ path = fetchurl {
+ name = "make_dir___make_dir_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz";
+ sha1 = "415e967046b3a7f1d185277d84aa58203726a13f";
+ };
+ }
+ {
+ name = "map_cache___map_cache_0.2.2.tgz";
+ path = fetchurl {
+ name = "map_cache___map_cache_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz";
+ sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
+ };
+ }
+ {
+ name = "map_visit___map_visit_1.0.0.tgz";
+ path = fetchurl {
+ name = "map_visit___map_visit_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz";
+ sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
+ };
+ }
+ {
+ name = "md5.js___md5.js_1.3.5.tgz";
+ path = fetchurl {
+ name = "md5.js___md5.js_1.3.5.tgz";
+ url = "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz";
+ sha1 = "b5d07b8e3216e3e27cd728d72f70d1e6a342005f";
+ };
+ }
+ {
+ name = "mdn_data___mdn_data_2.0.4.tgz";
+ path = fetchurl {
+ name = "mdn_data___mdn_data_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz";
+ sha1 = "699b3c38ac6f1d728091a64650b65d388502fd5b";
+ };
+ }
+ {
+ name = "mdn_data___mdn_data_2.0.6.tgz";
+ path = fetchurl {
+ name = "mdn_data___mdn_data_2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz";
+ sha1 = "852dc60fcaa5daa2e8cf6c9189c440ed3e042978";
+ };
+ }
+ {
+ name = "media_typer___media_typer_0.3.0.tgz";
+ path = fetchurl {
+ name = "media_typer___media_typer_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
+ sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+ };
+ }
+ {
+ name = "memory_fs___memory_fs_0.4.1.tgz";
+ path = fetchurl {
+ name = "memory_fs___memory_fs_0.4.1.tgz";
+ url = "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz";
+ sha1 = "3a9a20b8462523e447cfbc7e8bb80ed667bfc552";
+ };
+ }
+ {
+ name = "memory_fs___memory_fs_0.5.0.tgz";
+ path = fetchurl {
+ name = "memory_fs___memory_fs_0.5.0.tgz";
+ url = "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz";
+ sha1 = "324c01288b88652966d161db77838720845a8e3c";
+ };
+ }
+ {
+ name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
+ path = fetchurl {
+ name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
+ sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
+ };
+ }
+ {
+ name = "merge_source_map___merge_source_map_1.1.0.tgz";
+ path = fetchurl {
+ name = "merge_source_map___merge_source_map_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz";
+ sha1 = "2fdde7e6020939f70906a68f2d7ae685e4c8c646";
+ };
+ }
+ {
+ name = "merge_stream___merge_stream_2.0.0.tgz";
+ path = fetchurl {
+ name = "merge_stream___merge_stream_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz";
+ sha1 = "52823629a14dd00c9770fb6ad47dc6310f2c1f60";
+ };
+ }
+ {
+ name = "merge2___merge2_1.4.1.tgz";
+ path = fetchurl {
+ name = "merge2___merge2_1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz";
+ sha1 = "4368892f885e907455a6fd7dc55c0c9d404990ae";
+ };
+ }
+ {
+ name = "methods___methods_1.1.2.tgz";
+ path = fetchurl {
+ name = "methods___methods_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz";
+ sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
+ };
+ }
+ {
+ name = "micromatch___micromatch_3.1.10.tgz";
+ path = fetchurl {
+ name = "micromatch___micromatch_3.1.10.tgz";
+ url = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz";
+ sha1 = "70859bc95c9840952f359a068a3fc49f9ecfac23";
+ };
+ }
+ {
+ name = "miller_rabin___miller_rabin_4.0.1.tgz";
+ path = fetchurl {
+ name = "miller_rabin___miller_rabin_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz";
+ sha1 = "f080351c865b0dc562a8462966daa53543c78a4d";
+ };
+ }
+ {
+ name = "mime_db___mime_db_1.44.0.tgz";
+ path = fetchurl {
+ name = "mime_db___mime_db_1.44.0.tgz";
+ url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz";
+ sha1 = "fa11c5eb0aca1334b4233cb4d52f10c5a6272f92";
+ };
+ }
+ {
+ name = "mime_types___mime_types_2.1.27.tgz";
+ path = fetchurl {
+ name = "mime_types___mime_types_2.1.27.tgz";
+ url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz";
+ sha1 = "47949f98e279ea53119f5722e0f34e529bec009f";
+ };
+ }
+ {
+ name = "mime___mime_1.6.0.tgz";
+ path = fetchurl {
+ name = "mime___mime_1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
+ sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
+ };
+ }
+ {
+ name = "mime___mime_2.4.6.tgz";
+ path = fetchurl {
+ name = "mime___mime_2.4.6.tgz";
+ url = "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz";
+ sha1 = "e5b407c90db442f2beb5b162373d07b69affa4d1";
+ };
+ }
+ {
+ name = "mimic_fn___mimic_fn_1.2.0.tgz";
+ path = fetchurl {
+ name = "mimic_fn___mimic_fn_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz";
+ sha1 = "820c86a39334640e99516928bd03fca88057d022";
+ };
+ }
+ {
+ name = "mimic_fn___mimic_fn_2.1.0.tgz";
+ path = fetchurl {
+ name = "mimic_fn___mimic_fn_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz";
+ sha1 = "7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b";
+ };
+ }
+ {
+ name = "mini_css_extract_plugin___mini_css_extract_plugin_0.9.0.tgz";
+ path = fetchurl {
+ name = "mini_css_extract_plugin___mini_css_extract_plugin_0.9.0.tgz";
+ url = "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz";
+ sha1 = "47f2cf07aa165ab35733b1fc97d4c46c0564339e";
+ };
+ }
+ {
+ name = "minimalistic_assert___minimalistic_assert_1.0.1.tgz";
+ path = fetchurl {
+ name = "minimalistic_assert___minimalistic_assert_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
+ sha1 = "2e194de044626d4a10e7f7fbc00ce73e83e4d5c7";
+ };
+ }
+ {
+ name = "minimalistic_crypto_utils___minimalistic_crypto_utils_1.0.1.tgz";
+ path = fetchurl {
+ name = "minimalistic_crypto_utils___minimalistic_crypto_utils_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
+ sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a";
+ };
+ }
+ {
+ name = "minimatch___minimatch_3.0.4.tgz";
+ path = fetchurl {
+ name = "minimatch___minimatch_3.0.4.tgz";
+ url = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
+ sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
+ };
+ }
+ {
+ name = "minimist___minimist_1.2.5.tgz";
+ path = fetchurl {
+ name = "minimist___minimist_1.2.5.tgz";
+ url = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz";
+ sha1 = "67d66014b66a6a8aaa0c083c5fd58df4e4e97602";
+ };
+ }
+ {
+ name = "minipass_collect___minipass_collect_1.0.2.tgz";
+ path = fetchurl {
+ name = "minipass_collect___minipass_collect_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz";
+ sha1 = "22b813bf745dc6edba2576b940022ad6edc8c617";
+ };
+ }
+ {
+ name = "minipass_flush___minipass_flush_1.0.5.tgz";
+ path = fetchurl {
+ name = "minipass_flush___minipass_flush_1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz";
+ sha1 = "82e7135d7e89a50ffe64610a787953c4c4cbb373";
+ };
+ }
+ {
+ name = "minipass_pipeline___minipass_pipeline_1.2.3.tgz";
+ path = fetchurl {
+ name = "minipass_pipeline___minipass_pipeline_1.2.3.tgz";
+ url = "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz";
+ sha1 = "55f7839307d74859d6e8ada9c3ebe72cec216a34";
+ };
+ }
+ {
+ name = "minipass___minipass_3.1.3.tgz";
+ path = fetchurl {
+ name = "minipass___minipass_3.1.3.tgz";
+ url = "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz";
+ sha1 = "7d42ff1f39635482e15f9cdb53184deebd5815fd";
+ };
+ }
+ {
+ name = "mississippi___mississippi_3.0.0.tgz";
+ path = fetchurl {
+ name = "mississippi___mississippi_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz";
+ sha1 = "ea0a3291f97e0b5e8776b363d5f0a12d94c67022";
+ };
+ }
+ {
+ name = "mixin_deep___mixin_deep_1.3.2.tgz";
+ path = fetchurl {
+ name = "mixin_deep___mixin_deep_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz";
+ sha1 = "1120b43dc359a785dce65b55b82e257ccf479566";
+ };
+ }
+ {
+ name = "mkdirp___mkdirp_0.5.5.tgz";
+ path = fetchurl {
+ name = "mkdirp___mkdirp_0.5.5.tgz";
+ url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz";
+ sha1 = "d91cefd62d1436ca0f41620e251288d420099def";
+ };
+ }
+ {
+ name = "move_concurrently___move_concurrently_1.0.1.tgz";
+ path = fetchurl {
+ name = "move_concurrently___move_concurrently_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz";
+ sha1 = "be2c005fda32e0b29af1f05d7c4b33214c701f92";
+ };
+ }
+ {
+ name = "ms___ms_2.0.0.tgz";
+ path = fetchurl {
+ name = "ms___ms_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
+ sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+ };
+ }
+ {
+ name = "ms___ms_2.1.1.tgz";
+ path = fetchurl {
+ name = "ms___ms_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz";
+ sha1 = "30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a";
+ };
+ }
+ {
+ name = "ms___ms_2.1.2.tgz";
+ path = fetchurl {
+ name = "ms___ms_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz";
+ sha1 = "d09d1f357b443f493382a8eb3ccd183872ae6009";
+ };
+ }
+ {
+ name = "multicast_dns_service_types___multicast_dns_service_types_1.1.0.tgz";
+ path = fetchurl {
+ name = "multicast_dns_service_types___multicast_dns_service_types_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz";
+ sha1 = "899f11d9686e5e05cb91b35d5f0e63b773cfc901";
+ };
+ }
+ {
+ name = "multicast_dns___multicast_dns_6.2.3.tgz";
+ path = fetchurl {
+ name = "multicast_dns___multicast_dns_6.2.3.tgz";
+ url = "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz";
+ sha1 = "a0ec7bd9055c4282f790c3c82f4e28db3b31b229";
+ };
+ }
+ {
+ name = "mute_stream___mute_stream_0.0.8.tgz";
+ path = fetchurl {
+ name = "mute_stream___mute_stream_0.0.8.tgz";
+ url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz";
+ sha1 = "1630c42b2251ff81e2a283de96a5497ea92e5e0d";
+ };
+ }
+ {
+ name = "mz___mz_2.7.0.tgz";
+ path = fetchurl {
+ name = "mz___mz_2.7.0.tgz";
+ url = "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz";
+ sha1 = "95008057a56cafadc2bc63dde7f9ff6955948e32";
+ };
+ }
+ {
+ name = "nan___nan_2.14.1.tgz";
+ path = fetchurl {
+ name = "nan___nan_2.14.1.tgz";
+ url = "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz";
+ sha1 = "d7be34dfa3105b91494c3147089315eff8874b01";
+ };
+ }
+ {
+ name = "nanomatch___nanomatch_1.2.13.tgz";
+ path = fetchurl {
+ name = "nanomatch___nanomatch_1.2.13.tgz";
+ url = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz";
+ sha1 = "b87a8aa4fc0de8fe6be88895b38983ff265bd119";
+ };
+ }
+ {
+ name = "natural_compare___natural_compare_1.4.0.tgz";
+ path = fetchurl {
+ name = "natural_compare___natural_compare_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz";
+ sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
+ };
+ }
+ {
+ name = "negotiator___negotiator_0.6.2.tgz";
+ path = fetchurl {
+ name = "negotiator___negotiator_0.6.2.tgz";
+ url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz";
+ sha1 = "feacf7ccf525a77ae9634436a64883ffeca346fb";
+ };
+ }
+ {
+ name = "neo_async___neo_async_2.6.1.tgz";
+ path = fetchurl {
+ name = "neo_async___neo_async_2.6.1.tgz";
+ url = "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz";
+ sha1 = "ac27ada66167fa8849a6addd837f6b189ad2081c";
+ };
+ }
+ {
+ name = "nice_try___nice_try_1.0.5.tgz";
+ path = fetchurl {
+ name = "nice_try___nice_try_1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz";
+ sha1 = "a3378a7696ce7d223e88fc9b764bd7ef1089e366";
+ };
+ }
+ {
+ name = "no_case___no_case_2.3.2.tgz";
+ path = fetchurl {
+ name = "no_case___no_case_2.3.2.tgz";
+ url = "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz";
+ sha1 = "60b813396be39b3f1288a4c1ed5d1e7d28b464ac";
+ };
+ }
+ {
+ name = "node_forge___node_forge_0.9.0.tgz";
+ path = fetchurl {
+ name = "node_forge___node_forge_0.9.0.tgz";
+ url = "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz";
+ sha1 = "d624050edbb44874adca12bb9a52ec63cb782579";
+ };
+ }
+ {
+ name = "node_ipc___node_ipc_9.1.1.tgz";
+ path = fetchurl {
+ name = "node_ipc___node_ipc_9.1.1.tgz";
+ url = "https://registry.yarnpkg.com/node-ipc/-/node-ipc-9.1.1.tgz";
+ sha1 = "4e245ed6938e65100e595ebc5dc34b16e8dd5d69";
+ };
+ }
+ {
+ name = "node_libs_browser___node_libs_browser_2.2.1.tgz";
+ path = fetchurl {
+ name = "node_libs_browser___node_libs_browser_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz";
+ sha1 = "b64f513d18338625f90346d27b0d235e631f6425";
+ };
+ }
+ {
+ name = "node_releases___node_releases_1.1.58.tgz";
+ path = fetchurl {
+ name = "node_releases___node_releases_1.1.58.tgz";
+ url = "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz";
+ sha1 = "8ee20eef30fa60e52755fcc0942def5a734fe935";
+ };
+ }
+ {
+ name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
+ path = fetchurl {
+ name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
+ url = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz";
+ sha1 = "e66db1838b200c1dfc233225d12cb36520e234a8";
+ };
+ }
+ {
+ name = "normalize_path___normalize_path_1.0.0.tgz";
+ path = fetchurl {
+ name = "normalize_path___normalize_path_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz";
+ sha1 = "32d0e472f91ff345701c15a8311018d3b0a90379";
+ };
+ }
+ {
+ name = "normalize_path___normalize_path_2.1.1.tgz";
+ path = fetchurl {
+ name = "normalize_path___normalize_path_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz";
+ sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
+ };
+ }
+ {
+ name = "normalize_path___normalize_path_3.0.0.tgz";
+ path = fetchurl {
+ name = "normalize_path___normalize_path_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz";
+ sha1 = "0dcd69ff23a1c9b11fd0978316644a0388216a65";
+ };
+ }
+ {
+ name = "normalize_range___normalize_range_0.1.2.tgz";
+ path = fetchurl {
+ name = "normalize_range___normalize_range_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz";
+ sha1 = "2d10c06bdfd312ea9777695a4d28439456b75942";
+ };
+ }
+ {
+ name = "normalize_url___normalize_url_1.9.1.tgz";
+ path = fetchurl {
+ name = "normalize_url___normalize_url_1.9.1.tgz";
+ url = "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz";
+ sha1 = "2cc0d66b31ea23036458436e3620d85954c66c3c";
+ };
+ }
+ {
+ name = "normalize_url___normalize_url_3.3.0.tgz";
+ path = fetchurl {
+ name = "normalize_url___normalize_url_3.3.0.tgz";
+ url = "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz";
+ sha1 = "b2e1c4dc4f7c6d57743df733a4f5978d18650559";
+ };
+ }
+ {
+ name = "npm_run_path___npm_run_path_2.0.2.tgz";
+ path = fetchurl {
+ name = "npm_run_path___npm_run_path_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz";
+ sha1 = "35a9232dfa35d7067b4cb2ddf2357b1871536c5f";
+ };
+ }
+ {
+ name = "npm_run_path___npm_run_path_4.0.1.tgz";
+ path = fetchurl {
+ name = "npm_run_path___npm_run_path_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz";
+ sha1 = "b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea";
+ };
+ }
+ {
+ name = "nth_check___nth_check_1.0.2.tgz";
+ path = fetchurl {
+ name = "nth_check___nth_check_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz";
+ sha1 = "b2bd295c37e3dd58a3bf0700376663ba4d9cf05c";
+ };
+ }
+ {
+ name = "num2fraction___num2fraction_1.2.2.tgz";
+ path = fetchurl {
+ name = "num2fraction___num2fraction_1.2.2.tgz";
+ url = "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz";
+ sha1 = "6f682b6a027a4e9ddfa4564cd2589d1d4e669ede";
+ };
+ }
+ {
+ name = "oauth_sign___oauth_sign_0.9.0.tgz";
+ path = fetchurl {
+ name = "oauth_sign___oauth_sign_0.9.0.tgz";
+ url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
+ sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
+ };
+ }
+ {
+ name = "object_assign___object_assign_4.1.1.tgz";
+ path = fetchurl {
+ name = "object_assign___object_assign_4.1.1.tgz";
+ url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
+ sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+ };
+ }
+ {
+ name = "object_copy___object_copy_0.1.0.tgz";
+ path = fetchurl {
+ name = "object_copy___object_copy_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz";
+ sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
+ };
+ }
+ {
+ name = "object_hash___object_hash_1.3.1.tgz";
+ path = fetchurl {
+ name = "object_hash___object_hash_1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz";
+ sha1 = "fde452098a951cb145f039bb7d455449ddc126df";
+ };
+ }
+ {
+ name = "object_inspect___object_inspect_1.7.0.tgz";
+ path = fetchurl {
+ name = "object_inspect___object_inspect_1.7.0.tgz";
+ url = "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz";
+ sha1 = "f4f6bd181ad77f006b5ece60bd0b6f398ff74a67";
+ };
+ }
+ {
+ name = "object_is___object_is_1.1.2.tgz";
+ path = fetchurl {
+ name = "object_is___object_is_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz";
+ sha1 = "c5d2e87ff9e119f78b7a088441519e2eec1573b6";
+ };
+ }
+ {
+ name = "object_keys___object_keys_1.1.1.tgz";
+ path = fetchurl {
+ name = "object_keys___object_keys_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz";
+ sha1 = "1c47f272df277f3b1daf061677d9c82e2322c60e";
+ };
+ }
+ {
+ name = "object_visit___object_visit_1.0.1.tgz";
+ path = fetchurl {
+ name = "object_visit___object_visit_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz";
+ sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
+ };
+ }
+ {
+ name = "object.assign___object.assign_4.1.0.tgz";
+ path = fetchurl {
+ name = "object.assign___object.assign_4.1.0.tgz";
+ url = "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz";
+ sha1 = "968bf1100d7956bb3ca086f006f846b3bc4008da";
+ };
+ }
+ {
+ name = "object.getownpropertydescriptors___object.getownpropertydescriptors_2.1.0.tgz";
+ path = fetchurl {
+ name = "object.getownpropertydescriptors___object.getownpropertydescriptors_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz";
+ sha1 = "369bf1f9592d8ab89d712dced5cb81c7c5352649";
+ };
+ }
+ {
+ name = "object.pick___object.pick_1.3.0.tgz";
+ path = fetchurl {
+ name = "object.pick___object.pick_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz";
+ sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
+ };
+ }
+ {
+ name = "object.values___object.values_1.1.1.tgz";
+ path = fetchurl {
+ name = "object.values___object.values_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz";
+ sha1 = "68a99ecde356b7e9295a3c5e0ce31dc8c953de5e";
+ };
+ }
+ {
+ name = "obuf___obuf_1.1.2.tgz";
+ path = fetchurl {
+ name = "obuf___obuf_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz";
+ sha1 = "09bea3343d41859ebd446292d11c9d4db619084e";
+ };
+ }
+ {
+ name = "on_finished___on_finished_2.3.0.tgz";
+ path = fetchurl {
+ name = "on_finished___on_finished_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
+ sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+ };
+ }
+ {
+ name = "on_headers___on_headers_1.0.2.tgz";
+ path = fetchurl {
+ name = "on_headers___on_headers_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz";
+ sha1 = "772b0ae6aaa525c399e489adfad90c403eb3c28f";
+ };
+ }
+ {
+ name = "once___once_1.4.0.tgz";
+ path = fetchurl {
+ name = "once___once_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
+ sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+ };
+ }
+ {
+ name = "onetime___onetime_2.0.1.tgz";
+ path = fetchurl {
+ name = "onetime___onetime_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz";
+ sha1 = "067428230fd67443b2794b22bba528b6867962d4";
+ };
+ }
+ {
+ name = "onetime___onetime_5.1.0.tgz";
+ path = fetchurl {
+ name = "onetime___onetime_5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz";
+ sha1 = "fff0f3c91617fe62bb50189636e99ac8a6df7be5";
+ };
+ }
+ {
+ name = "open___open_6.4.0.tgz";
+ path = fetchurl {
+ name = "open___open_6.4.0.tgz";
+ url = "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz";
+ sha1 = "5c13e96d0dc894686164f18965ecfe889ecfc8a9";
+ };
+ }
+ {
+ name = "opener___opener_1.5.1.tgz";
+ path = fetchurl {
+ name = "opener___opener_1.5.1.tgz";
+ url = "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz";
+ sha1 = "6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed";
+ };
+ }
+ {
+ name = "opn___opn_5.5.0.tgz";
+ path = fetchurl {
+ name = "opn___opn_5.5.0.tgz";
+ url = "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz";
+ sha1 = "fc7164fab56d235904c51c3b27da6758ca3b9bfc";
+ };
+ }
+ {
+ name = "optionator___optionator_0.9.1.tgz";
+ path = fetchurl {
+ name = "optionator___optionator_0.9.1.tgz";
+ url = "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz";
+ sha1 = "4f236a6373dae0566a6d43e1326674f50c291499";
+ };
+ }
+ {
+ name = "ora___ora_3.4.0.tgz";
+ path = fetchurl {
+ name = "ora___ora_3.4.0.tgz";
+ url = "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz";
+ sha1 = "bf0752491059a3ef3ed4c85097531de9fdbcd318";
+ };
+ }
+ {
+ name = "original___original_1.0.2.tgz";
+ path = fetchurl {
+ name = "original___original_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz";
+ sha1 = "e442a61cffe1c5fd20a65f3261c26663b303f25f";
+ };
+ }
+ {
+ name = "os_browserify___os_browserify_0.3.0.tgz";
+ path = fetchurl {
+ name = "os_browserify___os_browserify_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz";
+ sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27";
+ };
+ }
+ {
+ name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
+ path = fetchurl {
+ name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
+ sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
+ };
+ }
+ {
+ name = "p_finally___p_finally_1.0.0.tgz";
+ path = fetchurl {
+ name = "p_finally___p_finally_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz";
+ sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
+ };
+ }
+ {
+ name = "p_finally___p_finally_2.0.1.tgz";
+ path = fetchurl {
+ name = "p_finally___p_finally_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz";
+ sha1 = "bd6fcaa9c559a096b680806f4d657b3f0f240561";
+ };
+ }
+ {
+ name = "p_limit___p_limit_1.3.0.tgz";
+ path = fetchurl {
+ name = "p_limit___p_limit_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz";
+ sha1 = "b86bd5f0c25690911c7590fcbfc2010d54b3ccb8";
+ };
+ }
+ {
+ name = "p_limit___p_limit_2.3.0.tgz";
+ path = fetchurl {
+ name = "p_limit___p_limit_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz";
+ sha1 = "3dd33c647a214fdfffd835933eb086da0dc21db1";
+ };
+ }
+ {
+ name = "p_locate___p_locate_2.0.0.tgz";
+ path = fetchurl {
+ name = "p_locate___p_locate_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz";
+ sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
+ };
+ }
+ {
+ name = "p_locate___p_locate_3.0.0.tgz";
+ path = fetchurl {
+ name = "p_locate___p_locate_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz";
+ sha1 = "322d69a05c0264b25997d9f40cd8a891ab0064a4";
+ };
+ }
+ {
+ name = "p_locate___p_locate_4.1.0.tgz";
+ path = fetchurl {
+ name = "p_locate___p_locate_4.1.0.tgz";
+ url = "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz";
+ sha1 = "a3428bb7088b3a60292f66919278b7c297ad4f07";
+ };
+ }
+ {
+ name = "p_map___p_map_2.1.0.tgz";
+ path = fetchurl {
+ name = "p_map___p_map_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz";
+ sha1 = "310928feef9c9ecc65b68b17693018a665cea175";
+ };
+ }
+ {
+ name = "p_map___p_map_3.0.0.tgz";
+ path = fetchurl {
+ name = "p_map___p_map_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz";
+ sha1 = "d704d9af8a2ba684e2600d9a215983d4141a979d";
+ };
+ }
+ {
+ name = "p_retry___p_retry_3.0.1.tgz";
+ path = fetchurl {
+ name = "p_retry___p_retry_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz";
+ sha1 = "316b4c8893e2c8dc1cfa891f406c4b422bebf328";
+ };
+ }
+ {
+ name = "p_try___p_try_1.0.0.tgz";
+ path = fetchurl {
+ name = "p_try___p_try_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz";
+ sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
+ };
+ }
+ {
+ name = "p_try___p_try_2.2.0.tgz";
+ path = fetchurl {
+ name = "p_try___p_try_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz";
+ sha1 = "cb2868540e313d61de58fafbe35ce9004d5540e6";
+ };
+ }
+ {
+ name = "pako___pako_1.0.11.tgz";
+ path = fetchurl {
+ name = "pako___pako_1.0.11.tgz";
+ url = "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz";
+ sha1 = "6c9599d340d54dfd3946380252a35705a6b992bf";
+ };
+ }
+ {
+ name = "parallel_transform___parallel_transform_1.2.0.tgz";
+ path = fetchurl {
+ name = "parallel_transform___parallel_transform_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz";
+ sha1 = "9049ca37d6cb2182c3b1d2c720be94d14a5814fc";
+ };
+ }
+ {
+ name = "param_case___param_case_2.1.1.tgz";
+ path = fetchurl {
+ name = "param_case___param_case_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz";
+ sha1 = "df94fd8cf6531ecf75e6bef9a0858fbc72be2247";
+ };
+ }
+ {
+ name = "parent_module___parent_module_1.0.1.tgz";
+ path = fetchurl {
+ name = "parent_module___parent_module_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz";
+ sha1 = "691d2709e78c79fae3a156622452d00762caaaa2";
+ };
+ }
+ {
+ name = "parse_asn1___parse_asn1_5.1.5.tgz";
+ path = fetchurl {
+ name = "parse_asn1___parse_asn1_5.1.5.tgz";
+ url = "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz";
+ sha1 = "003271343da58dc94cace494faef3d2147ecea0e";
+ };
+ }
+ {
+ name = "parse_json___parse_json_4.0.0.tgz";
+ path = fetchurl {
+ name = "parse_json___parse_json_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz";
+ sha1 = "be35f5425be1f7f6c747184f98a788cb99477ee0";
+ };
+ }
+ {
+ name = "parse_json___parse_json_5.0.0.tgz";
+ path = fetchurl {
+ name = "parse_json___parse_json_5.0.0.tgz";
+ url = "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz";
+ sha1 = "73e5114c986d143efa3712d4ea24db9a4266f60f";
+ };
+ }
+ {
+ name = "parse5_htmlparser2_tree_adapter___parse5_htmlparser2_tree_adapter_5.1.1.tgz";
+ path = fetchurl {
+ name = "parse5_htmlparser2_tree_adapter___parse5_htmlparser2_tree_adapter_5.1.1.tgz";
+ url = "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz";
+ sha1 = "e8c743d4e92194d5293ecde2b08be31e67461cbc";
+ };
+ }
+ {
+ name = "parse5___parse5_5.1.1.tgz";
+ path = fetchurl {
+ name = "parse5___parse5_5.1.1.tgz";
+ url = "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz";
+ sha1 = "f68e4e5ba1852ac2cadc00f4555fff6c2abb6178";
+ };
+ }
+ {
+ name = "parseurl___parseurl_1.3.3.tgz";
+ path = fetchurl {
+ name = "parseurl___parseurl_1.3.3.tgz";
+ url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz";
+ sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4";
+ };
+ }
+ {
+ name = "pascalcase___pascalcase_0.1.1.tgz";
+ path = fetchurl {
+ name = "pascalcase___pascalcase_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz";
+ sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
+ };
+ }
+ {
+ name = "path_browserify___path_browserify_0.0.1.tgz";
+ path = fetchurl {
+ name = "path_browserify___path_browserify_0.0.1.tgz";
+ url = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz";
+ sha1 = "e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a";
+ };
+ }
+ {
+ name = "path_dirname___path_dirname_1.0.2.tgz";
+ path = fetchurl {
+ name = "path_dirname___path_dirname_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz";
+ sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
+ };
+ }
+ {
+ name = "path_exists___path_exists_2.1.0.tgz";
+ path = fetchurl {
+ name = "path_exists___path_exists_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz";
+ sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
+ };
+ }
+ {
+ name = "path_exists___path_exists_3.0.0.tgz";
+ path = fetchurl {
+ name = "path_exists___path_exists_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz";
+ sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
+ };
+ }
+ {
+ name = "path_exists___path_exists_4.0.0.tgz";
+ path = fetchurl {
+ name = "path_exists___path_exists_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz";
+ sha1 = "513bdbe2d3b95d7762e8c1137efa195c6c61b5b3";
+ };
+ }
+ {
+ name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
+ path = fetchurl {
+ name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+ sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+ };
+ }
+ {
+ name = "path_is_inside___path_is_inside_1.0.2.tgz";
+ path = fetchurl {
+ name = "path_is_inside___path_is_inside_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz";
+ sha1 = "365417dede44430d1c11af61027facf074bdfc53";
+ };
+ }
+ {
+ name = "path_key___path_key_2.0.1.tgz";
+ path = fetchurl {
+ name = "path_key___path_key_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz";
+ sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
+ };
+ }
+ {
+ name = "path_key___path_key_3.1.1.tgz";
+ path = fetchurl {
+ name = "path_key___path_key_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz";
+ sha1 = "581f6ade658cbba65a0d3380de7753295054f375";
+ };
+ }
+ {
+ name = "path_parse___path_parse_1.0.6.tgz";
+ path = fetchurl {
+ name = "path_parse___path_parse_1.0.6.tgz";
+ url = "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz";
+ sha1 = "d62dbb5679405d72c4737ec58600e9ddcf06d24c";
+ };
+ }
+ {
+ name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
+ path = fetchurl {
+ name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
+ url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
+ sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
+ };
+ }
+ {
+ name = "path_type___path_type_3.0.0.tgz";
+ path = fetchurl {
+ name = "path_type___path_type_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz";
+ sha1 = "cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f";
+ };
+ }
+ {
+ name = "pbkdf2___pbkdf2_3.1.1.tgz";
+ path = fetchurl {
+ name = "pbkdf2___pbkdf2_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz";
+ sha1 = "cb8724b0fada984596856d1a6ebafd3584654b94";
+ };
+ }
+ {
+ name = "performance_now___performance_now_2.1.0.tgz";
+ path = fetchurl {
+ name = "performance_now___performance_now_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
+ sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+ };
+ }
+ {
+ name = "picomatch___picomatch_2.2.2.tgz";
+ path = fetchurl {
+ name = "picomatch___picomatch_2.2.2.tgz";
+ url = "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz";
+ sha1 = "21f333e9b6b8eaff02468f5146ea406d345f4dad";
+ };
+ }
+ {
+ name = "pify___pify_2.3.0.tgz";
+ path = fetchurl {
+ name = "pify___pify_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
+ sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
+ };
+ }
+ {
+ name = "pify___pify_3.0.0.tgz";
+ path = fetchurl {
+ name = "pify___pify_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz";
+ sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
+ };
+ }
+ {
+ name = "pify___pify_4.0.1.tgz";
+ path = fetchurl {
+ name = "pify___pify_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz";
+ sha1 = "4b2cd25c50d598735c50292224fd8c6df41e3231";
+ };
+ }
+ {
+ name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
+ path = fetchurl {
+ name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
+ sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
+ };
+ }
+ {
+ name = "pinkie___pinkie_2.0.4.tgz";
+ path = fetchurl {
+ name = "pinkie___pinkie_2.0.4.tgz";
+ url = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz";
+ sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
+ };
+ }
+ {
+ name = "pkg_dir___pkg_dir_1.0.0.tgz";
+ path = fetchurl {
+ name = "pkg_dir___pkg_dir_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz";
+ sha1 = "7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4";
+ };
+ }
+ {
+ name = "pkg_dir___pkg_dir_3.0.0.tgz";
+ path = fetchurl {
+ name = "pkg_dir___pkg_dir_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz";
+ sha1 = "2749020f239ed990881b1f71210d51eb6523bea3";
+ };
+ }
+ {
+ name = "pkg_dir___pkg_dir_4.2.0.tgz";
+ path = fetchurl {
+ name = "pkg_dir___pkg_dir_4.2.0.tgz";
+ url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz";
+ sha1 = "f099133df7ede422e81d1d8448270eeb3e4261f3";
+ };
+ }
+ {
+ name = "pkg_up___pkg_up_2.0.0.tgz";
+ path = fetchurl {
+ name = "pkg_up___pkg_up_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz";
+ sha1 = "c819ac728059a461cab1c3889a2be3c49a004d7f";
+ };
+ }
+ {
+ name = "pnp_webpack_plugin___pnp_webpack_plugin_1.6.4.tgz";
+ path = fetchurl {
+ name = "pnp_webpack_plugin___pnp_webpack_plugin_1.6.4.tgz";
+ url = "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz";
+ sha1 = "c9711ac4dc48a685dabafc86f8b6dd9f8df84149";
+ };
+ }
+ {
+ name = "portfinder___portfinder_1.0.26.tgz";
+ path = fetchurl {
+ name = "portfinder___portfinder_1.0.26.tgz";
+ url = "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz";
+ sha1 = "475658d56ca30bed72ac7f1378ed350bd1b64e70";
+ };
+ }
+ {
+ name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
+ path = fetchurl {
+ name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
+ url = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
+ sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
+ };
+ }
+ {
+ name = "postcss_calc___postcss_calc_7.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_calc___postcss_calc_7.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz";
+ sha1 = "504efcd008ca0273120568b0792b16cdcde8aac1";
+ };
+ }
+ {
+ name = "postcss_colormin___postcss_colormin_4.0.3.tgz";
+ path = fetchurl {
+ name = "postcss_colormin___postcss_colormin_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz";
+ sha1 = "ae060bce93ed794ac71264f08132d550956bd381";
+ };
+ }
+ {
+ name = "postcss_convert_values___postcss_convert_values_4.0.1.tgz";
+ path = fetchurl {
+ name = "postcss_convert_values___postcss_convert_values_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz";
+ sha1 = "ca3813ed4da0f812f9d43703584e449ebe189a7f";
+ };
+ }
+ {
+ name = "postcss_discard_comments___postcss_discard_comments_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_discard_comments___postcss_discard_comments_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz";
+ sha1 = "1fbabd2c246bff6aaad7997b2b0918f4d7af4033";
+ };
+ }
+ {
+ name = "postcss_discard_duplicates___postcss_discard_duplicates_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_discard_duplicates___postcss_discard_duplicates_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz";
+ sha1 = "3fe133cd3c82282e550fc9b239176a9207b784eb";
+ };
+ }
+ {
+ name = "postcss_discard_empty___postcss_discard_empty_4.0.1.tgz";
+ path = fetchurl {
+ name = "postcss_discard_empty___postcss_discard_empty_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz";
+ sha1 = "c8c951e9f73ed9428019458444a02ad90bb9f765";
+ };
+ }
+ {
+ name = "postcss_discard_overridden___postcss_discard_overridden_4.0.1.tgz";
+ path = fetchurl {
+ name = "postcss_discard_overridden___postcss_discard_overridden_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz";
+ sha1 = "652aef8a96726f029f5e3e00146ee7a4e755ff57";
+ };
+ }
+ {
+ name = "postcss_load_config___postcss_load_config_2.1.0.tgz";
+ path = fetchurl {
+ name = "postcss_load_config___postcss_load_config_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz";
+ sha1 = "c84d692b7bb7b41ddced94ee62e8ab31b417b003";
+ };
+ }
+ {
+ name = "postcss_loader___postcss_loader_3.0.0.tgz";
+ path = fetchurl {
+ name = "postcss_loader___postcss_loader_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz";
+ sha1 = "6b97943e47c72d845fa9e03f273773d4e8dd6c2d";
+ };
+ }
+ {
+ name = "postcss_merge_longhand___postcss_merge_longhand_4.0.11.tgz";
+ path = fetchurl {
+ name = "postcss_merge_longhand___postcss_merge_longhand_4.0.11.tgz";
+ url = "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz";
+ sha1 = "62f49a13e4a0ee04e7b98f42bb16062ca2549e24";
+ };
+ }
+ {
+ name = "postcss_merge_rules___postcss_merge_rules_4.0.3.tgz";
+ path = fetchurl {
+ name = "postcss_merge_rules___postcss_merge_rules_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz";
+ sha1 = "362bea4ff5a1f98e4075a713c6cb25aefef9a650";
+ };
+ }
+ {
+ name = "postcss_minify_font_values___postcss_minify_font_values_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_minify_font_values___postcss_minify_font_values_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz";
+ sha1 = "cd4c344cce474343fac5d82206ab2cbcb8afd5a6";
+ };
+ }
+ {
+ name = "postcss_minify_gradients___postcss_minify_gradients_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_minify_gradients___postcss_minify_gradients_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz";
+ sha1 = "93b29c2ff5099c535eecda56c4aa6e665a663471";
+ };
+ }
+ {
+ name = "postcss_minify_params___postcss_minify_params_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_minify_params___postcss_minify_params_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz";
+ sha1 = "6b9cef030c11e35261f95f618c90036d680db874";
+ };
+ }
+ {
+ name = "postcss_minify_selectors___postcss_minify_selectors_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_minify_selectors___postcss_minify_selectors_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz";
+ sha1 = "e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8";
+ };
+ }
+ {
+ name = "postcss_modules_extract_imports___postcss_modules_extract_imports_2.0.0.tgz";
+ path = fetchurl {
+ name = "postcss_modules_extract_imports___postcss_modules_extract_imports_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz";
+ sha1 = "818719a1ae1da325f9832446b01136eeb493cd7e";
+ };
+ }
+ {
+ name = "postcss_modules_local_by_default___postcss_modules_local_by_default_3.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_modules_local_by_default___postcss_modules_local_by_default_3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz";
+ sha1 = "e8a6561be914aaf3c052876377524ca90dbb7915";
+ };
+ }
+ {
+ name = "postcss_modules_scope___postcss_modules_scope_2.2.0.tgz";
+ path = fetchurl {
+ name = "postcss_modules_scope___postcss_modules_scope_2.2.0.tgz";
+ url = "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz";
+ sha1 = "385cae013cc7743f5a7d7602d1073a89eaae62ee";
+ };
+ }
+ {
+ name = "postcss_modules_values___postcss_modules_values_3.0.0.tgz";
+ path = fetchurl {
+ name = "postcss_modules_values___postcss_modules_values_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz";
+ sha1 = "5b5000d6ebae29b4255301b4a3a54574423e7f10";
+ };
+ }
+ {
+ name = "postcss_normalize_charset___postcss_normalize_charset_4.0.1.tgz";
+ path = fetchurl {
+ name = "postcss_normalize_charset___postcss_normalize_charset_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz";
+ sha1 = "8b35add3aee83a136b0471e0d59be58a50285dd4";
+ };
+ }
+ {
+ name = "postcss_normalize_display_values___postcss_normalize_display_values_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_normalize_display_values___postcss_normalize_display_values_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz";
+ sha1 = "0dbe04a4ce9063d4667ed2be476bb830c825935a";
+ };
+ }
+ {
+ name = "postcss_normalize_positions___postcss_normalize_positions_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_normalize_positions___postcss_normalize_positions_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz";
+ sha1 = "05f757f84f260437378368a91f8932d4b102917f";
+ };
+ }
+ {
+ name = "postcss_normalize_repeat_style___postcss_normalize_repeat_style_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_normalize_repeat_style___postcss_normalize_repeat_style_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz";
+ sha1 = "c4ebbc289f3991a028d44751cbdd11918b17910c";
+ };
+ }
+ {
+ name = "postcss_normalize_string___postcss_normalize_string_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_normalize_string___postcss_normalize_string_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz";
+ sha1 = "cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c";
+ };
+ }
+ {
+ name = "postcss_normalize_timing_functions___postcss_normalize_timing_functions_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_normalize_timing_functions___postcss_normalize_timing_functions_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz";
+ sha1 = "8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9";
+ };
+ }
+ {
+ name = "postcss_normalize_unicode___postcss_normalize_unicode_4.0.1.tgz";
+ path = fetchurl {
+ name = "postcss_normalize_unicode___postcss_normalize_unicode_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz";
+ sha1 = "841bd48fdcf3019ad4baa7493a3d363b52ae1cfb";
+ };
+ }
+ {
+ name = "postcss_normalize_url___postcss_normalize_url_4.0.1.tgz";
+ path = fetchurl {
+ name = "postcss_normalize_url___postcss_normalize_url_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz";
+ sha1 = "10e437f86bc7c7e58f7b9652ed878daaa95faae1";
+ };
+ }
+ {
+ name = "postcss_normalize_whitespace___postcss_normalize_whitespace_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_normalize_whitespace___postcss_normalize_whitespace_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz";
+ sha1 = "bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82";
+ };
+ }
+ {
+ name = "postcss_ordered_values___postcss_ordered_values_4.1.2.tgz";
+ path = fetchurl {
+ name = "postcss_ordered_values___postcss_ordered_values_4.1.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz";
+ sha1 = "0cf75c820ec7d5c4d280189559e0b571ebac0eee";
+ };
+ }
+ {
+ name = "postcss_reduce_initial___postcss_reduce_initial_4.0.3.tgz";
+ path = fetchurl {
+ name = "postcss_reduce_initial___postcss_reduce_initial_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz";
+ sha1 = "7fd42ebea5e9c814609639e2c2e84ae270ba48df";
+ };
+ }
+ {
+ name = "postcss_reduce_transforms___postcss_reduce_transforms_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_reduce_transforms___postcss_reduce_transforms_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz";
+ sha1 = "17efa405eacc6e07be3414a5ca2d1074681d4e29";
+ };
+ }
+ {
+ name = "postcss_selector_parser___postcss_selector_parser_3.1.2.tgz";
+ path = fetchurl {
+ name = "postcss_selector_parser___postcss_selector_parser_3.1.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz";
+ sha1 = "b310f5c4c0fdaf76f94902bbaa30db6aa84f5270";
+ };
+ }
+ {
+ name = "postcss_selector_parser___postcss_selector_parser_6.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_selector_parser___postcss_selector_parser_6.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz";
+ sha1 = "934cf799d016c83411859e09dcecade01286ec5c";
+ };
+ }
+ {
+ name = "postcss_svgo___postcss_svgo_4.0.2.tgz";
+ path = fetchurl {
+ name = "postcss_svgo___postcss_svgo_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz";
+ sha1 = "17b997bc711b333bab143aaed3b8d3d6e3d38258";
+ };
+ }
+ {
+ name = "postcss_unique_selectors___postcss_unique_selectors_4.0.1.tgz";
+ path = fetchurl {
+ name = "postcss_unique_selectors___postcss_unique_selectors_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz";
+ sha1 = "9446911f3289bfd64c6d680f073c03b1f9ee4bac";
+ };
+ }
+ {
+ name = "postcss_value_parser___postcss_value_parser_3.3.1.tgz";
+ path = fetchurl {
+ name = "postcss_value_parser___postcss_value_parser_3.3.1.tgz";
+ url = "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz";
+ sha1 = "9ff822547e2893213cf1c30efa51ac5fd1ba8281";
+ };
+ }
+ {
+ name = "postcss_value_parser___postcss_value_parser_4.1.0.tgz";
+ path = fetchurl {
+ name = "postcss_value_parser___postcss_value_parser_4.1.0.tgz";
+ url = "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz";
+ sha1 = "443f6a20ced6481a2bda4fa8532a6e55d789a2cb";
+ };
+ }
+ {
+ name = "postcss___postcss_7.0.32.tgz";
+ path = fetchurl {
+ name = "postcss___postcss_7.0.32.tgz";
+ url = "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz";
+ sha1 = "4310d6ee347053da3433db2be492883d62cec59d";
+ };
+ }
+ {
+ name = "prelude_ls___prelude_ls_1.2.1.tgz";
+ path = fetchurl {
+ name = "prelude_ls___prelude_ls_1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz";
+ sha1 = "debc6489d7a6e6b0e7611888cec880337d316396";
+ };
+ }
+ {
+ name = "prepend_http___prepend_http_1.0.4.tgz";
+ path = fetchurl {
+ name = "prepend_http___prepend_http_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz";
+ sha1 = "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc";
+ };
+ }
+ {
+ name = "prettier_linter_helpers___prettier_linter_helpers_1.0.0.tgz";
+ path = fetchurl {
+ name = "prettier_linter_helpers___prettier_linter_helpers_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz";
+ sha1 = "d23d41fe1375646de2d0104d3454a3008802cf7b";
+ };
+ }
+ {
+ name = "prettier___prettier_1.19.1.tgz";
+ path = fetchurl {
+ name = "prettier___prettier_1.19.1.tgz";
+ url = "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz";
+ sha1 = "f7d7f5ff8a9cd872a7be4ca142095956a60797cb";
+ };
+ }
+ {
+ name = "prettier___prettier_2.0.5.tgz";
+ path = fetchurl {
+ name = "prettier___prettier_2.0.5.tgz";
+ url = "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz";
+ sha1 = "d6d56282455243f2f92cc1716692c08aa31522d4";
+ };
+ }
+ {
+ name = "pretty_bytes___pretty_bytes_5.3.0.tgz";
+ path = fetchurl {
+ name = "pretty_bytes___pretty_bytes_5.3.0.tgz";
+ url = "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz";
+ sha1 = "f2849e27db79fb4d6cfe24764fc4134f165989f2";
+ };
+ }
+ {
+ name = "pretty_error___pretty_error_2.1.1.tgz";
+ path = fetchurl {
+ name = "pretty_error___pretty_error_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz";
+ sha1 = "5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3";
+ };
+ }
+ {
+ name = "private___private_0.1.8.tgz";
+ path = fetchurl {
+ name = "private___private_0.1.8.tgz";
+ url = "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz";
+ sha1 = "2381edb3689f7a53d653190060fcf822d2f368ff";
+ };
+ }
+ {
+ name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
+ path = fetchurl {
+ name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
+ sha1 = "7820d9b16120cc55ca9ae7792680ae7dba6d7fe2";
+ };
+ }
+ {
+ name = "process___process_0.11.10.tgz";
+ path = fetchurl {
+ name = "process___process_0.11.10.tgz";
+ url = "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz";
+ sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
+ };
+ }
+ {
+ name = "progress___progress_2.0.3.tgz";
+ path = fetchurl {
+ name = "progress___progress_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz";
+ sha1 = "7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8";
+ };
+ }
+ {
+ name = "promise_inflight___promise_inflight_1.0.1.tgz";
+ path = fetchurl {
+ name = "promise_inflight___promise_inflight_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz";
+ sha1 = "98472870bf228132fcbdd868129bad12c3c029e3";
+ };
+ }
+ {
+ name = "proxy_addr___proxy_addr_2.0.6.tgz";
+ path = fetchurl {
+ name = "proxy_addr___proxy_addr_2.0.6.tgz";
+ url = "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz";
+ sha1 = "fdc2336505447d3f2f2c638ed272caf614bbb2bf";
+ };
+ }
+ {
+ name = "prr___prr_1.0.1.tgz";
+ path = fetchurl {
+ name = "prr___prr_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz";
+ sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
+ };
+ }
+ {
+ name = "pseudomap___pseudomap_1.0.2.tgz";
+ path = fetchurl {
+ name = "pseudomap___pseudomap_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz";
+ sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
+ };
+ }
+ {
+ name = "psl___psl_1.8.0.tgz";
+ path = fetchurl {
+ name = "psl___psl_1.8.0.tgz";
+ url = "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz";
+ sha1 = "9326f8bcfb013adcc005fdff056acce020e51c24";
+ };
+ }
+ {
+ name = "public_encrypt___public_encrypt_4.0.3.tgz";
+ path = fetchurl {
+ name = "public_encrypt___public_encrypt_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz";
+ sha1 = "4fcc9d77a07e48ba7527e7cbe0de33d0701331e0";
+ };
+ }
+ {
+ name = "pump___pump_2.0.1.tgz";
+ path = fetchurl {
+ name = "pump___pump_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz";
+ sha1 = "12399add6e4cf7526d973cbc8b5ce2e2908b3909";
+ };
+ }
+ {
+ name = "pump___pump_3.0.0.tgz";
+ path = fetchurl {
+ name = "pump___pump_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz";
+ sha1 = "b4a2116815bde2f4e1ea602354e8c75565107a64";
+ };
+ }
+ {
+ name = "pumpify___pumpify_1.5.1.tgz";
+ path = fetchurl {
+ name = "pumpify___pumpify_1.5.1.tgz";
+ url = "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz";
+ sha1 = "36513be246ab27570b1a374a5ce278bfd74370ce";
+ };
+ }
+ {
+ name = "punycode___punycode_1.3.2.tgz";
+ path = fetchurl {
+ name = "punycode___punycode_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz";
+ sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
+ };
+ }
+ {
+ name = "punycode___punycode_1.4.1.tgz";
+ path = fetchurl {
+ name = "punycode___punycode_1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz";
+ sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
+ };
+ }
+ {
+ name = "punycode___punycode_2.1.1.tgz";
+ path = fetchurl {
+ name = "punycode___punycode_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
+ sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
+ };
+ }
+ {
+ name = "q___q_1.5.1.tgz";
+ path = fetchurl {
+ name = "q___q_1.5.1.tgz";
+ url = "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz";
+ sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
+ };
+ }
+ {
+ name = "qs___qs_6.7.0.tgz";
+ path = fetchurl {
+ name = "qs___qs_6.7.0.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz";
+ sha1 = "41dc1a015e3d581f1621776be31afb2876a9b1bc";
+ };
+ }
+ {
+ name = "qs___qs_6.5.2.tgz";
+ path = fetchurl {
+ name = "qs___qs_6.5.2.tgz";
+ url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
+ sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
+ };
+ }
+ {
+ name = "query_string___query_string_4.3.4.tgz";
+ path = fetchurl {
+ name = "query_string___query_string_4.3.4.tgz";
+ url = "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz";
+ sha1 = "bbb693b9ca915c232515b228b1a02b609043dbeb";
+ };
+ }
+ {
+ name = "querystring_es3___querystring_es3_0.2.1.tgz";
+ path = fetchurl {
+ name = "querystring_es3___querystring_es3_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz";
+ sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
+ };
+ }
+ {
+ name = "querystring___querystring_0.2.0.tgz";
+ path = fetchurl {
+ name = "querystring___querystring_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz";
+ sha1 = "b209849203bb25df820da756e747005878521620";
+ };
+ }
+ {
+ name = "querystringify___querystringify_2.1.1.tgz";
+ path = fetchurl {
+ name = "querystringify___querystringify_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz";
+ sha1 = "60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e";
+ };
+ }
+ {
+ name = "randombytes___randombytes_2.1.0.tgz";
+ path = fetchurl {
+ name = "randombytes___randombytes_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz";
+ sha1 = "df6f84372f0270dc65cdf6291349ab7a473d4f2a";
+ };
+ }
+ {
+ name = "randomfill___randomfill_1.0.4.tgz";
+ path = fetchurl {
+ name = "randomfill___randomfill_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz";
+ sha1 = "c92196fc86ab42be983f1bf31778224931d61458";
+ };
+ }
+ {
+ name = "range_parser___range_parser_1.2.1.tgz";
+ path = fetchurl {
+ name = "range_parser___range_parser_1.2.1.tgz";
+ url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz";
+ sha1 = "3cf37023d199e1c24d1a55b84800c2f3e6468031";
+ };
+ }
+ {
+ name = "raw_body___raw_body_2.4.0.tgz";
+ path = fetchurl {
+ name = "raw_body___raw_body_2.4.0.tgz";
+ url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz";
+ sha1 = "a1ce6fb9c9bc356ca52e89256ab59059e13d0332";
+ };
+ }
+ {
+ name = "raw_loader___raw_loader_4.0.1.tgz";
+ path = fetchurl {
+ name = "raw_loader___raw_loader_4.0.1.tgz";
+ url = "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.1.tgz";
+ sha1 = "14e1f726a359b68437e183d5a5b7d33a3eba6933";
+ };
+ }
+ {
+ name = "read_pkg___read_pkg_5.2.0.tgz";
+ path = fetchurl {
+ name = "read_pkg___read_pkg_5.2.0.tgz";
+ url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz";
+ sha1 = "7bf295438ca5a33e56cd30e053b34ee7250c93cc";
+ };
+ }
+ {
+ name = "readable_stream___readable_stream_2.3.7.tgz";
+ path = fetchurl {
+ name = "readable_stream___readable_stream_2.3.7.tgz";
+ url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz";
+ sha1 = "1eca1cf711aef814c04f62252a36a62f6cb23b57";
+ };
+ }
+ {
+ name = "readable_stream___readable_stream_3.6.0.tgz";
+ path = fetchurl {
+ name = "readable_stream___readable_stream_3.6.0.tgz";
+ url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz";
+ sha1 = "337bbda3adc0706bd3e024426a286d4b4b2c9198";
+ };
+ }
+ {
+ name = "readdirp___readdirp_2.2.1.tgz";
+ path = fetchurl {
+ name = "readdirp___readdirp_2.2.1.tgz";
+ url = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz";
+ sha1 = "0e87622a3325aa33e892285caf8b4e846529a525";
+ };
+ }
+ {
+ name = "readdirp___readdirp_3.4.0.tgz";
+ path = fetchurl {
+ name = "readdirp___readdirp_3.4.0.tgz";
+ url = "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz";
+ sha1 = "9fdccdf9e9155805449221ac645e8303ab5b9ada";
+ };
+ }
+ {
+ name = "regenerate_unicode_properties___regenerate_unicode_properties_8.2.0.tgz";
+ path = fetchurl {
+ name = "regenerate_unicode_properties___regenerate_unicode_properties_8.2.0.tgz";
+ url = "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz";
+ sha1 = "e5de7111d655e7ba60c057dbe9ff37c87e65cdec";
+ };
+ }
+ {
+ name = "regenerate___regenerate_1.4.1.tgz";
+ path = fetchurl {
+ name = "regenerate___regenerate_1.4.1.tgz";
+ url = "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz";
+ sha1 = "cad92ad8e6b591773485fbe05a485caf4f457e6f";
+ };
+ }
+ {
+ name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
+ path = fetchurl {
+ name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
+ url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
+ sha1 = "be05ad7f9bf7d22e056f9726cee5017fbf19e2e9";
+ };
+ }
+ {
+ name = "regenerator_runtime___regenerator_runtime_0.13.5.tgz";
+ path = fetchurl {
+ name = "regenerator_runtime___regenerator_runtime_0.13.5.tgz";
+ url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz";
+ sha1 = "d878a1d094b4306d10b9096484b33ebd55e26697";
+ };
+ }
+ {
+ name = "regenerator_transform___regenerator_transform_0.14.4.tgz";
+ path = fetchurl {
+ name = "regenerator_transform___regenerator_transform_0.14.4.tgz";
+ url = "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz";
+ sha1 = "5266857896518d1616a78a0479337a30ea974cc7";
+ };
+ }
+ {
+ name = "regex_not___regex_not_1.0.2.tgz";
+ path = fetchurl {
+ name = "regex_not___regex_not_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz";
+ sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c";
+ };
+ }
+ {
+ name = "regexp.prototype.flags___regexp.prototype.flags_1.3.0.tgz";
+ path = fetchurl {
+ name = "regexp.prototype.flags___regexp.prototype.flags_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz";
+ sha1 = "7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75";
+ };
+ }
+ {
+ name = "regexpp___regexpp_3.1.0.tgz";
+ path = fetchurl {
+ name = "regexpp___regexpp_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz";
+ sha1 = "206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2";
+ };
+ }
+ {
+ name = "regexpu_core___regexpu_core_4.7.0.tgz";
+ path = fetchurl {
+ name = "regexpu_core___regexpu_core_4.7.0.tgz";
+ url = "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz";
+ sha1 = "fcbf458c50431b0bb7b45d6967b8192d91f3d938";
+ };
+ }
+ {
+ name = "register_service_worker___register_service_worker_1.7.1.tgz";
+ path = fetchurl {
+ name = "register_service_worker___register_service_worker_1.7.1.tgz";
+ url = "https://registry.yarnpkg.com/register-service-worker/-/register-service-worker-1.7.1.tgz";
+ sha1 = "6308347ac6c0af0f6c0b22ea5d59d25e836bc932";
+ };
+ }
+ {
+ name = "regjsgen___regjsgen_0.5.2.tgz";
+ path = fetchurl {
+ name = "regjsgen___regjsgen_0.5.2.tgz";
+ url = "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz";
+ sha1 = "92ff295fb1deecbf6ecdab2543d207e91aa33733";
+ };
+ }
+ {
+ name = "regjsparser___regjsparser_0.6.4.tgz";
+ path = fetchurl {
+ name = "regjsparser___regjsparser_0.6.4.tgz";
+ url = "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz";
+ sha1 = "a769f8684308401a66e9b529d2436ff4d0666272";
+ };
+ }
+ {
+ name = "relateurl___relateurl_0.2.7.tgz";
+ path = fetchurl {
+ name = "relateurl___relateurl_0.2.7.tgz";
+ url = "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz";
+ sha1 = "54dbf377e51440aca90a4cd274600d3ff2d888a9";
+ };
+ }
+ {
+ name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
+ path = fetchurl {
+ name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
+ sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
+ };
+ }
+ {
+ name = "renderkid___renderkid_2.0.3.tgz";
+ path = fetchurl {
+ name = "renderkid___renderkid_2.0.3.tgz";
+ url = "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz";
+ sha1 = "380179c2ff5ae1365c522bf2fcfcff01c5b74149";
+ };
+ }
+ {
+ name = "repeat_element___repeat_element_1.1.3.tgz";
+ path = fetchurl {
+ name = "repeat_element___repeat_element_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz";
+ sha1 = "782e0d825c0c5a3bb39731f84efee6b742e6b1ce";
+ };
+ }
+ {
+ name = "repeat_string___repeat_string_1.6.1.tgz";
+ path = fetchurl {
+ name = "repeat_string___repeat_string_1.6.1.tgz";
+ url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz";
+ sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
+ };
+ }
+ {
+ name = "request_promise_core___request_promise_core_1.1.3.tgz";
+ path = fetchurl {
+ name = "request_promise_core___request_promise_core_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz";
+ sha1 = "e9a3c081b51380dfea677336061fea879a829ee9";
+ };
+ }
+ {
+ name = "request_promise_native___request_promise_native_1.0.8.tgz";
+ path = fetchurl {
+ name = "request_promise_native___request_promise_native_1.0.8.tgz";
+ url = "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz";
+ sha1 = "a455b960b826e44e2bf8999af64dff2bfe58cb36";
+ };
+ }
+ {
+ name = "request___request_2.88.2.tgz";
+ path = fetchurl {
+ name = "request___request_2.88.2.tgz";
+ url = "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz";
+ sha1 = "d73c918731cb5a87da047e207234146f664d12b3";
+ };
+ }
+ {
+ name = "require_directory___require_directory_2.1.1.tgz";
+ path = fetchurl {
+ name = "require_directory___require_directory_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
+ sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
+ };
+ }
+ {
+ name = "require_main_filename___require_main_filename_2.0.0.tgz";
+ path = fetchurl {
+ name = "require_main_filename___require_main_filename_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz";
+ sha1 = "d0b329ecc7cc0f61649f62215be69af54aa8989b";
+ };
+ }
+ {
+ name = "requires_port___requires_port_1.0.0.tgz";
+ path = fetchurl {
+ name = "requires_port___requires_port_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz";
+ sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
+ };
+ }
+ {
+ name = "resolve_cwd___resolve_cwd_2.0.0.tgz";
+ path = fetchurl {
+ name = "resolve_cwd___resolve_cwd_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz";
+ sha1 = "00a9f7387556e27038eae232caa372a6a59b665a";
+ };
+ }
+ {
+ name = "resolve_from___resolve_from_3.0.0.tgz";
+ path = fetchurl {
+ name = "resolve_from___resolve_from_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz";
+ sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748";
+ };
+ }
+ {
+ name = "resolve_from___resolve_from_4.0.0.tgz";
+ path = fetchurl {
+ name = "resolve_from___resolve_from_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz";
+ sha1 = "4abcd852ad32dd7baabfe9b40e00a36db5f392e6";
+ };
+ }
+ {
+ name = "resolve_url___resolve_url_0.2.1.tgz";
+ path = fetchurl {
+ name = "resolve_url___resolve_url_0.2.1.tgz";
+ url = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz";
+ sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
+ };
+ }
+ {
+ name = "resolve___resolve_1.17.0.tgz";
+ path = fetchurl {
+ name = "resolve___resolve_1.17.0.tgz";
+ url = "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz";
+ sha1 = "b25941b54968231cc2d1bb76a79cb7f2c0bf8444";
+ };
+ }
+ {
+ name = "restore_cursor___restore_cursor_2.0.0.tgz";
+ path = fetchurl {
+ name = "restore_cursor___restore_cursor_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz";
+ sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf";
+ };
+ }
+ {
+ name = "restore_cursor___restore_cursor_3.1.0.tgz";
+ path = fetchurl {
+ name = "restore_cursor___restore_cursor_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz";
+ sha1 = "39f67c54b3a7a58cea5236d95cf0034239631f7e";
+ };
+ }
+ {
+ name = "ret___ret_0.1.15.tgz";
+ path = fetchurl {
+ name = "ret___ret_0.1.15.tgz";
+ url = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz";
+ sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc";
+ };
+ }
+ {
+ name = "retry___retry_0.12.0.tgz";
+ path = fetchurl {
+ name = "retry___retry_0.12.0.tgz";
+ url = "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz";
+ sha1 = "1b42a6266a21f07421d1b0b54b7dc167b01c013b";
+ };
+ }
+ {
+ name = "rgb_regex___rgb_regex_1.0.1.tgz";
+ path = fetchurl {
+ name = "rgb_regex___rgb_regex_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz";
+ sha1 = "c0e0d6882df0e23be254a475e8edd41915feaeb1";
+ };
+ }
+ {
+ name = "rgba_regex___rgba_regex_1.0.0.tgz";
+ path = fetchurl {
+ name = "rgba_regex___rgba_regex_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz";
+ sha1 = "43374e2e2ca0968b0ef1523460b7d730ff22eeb3";
+ };
+ }
+ {
+ name = "rimraf___rimraf_2.6.3.tgz";
+ path = fetchurl {
+ name = "rimraf___rimraf_2.6.3.tgz";
+ url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz";
+ sha1 = "b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab";
+ };
+ }
+ {
+ name = "rimraf___rimraf_2.7.1.tgz";
+ path = fetchurl {
+ name = "rimraf___rimraf_2.7.1.tgz";
+ url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz";
+ sha1 = "35797f13a7fdadc566142c29d4f07ccad483e3ec";
+ };
+ }
+ {
+ name = "ripemd160___ripemd160_2.0.2.tgz";
+ path = fetchurl {
+ name = "ripemd160___ripemd160_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz";
+ sha1 = "a1c1a6f624751577ba5d07914cbc92850585890c";
+ };
+ }
+ {
+ name = "run_async___run_async_2.4.1.tgz";
+ path = fetchurl {
+ name = "run_async___run_async_2.4.1.tgz";
+ url = "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz";
+ sha1 = "8440eccf99ea3e70bd409d49aab88e10c189a455";
+ };
+ }
+ {
+ name = "run_queue___run_queue_1.0.3.tgz";
+ path = fetchurl {
+ name = "run_queue___run_queue_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz";
+ sha1 = "e848396f057d223f24386924618e25694161ec47";
+ };
+ }
+ {
+ name = "rxjs___rxjs_6.5.5.tgz";
+ path = fetchurl {
+ name = "rxjs___rxjs_6.5.5.tgz";
+ url = "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz";
+ sha1 = "c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec";
+ };
+ }
+ {
+ name = "safe_buffer___safe_buffer_5.1.2.tgz";
+ path = fetchurl {
+ name = "safe_buffer___safe_buffer_5.1.2.tgz";
+ url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
+ sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
+ };
+ }
+ {
+ name = "safe_buffer___safe_buffer_5.2.1.tgz";
+ path = fetchurl {
+ name = "safe_buffer___safe_buffer_5.2.1.tgz";
+ url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz";
+ sha1 = "1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6";
+ };
+ }
+ {
+ name = "safe_regex___safe_regex_1.1.0.tgz";
+ path = fetchurl {
+ name = "safe_regex___safe_regex_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz";
+ sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
+ };
+ }
+ {
+ name = "safer_buffer___safer_buffer_2.1.2.tgz";
+ path = fetchurl {
+ name = "safer_buffer___safer_buffer_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
+ sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
+ };
+ }
+ {
+ name = "sass_loader___sass_loader_8.0.2.tgz";
+ path = fetchurl {
+ name = "sass_loader___sass_loader_8.0.2.tgz";
+ url = "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz";
+ sha1 = "debecd8c3ce243c76454f2e8290482150380090d";
+ };
+ }
+ {
+ name = "sass___sass_1.26.8.tgz";
+ path = fetchurl {
+ name = "sass___sass_1.26.8.tgz";
+ url = "https://registry.yarnpkg.com/sass/-/sass-1.26.8.tgz";
+ sha1 = "312652530721f9568d4c4000b0db07ec6eb23325";
+ };
+ }
+ {
+ name = "sax___sax_1.2.4.tgz";
+ path = fetchurl {
+ name = "sax___sax_1.2.4.tgz";
+ url = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
+ sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
+ };
+ }
+ {
+ name = "schema_utils___schema_utils_1.0.0.tgz";
+ path = fetchurl {
+ name = "schema_utils___schema_utils_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz";
+ sha1 = "0b79a93204d7b600d4b2850d1f66c2a34951c770";
+ };
+ }
+ {
+ name = "schema_utils___schema_utils_2.7.0.tgz";
+ path = fetchurl {
+ name = "schema_utils___schema_utils_2.7.0.tgz";
+ url = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz";
+ sha1 = "17151f76d8eae67fbbf77960c33c676ad9f4efc7";
+ };
+ }
+ {
+ name = "select_hose___select_hose_2.0.0.tgz";
+ path = fetchurl {
+ name = "select_hose___select_hose_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz";
+ sha1 = "625d8658f865af43ec962bfc376a37359a4994ca";
+ };
+ }
+ {
+ name = "selfsigned___selfsigned_1.10.7.tgz";
+ path = fetchurl {
+ name = "selfsigned___selfsigned_1.10.7.tgz";
+ url = "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz";
+ sha1 = "da5819fd049d5574f28e88a9bcc6dbc6e6f3906b";
+ };
+ }
+ {
+ name = "semver___semver_5.7.1.tgz";
+ path = fetchurl {
+ name = "semver___semver_5.7.1.tgz";
+ url = "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz";
+ sha1 = "a954f931aeba508d307bbf069eff0c01c96116f7";
+ };
+ }
+ {
+ name = "semver___semver_7.0.0.tgz";
+ path = fetchurl {
+ name = "semver___semver_7.0.0.tgz";
+ url = "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz";
+ sha1 = "5f3ca35761e47e05b206c6daff2cf814f0316b8e";
+ };
+ }
+ {
+ name = "semver___semver_6.3.0.tgz";
+ path = fetchurl {
+ name = "semver___semver_6.3.0.tgz";
+ url = "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz";
+ sha1 = "ee0a64c8af5e8ceea67687b133761e1becbd1d3d";
+ };
+ }
+ {
+ name = "semver___semver_7.3.2.tgz";
+ path = fetchurl {
+ name = "semver___semver_7.3.2.tgz";
+ url = "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz";
+ sha1 = "604962b052b81ed0786aae84389ffba70ffd3938";
+ };
+ }
+ {
+ name = "send___send_0.17.1.tgz";
+ path = fetchurl {
+ name = "send___send_0.17.1.tgz";
+ url = "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz";
+ sha1 = "c1d8b059f7900f7466dd4938bdc44e11ddb376c8";
+ };
+ }
+ {
+ name = "serialize_javascript___serialize_javascript_2.1.2.tgz";
+ path = fetchurl {
+ name = "serialize_javascript___serialize_javascript_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz";
+ sha1 = "ecec53b0e0317bdc95ef76ab7074b7384785fa61";
+ };
+ }
+ {
+ name = "serialize_javascript___serialize_javascript_3.1.0.tgz";
+ path = fetchurl {
+ name = "serialize_javascript___serialize_javascript_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz";
+ sha1 = "8bf3a9170712664ef2561b44b691eafe399214ea";
+ };
+ }
+ {
+ name = "serve_index___serve_index_1.9.1.tgz";
+ path = fetchurl {
+ name = "serve_index___serve_index_1.9.1.tgz";
+ url = "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz";
+ sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
+ };
+ }
+ {
+ name = "serve_static___serve_static_1.14.1.tgz";
+ path = fetchurl {
+ name = "serve_static___serve_static_1.14.1.tgz";
+ url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz";
+ sha1 = "666e636dc4f010f7ef29970a88a674320898b2f9";
+ };
+ }
+ {
+ name = "set_blocking___set_blocking_2.0.0.tgz";
+ path = fetchurl {
+ name = "set_blocking___set_blocking_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
+ sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
+ };
+ }
+ {
+ name = "set_value___set_value_2.0.1.tgz";
+ path = fetchurl {
+ name = "set_value___set_value_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz";
+ sha1 = "a18d40530e6f07de4228c7defe4227af8cad005b";
+ };
+ }
+ {
+ name = "setimmediate___setimmediate_1.0.5.tgz";
+ path = fetchurl {
+ name = "setimmediate___setimmediate_1.0.5.tgz";
+ url = "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz";
+ sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
+ };
+ }
+ {
+ name = "setprototypeof___setprototypeof_1.1.0.tgz";
+ path = fetchurl {
+ name = "setprototypeof___setprototypeof_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz";
+ sha1 = "d0bd85536887b6fe7c0d818cb962d9d91c54e656";
+ };
+ }
+ {
+ name = "setprototypeof___setprototypeof_1.1.1.tgz";
+ path = fetchurl {
+ name = "setprototypeof___setprototypeof_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz";
+ sha1 = "7e95acb24aa92f5885e0abef5ba131330d4ae683";
+ };
+ }
+ {
+ name = "sha.js___sha.js_2.4.11.tgz";
+ path = fetchurl {
+ name = "sha.js___sha.js_2.4.11.tgz";
+ url = "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz";
+ sha1 = "37a5cf0b81ecbc6943de109ba2960d1b26584ae7";
+ };
+ }
+ {
+ name = "shallow_clone___shallow_clone_3.0.1.tgz";
+ path = fetchurl {
+ name = "shallow_clone___shallow_clone_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz";
+ sha1 = "8f2981ad92531f55035b01fb230769a40e02efa3";
+ };
+ }
+ {
+ name = "shebang_command___shebang_command_1.2.0.tgz";
+ path = fetchurl {
+ name = "shebang_command___shebang_command_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz";
+ sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
+ };
+ }
+ {
+ name = "shebang_command___shebang_command_2.0.0.tgz";
+ path = fetchurl {
+ name = "shebang_command___shebang_command_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz";
+ sha1 = "ccd0af4f8835fbdc265b82461aaf0c36663f34ea";
+ };
+ }
+ {
+ name = "shebang_regex___shebang_regex_1.0.0.tgz";
+ path = fetchurl {
+ name = "shebang_regex___shebang_regex_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz";
+ sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
+ };
+ }
+ {
+ name = "shebang_regex___shebang_regex_3.0.0.tgz";
+ path = fetchurl {
+ name = "shebang_regex___shebang_regex_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz";
+ sha1 = "ae16f1644d873ecad843b0307b143362d4c42172";
+ };
+ }
+ {
+ name = "shell_quote___shell_quote_1.7.2.tgz";
+ path = fetchurl {
+ name = "shell_quote___shell_quote_1.7.2.tgz";
+ url = "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz";
+ sha1 = "67a7d02c76c9da24f99d20808fcaded0e0e04be2";
+ };
+ }
+ {
+ name = "signal_exit___signal_exit_3.0.3.tgz";
+ path = fetchurl {
+ name = "signal_exit___signal_exit_3.0.3.tgz";
+ url = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz";
+ sha1 = "a1410c2edd8f077b08b4e253c8eacfcaf057461c";
+ };
+ }
+ {
+ name = "simple_swizzle___simple_swizzle_0.2.2.tgz";
+ path = fetchurl {
+ name = "simple_swizzle___simple_swizzle_0.2.2.tgz";
+ url = "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz";
+ sha1 = "a4da6b635ffcccca33f70d17cb92592de95e557a";
+ };
+ }
+ {
+ name = "slash___slash_1.0.0.tgz";
+ path = fetchurl {
+ name = "slash___slash_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz";
+ sha1 = "c41f2f6c39fc16d1cd17ad4b5d896114ae470d55";
+ };
+ }
+ {
+ name = "slash___slash_2.0.0.tgz";
+ path = fetchurl {
+ name = "slash___slash_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz";
+ sha1 = "de552851a1759df3a8f206535442f5ec4ddeab44";
+ };
+ }
+ {
+ name = "slice_ansi___slice_ansi_2.1.0.tgz";
+ path = fetchurl {
+ name = "slice_ansi___slice_ansi_2.1.0.tgz";
+ url = "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz";
+ sha1 = "cacd7693461a637a5788d92a7dd4fba068e81636";
+ };
+ }
+ {
+ name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
+ path = fetchurl {
+ name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
+ sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b";
+ };
+ }
+ {
+ name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
+ path = fetchurl {
+ name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
+ sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2";
+ };
+ }
+ {
+ name = "snapdragon___snapdragon_0.8.2.tgz";
+ path = fetchurl {
+ name = "snapdragon___snapdragon_0.8.2.tgz";
+ url = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz";
+ sha1 = "64922e7c565b0e14204ba1aa7d6964278d25182d";
+ };
+ }
+ {
+ name = "sockjs_client___sockjs_client_1.4.0.tgz";
+ path = fetchurl {
+ name = "sockjs_client___sockjs_client_1.4.0.tgz";
+ url = "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz";
+ sha1 = "c9f2568e19c8fd8173b4997ea3420e0bb306c7d5";
+ };
+ }
+ {
+ name = "sockjs___sockjs_0.3.20.tgz";
+ path = fetchurl {
+ name = "sockjs___sockjs_0.3.20.tgz";
+ url = "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz";
+ sha1 = "b26a283ec562ef8b2687b44033a4eeceac75d855";
+ };
+ }
+ {
+ name = "sort_keys___sort_keys_1.1.2.tgz";
+ path = fetchurl {
+ name = "sort_keys___sort_keys_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz";
+ sha1 = "441b6d4d346798f1b4e49e8920adfba0e543f9ad";
+ };
+ }
+ {
+ name = "source_list_map___source_list_map_2.0.1.tgz";
+ path = fetchurl {
+ name = "source_list_map___source_list_map_2.0.1.tgz";
+ url = "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz";
+ sha1 = "3993bd873bfc48479cca9ea3a547835c7c154b34";
+ };
+ }
+ {
+ name = "source_map_resolve___source_map_resolve_0.5.3.tgz";
+ path = fetchurl {
+ name = "source_map_resolve___source_map_resolve_0.5.3.tgz";
+ url = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz";
+ sha1 = "190866bece7553e1f8f267a2ee82c606b5509a1a";
+ };
+ }
+ {
+ name = "source_map_support___source_map_support_0.5.19.tgz";
+ path = fetchurl {
+ name = "source_map_support___source_map_support_0.5.19.tgz";
+ url = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz";
+ sha1 = "a98b62f86dcaf4f67399648c085291ab9e8fed61";
+ };
+ }
+ {
+ name = "source_map_url___source_map_url_0.4.0.tgz";
+ path = fetchurl {
+ name = "source_map_url___source_map_url_0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz";
+ sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
+ };
+ }
+ {
+ name = "source_map___source_map_0.5.7.tgz";
+ path = fetchurl {
+ name = "source_map___source_map_0.5.7.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz";
+ sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
+ };
+ }
+ {
+ name = "source_map___source_map_0.6.1.tgz";
+ path = fetchurl {
+ name = "source_map___source_map_0.6.1.tgz";
+ url = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
+ sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
+ };
+ }
+ {
+ name = "spdx_correct___spdx_correct_3.1.1.tgz";
+ path = fetchurl {
+ name = "spdx_correct___spdx_correct_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz";
+ sha1 = "dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9";
+ };
+ }
+ {
+ name = "spdx_exceptions___spdx_exceptions_2.3.0.tgz";
+ path = fetchurl {
+ name = "spdx_exceptions___spdx_exceptions_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz";
+ sha1 = "3f28ce1a77a00372683eade4a433183527a2163d";
+ };
+ }
+ {
+ name = "spdx_expression_parse___spdx_expression_parse_3.0.1.tgz";
+ path = fetchurl {
+ name = "spdx_expression_parse___spdx_expression_parse_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz";
+ sha1 = "cf70f50482eefdc98e3ce0a6833e4a53ceeba679";
+ };
+ }
+ {
+ name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz";
+ path = fetchurl {
+ name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz";
+ url = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz";
+ sha1 = "3694b5804567a458d3c8045842a6358632f62654";
+ };
+ }
+ {
+ name = "spdy_transport___spdy_transport_3.0.0.tgz";
+ path = fetchurl {
+ name = "spdy_transport___spdy_transport_3.0.0.tgz";
+ url = "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz";
+ sha1 = "00d4863a6400ad75df93361a1608605e5dcdcf31";
+ };
+ }
+ {
+ name = "spdy___spdy_4.0.2.tgz";
+ path = fetchurl {
+ name = "spdy___spdy_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz";
+ sha1 = "b74f466203a3eda452c02492b91fb9e84a27677b";
+ };
+ }
+ {
+ name = "split_string___split_string_3.1.0.tgz";
+ path = fetchurl {
+ name = "split_string___split_string_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz";
+ sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2";
+ };
+ }
+ {
+ name = "sprintf_js___sprintf_js_1.0.3.tgz";
+ path = fetchurl {
+ name = "sprintf_js___sprintf_js_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
+ sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+ };
+ }
+ {
+ name = "sshpk___sshpk_1.16.1.tgz";
+ path = fetchurl {
+ name = "sshpk___sshpk_1.16.1.tgz";
+ url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz";
+ sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877";
+ };
+ }
+ {
+ name = "ssri___ssri_6.0.1.tgz";
+ path = fetchurl {
+ name = "ssri___ssri_6.0.1.tgz";
+ url = "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz";
+ sha1 = "2a3c41b28dd45b62b63676ecb74001265ae9edd8";
+ };
+ }
+ {
+ name = "ssri___ssri_7.1.0.tgz";
+ path = fetchurl {
+ name = "ssri___ssri_7.1.0.tgz";
+ url = "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz";
+ sha1 = "92c241bf6de82365b5c7fb4bd76e975522e1294d";
+ };
+ }
+ {
+ name = "stable___stable_0.1.8.tgz";
+ path = fetchurl {
+ name = "stable___stable_0.1.8.tgz";
+ url = "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz";
+ sha1 = "836eb3c8382fe2936feaf544631017ce7d47a3cf";
+ };
+ }
+ {
+ name = "stackframe___stackframe_1.2.0.tgz";
+ path = fetchurl {
+ name = "stackframe___stackframe_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz";
+ sha1 = "52429492d63c62eb989804c11552e3d22e779303";
+ };
+ }
+ {
+ name = "static_extend___static_extend_0.1.2.tgz";
+ path = fetchurl {
+ name = "static_extend___static_extend_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz";
+ sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
+ };
+ }
+ {
+ name = "statuses___statuses_1.5.0.tgz";
+ path = fetchurl {
+ name = "statuses___statuses_1.5.0.tgz";
+ url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
+ sha1 = "161c7dac177659fd9811f43771fa99381478628c";
+ };
+ }
+ {
+ name = "stealthy_require___stealthy_require_1.1.1.tgz";
+ path = fetchurl {
+ name = "stealthy_require___stealthy_require_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz";
+ sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b";
+ };
+ }
+ {
+ name = "stream_browserify___stream_browserify_2.0.2.tgz";
+ path = fetchurl {
+ name = "stream_browserify___stream_browserify_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz";
+ sha1 = "87521d38a44aa7ee91ce1cd2a47df0cb49dd660b";
+ };
+ }
+ {
+ name = "stream_each___stream_each_1.2.3.tgz";
+ path = fetchurl {
+ name = "stream_each___stream_each_1.2.3.tgz";
+ url = "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz";
+ sha1 = "ebe27a0c389b04fbcc233642952e10731afa9bae";
+ };
+ }
+ {
+ name = "stream_http___stream_http_2.8.3.tgz";
+ path = fetchurl {
+ name = "stream_http___stream_http_2.8.3.tgz";
+ url = "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz";
+ sha1 = "b2d242469288a5a27ec4fe8933acf623de6514fc";
+ };
+ }
+ {
+ name = "stream_shift___stream_shift_1.0.1.tgz";
+ path = fetchurl {
+ name = "stream_shift___stream_shift_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz";
+ sha1 = "d7088281559ab2778424279b0877da3c392d5a3d";
+ };
+ }
+ {
+ name = "strict_uri_encode___strict_uri_encode_1.1.0.tgz";
+ path = fetchurl {
+ name = "strict_uri_encode___strict_uri_encode_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz";
+ sha1 = "279b225df1d582b1f54e65addd4352e18faa0713";
+ };
+ }
+ {
+ name = "string_width___string_width_2.1.1.tgz";
+ path = fetchurl {
+ name = "string_width___string_width_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
+ sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
+ };
+ }
+ {
+ name = "string_width___string_width_3.1.0.tgz";
+ path = fetchurl {
+ name = "string_width___string_width_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz";
+ sha1 = "22767be21b62af1081574306f69ac51b62203961";
+ };
+ }
+ {
+ name = "string_width___string_width_4.2.0.tgz";
+ path = fetchurl {
+ name = "string_width___string_width_4.2.0.tgz";
+ url = "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz";
+ sha1 = "952182c46cc7b2c313d1596e623992bd163b72b5";
+ };
+ }
+ {
+ name = "string.prototype.trimend___string.prototype.trimend_1.0.1.tgz";
+ path = fetchurl {
+ name = "string.prototype.trimend___string.prototype.trimend_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz";
+ sha1 = "85812a6b847ac002270f5808146064c995fb6913";
+ };
+ }
+ {
+ name = "string.prototype.trimleft___string.prototype.trimleft_2.1.2.tgz";
+ path = fetchurl {
+ name = "string.prototype.trimleft___string.prototype.trimleft_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz";
+ sha1 = "4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc";
+ };
+ }
+ {
+ name = "string.prototype.trimright___string.prototype.trimright_2.1.2.tgz";
+ path = fetchurl {
+ name = "string.prototype.trimright___string.prototype.trimright_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz";
+ sha1 = "c76f1cef30f21bbad8afeb8db1511496cfb0f2a3";
+ };
+ }
+ {
+ name = "string.prototype.trimstart___string.prototype.trimstart_1.0.1.tgz";
+ path = fetchurl {
+ name = "string.prototype.trimstart___string.prototype.trimstart_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz";
+ sha1 = "14af6d9f34b053f7cfc89b72f8f2ee14b9039a54";
+ };
+ }
+ {
+ name = "string_decoder___string_decoder_1.3.0.tgz";
+ path = fetchurl {
+ name = "string_decoder___string_decoder_1.3.0.tgz";
+ url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz";
+ sha1 = "42f114594a46cf1a8e30b0a84f56c78c3edac21e";
+ };
+ }
+ {
+ name = "string_decoder___string_decoder_1.1.1.tgz";
+ path = fetchurl {
+ name = "string_decoder___string_decoder_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz";
+ sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8";
+ };
+ }
+ {
+ name = "stringify_object___stringify_object_3.3.0.tgz";
+ path = fetchurl {
+ name = "stringify_object___stringify_object_3.3.0.tgz";
+ url = "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz";
+ sha1 = "703065aefca19300d3ce88af4f5b3956d7556629";
+ };
+ }
+ {
+ name = "strip_ansi___strip_ansi_3.0.1.tgz";
+ path = fetchurl {
+ name = "strip_ansi___strip_ansi_3.0.1.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
+ sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+ };
+ }
+ {
+ name = "strip_ansi___strip_ansi_4.0.0.tgz";
+ path = fetchurl {
+ name = "strip_ansi___strip_ansi_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
+ sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+ };
+ }
+ {
+ name = "strip_ansi___strip_ansi_5.2.0.tgz";
+ path = fetchurl {
+ name = "strip_ansi___strip_ansi_5.2.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz";
+ sha1 = "8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae";
+ };
+ }
+ {
+ name = "strip_ansi___strip_ansi_6.0.0.tgz";
+ path = fetchurl {
+ name = "strip_ansi___strip_ansi_6.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz";
+ sha1 = "0b1571dd7669ccd4f3e06e14ef1eed26225ae532";
+ };
+ }
+ {
+ name = "strip_comments___strip_comments_1.0.2.tgz";
+ path = fetchurl {
+ name = "strip_comments___strip_comments_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz";
+ sha1 = "82b9c45e7f05873bee53f37168af930aa368679d";
+ };
+ }
+ {
+ name = "strip_eof___strip_eof_1.0.0.tgz";
+ path = fetchurl {
+ name = "strip_eof___strip_eof_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz";
+ sha1 = "bb43ff5598a6eb05d89b59fcd129c983313606bf";
+ };
+ }
+ {
+ name = "strip_final_newline___strip_final_newline_2.0.0.tgz";
+ path = fetchurl {
+ name = "strip_final_newline___strip_final_newline_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz";
+ sha1 = "89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad";
+ };
+ }
+ {
+ name = "strip_indent___strip_indent_2.0.0.tgz";
+ path = fetchurl {
+ name = "strip_indent___strip_indent_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz";
+ sha1 = "5ef8db295d01e6ed6cbf7aab96998d7822527b68";
+ };
+ }
+ {
+ name = "strip_json_comments___strip_json_comments_3.1.0.tgz";
+ path = fetchurl {
+ name = "strip_json_comments___strip_json_comments_3.1.0.tgz";
+ url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz";
+ sha1 = "7638d31422129ecf4457440009fba03f9f9ac180";
+ };
+ }
+ {
+ name = "stylehacks___stylehacks_4.0.3.tgz";
+ path = fetchurl {
+ name = "stylehacks___stylehacks_4.0.3.tgz";
+ url = "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz";
+ sha1 = "6718fcaf4d1e07d8a1318690881e8d96726a71d5";
+ };
+ }
+ {
+ name = "supports_color___supports_color_2.0.0.tgz";
+ path = fetchurl {
+ name = "supports_color___supports_color_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz";
+ sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
+ };
+ }
+ {
+ name = "supports_color___supports_color_5.5.0.tgz";
+ path = fetchurl {
+ name = "supports_color___supports_color_5.5.0.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz";
+ sha1 = "e2e69a44ac8772f78a1ec0b35b689df6530efc8f";
+ };
+ }
+ {
+ name = "supports_color___supports_color_6.1.0.tgz";
+ path = fetchurl {
+ name = "supports_color___supports_color_6.1.0.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz";
+ sha1 = "0764abc69c63d5ac842dd4867e8d025e880df8f3";
+ };
+ }
+ {
+ name = "supports_color___supports_color_7.1.0.tgz";
+ path = fetchurl {
+ name = "supports_color___supports_color_7.1.0.tgz";
+ url = "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz";
+ sha1 = "68e32591df73e25ad1c4b49108a2ec507962bfd1";
+ };
+ }
+ {
+ name = "svg_tags___svg_tags_1.0.0.tgz";
+ path = fetchurl {
+ name = "svg_tags___svg_tags_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz";
+ sha1 = "58f71cee3bd519b59d4b2a843b6c7de64ac04764";
+ };
+ }
+ {
+ name = "svgo___svgo_1.3.2.tgz";
+ path = fetchurl {
+ name = "svgo___svgo_1.3.2.tgz";
+ url = "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz";
+ sha1 = "b6dc511c063346c9e415b81e43401145b96d4167";
+ };
+ }
+ {
+ name = "table___table_5.4.6.tgz";
+ path = fetchurl {
+ name = "table___table_5.4.6.tgz";
+ url = "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz";
+ sha1 = "1292d19500ce3f86053b05f0e8e7e4a3bb21079e";
+ };
+ }
+ {
+ name = "tapable___tapable_1.1.3.tgz";
+ path = fetchurl {
+ name = "tapable___tapable_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz";
+ sha1 = "a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2";
+ };
+ }
+ {
+ name = "terser_webpack_plugin___terser_webpack_plugin_1.4.4.tgz";
+ path = fetchurl {
+ name = "terser_webpack_plugin___terser_webpack_plugin_1.4.4.tgz";
+ url = "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz";
+ sha1 = "2c63544347324baafa9a56baaddf1634c8abfc2f";
+ };
+ }
+ {
+ name = "terser_webpack_plugin___terser_webpack_plugin_2.3.7.tgz";
+ path = fetchurl {
+ name = "terser_webpack_plugin___terser_webpack_plugin_2.3.7.tgz";
+ url = "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.7.tgz";
+ sha1 = "4910ff5d1a872168cc7fa6cd3749e2b0d60a8a0b";
+ };
+ }
+ {
+ name = "terser___terser_4.7.0.tgz";
+ path = fetchurl {
+ name = "terser___terser_4.7.0.tgz";
+ url = "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz";
+ sha1 = "15852cf1a08e3256a80428e865a2fa893ffba006";
+ };
+ }
+ {
+ name = "text_table___text_table_0.2.0.tgz";
+ path = fetchurl {
+ name = "text_table___text_table_0.2.0.tgz";
+ url = "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz";
+ sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
+ };
+ }
+ {
+ name = "thenify_all___thenify_all_1.6.0.tgz";
+ path = fetchurl {
+ name = "thenify_all___thenify_all_1.6.0.tgz";
+ url = "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz";
+ sha1 = "1a1918d402d8fc3f98fbf234db0bcc8cc10e9726";
+ };
+ }
+ {
+ name = "thenify___thenify_3.3.0.tgz";
+ path = fetchurl {
+ name = "thenify___thenify_3.3.0.tgz";
+ url = "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz";
+ sha1 = "e69e38a1babe969b0108207978b9f62b88604839";
+ };
+ }
+ {
+ name = "thread_loader___thread_loader_2.1.3.tgz";
+ path = fetchurl {
+ name = "thread_loader___thread_loader_2.1.3.tgz";
+ url = "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.3.tgz";
+ sha1 = "cbd2c139fc2b2de6e9d28f62286ab770c1acbdda";
+ };
+ }
+ {
+ name = "through2___through2_2.0.5.tgz";
+ path = fetchurl {
+ name = "through2___through2_2.0.5.tgz";
+ url = "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz";
+ sha1 = "01c1e39eb31d07cb7d03a96a70823260b23132cd";
+ };
+ }
+ {
+ name = "through___through_2.3.8.tgz";
+ path = fetchurl {
+ name = "through___through_2.3.8.tgz";
+ url = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz";
+ sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
+ };
+ }
+ {
+ name = "thunky___thunky_1.1.0.tgz";
+ path = fetchurl {
+ name = "thunky___thunky_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz";
+ sha1 = "5abaf714a9405db0504732bbccd2cedd9ef9537d";
+ };
+ }
+ {
+ name = "timers_browserify___timers_browserify_2.0.11.tgz";
+ path = fetchurl {
+ name = "timers_browserify___timers_browserify_2.0.11.tgz";
+ url = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz";
+ sha1 = "800b1f3eee272e5bc53ee465a04d0e804c31211f";
+ };
+ }
+ {
+ name = "timsort___timsort_0.3.0.tgz";
+ path = fetchurl {
+ name = "timsort___timsort_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz";
+ sha1 = "405411a8e7e6339fe64db9a234de11dc31e02bd4";
+ };
+ }
+ {
+ name = "tmp___tmp_0.0.33.tgz";
+ path = fetchurl {
+ name = "tmp___tmp_0.0.33.tgz";
+ url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz";
+ sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9";
+ };
+ }
+ {
+ name = "to_arraybuffer___to_arraybuffer_1.0.1.tgz";
+ path = fetchurl {
+ name = "to_arraybuffer___to_arraybuffer_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz";
+ sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43";
+ };
+ }
+ {
+ name = "to_fast_properties___to_fast_properties_2.0.0.tgz";
+ path = fetchurl {
+ name = "to_fast_properties___to_fast_properties_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz";
+ sha1 = "dc5e698cbd079265bc73e0377681a4e4e83f616e";
+ };
+ }
+ {
+ name = "to_object_path___to_object_path_0.3.0.tgz";
+ path = fetchurl {
+ name = "to_object_path___to_object_path_0.3.0.tgz";
+ url = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz";
+ sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
+ };
+ }
+ {
+ name = "to_regex_range___to_regex_range_2.1.1.tgz";
+ path = fetchurl {
+ name = "to_regex_range___to_regex_range_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz";
+ sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
+ };
+ }
+ {
+ name = "to_regex_range___to_regex_range_5.0.1.tgz";
+ path = fetchurl {
+ name = "to_regex_range___to_regex_range_5.0.1.tgz";
+ url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz";
+ sha1 = "1648c44aae7c8d988a326018ed72f5b4dd0392e4";
+ };
+ }
+ {
+ name = "to_regex___to_regex_3.0.2.tgz";
+ path = fetchurl {
+ name = "to_regex___to_regex_3.0.2.tgz";
+ url = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz";
+ sha1 = "13cfdd9b336552f30b51f33a8ae1b42a7a7599ce";
+ };
+ }
+ {
+ name = "toidentifier___toidentifier_1.0.0.tgz";
+ path = fetchurl {
+ name = "toidentifier___toidentifier_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz";
+ sha1 = "7e1be3470f1e77948bc43d94a3c8f4d7752ba553";
+ };
+ }
+ {
+ name = "toposort___toposort_1.0.7.tgz";
+ path = fetchurl {
+ name = "toposort___toposort_1.0.7.tgz";
+ url = "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz";
+ sha1 = "2e68442d9f64ec720b8cc89e6443ac6caa950029";
+ };
+ }
+ {
+ name = "tough_cookie___tough_cookie_2.5.0.tgz";
+ path = fetchurl {
+ name = "tough_cookie___tough_cookie_2.5.0.tgz";
+ url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz";
+ sha1 = "cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2";
+ };
+ }
+ {
+ name = "tryer___tryer_1.0.1.tgz";
+ path = fetchurl {
+ name = "tryer___tryer_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz";
+ sha1 = "f2c85406800b9b0f74c9f7465b81eaad241252f8";
+ };
+ }
+ {
+ name = "ts_pnp___ts_pnp_1.2.0.tgz";
+ path = fetchurl {
+ name = "ts_pnp___ts_pnp_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz";
+ sha1 = "a500ad084b0798f1c3071af391e65912c86bca92";
+ };
+ }
+ {
+ name = "tslib___tslib_1.13.0.tgz";
+ path = fetchurl {
+ name = "tslib___tslib_1.13.0.tgz";
+ url = "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz";
+ sha1 = "c881e13cc7015894ed914862d276436fa9a47043";
+ };
+ }
+ {
+ name = "tty_browserify___tty_browserify_0.0.0.tgz";
+ path = fetchurl {
+ name = "tty_browserify___tty_browserify_0.0.0.tgz";
+ url = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz";
+ sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6";
+ };
+ }
+ {
+ name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
+ path = fetchurl {
+ name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
+ url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+ sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+ };
+ }
+ {
+ name = "tweetnacl___tweetnacl_0.14.5.tgz";
+ path = fetchurl {
+ name = "tweetnacl___tweetnacl_0.14.5.tgz";
+ url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
+ sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+ };
+ }
+ {
+ name = "type_check___type_check_0.4.0.tgz";
+ path = fetchurl {
+ name = "type_check___type_check_0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz";
+ sha1 = "07b8203bfa7056c0657050e3ccd2c37730bab8f1";
+ };
+ }
+ {
+ name = "type_fest___type_fest_0.11.0.tgz";
+ path = fetchurl {
+ name = "type_fest___type_fest_0.11.0.tgz";
+ url = "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz";
+ sha1 = "97abf0872310fed88a5c466b25681576145e33f1";
+ };
+ }
+ {
+ name = "type_fest___type_fest_0.6.0.tgz";
+ path = fetchurl {
+ name = "type_fest___type_fest_0.6.0.tgz";
+ url = "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz";
+ sha1 = "8d2a2370d3df886eb5c90ada1c5bf6188acf838b";
+ };
+ }
+ {
+ name = "type_fest___type_fest_0.8.1.tgz";
+ path = fetchurl {
+ name = "type_fest___type_fest_0.8.1.tgz";
+ url = "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz";
+ sha1 = "09e249ebde851d3b1e48d27c105444667f17b83d";
+ };
+ }
+ {
+ name = "type_is___type_is_1.6.18.tgz";
+ path = fetchurl {
+ name = "type_is___type_is_1.6.18.tgz";
+ url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz";
+ sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131";
+ };
+ }
+ {
+ name = "typedarray___typedarray_0.0.6.tgz";
+ path = fetchurl {
+ name = "typedarray___typedarray_0.0.6.tgz";
+ url = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz";
+ sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
+ };
+ }
+ {
+ name = "uglify_js___uglify_js_3.4.10.tgz";
+ path = fetchurl {
+ name = "uglify_js___uglify_js_3.4.10.tgz";
+ url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz";
+ sha1 = "9ad9563d8eb3acdfb8d38597d2af1d815f6a755f";
+ };
+ }
+ {
+ name = "unicode_canonical_property_names_ecmascript___unicode_canonical_property_names_ecmascript_1.0.4.tgz";
+ path = fetchurl {
+ name = "unicode_canonical_property_names_ecmascript___unicode_canonical_property_names_ecmascript_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz";
+ sha1 = "2619800c4c825800efdd8343af7dd9933cbe2818";
+ };
+ }
+ {
+ name = "unicode_match_property_ecmascript___unicode_match_property_ecmascript_1.0.4.tgz";
+ path = fetchurl {
+ name = "unicode_match_property_ecmascript___unicode_match_property_ecmascript_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz";
+ sha1 = "8ed2a32569961bce9227d09cd3ffbb8fed5f020c";
+ };
+ }
+ {
+ name = "unicode_match_property_value_ecmascript___unicode_match_property_value_ecmascript_1.2.0.tgz";
+ path = fetchurl {
+ name = "unicode_match_property_value_ecmascript___unicode_match_property_value_ecmascript_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz";
+ sha1 = "0d91f600eeeb3096aa962b1d6fc88876e64ea531";
+ };
+ }
+ {
+ name = "unicode_property_aliases_ecmascript___unicode_property_aliases_ecmascript_1.1.0.tgz";
+ path = fetchurl {
+ name = "unicode_property_aliases_ecmascript___unicode_property_aliases_ecmascript_1.1.0.tgz";
+ url = "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz";
+ sha1 = "dd57a99f6207bedff4628abefb94c50db941c8f4";
+ };
+ }
+ {
+ name = "union_value___union_value_1.0.1.tgz";
+ path = fetchurl {
+ name = "union_value___union_value_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz";
+ sha1 = "0b6fe7b835aecda61c6ea4d4f02c14221e109847";
+ };
+ }
+ {
+ name = "uniq___uniq_1.0.1.tgz";
+ path = fetchurl {
+ name = "uniq___uniq_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz";
+ sha1 = "b31c5ae8254844a3a8281541ce2b04b865a734ff";
+ };
+ }
+ {
+ name = "uniqs___uniqs_2.0.0.tgz";
+ path = fetchurl {
+ name = "uniqs___uniqs_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz";
+ sha1 = "ffede4b36b25290696e6e165d4a59edb998e6b02";
+ };
+ }
+ {
+ name = "unique_filename___unique_filename_1.1.1.tgz";
+ path = fetchurl {
+ name = "unique_filename___unique_filename_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz";
+ sha1 = "1d69769369ada0583103a1e6ae87681b56573230";
+ };
+ }
+ {
+ name = "unique_slug___unique_slug_2.0.2.tgz";
+ path = fetchurl {
+ name = "unique_slug___unique_slug_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz";
+ sha1 = "baabce91083fc64e945b0f3ad613e264f7cd4e6c";
+ };
+ }
+ {
+ name = "universalify___universalify_0.1.2.tgz";
+ path = fetchurl {
+ name = "universalify___universalify_0.1.2.tgz";
+ url = "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz";
+ sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66";
+ };
+ }
+ {
+ name = "unpipe___unpipe_1.0.0.tgz";
+ path = fetchurl {
+ name = "unpipe___unpipe_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
+ sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+ };
+ }
+ {
+ name = "unquote___unquote_1.1.1.tgz";
+ path = fetchurl {
+ name = "unquote___unquote_1.1.1.tgz";
+ url = "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz";
+ sha1 = "8fded7324ec6e88a0ff8b905e7c098cdc086d544";
+ };
+ }
+ {
+ name = "unset_value___unset_value_1.0.0.tgz";
+ path = fetchurl {
+ name = "unset_value___unset_value_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz";
+ sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
+ };
+ }
+ {
+ name = "upath___upath_1.2.0.tgz";
+ path = fetchurl {
+ name = "upath___upath_1.2.0.tgz";
+ url = "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz";
+ sha1 = "8f66dbcd55a883acdae4408af8b035a5044c1894";
+ };
+ }
+ {
+ name = "upper_case___upper_case_1.1.3.tgz";
+ path = fetchurl {
+ name = "upper_case___upper_case_1.1.3.tgz";
+ url = "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz";
+ sha1 = "f6b4501c2ec4cdd26ba78be7222961de77621598";
+ };
+ }
+ {
+ name = "uri_js___uri_js_4.2.2.tgz";
+ path = fetchurl {
+ name = "uri_js___uri_js_4.2.2.tgz";
+ url = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
+ sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
+ };
+ }
+ {
+ name = "urix___urix_0.1.0.tgz";
+ path = fetchurl {
+ name = "urix___urix_0.1.0.tgz";
+ url = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz";
+ sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
+ };
+ }
+ {
+ name = "url_loader___url_loader_2.3.0.tgz";
+ path = fetchurl {
+ name = "url_loader___url_loader_2.3.0.tgz";
+ url = "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz";
+ sha1 = "e0e2ef658f003efb8ca41b0f3ffbf76bab88658b";
+ };
+ }
+ {
+ name = "url_parse___url_parse_1.4.7.tgz";
+ path = fetchurl {
+ name = "url_parse___url_parse_1.4.7.tgz";
+ url = "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz";
+ sha1 = "a8a83535e8c00a316e403a5db4ac1b9b853ae278";
+ };
+ }
+ {
+ name = "url___url_0.11.0.tgz";
+ path = fetchurl {
+ name = "url___url_0.11.0.tgz";
+ url = "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz";
+ sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
+ };
+ }
+ {
+ name = "use___use_3.1.1.tgz";
+ path = fetchurl {
+ name = "use___use_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz";
+ sha1 = "d50c8cac79a19fbc20f2911f56eb973f4e10070f";
+ };
+ }
+ {
+ name = "util_deprecate___util_deprecate_1.0.2.tgz";
+ path = fetchurl {
+ name = "util_deprecate___util_deprecate_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
+ sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+ };
+ }
+ {
+ name = "util.promisify___util.promisify_1.0.0.tgz";
+ path = fetchurl {
+ name = "util.promisify___util.promisify_1.0.0.tgz";
+ url = "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz";
+ sha1 = "440f7165a459c9a16dc145eb8e72f35687097030";
+ };
+ }
+ {
+ name = "util.promisify___util.promisify_1.0.1.tgz";
+ path = fetchurl {
+ name = "util.promisify___util.promisify_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz";
+ sha1 = "6baf7774b80eeb0f7520d8b81d07982a59abbaee";
+ };
+ }
+ {
+ name = "util___util_0.10.3.tgz";
+ path = fetchurl {
+ name = "util___util_0.10.3.tgz";
+ url = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz";
+ sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
+ };
+ }
+ {
+ name = "util___util_0.11.1.tgz";
+ path = fetchurl {
+ name = "util___util_0.11.1.tgz";
+ url = "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz";
+ sha1 = "3236733720ec64bb27f6e26f421aaa2e1b588d61";
+ };
+ }
+ {
+ name = "utila___utila_0.4.0.tgz";
+ path = fetchurl {
+ name = "utila___utila_0.4.0.tgz";
+ url = "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz";
+ sha1 = "8a16a05d445657a3aea5eecc5b12a4fa5379772c";
+ };
+ }
+ {
+ name = "utils_merge___utils_merge_1.0.1.tgz";
+ path = fetchurl {
+ name = "utils_merge___utils_merge_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz";
+ sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
+ };
+ }
+ {
+ name = "uuid___uuid_3.4.0.tgz";
+ path = fetchurl {
+ name = "uuid___uuid_3.4.0.tgz";
+ url = "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz";
+ sha1 = "b23e4358afa8a202fe7a100af1f5f883f02007ee";
+ };
+ }
+ {
+ name = "v8_compile_cache___v8_compile_cache_2.1.1.tgz";
+ path = fetchurl {
+ name = "v8_compile_cache___v8_compile_cache_2.1.1.tgz";
+ url = "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz";
+ sha1 = "54bc3cdd43317bca91e35dcaf305b1a7237de745";
+ };
+ }
+ {
+ name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
+ path = fetchurl {
+ name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
+ url = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
+ sha1 = "fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a";
+ };
+ }
+ {
+ name = "vary___vary_1.1.2.tgz";
+ path = fetchurl {
+ name = "vary___vary_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz";
+ sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
+ };
+ }
+ {
+ name = "vendors___vendors_1.0.4.tgz";
+ path = fetchurl {
+ name = "vendors___vendors_1.0.4.tgz";
+ url = "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz";
+ sha1 = "e2b800a53e7a29b93506c3cf41100d16c4c4ad8e";
+ };
+ }
+ {
+ name = "verror___verror_1.10.0.tgz";
+ path = fetchurl {
+ name = "verror___verror_1.10.0.tgz";
+ url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
+ sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+ };
+ }
+ {
+ name = "vm_browserify___vm_browserify_1.1.2.tgz";
+ path = fetchurl {
+ name = "vm_browserify___vm_browserify_1.1.2.tgz";
+ url = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz";
+ sha1 = "78641c488b8e6ca91a75f511e7a3b32a86e5dda0";
+ };
+ }
+ {
+ name = "vue_eslint_parser___vue_eslint_parser_7.1.0.tgz";
+ path = fetchurl {
+ name = "vue_eslint_parser___vue_eslint_parser_7.1.0.tgz";
+ url = "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz";
+ sha1 = "9cdbcc823e656b087507a1911732b867ac101e83";
+ };
+ }
+ {
+ name = "vue_hot_reload_api___vue_hot_reload_api_2.3.4.tgz";
+ path = fetchurl {
+ name = "vue_hot_reload_api___vue_hot_reload_api_2.3.4.tgz";
+ url = "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz";
+ sha1 = "532955cc1eb208a3d990b3a9f9a70574657e08f2";
+ };
+ }
+ {
+ name = "vue_loader___vue_loader_15.9.2.tgz";
+ path = fetchurl {
+ name = "vue_loader___vue_loader_15.9.2.tgz";
+ url = "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.2.tgz";
+ sha1 = "ae01f5f4c9c6a04bff4483912e72ef91a402c1ae";
+ };
+ }
+ {
+ name = "vue_style_loader___vue_style_loader_4.1.2.tgz";
+ path = fetchurl {
+ name = "vue_style_loader___vue_style_loader_4.1.2.tgz";
+ url = "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.2.tgz";
+ sha1 = "dedf349806f25ceb4e64f3ad7c0a44fba735fcf8";
+ };
+ }
+ {
+ name = "vue_template_compiler___vue_template_compiler_2.6.11.tgz";
+ path = fetchurl {
+ name = "vue_template_compiler___vue_template_compiler_2.6.11.tgz";
+ url = "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz";
+ sha1 = "c04704ef8f498b153130018993e56309d4698080";
+ };
+ }
+ {
+ name = "vue_template_es2015_compiler___vue_template_es2015_compiler_1.9.1.tgz";
+ path = fetchurl {
+ name = "vue_template_es2015_compiler___vue_template_es2015_compiler_1.9.1.tgz";
+ url = "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz";
+ sha1 = "1ee3bc9a16ecbf5118be334bb15f9c46f82f5825";
+ };
+ }
+ {
+ name = "vue___vue_2.6.11.tgz";
+ path = fetchurl {
+ name = "vue___vue_2.6.11.tgz";
+ url = "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz";
+ sha1 = "76594d877d4b12234406e84e35275c6d514125c5";
+ };
+ }
+ {
+ name = "watchpack_chokidar2___watchpack_chokidar2_2.0.0.tgz";
+ path = fetchurl {
+ name = "watchpack_chokidar2___watchpack_chokidar2_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz";
+ sha1 = "9948a1866cbbd6cb824dea13a7ed691f6c8ddff0";
+ };
+ }
+ {
+ name = "watchpack___watchpack_1.7.2.tgz";
+ path = fetchurl {
+ name = "watchpack___watchpack_1.7.2.tgz";
+ url = "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz";
+ sha1 = "c02e4d4d49913c3e7e122c3325365af9d331e9aa";
+ };
+ }
+ {
+ name = "wbuf___wbuf_1.7.3.tgz";
+ path = fetchurl {
+ name = "wbuf___wbuf_1.7.3.tgz";
+ url = "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz";
+ sha1 = "c1d8d149316d3ea852848895cb6a0bfe887b87df";
+ };
+ }
+ {
+ name = "wcwidth___wcwidth_1.0.1.tgz";
+ path = fetchurl {
+ name = "wcwidth___wcwidth_1.0.1.tgz";
+ url = "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz";
+ sha1 = "f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8";
+ };
+ }
+ {
+ name = "webpack_bundle_analyzer___webpack_bundle_analyzer_3.8.0.tgz";
+ path = fetchurl {
+ name = "webpack_bundle_analyzer___webpack_bundle_analyzer_3.8.0.tgz";
+ url = "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz";
+ sha1 = "ce6b3f908daf069fd1f7266f692cbb3bded9ba16";
+ };
+ }
+ {
+ name = "webpack_chain___webpack_chain_6.4.0.tgz";
+ path = fetchurl {
+ name = "webpack_chain___webpack_chain_6.4.0.tgz";
+ url = "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.4.0.tgz";
+ sha1 = "22f0b27b6a9bc9ee3cba4f9e6513cf66394034e2";
+ };
+ }
+ {
+ name = "webpack_dev_middleware___webpack_dev_middleware_3.7.2.tgz";
+ path = fetchurl {
+ name = "webpack_dev_middleware___webpack_dev_middleware_3.7.2.tgz";
+ url = "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz";
+ sha1 = "0019c3db716e3fa5cecbf64f2ab88a74bab331f3";
+ };
+ }
+ {
+ name = "webpack_dev_server___webpack_dev_server_3.11.0.tgz";
+ path = fetchurl {
+ name = "webpack_dev_server___webpack_dev_server_3.11.0.tgz";
+ url = "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz";
+ sha1 = "8f154a3bce1bcfd1cc618ef4e703278855e7ff8c";
+ };
+ }
+ {
+ name = "webpack_log___webpack_log_2.0.0.tgz";
+ path = fetchurl {
+ name = "webpack_log___webpack_log_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz";
+ sha1 = "5b7928e0637593f119d32f6227c1e0ac31e1b47f";
+ };
+ }
+ {
+ name = "webpack_merge___webpack_merge_4.2.2.tgz";
+ path = fetchurl {
+ name = "webpack_merge___webpack_merge_4.2.2.tgz";
+ url = "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz";
+ sha1 = "a27c52ea783d1398afd2087f547d7b9d2f43634d";
+ };
+ }
+ {
+ name = "webpack_sources___webpack_sources_1.4.3.tgz";
+ path = fetchurl {
+ name = "webpack_sources___webpack_sources_1.4.3.tgz";
+ url = "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz";
+ sha1 = "eedd8ec0b928fbf1cbfe994e22d2d890f330a933";
+ };
+ }
+ {
+ name = "webpack___webpack_4.43.0.tgz";
+ path = fetchurl {
+ name = "webpack___webpack_4.43.0.tgz";
+ url = "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz";
+ sha1 = "c48547b11d563224c561dad1172c8aa0b8a678e6";
+ };
+ }
+ {
+ name = "websocket_driver___websocket_driver_0.6.5.tgz";
+ path = fetchurl {
+ name = "websocket_driver___websocket_driver_0.6.5.tgz";
+ url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz";
+ sha1 = "5cb2556ceb85f4373c6d8238aa691c8454e13a36";
+ };
+ }
+ {
+ name = "websocket_driver___websocket_driver_0.7.4.tgz";
+ path = fetchurl {
+ name = "websocket_driver___websocket_driver_0.7.4.tgz";
+ url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz";
+ sha1 = "89ad5295bbf64b480abcba31e4953aca706f5760";
+ };
+ }
+ {
+ name = "websocket_extensions___websocket_extensions_0.1.4.tgz";
+ path = fetchurl {
+ name = "websocket_extensions___websocket_extensions_0.1.4.tgz";
+ url = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz";
+ sha1 = "7f8473bc839dfd87608adb95d7eb075211578a42";
+ };
+ }
+ {
+ name = "which_module___which_module_2.0.0.tgz";
+ path = fetchurl {
+ name = "which_module___which_module_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz";
+ sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
+ };
+ }
+ {
+ name = "which___which_1.3.1.tgz";
+ path = fetchurl {
+ name = "which___which_1.3.1.tgz";
+ url = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz";
+ sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a";
+ };
+ }
+ {
+ name = "which___which_2.0.2.tgz";
+ path = fetchurl {
+ name = "which___which_2.0.2.tgz";
+ url = "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz";
+ sha1 = "7c6a8dd0a636a0327e10b59c9286eee93f3f51b1";
+ };
+ }
+ {
+ name = "word_wrap___word_wrap_1.2.3.tgz";
+ path = fetchurl {
+ name = "word_wrap___word_wrap_1.2.3.tgz";
+ url = "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz";
+ sha1 = "610636f6b1f703891bd34771ccb17fb93b47079c";
+ };
+ }
+ {
+ name = "workbox_background_sync___workbox_background_sync_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_background_sync___workbox_background_sync_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz";
+ sha1 = "26821b9bf16e9e37fd1d640289edddc08afd1950";
+ };
+ }
+ {
+ name = "workbox_broadcast_update___workbox_broadcast_update_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_broadcast_update___workbox_broadcast_update_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz";
+ sha1 = "e2c0280b149e3a504983b757606ad041f332c35b";
+ };
+ }
+ {
+ name = "workbox_build___workbox_build_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_build___workbox_build_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz";
+ sha1 = "414f70fb4d6de47f6538608b80ec52412d233e64";
+ };
+ }
+ {
+ name = "workbox_cacheable_response___workbox_cacheable_response_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_cacheable_response___workbox_cacheable_response_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz";
+ sha1 = "f53e079179c095a3f19e5313b284975c91428c91";
+ };
+ }
+ {
+ name = "workbox_core___workbox_core_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_core___workbox_core_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz";
+ sha1 = "005d2c6a06a171437afd6ca2904a5727ecd73be6";
+ };
+ }
+ {
+ name = "workbox_expiration___workbox_expiration_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_expiration___workbox_expiration_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz";
+ sha1 = "d790433562029e56837f341d7f553c4a78ebe921";
+ };
+ }
+ {
+ name = "workbox_google_analytics___workbox_google_analytics_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_google_analytics___workbox_google_analytics_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz";
+ sha1 = "9eda0183b103890b5c256e6f4ea15a1f1548519a";
+ };
+ }
+ {
+ name = "workbox_navigation_preload___workbox_navigation_preload_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_navigation_preload___workbox_navigation_preload_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz";
+ sha1 = "29c8e4db5843803b34cd96dc155f9ebd9afa453d";
+ };
+ }
+ {
+ name = "workbox_precaching___workbox_precaching_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_precaching___workbox_precaching_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz";
+ sha1 = "9fc45ed122d94bbe1f0ea9584ff5940960771cba";
+ };
+ }
+ {
+ name = "workbox_range_requests___workbox_range_requests_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_range_requests___workbox_range_requests_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz";
+ sha1 = "f8a470188922145cbf0c09a9a2d5e35645244e74";
+ };
+ }
+ {
+ name = "workbox_routing___workbox_routing_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_routing___workbox_routing_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz";
+ sha1 = "a675841af623e0bb0c67ce4ed8e724ac0bed0cda";
+ };
+ }
+ {
+ name = "workbox_strategies___workbox_strategies_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_strategies___workbox_strategies_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz";
+ sha1 = "d2be03c4ef214c115e1ab29c9c759c9fe3e9e646";
+ };
+ }
+ {
+ name = "workbox_streams___workbox_streams_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_streams___workbox_streams_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz";
+ sha1 = "0b57da70e982572de09c8742dd0cb40a6b7c2cc3";
+ };
+ }
+ {
+ name = "workbox_sw___workbox_sw_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_sw___workbox_sw_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz";
+ sha1 = "df69e395c479ef4d14499372bcd84c0f5e246164";
+ };
+ }
+ {
+ name = "workbox_webpack_plugin___workbox_webpack_plugin_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_webpack_plugin___workbox_webpack_plugin_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz";
+ sha1 = "47ff5ea1cc074b6c40fb5a86108863a24120d4bd";
+ };
+ }
+ {
+ name = "workbox_window___workbox_window_4.3.1.tgz";
+ path = fetchurl {
+ name = "workbox_window___workbox_window_4.3.1.tgz";
+ url = "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz";
+ sha1 = "ee6051bf10f06afa5483c9b8dfa0531994ede0f3";
+ };
+ }
+ {
+ name = "worker_farm___worker_farm_1.7.0.tgz";
+ path = fetchurl {
+ name = "worker_farm___worker_farm_1.7.0.tgz";
+ url = "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz";
+ sha1 = "26a94c5391bbca926152002f69b84a4bf772e5a8";
+ };
+ }
+ {
+ name = "wrap_ansi___wrap_ansi_5.1.0.tgz";
+ path = fetchurl {
+ name = "wrap_ansi___wrap_ansi_5.1.0.tgz";
+ url = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz";
+ sha1 = "1fd1f67235d5b6d0fee781056001bfb694c03b09";
+ };
+ }
+ {
+ name = "wrap_ansi___wrap_ansi_6.2.0.tgz";
+ path = fetchurl {
+ name = "wrap_ansi___wrap_ansi_6.2.0.tgz";
+ url = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz";
+ sha1 = "e9393ba07102e6c91a3b221478f0257cd2856e53";
+ };
+ }
+ {
+ name = "wrappy___wrappy_1.0.2.tgz";
+ path = fetchurl {
+ name = "wrappy___wrappy_1.0.2.tgz";
+ url = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
+ sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+ };
+ }
+ {
+ name = "write___write_1.0.3.tgz";
+ path = fetchurl {
+ name = "write___write_1.0.3.tgz";
+ url = "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz";
+ sha1 = "0800e14523b923a387e415123c865616aae0f5c3";
+ };
+ }
+ {
+ name = "ws___ws_6.2.1.tgz";
+ path = fetchurl {
+ name = "ws___ws_6.2.1.tgz";
+ url = "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz";
+ sha1 = "442fdf0a47ed64f59b6a5d8ff130f4748ed524fb";
+ };
+ }
+ {
+ name = "xtend___xtend_4.0.2.tgz";
+ path = fetchurl {
+ name = "xtend___xtend_4.0.2.tgz";
+ url = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz";
+ sha1 = "bb72779f5fa465186b1f438f674fa347fdb5db54";
+ };
+ }
+ {
+ name = "y18n___y18n_4.0.0.tgz";
+ path = fetchurl {
+ name = "y18n___y18n_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz";
+ sha1 = "95ef94f85ecc81d007c264e190a120f0a3c8566b";
+ };
+ }
+ {
+ name = "yallist___yallist_2.1.2.tgz";
+ path = fetchurl {
+ name = "yallist___yallist_2.1.2.tgz";
+ url = "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz";
+ sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
+ };
+ }
+ {
+ name = "yallist___yallist_3.1.1.tgz";
+ path = fetchurl {
+ name = "yallist___yallist_3.1.1.tgz";
+ url = "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz";
+ sha1 = "dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd";
+ };
+ }
+ {
+ name = "yallist___yallist_4.0.0.tgz";
+ path = fetchurl {
+ name = "yallist___yallist_4.0.0.tgz";
+ url = "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz";
+ sha1 = "9bb92790d9c0effec63be73519e11a35019a3a72";
+ };
+ }
+ {
+ name = "yargs_parser___yargs_parser_13.1.2.tgz";
+ path = fetchurl {
+ name = "yargs_parser___yargs_parser_13.1.2.tgz";
+ url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz";
+ sha1 = "130f09702ebaeef2650d54ce6e3e5706f7a4fb38";
+ };
+ }
+ {
+ name = "yargs_parser___yargs_parser_18.1.3.tgz";
+ path = fetchurl {
+ name = "yargs_parser___yargs_parser_18.1.3.tgz";
+ url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz";
+ sha1 = "be68c4975c6b2abf469236b0c870362fab09a7b0";
+ };
+ }
+ {
+ name = "yargs___yargs_13.3.2.tgz";
+ path = fetchurl {
+ name = "yargs___yargs_13.3.2.tgz";
+ url = "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz";
+ sha1 = "ad7ffefec1aa59565ac915f82dccb38a9c31a2dd";
+ };
+ }
+ {
+ name = "yargs___yargs_15.3.1.tgz";
+ path = fetchurl {
+ name = "yargs___yargs_15.3.1.tgz";
+ url = "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz";
+ sha1 = "9505b472763963e54afe60148ad27a330818e98b";
+ };
+ }
+ {
+ name = "yorkie___yorkie_2.0.0.tgz";
+ path = fetchurl {
+ name = "yorkie___yorkie_2.0.0.tgz";
+ url = "https://registry.yarnpkg.com/yorkie/-/yorkie-2.0.0.tgz";
+ sha1 = "92411912d435214e12c51c2ae1093e54b6bb83d9";
+ };
+ }
+ ];
+}
diff --git a/systems/eldiron/websites/tools/ldap.nix b/systems/eldiron/websites/tools/ldap.nix
new file mode 100644
index 0000000..9509169
--- /dev/null
+++ b/systems/eldiron/websites/tools/ldap.nix
@@ -0,0 +1,77 @@
+{ lib, php, env, writeText, phpldapadmin, config }:
+rec {
+ keys."webapps/tools-ldap" = {
+ user = apache.user;
+ group = apache.group;
+ permissions = "0400";
+ text = ''
+ custom->appearance['show_clear_password'] = true;
+ $config->custom->appearance['hide_template_warning'] = true;
+ $config->custom->appearance['theme'] = "tango";
+ $config->custom->appearance['minimalMode'] = false;
+ $config->custom->appearance['tree'] = 'AJAXTree';
+
+ $servers = new Datastore();
+
+ $servers->newServer('ldap_pla');
+ $servers->setValue('server','name','Immae’s LDAP');
+ $servers->setValue('server','host','ldaps://${env.ldap.host}');
+ $servers->setValue('login','auth_type','cookie');
+ $servers->setValue('login','bind_id','${env.ldap.dn}');
+ $servers->setValue('login','bind_pass','${env.ldap.password}');
+ $servers->setValue('appearance','pla_password_hash','ssha');
+ $servers->setValue('login','attr','uid');
+ $servers->setValue('login','fallback_dn',true);
+ '';
+ };
+ webRoot = phpldapadmin.override { config = config.secrets.fullPaths."webapps/tools-ldap"; };
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = "${webRoot}/htdocs";
+ vhostConf = socket: ''
+ Alias /ldap "${root}"
+
+ DirectoryIndex index.php
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ AllowOverride None
+ Require all granted
+
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "openldap.service" ];
+ basedir = builtins.concatStringsSep ":" [ webRoot config.secrets.fullPaths."webapps/tools-ldap" ];
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "LdapPHPSESSID";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:PhpLDAPAdmin:'";
+ };
+ };
+ monitoringPlugins = [ "http" ];
+ monitoringObjects.service = [
+ {
+ service_description = "ldap website is running on tools.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "tools.immae.eu" "/ldap/" "phpLDAPadmin"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "LDAP";
+ _webstatus_url = "https://tools.immae.eu/ldap/";
+ }
+ ];
+}
diff --git a/systems/eldiron/websites/tools/phpbb.nix b/systems/eldiron/websites/tools/phpbb.nix
new file mode 100644
index 0000000..c1cbd6f
--- /dev/null
+++ b/systems/eldiron/websites/tools/phpbb.nix
@@ -0,0 +1,69 @@
+{ lib, phpbb, gnused }:
+rec {
+ varDir = "/var/lib/phpbb";
+ activationScript = {
+ deps = [ "wrappers" ];
+ text = ''
+ if [ ! -d ${varDir} ]; then
+ install -m 0755 -o ${apache.user} -g ${apache.user} -d ${varDir}
+ cp -a ${phpbb}/vars/* ${varDir}
+ chown -R ${apache.user}:${apache.user} ${varDir}
+ fi
+ '';
+ };
+ chatonsHostingProperties = {
+ file.datetime = "2022-08-21T22:50:00";
+ hosting = {
+ name = "phpBB";
+ description = "Forum software";
+ website = "https://tools.immae.eu/forum";
+ logo = "https://www.phpbb.com/favicon.ico";
+ type = "INSTANCE";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ };
+ webRoot = phpbb;
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /forum "${root}"
+
+ DirectoryIndex index.php
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ AllowOverride All
+ Options FollowSymlinks
+ Require all granted
+
+ # add instal to the list after install
+
+ Require all denied
+
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "postgresql.service" ];
+ basedir = builtins.concatStringsSep ":" [ "/run/wrappers/bin/sendmail" phpbb varDir ];
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "PhpBBPHPSESSID";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:PhpBB:'";
+ };
+ };
+}
diff --git a/systems/eldiron/websites/tools/rompr.nix b/systems/eldiron/websites/tools/rompr.nix
new file mode 100644
index 0000000..a7308ce
--- /dev/null
+++ b/systems/eldiron/websites/tools/rompr.nix
@@ -0,0 +1,86 @@
+{ lib, env, rompr, config }:
+rec {
+ varDir = "/var/lib/rompr";
+ activationScript = ''
+ install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
+ ${varDir}/prefs ${varDir}/albumart
+ '';
+ webRoot = rompr;
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "headers" "mime" "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /rompr ${root}
+
+
+ Options Indexes FollowSymLinks
+ DirectoryIndex index.php
+ AllowOverride all
+ Require all granted
+ Order allow,deny
+ Allow from all
+ ErrorDocument 404 /rompr/404.php
+ AddType image/x-icon .ico
+
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+
+
+ Header Set Cache-Control "max-age=0, no-store"
+ Header Set Cache-Control "no-cache, must-revalidate"
+
+
+
+ Header Set Cache-Control "max-age=0, no-store"
+ Header Set Cache-Control "no-cache, must-revalidate"
+
+
+
+ Use LDAPConnect
+ Require ldap-group cn=users,cn=mpd,ou=services,dc=immae,dc=eu
+
+ '';
+ };
+ phpFpm = rec {
+ basedir = builtins.concatStringsSep ":" [ webRoot varDir ];
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "RomprPHPSESSID";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Rompr:'";
+ "php_flag[magic_quotes_gpc]" = "Off";
+ "php_flag[track_vars]" = "On";
+ "php_flag[register_globals]" = "Off";
+ "php_admin_flag[allow_url_fopen]" = "On";
+ "php_value[include_path]" = "${webRoot}";
+ "php_admin_value[upload_tmp_dir]" = "${varDir}/prefs";
+ "php_admin_value[post_max_size]" = "32M";
+ "php_admin_value[upload_max_filesize]" = "32M";
+ "php_admin_value[memory_limit]" = "256M";
+ };
+ };
+ monitoringPlugins = [ "http" ];
+ monitoringObjects.service = [
+ {
+ service_description = "rompr mpd website is running on tools.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https_auth" "tools.immae.eu" "/rompr/" "RompЯ"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "MPD (ROMPR)";
+ _webstatus_url = "https://tools.immae.eu/rompr/";
+ }
+ ];
+}
diff --git a/systems/eldiron/websites/tools/shaarli.nix b/systems/eldiron/websites/tools/shaarli.nix
new file mode 100644
index 0000000..35f1edb
--- /dev/null
+++ b/systems/eldiron/websites/tools/shaarli.nix
@@ -0,0 +1,102 @@
+{ lib, env, stdenv, fetchurl, shaarli, config }:
+let
+ varDir = "/var/lib/shaarli";
+in rec {
+ activationScript = ''
+ install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
+ ${varDir}/cache ${varDir}/pagecache ${varDir}/tmp ${varDir}/data
+ '';
+ webRoot = shaarli.override { inherit varDir; };
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" "rewrite" "env" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /Shaarli "${root}"
+
+ Include ${config.secrets.fullPaths."webapps/tools-shaarli"}
+
+ Header set Access-Control-Allow-Origin "*"
+ Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
+ Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization, Client-Security-Token, Accept-Encoding"
+
+
+ DirectoryIndex index.php index.htm index.html
+ Options Indexes FollowSymLinks MultiViews Includes
+ AllowOverride All
+ Require all granted
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ '';
+ };
+ chatonsProperties = {
+ file.datetime = "2022-08-21T22:50:00";
+ service = {
+ name = "Shaarli";
+ description = "The personal, minimalist, super-fast, database free, bookmarking service - community repo";
+ website = "https://tools.immae.eu/Shaarli/";
+ logo = "https://tools.immae.eu/Shaarli/tpl/default/img/apple-touch-icon.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Shaarli";
+ website = "https://shaarli.readthedocs.io/";
+ license.url = "https://github.com/shaarli/Shaarli/blob/master/COPYING";
+ license.name = "GNU General Public License Version 3";
+ version = webRoot.version;
+ source.url = "https://github.com/shaarli/Shaarli";
+ modules = "ldap-connection-patch";
+ };
+ };
+ keys."webapps/tools-shaarli" = {
+ user = apache.user;
+ group = apache.group;
+ permissions = "0400";
+ text = ''
+ SetEnv SHAARLI_LDAP_PASSWORD "${env.ldap.password}"
+ SetEnv SHAARLI_LDAP_DN "${env.ldap.dn}"
+ SetEnv SHAARLI_LDAP_HOST "ldaps://${env.ldap.host}"
+ SetEnv SHAARLI_LDAP_BASE "${env.ldap.base}"
+ SetEnv SHAARLI_LDAP_FILTER "${env.ldap.filter}"
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "openldap.service" ];
+ basedir = builtins.concatStringsSep ":" [ webRoot varDir ];
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "ShaarliPHPSESSID";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Shaarli:'";
+ "php_admin_value[upload_max_filesize]" = "200M";
+ "php_admin_value[post_max_size]" = "200M";
+ };
+ };
+ monitoringPlugins = [ "http" ];
+ monitoringObjects.service = [
+ {
+ service_description = "shaarli website is running on tools.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "tools.immae.eu" "/Shaarli/immae" "Immae"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Shaarli";
+ _webstatus_url = "https://tools.immae.eu/Shaarli/";
+ }
+ ];
+}
diff --git a/systems/eldiron/websites/tools/ttrss.nix b/systems/eldiron/websites/tools/ttrss.nix
new file mode 100644
index 0000000..6393256
--- /dev/null
+++ b/systems/eldiron/websites/tools/ttrss.nix
@@ -0,0 +1,167 @@
+{ php, env, ttrss, ttrss-plugins, config }:
+rec {
+ varDir = "/var/lib/ttrss";
+ activationScript = {
+ deps = [ "wrappers" ];
+ text = ''
+ install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
+ ${varDir}/lock ${varDir}/cache ${varDir}/feed-icons
+ install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/cache/export/ \
+ ${varDir}/cache/feeds/ \
+ ${varDir}/cache/images/ \
+ ${varDir}/cache/js/ \
+ ${varDir}/cache/simplepie/ \
+ ${varDir}/cache/upload/
+ touch ${varDir}/feed-icons/index.html
+ '';
+ };
+ chatonsProperties = {
+ file.datetime = "2022-08-21T22:50:00";
+ service = {
+ name = "RSS";
+ description = "Tiny Tiny RSS is a free and open source web-based news feed (RSS/Atom) reader and aggregator";
+ website = "https://tools.immae.eu/ttrss/";
+ logo = "https://tools.immae.eu/ttrss/images/favicon.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Tiny Tiny RSS";
+ website = "https://tt-rss.org/";
+ license.url = "https://www.gnu.org/copyleft/gpl.html";
+ license.name = "GNU General Public License Version 3";
+ version = webRoot.version;
+ source.url = "https://git.tt-rss.org/fox/tt-rss.git/";
+ modules = map (p: p.pluginName) webRoot.plugins;
+ };
+ };
+ keys."webapps/tools-ttrss" = {
+ user = apache.user;
+ group = apache.group;
+ permissions = "0400";
+ keyDependencies = [ php ];
+ text = ''
+
+ DirectoryIndex index.php
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ AllowOverride All
+ Options FollowSymlinks
+ Require all granted
+
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "postgresql.service" "openldap.service" ];
+ basedir = builtins.concatStringsSep ":" (
+ [ webRoot config.secrets.fullPaths."webapps/tools-ttrss" varDir ]
+ ++ webRoot.plugins);
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "TtrssPHPSESSID";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:TTRSS:'";
+ };
+ };
+ monitoringPlugins = [ "http" ];
+ monitoringObjects.service = [
+ {
+ service_description = "ttrss website is running on tools.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "tools.immae.eu" "/ttrss/" "Tiny Tiny RSS"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "TT-RSS";
+ _webstatus_url = "https://tools.immae.eu/ttrss/";
+ }
+ ];
+}
diff --git a/systems/eldiron/websites/tools/wallabag.nix b/systems/eldiron/websites/tools/wallabag.nix
new file mode 100644
index 0000000..0a5750d
--- /dev/null
+++ b/systems/eldiron/websites/tools/wallabag.nix
@@ -0,0 +1,180 @@
+{ env, wallabag, mylibs, config }:
+rec {
+ varDir = "/var/lib/wallabag";
+ keys."webapps/tools-wallabag" = {
+ user = apache.user;
+ group = apache.group;
+ permissions = "0400";
+ text = ''
+ # This file is auto-generated during the composer install
+ parameters:
+ database_driver: pdo_pgsql
+ database_driver_class: Wallabag\CoreBundle\Doctrine\DBAL\Driver\CustomPostgreSQLDriver
+ database_host: ${env.postgresql.socket}
+ database_port: ${env.postgresql.port}
+ database_name: ${env.postgresql.database}
+ database_user: ${env.postgresql.user}
+ database_password: ${env.postgresql.password}
+ database_path: null
+ database_table_prefix: wallabag_
+ database_socket: null
+ database_charset: utf8
+ domain_name: https://tools.immae.eu/wallabag
+ mailer_transport: sendmail
+ mailer_host: 127.0.0.1
+ mailer_user: null
+ mailer_password: null
+ locale: fr
+ secret: ${env.secret}
+ twofactor_auth: true
+ twofactor_sender: wallabag@tools.immae.eu
+ fosuser_registration: false
+ fosuser_confirmation: true
+ from_email: wallabag@tools.immae.eu
+ rss_limit: 50
+ rabbitmq_host: localhost
+ rabbitmq_port: 5672
+ rabbitmq_user: guest
+ rabbitmq_password: guest
+ rabbitmq_prefetch_count: 10
+ redis_scheme: unix
+ redis_host: null
+ redis_port: null
+ redis_path: ${env.redis.socket}
+ redis_password: null
+ sites_credentials: { }
+ ldap_enabled: true
+ ldap_host: ${env.ldap.host}
+ ldap_port: 636
+ ldap_tls: false
+ ldap_ssl: true
+ ldap_bind_requires_dn: true
+ ldap_base: '${env.ldap.base}'
+ ldap_manager_dn: '${env.ldap.dn}'
+ ldap_manager_pw: ${env.ldap.password}
+ ldap_filter: '${env.ldap.filter}'
+ ldap_admin_filter: '${env.ldap.admin_filter}'
+ ldap_username_attribute: uid
+ ldap_email_attribute: mail
+ ldap_name_attribute: cn
+ ldap_enabled_attribute: null
+ services:
+ swiftmailer.mailer.default.transport:
+ class: Swift_SendmailTransport
+ arguments: ['/run/wrappers/bin/sendmail -bs']
+ '';
+ };
+ chatonsProperties = {
+ file.datetime = "2022-08-21T22:50:00";
+ service = {
+ name = "Wallabag";
+ description = "wallabag is a self hostable application for saving web pages: Save and classify articles. Read them later. Freely.";
+ website = "https://tools.immae.eu/wallabag/";
+ logo = "https://tools.immae.eu/wallabag/wallassets/themes/_global/img/appicon/apple-touch-icon-120.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Wallabag";
+ website = "https://wallabag.org/en";
+ license.url = "https://github.com/wallabag/wallabag/blob/master/COPYING.md";
+ license.name = "MIT License";
+ version = webappDir.version;
+ source.url = "https://github.com/wallabag/wallabag";
+ modules = "ldap-patch";
+ };
+ };
+ webappDir = wallabag.override { ldap = true; wallabag_config = config.secrets.fullPaths."webapps/tools-wallabag"; };
+ activationScript = ''
+ install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
+ ${varDir}/var ${varDir}/data/db ${varDir}/assets/images
+ '';
+ webRoot = "${webappDir}/web";
+ # Domain migration: Table wallabag_entry contains whole
+ # https://tools.immae.eu/wallabag domain name in preview_picture
+ apache = rec {
+ user = "wwwrun";
+ group = "wwwrun";
+ modules = [ "proxy_fcgi" ];
+ root = webRoot;
+ vhostConf = socket: ''
+ Alias /wallabag "${root}"
+
+ AllowOverride None
+ Require all granted
+ # For OAuth (apps)
+ CGIPassAuth On
+
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+
+ Options -MultiViews
+ RewriteEngine On
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteRule ^(.*)$ app.php [QSA,L]
+
+
+
+
+ RewriteEngine Off
+
+
+
+ AllowOverride None
+ Require all granted
+
+ '';
+ };
+ phpFpm = rec {
+ preStart = ''
+ if [ ! -f "${varDir}/currentWebappDir" -o \
+ ! -f "${varDir}/currentKey" -o \
+ "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ] \
+ || ! sha512sum -c --status ${varDir}/currentKey; then
+ pushd ${webappDir} > /dev/null
+ /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=prod cache:clear
+ rm -rf /var/lib/wallabag/var/cache/pro_
+ /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=prod doctrine:migrations:migrate --no-interaction
+ popd > /dev/null
+ echo -n "${webappDir}" > ${varDir}/currentWebappDir
+ sha512sum ${config.secrets.fullPaths."webapps/tools-wallabag"} > ${varDir}/currentKey
+ fi
+ '';
+ serviceDeps = [ "postgresql.service" "openldap.service" ];
+ basedir = builtins.concatStringsSep ":" [ webappDir config.secrets.fullPaths."webapps/tools-wallabag" varDir ];
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "dynamic";
+ "pm.max_children" = "60";
+ "pm.start_servers" = "2";
+ "pm.min_spare_servers" = "1";
+ "pm.max_spare_servers" = "10";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "WallabagPHPSESSID";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Wallabag:'";
+ "php_admin_value[open_basedir]" = "/run/wrappers/bin/sendmail:${basedir}:/tmp";
+ "php_value[max_execution_time]" = "300";
+ };
+ };
+ monitoringPlugins = [ "http" ];
+ monitoringObjects.service = [
+ {
+ service_description = "wallabag website is running on tools.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "tools.immae.eu" "/wallabag/" "Bienvenue sur wallabag"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "Wallabag";
+ _webstatus_url = "https://tools.immae.eu/wallabag/";
+ }
+ ];
+}
diff --git a/systems/eldiron/websites/tools/webhooks.nix b/systems/eldiron/websites/tools/webhooks.nix
new file mode 100644
index 0000000..337c8f8
--- /dev/null
+++ b/systems/eldiron/websites/tools/webhooks.nix
@@ -0,0 +1,25 @@
+{ lib, env, binEnv }:
+{
+ keys = lib.attrsets.mapAttrs' (k: v:
+ lib.nameValuePair "webapps/webhooks/${k}.php" {
+ user = "wwwrun";
+ group = "wwwrun";
+ permissions = "0400";
+ text = builtins.replaceStrings ["{{webhooks-bin-env}}"] [ "${binEnv}" ] v;
+ keyDependencies = [ binEnv ];
+ }) env // lib.attrsets.mapAttrs' (k: v:
+ lib.nameValuePair "webapps/webhooks/${k}/index.php" {
+ user = "wwwrun";
+ group = "wwwrun";
+ permissions = "0400";
+ text = builtins.replaceStrings ["{{webhooks-bin-env}}"] [ "${binEnv}" ] v;
+ keyDependencies = [ binEnv ];
+ }) env // {
+ "webapps/webhooks" = {
+ isDir = true;
+ user = "wwwrun";
+ group = "wwwrun";
+ permissions = "0500";
+ };
+ };
+}
diff --git a/systems/eldiron/websites/tools/ympd.nix b/systems/eldiron/websites/tools/ympd.nix
new file mode 100644
index 0000000..0d8d41d
--- /dev/null
+++ b/systems/eldiron/websites/tools/ympd.nix
@@ -0,0 +1,54 @@
+{ env, config }:
+let
+ ympd = rec {
+ config = {
+ webPort = "localhost:${toString env.listenPort}";
+ host = env.mpd.host;
+ port = env.mpd.port;
+ };
+ apache = {
+ modules = [
+ "proxy_wstunnel"
+ ];
+ vhostConf = ''
+
+ Use LDAPConnect
+ Require ldap-group cn=users,cn=mpd,ou=services,dc=immae,dc=eu
+
+
+ RedirectMatch permanent "^/mpd$" "/mpd/"
+
+ ProxyPass http://${config.webPort}/
+ ProxyPassReverse http://${config.webPort}/
+ ProxyPreserveHost on
+
+
+ ProxyPass ws://${config.webPort}/ws
+
+
+ ProxyPass unix:///run/mpd/mp3.sock|http://tools.immae.eu/mpd/mp3
+ ProxyPassReverse unix:///run/mpd/mp3.sock|http://tools.immae.eu/mpd/mp3
+
+
+ ProxyPass unix:///run/mpd/ogg.sock|http://tools.immae.eu/mpd/ogg
+ ProxyPassReverse unix:///run/mpd/ogg.sock|http://tools.immae.eu/mpd/ogg
+
+ '';
+ };
+ };
+in
+ ympd // {
+ monitoringPlugins = [ "http" ];
+ monitoringObjects.service = [
+ {
+ service_description = "mpd website is running on tools.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https_auth" "tools.immae.eu" "/mpd/" "ympd"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "MPD (YMPD)";
+ _webstatus_url = "https://tools.immae.eu/mpd/";
+ }
+ ];
+ }
diff --git a/systems/eldiron/websites/tools/yourls.nix b/systems/eldiron/websites/tools/yourls.nix
new file mode 100644
index 0000000..9e54b0d
--- /dev/null
+++ b/systems/eldiron/websites/tools/yourls.nix
@@ -0,0 +1,118 @@
+{ env, yourls, yourls-plugins, config }:
+rec {
+ keys."webapps/tools-yourls" = {
+ user = apache.user;
+ group = apache.group;
+ permissions = "0400";
+ text = ''
+
+
+ SetHandler "proxy:unix:${socket}|fcgi://localhost"
+
+
+ AllowOverride None
+ Require all granted
+
+ RewriteEngine On
+ RewriteBase /url/
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteRule ^.*$ /url/yourls-loader.php [L]
+
+ DirectoryIndex index.php
+
+ '';
+ };
+ phpFpm = rec {
+ serviceDeps = [ "mysql.service" "openldap.service" ];
+ basedir = builtins.concatStringsSep ":" (
+ [ webRoot config.secrets.fullPaths."webapps/tools-yourls" ]
+ ++ webRoot.plugins);
+ pool = {
+ "listen.owner" = apache.user;
+ "listen.group" = apache.group;
+ "pm" = "ondemand";
+ "pm.max_children" = "60";
+ "pm.process_idle_timeout" = "60";
+
+ # Needed to avoid clashes in browser cookies (same domain)
+ "php_value[session.name]" = "YourlsPHPSESSID";
+ "php_admin_value[session.save_handler]" = "redis";
+ "php_admin_value[session.save_path]" = "'unix:///run/redis-php-sessions/redis.sock?persistent=1&prefix=Tools:Yourls:'";
+ "php_admin_value[open_basedir]" = "${basedir}:/tmp";
+ };
+ };
+ monitoringPlugins = [ "http" ];
+ monitoringObjects.service = [
+ {
+ service_description = "yourl website is running on tools.immae.eu";
+ host_name = config.hostEnv.fqdn;
+ use = "external-web-service";
+ check_command = ["check_https" "tools.immae.eu" "/url/admin/" "YOURLS"];
+
+ servicegroups = "webstatus-webapps";
+ _webstatus_name = "YOURLS";
+ _webstatus_url = "https://tools.immae.eu/url/admin/";
+ }
+
+ ];
+}
diff --git a/systems/eldiron/websites/visio/default.nix b/systems/eldiron/websites/visio/default.nix
new file mode 100644
index 0000000..76d1960
--- /dev/null
+++ b/systems/eldiron/websites/visio/default.nix
@@ -0,0 +1,63 @@
+{ lib, pkgs, config, ... }:
+let
+ port = config.myEnv.ports.galene_port;
+ cfg = config.myServices.websites.tools.visio;
+in {
+ options.myServices.websites.tools.visio = {
+ enable = lib.mkEnableOption "enable visio website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ myServices.dns.zones."immae.eu".subdomains.visio =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.services.galene = {
+ file.datetime = "2022-08-21T22:45:00";
+ service = {
+ name = "Galene";
+ description = "The Galène videoconference server";
+ website = "https://visio.immae.eu/";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["NONE"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Galene";
+ website = "https://galene.org/";
+ license.url = "https://github.com/jech/galene/blob/master/LICENCE";
+ license.name = "MIT License";
+ version = pkgs.galene.version;
+ source.url = "https://github.com/jech/galene";
+ };
+ };
+ services.galene = {
+ enable = true;
+ httpPort = port;
+ insecure = true;
+ # hack to bypass module's limitations
+ dataDir = "/var/lib/galene/data -http localhost:${builtins.toString port}";
+ };
+ systemd.services.galene.serviceConfig.RestrictAddressFamilies = lib.mkForce [ "AF_INET" "AF_INET6" "AF_NETLINK" ];
+ security.acme.certs.eldiron.extraDomainNames = [ "visio.immae.eu" ];
+ services.websites.env.tools.vhostConfs.visio = {
+ certName = "eldiron";
+ hosts = ["visio.immae.eu" ];
+ root = null;
+ extraConfig = [
+ ''
+ ProxyPass /ws ws://localhost:${builtins.toString port}/ws
+ ProxyPassReverse /ws ws://localhost:${builtins.toString port}/ws
+
+ ProxyPass / http://localhost:${builtins.toString port}/
+ ProxyPassReverse / http://localhost:${builtins.toString port}/
+
+ ProxyPreserveHost On
+ ''
+ ];
+ };
+
+ };
+}
+
diff --git a/systems/eldiron/websites/vpn/default.nix b/systems/eldiron/websites/vpn/default.nix
new file mode 100644
index 0000000..ea54691
--- /dev/null
+++ b/systems/eldiron/websites/vpn/default.nix
@@ -0,0 +1,13 @@
+{ lib, pkgs, config, ... }:
+let
+ cfg = config.myServices.vpn;
+in {
+ config = lib.mkIf cfg.enable {
+ security.acme.certs.eldiron.extraDomainNames = [ "vpn.immae.eu" ];
+ services.websites.env.tools.vhostConfs.vpn = {
+ certName = "eldiron";
+ hosts = [ "vpn.immae.eu" ];
+ root = ./www;
+ };
+ };
+}
diff --git a/systems/eldiron/websites/vpn/www/index.html b/systems/eldiron/websites/vpn/www/index.html
new file mode 100644
index 0000000..fc2618a
--- /dev/null
+++ b/systems/eldiron/websites/vpn/www/index.html
@@ -0,0 +1,91 @@
+
+
+
+ VPN configuration
+
+
+
+
+
+
+
Installation
+
+ Installer tinc
+ Créer un fichier /etc/tinc/Immae/tinc.conf sur ce modèle, en remplaçant la ligne A choisir
par un nom de la forme DomaineMachine. La machine sera accessible par machine.domaine.immae.eu
par la suite
+
+Name = A choisir
+Mode = switch
+Interface = vpn6
+ConnectTo = ImmaeEu
+
+# The tap device tinc will use.
+# Default is /dev/tap0 for ethertap or FreeBSD,
+# /dev/tun0 for Solaris and OpenBSD,
+# and /dev/net/tun for Linux tun/tap device.
+Device = /dev/net/tun
+LocalDiscovery = yes
+
+
+ Vérifier l'existence du device indiqué à la ligne "Device
" dans le système.
+ ls /dev/net/tun
+
+ Si tinc tourne déjà, l'arrêter !!
+ Générer les clés :
+ tincd -K -n Immae
+ Stocker la clé privée dans /etc/tinc/Immae/rsa_key.priv
et la clé publique dans un autre dossier
+ (pas /etc/tinc/Immae/hosts/
comme proposé par défaut ).
+ L'endroit importe peu, elle ne sera pas conservée.
+ M'envoyer le nom choisi dans tinc.conf
, et la clé publique
+ Cloner le dépôt des hôtes du réseau
+
+cd /etc/tinc/Immae
+git clone https://git.immae.eu/perso/Immae/Config/tinc/hosts
+
+
+ Une fois que j'ai confirmé avoir reçu la clé :
+
+cd /etc/tinc/Immae/hosts
+git pull origin master
+
+
+ Uniquement pour Debian/Ubuntu: Ajouter Immae
dans /etc/tinc/nets.boot
(créer le fichier si nécessaire).
+ Selon le système, démarrer tinc :
+
+/etc/init.d/tinc start
+
+ ou
+
+systemctl enable tincd@Immae.service
+systemctl start tincd@Immae.service
+
+
+
+
+
Choix d'ip
+
+
+
+
diff --git a/systems/eldiron/websites/vpn/www/style.css b/systems/eldiron/websites/vpn/www/style.css
new file mode 100644
index 0000000..b177fec
--- /dev/null
+++ b/systems/eldiron/websites/vpn/www/style.css
@@ -0,0 +1,61 @@
+* {
+ margin:0;
+ padding:0;
+ -webkit-box-sizing:border-box;
+ -moz-box-sizing:border-box;
+ box-sizing: border-box;
+}
+
+html {
+ min-height:100%;
+ border-top:10px solid #ECEEF1;
+ border-bottom:10px solid #ECEEF1;
+ color:#61666c;
+ font-weight:400;
+ font-size:1em;
+ font-family:'Open Sans', sans-serif;
+ line-height:2em;
+}
+body {
+ padding:20px;
+ -webkit-backface-visibility:hidden;
+}
+code {
+ font-family:consolas,monospace;
+}
+a {
+ color:#61666c;
+ text-decoration:none;
+}
+a, img {
+ border:none;
+ outline:none
+}
+a:hover {
+ color:#2a2a2a;
+}
+
+.instructions {
+ margin:0 auto;
+ padding-top:20px;
+ max-width:80%;
+}
+
+.instructions a {
+ text-decoration: underline;
+}
+
+.instructions h2 {
+ margin-top: 10px;
+}
+.instructions em.important:before {
+ content: "⚠ Important ⚠ ";
+ color: red;
+}
+.instructions pre {
+ width: 50em;
+ padding: 10px 15px;
+ display: table;
+ border: 1px inset black;
+ line-height: 1em;
+}
diff --git a/systems/eldiron/webstats/default.nix b/systems/eldiron/webstats/default.nix
new file mode 100644
index 0000000..0057f64
--- /dev/null
+++ b/systems/eldiron/webstats/default.nix
@@ -0,0 +1,80 @@
+{ lib, pkgs, config, ... }:
+let
+ name = "goaccess";
+ cfg = config.services.webstats;
+in {
+ options.services.webstats = {
+ dataDir = lib.mkOption {
+ type = lib.types.path;
+ default = "/var/lib/${name}";
+ description = ''
+ The directory where Goaccess stores its data.
+ '';
+ };
+ sites = lib.mkOption {
+ type = lib.types.listOf (lib.types.submodule {
+ options = {
+ conf = lib.mkOption {
+ type = lib.types.nullOr lib.types.path;
+ default = null;
+ description = ''
+ use custom goaccess configuration file instead of the
+ default one.
+ '';
+ };
+ name = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ Domain name. Corresponds to the Apache file name and the
+ folder name in which the state will be saved.
+ '';
+ };
+ };
+ });
+ default = [];
+ description = "Sites to generate stats";
+ };
+ };
+
+ config = lib.mkIf (builtins.length cfg.sites > 0) {
+ environment.systemPackages = [
+ pkgs.goaccess
+ ];
+
+ services.cron = {
+ enable = true;
+ systemCronJobs = let
+ stats = domain: conf: let
+ config = if builtins.isNull conf
+ then pkgs.runCommand "goaccess.conf" {
+ dbPath = "${cfg.dataDir}/${domain}";
+ } "substituteAll ${./goaccess.conf} $out"
+ else conf;
+ d = pkgs.writeScriptBin "stats-${domain}" ''
+ #!${pkgs.stdenv.shell}
+ set -e
+ shopt -s nullglob
+ TMPFILE=$(mktemp)
+ trap "rm -f $TMPFILE" EXIT
+
+ mkdir -p ${cfg.dataDir}/${domain}
+ for i in /var/log/httpd/access-${domain}*.gz /var/log/httpd/*/access-${domain}*.gz; do
+ zcat "$i" >> $TMPFILE
+ done
+ cat /var/log/httpd/*access-${domain}.log /var/log/httpd/*/access-${domain}.log > $TMPFILE
+ ${pkgs.goaccess}/bin/goaccess $TMPFILE --no-progress -o ${cfg.dataDir}/${domain}/index.html -p ${config}
+ '';
+ in "${d}/bin/stats-${domain}";
+ allStats = sites: pkgs.writeScript "stats" ''
+ #!${pkgs.stdenv.shell}
+
+ mkdir -p ${cfg.dataDir}
+ ${builtins.concatStringsSep "\n" (map (v: stats v.name v.conf) sites)}
+ '';
+ in
+ [
+ "5 0 * * * root ${allStats cfg.sites}"
+ ];
+ };
+ };
+}
diff --git a/systems/eldiron/webstats/goaccess.conf b/systems/eldiron/webstats/goaccess.conf
new file mode 100644
index 0000000..c6c244a
--- /dev/null
+++ b/systems/eldiron/webstats/goaccess.conf
@@ -0,0 +1,100 @@
+time-format %H:%M:%S
+date-format %d/%b/%Y
+
+log-format VCOMBINED
+#= %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
+
+html-prefs {"theme":"bright","layout":"vertical"}
+
+# old
+exclude-ip 188.165.209.148
+exclude-ip 178.33.252.96
+exclude-ip 2001:41d0:2:9c94::1
+exclude-ip 2001:41d0:2:9c94::
+# eldiron
+exclude-ip 176.9.151.89
+exclude-ip 2a01:4f8:160:3445::
+# monitoring-1
+exclude-ip 95.216.164.150
+exclude-ip 2a01:4f9:c010:1c95::
+
+no-query-string true
+
+persist true
+restore true
+db-path @dbPath@
+
+ignore-panel REFERRERS
+ignore-panel KEYPHRASES
+
+static-file .css
+static-file .js
+static-file .jpg
+static-file .png
+static-file .gif
+static-file .ico
+static-file .jpeg
+static-file .pdf
+static-file .csv
+static-file .mpeg
+static-file .mpg
+static-file .swf
+static-file .woff
+static-file .woff2
+static-file .xls
+static-file .xlsx
+static-file .doc
+static-file .docx
+static-file .ppt
+static-file .pptx
+static-file .txt
+static-file .zip
+static-file .ogg
+static-file .mp3
+static-file .mp4
+static-file .exe
+static-file .iso
+static-file .gz
+static-file .rar
+static-file .svg
+static-file .bmp
+static-file .tar
+static-file .tgz
+static-file .tiff
+static-file .tif
+static-file .ttf
+static-file .flv
+#static-file .less
+#static-file .ac3
+#static-file .avi
+#static-file .bz2
+#static-file .class
+#static-file .cue
+#static-file .dae
+#static-file .dat
+#static-file .dts
+#static-file .ejs
+#static-file .eot
+#static-file .eps
+#static-file .img
+#static-file .jar
+#static-file .map
+#static-file .mid
+#static-file .midi
+#static-file .ogv
+#static-file .webm
+#static-file .mkv
+#static-file .odp
+#static-file .ods
+#static-file .odt
+#static-file .otf
+#static-file .pict
+#static-file .pls
+#static-file .ps
+#static-file .qt
+#static-file .rm
+#static-file .svgz
+#static-file .wav
+#static-file .webp
+
+
diff --git a/systems/monitoring-1/base.nix b/systems/monitoring-1/base.nix
new file mode 100644
index 0000000..8bfacc1
--- /dev/null
+++ b/systems/monitoring-1/base.nix
@@ -0,0 +1,75 @@
+{ config, pkgs, lib, nixpkgs, php, secrets, ... }:
+{
+ # ssh-keyscan monitoring-1 | nix-shell -p ssh-to-age --run ssh-to-age
+ secrets.ageKeys = [ "age1dn4lzhgxusqrpjjnzm7w8ml39ptf326htuzmpqdqs2gg3wq7cqzqxuvx8k" ];
+ boot.kernelPackages = pkgs.linuxPackages_latest;
+
+ imports = [
+ secrets.nixosModules.users-config-monitoring-1
+ (nixpkgs + "/nixos/modules/profiles/qemu-guest.nix")
+ ./monitoring-master.nix
+ ./monitoring.nix
+ ./status.nix
+ ./status_engine.nix
+ ];
+
+ nixpkgs.overlays = builtins.attrValues php.overlays;
+ nixpkgs.config.permittedInsecurePackages = [
+ "python-2.7.18.6" # for nagios-cli
+ ];
+
+ myServices.monitoring.enable = true;
+ myServices.monitoring.master = true;
+ myServices.status.enable = true;
+ networking = {
+ firewall.enable = true;
+ interfaces."ens3".ipv4.addresses = pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
+ (n: ips: map (ip: { address = ip; prefixLength = 32; }) (ips.ip4 or []))
+ (pkgs.lib.attrsets.filterAttrs (n: v: n != "main") config.hostEnv.ips));
+ interfaces."ens3".ipv6.addresses = pkgs.lib.flatten (pkgs.lib.attrsets.mapAttrsToList
+ (n: ips: map (ip: { address = ip; prefixLength = (if n == "main" && ip == pkgs.lib.head ips.ip6 then 64 else 128); }) (ips.ip6 or []))
+ config.hostEnv.ips);
+ defaultGateway6 = { address = "fe80::1"; interface = "ens3"; };
+ };
+ boot.loader.grub.device = "nodev";
+ fileSystems."/" = { device = "/dev/sda1"; fsType = "ext4"; };
+ myServices.mailRelay.enable = true;
+
+ security.pki.certificateFiles = [
+ (pkgs.fetchurl {
+ url = "http://downloads.e.eriomem.net/eriomemca.pem";
+ sha256 = "1ixx4c6j3m26j8dp9a3dkvxc80v1nr5aqgmawwgs06bskasqkvvh";
+ })
+ ];
+
+ services.netdata.enable = true;
+ services.netdata.configDir."stream.conf" = config.secrets.fullPaths."netdata-stream.conf";
+ services.netdata.config.web."allow dashboard from" = "localhost";
+ services.netdata.config.web."allow badges from" = "*";
+ services.netdata.config.web."allow streaming from" = "*";
+ services.netdata.config.web."allow netdata.conf from" = "fd*";
+ services.netdata.config.web."allow management from" = "fd*";
+ networking.firewall.allowedTCPPorts = [ 19999 ];
+
+ secrets.keys = {
+ "netdata-stream.conf" = {
+ user = config.services.netdata.user;
+ group = config.services.netdata.group;
+ permissions = "0400";
+ text = builtins.concatStringsSep "\n" (pkgs.lib.mapAttrsToList (_: key: ''
+ [${key}]
+ enabled = yes
+ default history = 3600
+ default memory = ram
+ health enabled by default = auto
+ '') config.myEnv.monitoring.netdata_keys);
+ };
+ };
+ users.users."${config.services.netdata.user}".extraGroups = [ "keys" ];
+ # This value determines the NixOS release with which your system is
+ # to be compatible, in order to avoid breaking some software such as
+ # database servers. You should change this only after NixOS release
+ # notes say you should.
+ # https://nixos.org/nixos/manual/release-notes.html
+ system.stateVersion = "23.05"; # Did you read the comment?
+}
diff --git a/systems/monitoring-1/flake.lock b/systems/monitoring-1/flake.lock
new file mode 100644
index 0000000..d4a2c8d
--- /dev/null
+++ b/systems/monitoring-1/flake.lock
@@ -0,0 +1,790 @@
+{
+ "nodes": {
+ "backports": {
+ "inputs": {
+ "flake-utils": "flake-utils_3",
+ "nixpkgs": "nixpkgs_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "chatons": {
+ "inputs": {
+ "environment": "environment"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/chatons",
+ "type": "path"
+ }
+ },
+ "colmena": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs",
+ "stable": "stable"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "disko": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_2"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_4": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_5": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_2"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_3"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_3": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "loginctl-linger": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/loginctl-linger",
+ "type": "path"
+ }
+ },
+ "mail-relay": {
+ "inputs": {
+ "environment": "environment_3",
+ "secrets": "secrets"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/mail-relay",
+ "type": "path"
+ }
+ },
+ "monitoring": {
+ "inputs": {
+ "environment": "environment_4",
+ "naemon": "naemon",
+ "nixpkgs-lib": "nixpkgs-lib",
+ "secrets": "secrets_2"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "my-lib": {
+ "inputs": {
+ "colmena": "colmena",
+ "disko": "disko",
+ "flake-parts": "flake-parts",
+ "nixos-anywhere": "nixos-anywhere",
+ "nixpkgs": "nixpkgs_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_2",
+ "nixpkgs": "nixpkgs_8",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "naemon": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "nixos-2305": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere": {
+ "inputs": {
+ "disko": [
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305",
+ "nixos-images": "nixos-images",
+ "nixpkgs": "nixpkgs_3",
+ "treefmt-nix": "treefmt-nix"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-images": {
+ "inputs": {
+ "nixos-2305": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_2": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_3": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_6": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_7": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_8": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "php": {
+ "inputs": {
+ "flake-utils": "flake-utils_2",
+ "nixpkgs": "nixpkgs_6",
+ "nixpkgs-4": "nixpkgs-4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "../../flakes/private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/php",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "chatons": "chatons",
+ "environment": "environment_2",
+ "files-watcher": "files-watcher",
+ "loginctl-linger": "loginctl-linger",
+ "mail-relay": "mail-relay",
+ "monitoring": "monitoring",
+ "my-lib": "my-lib",
+ "myuids": "myuids",
+ "nixpkgs": "nixpkgs_5",
+ "php": "php",
+ "secrets": "secrets_3",
+ "system": "system"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "stable": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "system": {
+ "inputs": {
+ "backports": "backports",
+ "environment": "environment_5",
+ "mypackages": "mypackages",
+ "myuids": "myuids_2",
+ "secrets-public": "secrets-public"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "treefmt-nix": {
+ "inputs": {
+ "nixpkgs": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/systems/monitoring-1/flake.nix b/systems/monitoring-1/flake.nix
new file mode 100644
index 0000000..e97cb05
--- /dev/null
+++ b/systems/monitoring-1/flake.nix
@@ -0,0 +1,45 @@
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+
+ my-lib.url = "path:../../flakes/lib";
+
+ monitoring.url = "path:../../flakes/private/monitoring";
+ mail-relay.url = "path:../../flakes/private/mail-relay";
+ chatons.url = "path:../../flakes/private/chatons";
+ environment.url = "path:../../flakes/private/environment";
+ system.url = "path:../../flakes/private/system";
+ php.url = "path:../../flakes/private/php";
+
+ myuids.url = "path:../../flakes/myuids";
+ secrets.url = "path:../../flakes/secrets";
+ files-watcher.url = "path:../../flakes/files-watcher";
+ loginctl-linger.url = "path:../../flakes/loginctl-linger";
+ };
+ outputs = inputs@{ self, my-lib, nixpkgs, ...}:
+ my-lib.lib.mkColmenaFlake {
+ name = "monitoring-1";
+ inherit self nixpkgs;
+ system = "x86_64-linux";
+ targetHost = "95.216.164.150";
+ targetUser = "root";
+ nixosModules = {
+ base = ./base.nix;
+ system = inputs.system.nixosModule;
+ mail-relay = inputs.mail-relay.nixosModule;
+ chatons = inputs.chatons.nixosModule;
+ monitoring = inputs.monitoring.nixosModule;
+ environment = inputs.environment.nixosModule;
+
+ myuids = inputs.myuids.nixosModule;
+ secrets = inputs.secrets.nixosModule;
+ files-watcher = inputs.files-watcher.nixosModule;
+ loginctl-linger = inputs.loginctl-linger.nixosModule;
+ };
+ moduleArgs = {
+ nixpkgs = inputs.nixpkgs;
+ monitoring = inputs.monitoring;
+ php = inputs.php;
+ };
+ };
+}
diff --git a/systems/monitoring-1/monitoring-master.nix b/systems/monitoring-1/monitoring-master.nix
new file mode 100644
index 0000000..09319b8
--- /dev/null
+++ b/systems/monitoring-1/monitoring-master.nix
@@ -0,0 +1,87 @@
+{ config, pkgs, lib, nodes, name, monitoring, ... }:
+let
+ mlib = monitoring.lib;
+ nodesWithMonitoring = lib.filterAttrs (n: v: (v.config.myServices or {}) ? "monitoring") nodes;
+in
+{
+ imports = [
+ ./monitoring/master.nix
+ ./monitoring/phare.nix
+ ./monitoring/ulminfo-fr.nix
+ ];
+ myServices.monitoring.activatedPlugins = lib.flatten (lib.mapAttrsToList (_: n: n.config.myServices.monitoring.fromMasterActivatedPlugins) nodesWithMonitoring);
+ myServices.monitoring.objects = lib.mkMerge (
+ lib.mapAttrsToList (_: n:
+ mlib.toMasterPassiveObject "external-passive-service" 1.5 n.config.myServices.monitoring.objects
+ ) (lib.filterAttrs (n: v: n != name) nodesWithMonitoring)
+ ++
+ lib.mapAttrsToList (_: n: n.config.myServices.monitoring.fromMasterObjects) nodesWithMonitoring
+ );
+ myServices.chatonsProperties.hostings.monitoring = {
+ file.datetime = "2022-08-27T16:00:00";
+ hosting = {
+ name = "Monitoring";
+ description = "Website and server health monitoring";
+ website = "https://status.immae.eu";
+ logo = "https://www.naemon.io/favicon.ico";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "naemon";
+ website = "https://www.naemon.io/";
+ license.url = "https://github.com/naemon/naemon-core/blob/master/COPYING";
+ license.name = "GNU General Public License v2.0";
+ version = config.services.naemon.package.version;
+ source.url = "https://github.com/naemon/naemon-core";
+ modules = "livestatus,status-engine";
+ };
+ };
+
+ services.nginx = {
+ virtualHosts."status.immae.eu".locations = {
+ "=/common/immae.cfg" = {
+ alias = pkgs.writeText "immae.cfg" ''
+ # put me for instance in /etc/naemon/module-conf.d/immae.cfg
+ # Make sure that you have include_dir=module-conf.d in
+ # naemon.cfg
+ log_initial_states=1
+ date_format=iso8601
+ admin_email=${config.myEnv.monitoring.email}
+ obsess_over_services=1
+ ocsp_command=notify-master
+ '';
+ };
+ "=/common/resource.cfg" = {
+ alias = pkgs.writeText "resource.cfg" ''
+ # Resource.cfg file
+ # Replace this with path to monitoring plugins
+ $USER1$=@@COMMON_PLUGINS@@
+ # Replace this with a path to scripts from
+ # https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/tree/modules/private/monitoring/plugins
+ $USER2$=@@IMMAE_PLUGINS@@
+ $USER200$=https://status.immae.eu/
+ $USER201$=@@TOKEN@@
+ '';
+ };
+ };
+ };
+
+ secrets.keys = lib.mapAttrs' (k: v: lib.nameValuePair "${k}_access_key" {
+ user = "naemon";
+ group = "naemon";
+ permissions = "0400";
+ text = ''
+ export AWS_ACCESS_KEY_ID="${v.accessKeyId}"
+ export AWS_SECRET_ACCESS_KEY="${v.secretAccessKey}"
+ export BASE_URL="${v.remote "immae-eldiron"}"
+ '';
+ }) config.myEnv.backup.remotes;
+
+ services.naemon.extraConfig = ''
+ broker_module=${pkgs.naemon-livestatus}/lib/naemon-livestatus/livestatus.so ${config.services.naemon.runDir}/live
+ broker_module=${pkgs.status-engine-module}/lib/status-engine/naemon/statusengine-${pkgs.naemon.status_engine_version}.o use_service_perfdata=1 use_process_data=0 use_system_command_data=0 use_external_command_data=0 use_flapping_data=0 use_program_status_data=0 use_notification_data=0 use_contact_status_data=0 use_contact_notification_data=0 use_event_handler_data=0 use_object_data=0
+ '';
+}
diff --git a/systems/monitoring-1/monitoring.nix b/systems/monitoring-1/monitoring.nix
new file mode 100644
index 0000000..421c71f
--- /dev/null
+++ b/systems/monitoring-1/monitoring.nix
@@ -0,0 +1,61 @@
+{ config, pkgs, lib, name, monitoring, ... }:
+let
+ hostFQDN = config.hostEnv.fqdn;
+ emailCheck = monitoring.lib.emailCheck config.myEnv.monitoring.email_check;
+in
+{
+ config.myServices.monitoring.activatedPlugins = [ "memory" "command" "bandwidth" "emails" "ovh" "notify-primary" ];
+ config.myServices.monitoring.objects = lib.mkMerge [
+ (monitoring.lib.objectsCommon {
+ inherit hostFQDN;
+ hostName = name;
+ master = true;
+ processWarn = "70"; processAlert = "80";
+ loadWarn = "4.0"; loadAlert = "5.0";
+ load15Warn = "1.0"; load15Alert = "2.0";
+ interface = builtins.head (builtins.attrNames config.networking.interfaces);
+ })
+
+ {
+ service = [
+ (emailCheck "monitoring-1" hostFQDN)
+
+ {
+ service_description = "OVH account has enough sms";
+ host_name = hostFQDN;
+ use = "external-service";
+ check_command = "check_ovh_sms";
+
+ check_interval = 120;
+ notification_interval = "1440";
+ }
+
+ # Dummy service for testing
+ # {
+ # service_description = "Dummy failing test";
+ # host_name = "dummy-host";
+ # use = "local-service";
+ # check_interval = 0.3;
+ # max_check_attempts = "1";
+ # flap_detection_enabled = "0";
+ # notification_interval = "0.1";
+ # check_command = "check_critical";
+ # }
+ ];
+
+ host = {
+ # Dummy host for testing
+ # "dummy-host" = {
+ # alias = "dummy.host";
+ # check_interval = 0.3;
+ # max_check_attempts = "1";
+ # flap_detection_enabled = "0";
+ # notification_interval = "0.1";
+ # address = "dummy.host";
+ # use = "linux-server";
+ # check_command = "check_ok";
+ # };
+ };
+ }
+ ];
+}
diff --git a/systems/monitoring-1/monitoring/master.nix b/systems/monitoring-1/monitoring/master.nix
new file mode 100644
index 0000000..c8f52ea
--- /dev/null
+++ b/systems/monitoring-1/monitoring/master.nix
@@ -0,0 +1,43 @@
+{ config, ... }:
+{
+ myServices.monitoring.objects = {
+ contact = {
+ immae = {
+ alias = "Immae";
+ email = config.myEnv.monitoring.immae_contact;
+ use = "generic-contact";
+ contactgroups = "admins";
+ host_notification_commands = "notify-host-by-email,notify-host-by-apprise!$USER210$";
+ service_notification_commands = "notify-service-by-email,notify-service-by-apprise!$USER210$";
+ };
+ };
+ command = {
+ check_passive = "$USER1$/check_dummy 3 \"Service result are stale\"";
+ };
+ templates = {
+ service = {
+ external-passive-service = {
+ active_checks_enabled = "0";
+ check_freshness = "1";
+ check_period = "24x7";
+ contact_groups = "admins";
+ event_handler_enabled = "1";
+ flap_detection_enabled = "1";
+ is_volatile = "0";
+ max_check_attempts = "3";
+ notification_interval = "60";
+ notification_options = "w,u,c,r,f,s";
+ notification_period = "24x7";
+ notifications_enabled = "1";
+ passive_checks_enabled = "1";
+ process_perf_data = "1";
+ retain_nonstatus_information = "1";
+ retain_status_information = "1";
+ retry_interval = "2";
+ check_command = "check_passive";
+ _webstatus_namespace = "immae";
+ };
+ };
+ };
+ };
+}
diff --git a/systems/monitoring-1/monitoring/phare.nix b/systems/monitoring-1/monitoring/phare.nix
new file mode 100644
index 0000000..0ce9ffe
--- /dev/null
+++ b/systems/monitoring-1/monitoring/phare.nix
@@ -0,0 +1,20 @@
+{ monitoring, config, ... }:
+let
+ emailCheck = monitoring.lib.emailCheck config.myEnv.monitoring.email_check;
+in
+{
+ config.myServices.monitoring.activatedPlugins = [ "emails" ];
+ config.myServices.monitoring.objects.host = {
+ "phare.normalesup.org" = {
+ alias = "phare.normalesup.org";
+ address = "phare.normalesup.org";
+ use = "linux-server";
+ hostgroups = "webstatus-hosts";
+ _webstatus_name = "phare";
+ _webstatus_vhost = "status.immae.eu";
+ };
+ };
+ config.myServices.monitoring.objects.service = [
+ (emailCheck "phare" "phare.normalesup.org")
+ ];
+}
diff --git a/systems/monitoring-1/monitoring/ulminfo-fr.nix b/systems/monitoring-1/monitoring/ulminfo-fr.nix
new file mode 100644
index 0000000..b0c6657
--- /dev/null
+++ b/systems/monitoring-1/monitoring/ulminfo-fr.nix
@@ -0,0 +1,20 @@
+{ monitoring, config, ... }:
+let
+ emailCheck = monitoring.lib.emailCheck config.myEnv.monitoring.email_check;
+in
+{
+ config.myServices.monitoring.activatedPlugins = [ "emails" ];
+ config.myServices.monitoring.objects.host = {
+ "ulminfo.fr" = {
+ alias = "ulminfo.fr";
+ address = "ulminfo.fr";
+ use = "linux-server";
+ hostgroups = "webstatus-hosts";
+ _webstatus_name = "ulminfo";
+ _webstatus_vhost = "status.immae.eu";
+ };
+ };
+ config.myServices.monitoring.objects.service = [
+ (emailCheck "ulminfo" "ulminfo.fr")
+ ];
+}
diff --git a/systems/monitoring-1/status.nix b/systems/monitoring-1/status.nix
new file mode 100644
index 0000000..8b6615f
--- /dev/null
+++ b/systems/monitoring-1/status.nix
@@ -0,0 +1,84 @@
+{ config, pkgs, lib, name, ... }:
+{
+ options = {
+ myServices.status = {
+ enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = ''
+ Whether to enable status app.
+ '';
+ };
+ };
+ };
+ config = lib.mkIf config.myServices.status.enable {
+ secrets.keys."naemon-status/environment" = {
+ user = "naemon";
+ group = "naemon";
+ permissions = "0400";
+ text = ''
+ TOKENS=${builtins.concatStringsSep " " config.myEnv.monitoring.nrdp_tokens}
+ '';
+ };
+ services.nginx = {
+ enable = true;
+ recommendedOptimisation = true;
+ recommendedGzipSettings = true;
+ recommendedProxySettings = true;
+ upstreams."netdata".servers = { "127.0.0.1:19999" = {}; };
+ upstreams."netdata".extraConfig = ''
+ keepalive 64;
+ '';
+ virtualHosts."status.immae.eu" = {
+ acmeRoot = config.security.acme.defaults.webroot;
+ useACMEHost = name;
+ forceSSL = true;
+ locations."/".proxyPass = "http://unix:/run/naemon-status/socket.sock:/";
+
+ locations."= /netdata".return = "301 /netdata/";
+ locations."~ /netdata/(?.*)".extraConfig = ''
+ proxy_redirect off;
+ proxy_set_header Host $host;
+
+ proxy_set_header X-Forwarded-Host $host;
+ proxy_set_header X-Forwarded-Server $host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_http_version 1.1;
+ proxy_pass_request_headers on;
+ proxy_set_header Connection "keep-alive";
+ proxy_store off;
+ proxy_pass http://netdata/$ndpath$is_args$args;
+
+ gzip on;
+ gzip_proxied any;
+ gzip_types *;
+ '';
+ };
+ };
+ security.acme.certs."${name}" = {
+ extraDomainNames = [ "status.immae.eu" ];
+ group = config.services.nginx.group;
+ };
+
+ networking.firewall.allowedTCPPorts = [ 80 443 ];
+ systemd.services.naemon-status = {
+ description = "Naemon status";
+ after = [ "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+
+ serviceConfig = {
+ EnvironmentFile = config.secrets.fullPaths."naemon-status/environment";
+ Type = "simple";
+ WorkingDirectory = "${./status}";
+ ExecStart = let
+ python = pkgs.python3.withPackages (p: [ p.gunicorn p.flask p.flask_login ]);
+ in
+ "${python}/bin/gunicorn -w4 --bind unix:/run/naemon-status/socket.sock app:app";
+ User = "naemon";
+ RuntimeDirectory = "naemon-status";
+ StandardOutput = "journal";
+ StandardError = "inherit";
+ };
+ };
+ };
+}
diff --git a/systems/monitoring-1/status/app.py b/systems/monitoring-1/status/app.py
new file mode 100755
index 0000000..ff92891
--- /dev/null
+++ b/systems/monitoring-1/status/app.py
@@ -0,0 +1,414 @@
+from flask import Flask, request, render_template_string, jsonify, make_response
+from flask_login import LoginManager, UserMixin, login_required
+import socket
+import json
+import time
+import os
+
+login_manager = LoginManager()
+app = Flask(__name__)
+login_manager.init_app(app)
+
+STATUS = [
+ "ok",
+ "warning",
+ "error",
+ "unknown"
+ ]
+
+HOST_STATUS = [
+ "up",
+ "down",
+ "unreachable",
+ ]
+
+#### Push
+AUTHORIZED_KEYS = os.environ.get("TOKENS", "").split()
+COMMAND_FILE = "/var/run/naemon/naemon.cmd"
+
+ERROR_NO_REQUEST_HANDLER="NO REQUEST HANDLER"
+ERROR_NO_TOKEN_SUPPLIED="NO TOKEN"
+ERROR_BAD_TOKEN_SUPPLIED="BAD TOKEN"
+
+ERROR_BAD_COMMAND_FILE="BAD COMMAND FILE"
+ERROR_COMMAND_FILE_OPEN_WRITE="COMMAND FILE UNWRITEABLE"
+ERROR_COMMAND_FILE_OPEN="CANNOT OPEN COMMAND FILE"
+ERROR_BAD_WRITE="WRITE ERROR"
+
+ERROR_BAD_DATA="BAD DATA"
+ERROR_BAD_JSON="BAD JSON"
+
+ERROR_NO_CORRECT_STATUS="NO STATUS WAS CORRECT"
+#### /Push
+
+def get_lq(request):
+ # https://mathias-kettner.de/checkmk_livestatus.html
+ socket_path="/var/run/naemon/live"
+ s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ s.connect(socket_path)
+ s.send(request.encode())
+ s.shutdown(socket.SHUT_WR)
+ chunks = []
+ while len(chunks) == 0 or len(chunks[-1]) > 0:
+ chunks.append(s.recv(4096))
+ s.close()
+ return b"".join(chunks).decode()
+
+class Host:
+ def __init__(self, name, alias, status, webname, vhost):
+ self.name = name
+ self.alias = alias
+ self.webname = webname or alias
+ self.vhost = vhost
+ self.status = status
+ self.services = []
+
+ @classmethod
+ def parse_hosts(cls, payload, vhost):
+ parsed = filter(lambda x: x.vhost == vhost, [cls.parse(p) for p in json.loads(payload)])
+ return {p.name: p for p in parsed}
+
+ @classmethod
+ def parse(cls, payload):
+ return cls(payload[0], payload[1], HOST_STATUS[payload[2]], payload[3].get("WEBSTATUS_NAME"), payload[3].get("WEBSTATUS_VHOST"))
+
+ def __repr__(self):
+ return "Host {}: {} ({})".format(self.name, self.alias, self.webname)
+
+ @classmethod
+ def query(cls, vhost):
+ answer = get_lq("""GET hosts
+Filter: groups >= webstatus-hosts
+Columns: name alias state custom_variables
+OutputFormat: json
+""")
+ return cls.parse_hosts(answer, vhost)
+
+ def fill_services(self, services):
+ self.services = [service for service in services if service.host == self.name]
+
+class ServiceGroup:
+ def __init__(self, name, alias):
+ self.name = name
+ self.alias = alias
+ self.services = []
+
+ @classmethod
+ def parse_groups(cls, payload):
+ parsed = [cls.parse(p) for p in json.loads(payload)]
+ return {p.name: p for p in parsed}
+
+ @classmethod
+ def parse(cls, payload):
+ return cls(payload[0], payload[1])
+
+ @classmethod
+ def query(cls):
+ answer = get_lq("""GET servicegroups
+Filter: name ~ ^webstatus-
+Columns: name alias custom_variables
+OutputFormat: json
+""")
+ return cls.parse_groups(answer)
+
+ def fill_services(self, services, hosts):
+ self.services = [service for service in services if any([group == self.name for group in service.groups]) and service.host in hosts]
+
+ def __repr__(self):
+ return "ServiceGroup {}: {}".format(self.name, self.alias)
+
+class Service:
+ def __init__(self, name, host, groups, status, webname, url, description, infos):
+ self.name = name
+ self.host = host
+ self.groups = groups
+ self.status = status
+ self.webname = webname
+ self.url = url
+ self.description = description
+ self.infos = infos
+
+ @classmethod
+ def parse_services(cls, payload):
+ parsed = json.loads(payload)
+ return [cls.parse(p) for p in parsed if cls.valid(p[2])]
+
+ @staticmethod
+ def valid(groups):
+ return any([b.startswith("webstatus-") for b in groups])
+
+ @classmethod
+ def parse(cls, payload):
+ return cls(payload[0],
+ payload[1],
+ payload[2],
+ STATUS[payload[3]],
+ payload[4].get("WEBSTATUS_NAME"),
+ payload[4].get("WEBSTATUS_URL"),
+ payload[5],
+ payload[6])
+
+ @classmethod
+ def query(cls):
+ answer = get_lq("""GET services
+Columns: display_name host_name groups state custom_variables description plugin_output
+OutputFormat: json
+""")
+ return cls.parse_services(answer)
+
+ def __repr__(self):
+ return "Service {}: {}".format(self.name, self.webname)
+
+def get_infos(vhost):
+ hosts = Host.query(vhost)
+ servicegroups = ServiceGroup.query()
+ services = Service.query()
+
+ for host in hosts:
+ hosts[host].fill_services(services)
+ for group in servicegroups:
+ servicegroups[group].fill_services(services, hosts)
+ return (hosts, servicegroups, services)
+
+TEMPLATE='''
+
+
+
+
+
+ Status
+
+
+
+
+ Hosts
+ {%- for host in hosts.values() %}
+
+ {{ host.status }}
+ {{ host.webname }}
+
+ {%- for service in servicegroups["webstatus-resources"].services if service.host == host.name -%}
+ {%- if loop.first %}
+
+ {% endif %}
+
+
+ {{ service.status }}
+ {{ service.description }}
+ {{ service.infos }}
+
+
+ {%- if loop.last %}
+
+ {% endif %}
+ {% endfor %}
+ {%- endfor %}
+
+ {%- for group in servicegroups.values() if group.services and group.name != "webstatus-resources" %}
+ {%- if loop.first %}
+ Services
+
+ {%- endif %}
+
+
{{ group.alias }}
+ {%- for service in group.services if service.host in hosts -%}
+ {%- if loop.first %}
+
+ {% endif %}
+
+
+ {{ service.status }}
+
+ {% if service.url and service.url.startswith("https://") %}
+ {{ service.webname or service.description }}
+ {% else %}
+ {{ service.webname or service.description }}
+ {% endif %}
+
+ {{ hosts[service.host].webname }}
+
+
+ {%- if loop.last %}
+
+ {% endif %}
+ {%- endfor -%}
+
+ {%- if loop.last %}
+
+ {% endif %}
+ {%- endfor %}
+
+
+'''
+
+@login_manager.request_loader
+def load_user_from_request(request):
+ api_key = request.headers.get('Token')
+ if api_key in AUTHORIZED_KEYS:
+ return UserMixin()
+ content = request.get_json(force=True, silent=True)
+ if content is not None and content.get("token") in AUTHORIZED_KEYS:
+ return UserMixin()
+
+@app.route("/live", methods=["POST"])
+@login_required
+def live():
+ query = request.get_data()
+ result = get_lq(query.decode() + "\n")
+ resp = make_response(result)
+ resp.content_type = "text/plain"
+ return resp
+
+@app.route("/", methods=["GET"])
+def get():
+ (hosts, servicegroups, services) = get_infos(request.host)
+ resp = make_response(render_template_string(TEMPLATE, hosts=hosts, servicegroups=servicegroups))
+ resp.content_type = "text/html"
+ return resp
+
+@app.route("/", methods=["POST"])
+@login_required
+def push():
+ content = request.get_json(force=True, silent=True)
+ if content is None:
+ return ERROR_BAD_JSON
+ if content.get("cmd") != "submitcheck":
+ return render_error(ERROR_NO_REQUEST_HANDLER)
+ if "checkresult" not in content or not isinstance(content["checkresult"], list):
+ return render_error(ERROR_BAD_DATA)
+
+ checks = 0
+ errors = 0
+ for check in map(lambda x: CheckResult.from_json(x), content["checkresult"]):
+ if check is None:
+ errors += 1
+ continue
+ try:
+ write_check_output(check)
+ except Exception as e:
+ return render_error(str(e))
+ checks += 1
+ return render_response(checks, errors)
+
+def write_check_output(check):
+ if check.type== "service":
+ command = "[{time}] PROCESS_SERVICE_CHECK_RESULT;{hostname};{servicename};{state};{output}";
+ else:
+ command = "[{time}] PROCESS_HOST_CHECK_RESULT;{hostname};{state};{output}";
+ formatted = command.format(
+ time=int(time.time()),
+ hostname=check.hostname,
+ state=check.state,
+ output=check.output,
+ servicename=check.servicename,
+ )
+
+ if not os.path.exists(COMMAND_FILE):
+ raise Exception(ERROR_BAD_COMMAND_FILE)
+ if not os.access(COMMAND_FILE, os.W_OK):
+ raise Exception(ERROR_COMMAND_FILE_OPEN_WRITE)
+ if not os.access(COMMAND_FILE, os.W_OK):
+ raise Exception(ERROR_COMMAND_FILE_OPEN_WRITE)
+ try:
+ with open(COMMAND_FILE, "w") as c:
+ c.write(formatted + "\n")
+ except Exception as e:
+ raise Exception(ERROR_BAD_WRITE)
+
+def render_error(error):
+ return jsonify({
+ "status": "error",
+ "message": error,
+ })
+
+def render_response(checks, errors):
+ if checks > 0:
+ return jsonify({
+ "status": "ok",
+ "result": {
+ "checks": checks,
+ "errors": errors,
+ }
+ })
+ else:
+ return jsonify({
+ "status": "error",
+ "message": ERROR_NO_CORRECT_STATUS,
+ })
+
+class CheckResult:
+ def __init__(self, hostname, state, output, servicename, checktype):
+ self.hostname = hostname
+ self.state = state
+ self.output = output
+ self.servicename = servicename
+ self.type = checktype
+
+ @classmethod
+ def from_json(klass, j):
+ if not isinstance(j, dict):
+ return None
+ for key in ["hostname", "state", "output"]:
+ if key not in j or not isinstance(j[key], str):
+ return None
+ for key in ["servicename", "type"]:
+ if key in j and not isinstance(j[key], str):
+ return None
+ return klass(
+ j["hostname"],
+ j["state"],
+ j["output"],
+ j.get("servicename", ""),
+ j.get("type", "host"))
+
diff --git a/systems/monitoring-1/status_engine.nix b/systems/monitoring-1/status_engine.nix
new file mode 100644
index 0000000..fc6afc0
--- /dev/null
+++ b/systems/monitoring-1/status_engine.nix
@@ -0,0 +1,123 @@
+{ config, pkgs, lib, name, ... }:
+let
+ package = pkgs.status-engine-worker.override { config_file = config.secrets.fullPaths."status_engine"; };
+ env = config.myEnv.tools.status_engine;
+in
+{
+ config = lib.mkIf config.myServices.status.enable {
+ systemd.services.gearmand = {
+ description = "Gearman daemon";
+ after = [ "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ DynamicUser = true;
+ User = "gearmand";
+ Type = "simple";
+ ExecStart = "${pkgs.gearmand}/bin/gearmand --syslog -L 127.0.0.1 -q libsqlite3 --libsqlite3-db /var/lib/gearmand/gearmand.db --store-queue-on-shutdown -l stderr -P /run/gearmand/gearmand.pid";
+ RuntimeDirectory = "gearmand";
+ StateDirectory = "gearmand";
+ };
+ };
+
+ secrets.keys."status_engine" = {
+ permissions = "0400";
+ user = "naemon";
+ group = "naemon";
+ text = ''
+ node_name: ${name}
+ use_gearman: 1
+ gearman:
+ address: 127.0.0.1
+ port: 4730
+ timeout: 1000
+ use_rabbitmq: 0
+ use_redis: 1
+ redis:
+ address: 127.0.0.1
+ port: 6379
+ db: 0
+ store_live_data_in_archive_backend: 1
+ use_mysql: 1
+ mysql:
+ host: ${env.mysql.remoteHost}
+ port: ${builtins.toString env.mysql.port}
+ username: ${env.mysql.user}
+ password: ${env.mysql.password}
+ database: ${env.mysql.database}
+ use_crate: 0
+ number_of_bulk_records: 100
+ max_bulk_delay: 5
+ number_servicestatus_worker: 1
+ number_hoststatus_worker: 1
+ number_logentry_worker: 1
+ number_statechange_worker: 1
+ number_hostcheck_worker: 1
+ number_servicecheck_worker: 1
+ number_misc_worker: 1
+
+ process_perfdata: 1
+ number_perfdata_worker: 1
+ perfdata_backend:
+ - mysql
+
+ check_for_commands: 1
+ command_check_interval: 15
+ external_command_file: /run/naemon/naemon.cmd
+ query_handler: /run/naemon/naemon.qh
+ submit_method: qh
+
+ syslog_enabled: 1
+ syslog_tag: statusengine-worker
+
+ # Archive age
+ age_hostchecks: 5
+ age_host_acknowledgements: 60
+ age_host_notifications: 60
+ age_host_statehistory: 365
+ age_host_downtimes: 60
+ age_servicechecks: 5
+ age_service_acknowledgements: 60
+ age_service_notifications: 60
+ age_service_statehistory: 365
+ age_service_downtimes: 60
+ age_logentries: 5
+ age_tasks: 1
+ age_perfdata: 90
+
+ disable_http_proxy: 1
+ '';
+ };
+
+ services.redis.servers."" = rec {
+ enable = true;
+ bind = "127.0.0.1";
+ };
+
+ services.cron = {
+ mailto = "cron@immae.eu";
+ systemCronJobs = [
+ "0 0 * * * naemon cd ${package} && ./bin/Console.php cleanup"
+ ];
+ };
+
+ environment.systemPackages = [
+ pkgs.gearmand
+ (pkgs.writeScriptBin "status-engine-worker" ''
+ #! ${pkgs.stdenv.shell}
+ cd ${package}
+ exec sudo -E -u naemon ./bin/Console.php "$@"
+ '')
+ ];
+ systemd.services.status_engine_worker = {
+ description = "Status engine worker";
+ after = [ "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ Type = "simple";
+ Restart = "on-failure";
+ User = "naemon";
+ ExecStart = "${package}/bin/StatusengineWorker.php";
+ };
+ };
+ };
+}
diff --git a/systems/quatresaisons/flake.lock b/systems/quatresaisons/flake.lock
new file mode 100644
index 0000000..6f2ccca
--- /dev/null
+++ b/systems/quatresaisons/flake.lock
@@ -0,0 +1,767 @@
+{
+ "nodes": {
+ "backports": {
+ "inputs": {
+ "flake-utils": "flake-utils_3",
+ "nixpkgs": "nixpkgs_7"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "colmena": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs",
+ "stable": "stable"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "disko": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_2"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "environment_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "environment_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "files-watcher": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/files-watcher",
+ "type": "path"
+ }
+ },
+ "files-watcher_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
+ "path": "../files-watcher",
+ "type": "path"
+ },
+ "original": {
+ "path": "../files-watcher",
+ "type": "path"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_2"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_3"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "locked": {
+ "lastModified": 1648297722,
+ "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_3": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "landing-page": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1691524124,
+ "narHash": "sha256-JyHb02qUrct2t+dgaiOcT5KS8RHkXygjWQXl+55gSMY=",
+ "ref": "main",
+ "rev": "018344d9116b506c662ecdcee2d0d505c857f1cf",
+ "revCount": 573,
+ "type": "git",
+ "url": "https://github.com/bastienwirtz/homer.git"
+ },
+ "original": {
+ "ref": "main",
+ "type": "git",
+ "url": "https://github.com/bastienwirtz/homer.git"
+ }
+ },
+ "monitoring": {
+ "inputs": {
+ "environment": "environment_2",
+ "naemon": "naemon",
+ "nixpkgs-lib": "nixpkgs-lib",
+ "secrets": "secrets"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/monitoring",
+ "type": "path"
+ }
+ },
+ "multi-apache-container": {
+ "inputs": {
+ "files-watcher": "files-watcher_2",
+ "myuids": "myuids"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/multi-apache-container",
+ "type": "path"
+ }
+ },
+ "my-lib": {
+ "inputs": {
+ "colmena": "colmena",
+ "disko": "disko",
+ "flake-parts": "flake-parts",
+ "nixos-anywhere": "nixos-anywhere",
+ "nixpkgs": "nixpkgs_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_2",
+ "nixpkgs": "nixpkgs_8",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../myuids",
+ "type": "path"
+ }
+ },
+ "myuids_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../flakes/myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/myuids",
+ "type": "path"
+ }
+ },
+ "myuids_3": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "naemon": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
+ "path": "../../naemon",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../naemon",
+ "type": "path"
+ }
+ },
+ "nixos-2305": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere": {
+ "inputs": {
+ "disko": [
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305",
+ "nixos-images": "nixos-images",
+ "nixpkgs": "nixpkgs_3",
+ "treefmt-nix": "treefmt-nix"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-images": {
+ "inputs": {
+ "nixos-2305": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-4": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1691269286,
+ "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_2": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_3": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_6": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1596265691,
+ "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
+ "type": "github"
+ }
+ },
+ "nixpkgs_7": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_8": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "php": {
+ "inputs": {
+ "flake-utils": "flake-utils_2",
+ "nixpkgs": "nixpkgs_6",
+ "nixpkgs-4": "nixpkgs-4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
+ "path": "../../flakes/private/php",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/php",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "environment": "environment",
+ "files-watcher": "files-watcher",
+ "landing-page": "landing-page",
+ "monitoring": "monitoring",
+ "multi-apache-container": "multi-apache-container",
+ "my-lib": "my-lib",
+ "myuids": "myuids_2",
+ "nixpkgs": "nixpkgs_5",
+ "php": "php",
+ "secrets": "secrets_2",
+ "system": "system"
+ }
+ },
+ "secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets-public": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "secrets_2": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "stable": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "system": {
+ "inputs": {
+ "backports": "backports",
+ "environment": "environment_3",
+ "mypackages": "mypackages",
+ "myuids": "myuids_3",
+ "secrets-public": "secrets-public"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "treefmt-nix": {
+ "inputs": {
+ "nixpkgs": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/systems/quatresaisons/flake.nix b/systems/quatresaisons/flake.nix
new file mode 100644
index 0000000..8b269f6
--- /dev/null
+++ b/systems/quatresaisons/flake.nix
@@ -0,0 +1,49 @@
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+
+ my-lib.url = "path:../../flakes/lib";
+
+ monitoring.url = "path:../../flakes/private/monitoring";
+ environment.url = "path:../../flakes/private/environment";
+ php.url = "path:../../flakes/private/php";
+ system.url = "path:../../flakes/private/system";
+
+ myuids.url = "path:../../flakes/myuids";
+ secrets.url = "path:../../flakes/secrets";
+ files-watcher.url = "path:../../flakes/files-watcher";
+ multi-apache-container.url = "path:../../flakes/multi-apache-container";
+
+ landing-page = {
+ url = "https://github.com/bastienwirtz/homer.git";
+ ref = "main";
+ type = "git";
+ flake = false;
+ };
+ };
+ outputs = inputs@{ self, my-lib, nixpkgs, ...}:
+ my-lib.lib.mkColmenaFlake {
+ name = "quatresaisons";
+ inherit self nixpkgs;
+ system = "x86_64-linux";
+ targetHost = "144.76.76.162";
+ targetUser = "root";
+ nixosModules = {
+ base = { secrets, ... }: { imports = [ secrets.nixosModules.users-config-quatresaisons ]; };
+ system = inputs.system.nixosModule;
+ monitoring = inputs.monitoring.nixosModule;
+ environment = inputs.environment.nixosModule;
+
+ myuids = inputs.myuids.nixosModule;
+ secrets = inputs.secrets.nixosModule;
+ files-watcher = inputs.files-watcher.nixosModule;
+ multi-apache-container = inputs.multi-apache-container.nixosModule;
+ };
+ moduleArgs = {
+ monitoring = inputs.monitoring;
+ php = inputs.php;
+ landing-page = inputs.landing-page;
+ pkgs-no-overlay = inputs.nixpkgs.legacyPackages.x86_64-linux;
+ };
+ };
+}
diff --git a/systems/zoldene/Immae.pub b/systems/zoldene/Immae.pub
new file mode 100644
index 0000000..dd42b04
--- /dev/null
+++ b/systems/zoldene/Immae.pub
@@ -0,0 +1,322 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFvwA+gBEADlchQGPyI2M9RNRUsk8wsL9XLc8qAFWTYlVp5p7177ucxTQf6S
+rny9yRCF69UqtE0ugwt+432sAAsDPi7BRA/JE95bIRBiewOiY1jYiivccP5dR6Jr
+58HJ3QOHYPekqZIQhxzCWjdD2nRhhCbbxeWFJsJyaG8idGBiLkgNKxEEmqE5LIat
+tzMpQFwOpL2FoYZ7+e4ZTMc+x+yqpOnGcQD1qwouqx68okSCjrVBWo5S2tK5AzzU
+X8esBLNpgkhpUEZVltiNc4bmj7GZPdy4+mvS33/HQTed8YpatCFVWzcK+/uK0SYE
+P8Hj1mguT9idBhAf+kv7qbTycrFkTBliP3oDNUoARWDmfQdV4nlxqW03QxUY18mL
+KPByduK3hEXAZnD+/8QfVzbNVVP+70/jdSB+ckF88Li2g4bv/9uqjaObKVJB9ocG
+EWslm1h7tvdCLBRgIl8b2+Zl0fComRAMuwUr+LYlWLnfygAi8Uy9hl7UcRWAAj99
+PG4ba0+y8eD8k1J2IE8HpeIzMzRwYTLtvLyJBvrKiQHJb1PGM5cS8iry81wjUPZm
+dO5p5rbC8z99w7UNMaiz6iqAFAaDyLLsBZ5gWD+1ps9XxCA0zf28Z/Tc/Gj4QKAf
+kpMd7lQ+gprsFyRtzcRD4WhsOL2ogKYFHYi4LE0GYduspGdQPlK/YfrKQwARAQAB
+tB9Jc21hZWwgQm91eWEgPGlzbWFlbEBib3V5YS5vcmc+iQJRBBMBCAA7AhsDBQsJ
+CAcCBhUKCQgLAgQWAgMBAh4BAheAFiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvw
+BU4CGQEACgkQyfztbKa3lFR/kA//cHVrb/RRTLQZy514vMkOBKgAk+dj+j0lrgvJ
+yR0JK1KjodduSoccPq7qRFAU+KVa3FsXMn8yY/lWaCXYJoF0DT5iEHsEuzJRc7Cn
+N4aq2h42DD7z8dJCXZvtvJs+vZ7G/rlLl322TjLb2OyIybBEoPOmJl0dVG0wKBFC
+r7EJmOKl3ytUWUpEbuxs1U/pP4GKrPT2CK3QcLF8JHKIPkEO347RorseeHcHhMxs
+Bz5JXojts1NyLJh7lErT42atgEdTGzSmkkGm8OifZVIH2rgmnRsPHnCqrXYsa7dE
+yPsC01Ns3DPYk4C5FtbpfiNvATbnkOicEwb2U55OpYUZLsFCKo7Bl+duJVY0nPRN
+WiLCALPcdJL+a6hbh1hSuqHt5eNGxyrDtRPowXRTS1D4nTCgAh6+wpH47xXWEwXZ
+mEnkXqHLIjsW4CSIz2gc+Bza40+wkWz6NQDEb3ncytDZu9vKK1CYwl7RGW4RFkAO
+j3FWZvZp8ETPLNRVy64BhZzHY3uOxbYreE+T6JfiIZux8X+Bh4cPJHizfhSMLLS5
+kwABzalaTD33XnjKn5wQ/DfGJ+fGbF54fMlGFjne5VTNwY1ju2ieXTgVrUyzfKPF
+96zcvnxo/MWwqcQ8+dXFCZjldP76puo1eVATEBeOCQs8Vj7eL9eN/eo+BfzhS3S8
+CfFFYWeIXQQQEQIAHRYhBNw4R0hwnSYZ/yhnIW0Mr/3bHP6QBQJb8AgDAAoJEG0M
+r/3bHP6Q/TsAnA6vTjmrX4nY3QnevNrKefWaQvf3AJ0TALTqXhTcVYVLxfzRt/Qd
+u5W2/rQvSXNtYWVsIEJvdXlhIChXb3JrKSA8aXNtYWVsLmJvdXlhQGZyZXRsaW5r
+LmNvbT6JAk4EEwEIADgWIQT4KAb9ob9bmhswFOfJ/O1spreUVAUCW/AFCwIbAwUL
+CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ/O1spreUVKlBD/sE/eDbJtL8UKc6
+CN7zmA038RSjxlcJrMRoBoThCFKOFtBsYLPebnIkzCDiUwQJaIMYe2RNBHKKz0p+
+2Kvzf7q+xq8W1e72aK1DRhsBTL8/LA1kQkvh3GwMS8z3SOcbXLWqKQuQ7ztYReQG
+wsT2/S8reVM96eV67K9vMHKMDF3NyYZewahX0I44YIbQJfLVG5elCkBrfHjGSeIt
+tSAv56BhN8J8ky+9nGx5jwWmxc/4Oquyfe9Lf0NMTCjw1xess7UoHlzSMp57yF3T
+AaqDcqD2Jdgr2meN9Yo4/Yb9dEvHFy34ppXYanX1nrHGev7YaaQWLoKLVZc3f6gR
++D7sEJUJm3IxO041CR7DBwQ1CQkx3sa66mcHxe+wchOoXBZdsqyl5Ds+zqh6eMyO
+UiixDcXDxZuimEY0/+7XjlFjtzhGVNKsjV/Azh+Hx3GZnGHMVpTw73qQFHkWeDrX
+FPUbinjtEVTxw0fS9PkDZB5ysgAWlXs2cqoNDMcbdyJn2xszbV5+vjlmcofsQZTr
+PiX+hB6P5RQP5ogtnotvbkPDSfPfqdUk5HjGFrGX08FoP4rCromHvSL6Un2lP4I2
+mJbbQzBU/bQUGzfz6U6VEbUHtOL+7woGuXuzTYsRZ/O7/fKohyi/+qsmOozQpLFN
+k5xocbF1PgpFphrKYpHaSkf6DS2/F4hdBBARAgAdFiEE3DhHSHCdJhn/KGchbQyv
+/dsc/pAFAlvwCAQACgkQbQyv/dsc/pDXWACeKMbL/Dtifpd466TqQP8isfWedtIA
+n2xbEmlpxG8yk0w4HQ4djwgY4RbutCpJc21hZWwgQm91eWEgPGlzbWFlbC5ib3V5
+YUBub3JtYWxlc3VwLm9yZz6JAk4EEwEIADgWIQT4KAb9ob9bmhswFOfJ/O1spreU
+VAUCW/AEawIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ/O1spreUVMGJ
+EAC5hKt5NCanRxEl13nQUu4+n05tdRl9C3sTczR8EUZ30zhpBV4chKgeJSD0r1VA
+zBSQHMNzroGawaQn38qxFtbcSmkGRDd+0y798x1HFHp+UFiYOdQDQJVsyDuwjq4k
+RF7zV+FBj0ffjn5JBy6R3wLmWCFxz1mPmkImdyyS8GEeifwTftC+SSotqfg1lh0K
+C+DSQGYtPk0jLvxVPRllnjltDOSPUt9xRE785I6E9oyYrCa5Om51e0eEMzwpkl4e
+QschAYILb6SNrVyEMRD5E3lJHD2r6dPvIPFNcLxIQuK/Kdco2jNq7dCL6ukdGI40
+j/oZi7XRrlFCQW321BuipJZ/7t9JWOXOrrEndQv+hOb6PeWkwF1rigjbQq+IipdJ
+DUXGBfiIzlpJM5tLhs7BGfLxYNn09rOpkotXrdBzRO62lYyRdQepKpD33v96bQV2
+0w64U44+CxuicjGDw/6no54LY4J7bM1lLGwqvHSeqgYoc+Zs9WH95TNNSmaAHGSf
+An4LpzW5nOXbq2rsWVbZpvsVHz3VmC9qmpsYl5tT/ninkLta3tN6TrYUFHXcDWz9
+K+HW+/oARzEmN8eg3iMmWtOnV59YEr/x2vvOHndguUL0tUpRjwuTunH9KOGZE0Kb
+uI3ovgLLO2kCSGk4SdXlntu/eLq9FPYqlOpjM9CtLf9JdIhdBBARAgAdFiEE3DhH
+SHCdJhn/KGchbQyv/dsc/pAFAlvwCAQACgkQbQyv/dsc/pCHCQCfdPdGx0FmknAs
+rPvjuUmuCj9Q8xUAn32dsgQYTlgfTdwLSxWGj4mTD2h6tClJc21hZWwgQm91eWEg
+PGJvdXlhQHBoYXJlLm5vcm1hbGVzdXAub3JnPokCTgQTAQgAOBYhBPgoBv2hv1ua
+GzAU58n87Wymt5RUBQJb8ASdAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ
+EMn87Wymt5RU58QQALMGlOJzcQj/arHezum5H/PiYIpZ1yY+QMCzpSgPdwupwawW
+VN88aQRfU6k9xwmsU+Ghjreja09AuqYi/D2+61TM/Tmqi/9HdU6NRYw0hvaZnwFc
+vudFBII2XrxmU5k9PnSR6Sq4uLUGkXmvhJddV0q+cjtif+vDi5pl9mqbWBQY8d9S
+5Q6ZFZPeEeASUK7Xt/tSq9iXpb1tQsmEJ94Czl5G+gNFJcqj7nlHQ1/c9XeNsvJT
+GZVLGM/cAZNzB6AC8Kz+iWUypFuXifC2PYGpJDJ8klqTmDQikGQtM1HMHda6rnwU
+L7JIfbuwGbMk65CtG2YE8QqB+/GIfkzWySenmIrldn9Vp5EKB0DD529TyOwQWgzz
++HuVP/4QfkNRxNquWxlAPXmcNfV1SV+/Xn1KwSspb7QlAjiXXOL13J2dwYFpV+21
+vsSW5XqJXfWUU8d4YVOdq1kUTwLjWnWyxwtt8j68KSuTOT4JTA8oNXg87r0B4Fzr
+6AoxCM8ePywm5IW55gNAwViTKWBAcNrcwRTP647oNOM5+8D7NZIBpnKffNc/S2S5
+iI1tmaM0yXavmCm0Hb7lkFIsxM2Y2lxwHexPck2ftPXIrjhPYLcFVBdLVx2V2yXe
+cFW2vMGZiasVobFqqp1g8htmAlTkN0cTDY7l96wDuirC6OeCbVomEgxQEd0MiF0E
+EBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/92xz+kHsv
+AJ4+zdfjTdO1FUWb42bWdPQfiFe9nACeMIRp1Iu3tNVJkfS9CGGqhrChpfu0LUlz
+bWFlbCBCb3V5YSA8aXNtYWVsLmJvdXlhLjA2QG5vcm1hbGVzdXAub3JnPokCTgQT
+AQgAOBYhBPgoBv2hv1uaGzAU58n87Wymt5RUBQJb8ASsAhsDBQsJCAcCBhUKCQgL
+AgQWAgMBAh4BAheAAAoJEMn87Wymt5RUxa8P/i7zdQ9i5BfWITbdyCgXNoQYIcE3
+J6lIa15eLUcfDcL707zOrUSbhSkthLjeqZoNRCalqjeDOdgCQC1PNoISdkMGd9PO
+VOwS3G7Pjt4FSjPVHyw9+Su57pwTcLXBhEyBAkv+tx/QrB/UBCFzPUnsl71QH51y
+T8+bNdOiBxssdgn/9IrObn7tu8xDf+d/yGsA493x+mxalai+fhd/t0yzQcdcTrvD
+EKRxAaU8wXe8oSwcW5cRmXIi+N4aEnLRO/so9YDGf4z2FQVSL0ktoZYMqZ1ZvIb0
+MNCNl2NgNXThhrAPk9Rhs+S5nRzazJ+tS+D2S728EPpRHpUE43+vewtCdu5c5NWd
+Lz88o/jxLwcNwQa2iJoFMyqr15lHt+vM7OyD9X650IJwQw24n4tF6TijzH5GhWcN
+SnB7RpLSkftQldpK/zK+tmFH4vVpv+bI3JKAfzRga+5Fu42kB5uHVzXF3qMwYgEO
+sRNL5d4xV4SATce1mb8vFpsQmGOWnZAcCaQYhLKfMl7zR5ukytTjf3hRMRH0GAjh
+06QAoBMJZhWosYehPi1odjTngIf6hFOqA5prz8Cu/AFe/8aftp9UorJOekAj2io0
+CENRv21qrN8R4bNo04aTMD6WrY+mBL8MteR0ooD3ENQEAZ6UUyZwTzUJk2UUl+5M
+ch/HgJ+rQozmRGYeiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AI
+BAAKCRBtDK/92xz+kPsmAJ4wGQ0Hly2eTVzsU8Ht4609Q5kf2wCdHGuu863a0GHv
+uUdEokzQEsumYPG0OElzbWFlbCBCb3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVy
+ZSkgPGlfYm91eWFAeWFob28uZnI+iQJOBBMBCAA4FiEE+CgG/aG/W5obMBTnyfzt
+bKa3lFQFAlvwBMkCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQyfztbKa3
+lFQTlxAAjbuDy3prdEBNMYfi/870MO5eeDOCMtiDJDae4fQjj2NANjeuDGNP659B
+/k9uS7o5nrWB7E6rdG4a1J+Qzj5I775xTP/zVbrNSchcLwSoHMMXBm2IdbIanCX0
+JX+dRg2YX6yX+6ZmL8UaWRVICQ84ZxGtYHZ8o8hMCFOuxFklNjYFEPciO9M9m+rv
+fUEihQgcBF7+x9KVntlxad61Aa9AzUJLULgY3snaZK687tHUq3yYwXpF9s1CuJ81
+SfZxH32dKqy+2cpJqwQ38BZrTUwjBxxIMR5TRC7h/O9aRIBKQZKlpLcmxWPv18i7
+DwWlrJVb2Sd2WUh+TwPNa7VQc3NjlGtu74SfZqmirE0FyuB86fnsQaF8zhJnRsqE
+lagnLoW24PCvc8A9TK95tj+0JO8DIeM49Gg+Br/NBtRB8q5q/ICJOREber6Ke+/I
+p90q5VkZafIgeuO+EkyQ6Dq+58NRqC2qEs209xnKOd6exxT+2tEzx6Hy0PKwaay3
+h8WzUamJOTqRv1WG4GmlCeRUQGx8BtdIAEMdww26cN8rmxh5Foh5CH+V75bcybkv
+yH+FBDoKFYSpEPg0axHM/e13/nujgLNnSTHuMf7ILvpwoNkkIcQwSpH17B5hZdgl
+y0xD7aIS5XU9OoP9mKs1unzUKerWQWY6CxgYOqpssyDTUG+fohuIXQQQEQIAHRYh
+BNw4R0hwnSYZ/yhnIW0Mr/3bHP6QBQJb8AgEAAoJEG0Mr/3bHP6QFPAAn3DbFqHo
+hjznqQvg15QjlGFaPJaaAJ4ps0+VWG9BN7UBQPG+fcCRwqLaVLQ0SXNtYWVsIEJv
+dXlhIChEb24ndCBjb250YWN0IG1lIHRoZXJlKSA8Ym91eWFAa3RoLnNlPokCTgQT
+AQgAOBYhBPgoBv2hv1uaGzAU58n87Wymt5RUBQJb8ATfAhsDBQsJCAcCBhUKCQgL
+AgQWAgMBAh4BAheAAAoJEMn87Wymt5RU2vAP/12b6S0yJdZ1rgNLj+ZohY36PhCm
+30/amkGPQp7HCBylYIRv+y5m4IdiqynzJoap547cFMWNsCyfyU2VKbcy1Uy44FCI
+PCUcBME95jD1JWviINDKqLhglciKlJnWUhupiolqFcr2ro+rJVc/fBMWJoBjM5fJ
+9eq1ge2LxuYKbu9cpSEtopk7ZBeo69khhrFACdZEqfJtW4qp0hEC0pAKLjN8LhpQ
+EEVcq4zejksB+1e1qkuJ6be3/Q2Sj+1ijaJBElJIVJ8qyYs9XSlTlUA1USfy3Yqu
+jOkFrIaycxYgKooFgwYfYXCniuqXWZ2geCm2IE90lanQC2w7ZDN/JGwwVuAFVi4H
+Mrx6x/yEreqy2AUMesB1eGxqQQG9cgssMLoMAN2IDDJ6FS+e0imWTTMZ6r3ou9W8
++pFzSIT8LMnBNwp+RxrW3QzBs8sXDw5mS6WroiZMRlfJdA1sUPsrW0GV4/AFuEaK
+PhCUvIvoh6zxYR0lA/gYqtszCHGzHeNLoczOhytUZM+KQpOtO3TSING/+o59HHuM
+niD6k3mWcyk6MkSgIXquJRGUVGVFeLGlXXf7aWEkIOrXeqjBZpBchZUIxZfkg100
+xxmEgNVGG4vxB/UIGeVqV2S4JscJmCyDGs130nRp7Qp5YGfkaTLKyOdutssrqatP
+m5Zcjl2VGr4Xt4uXiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AI
+BAAKCRBtDK/92xz+kEViAJ9zBTPNNTYIxPxt8BEvb3pUDeZkiQCffsDGKi7kdlTj
+oZ26K7yxdjexaYS0OUlzbWFlbCBCb3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVy
+ZSkgPGJvdXlhQG1lY2gua3RoLnNlPokCTgQTAQgAOBYhBPgoBv2hv1uaGzAU58n8
+7Wymt5RUBQJb8ATwAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEMn87Wym
+t5RUIzgP/0/7+y7UOgj4Yja6Lwa+Lm7ESRZnbVmR1ERSAa9RKKr8BbPT4KhgwN2R
+x8c3CedFupS02sG1G57u+4qQbEeZylaMu6rusf/XyQ+esh06cRXfR7Vb2d14yFQg
+xun9PgPR7jL0RiU2fsgvF6O+u9KwnGRmABZXILDBxzGZBXKBIkmqBM8+rBkXFVWc
+gezZqD106KcuGewciuWM7bfyLj+2yV9GhvX8iRyptgkx9/CNEdOqQzKYEbXVTSkh
+tUW4QUmNnIiTnD/pZ4kr3UsQV6y0GC1kf9G5EeQHbD+kVROFM0/sX6qGn99IeC+j
+96MflMnKuXJeXjlxNFZIYPoolBAC7CvpRfdky5q0KB2xWh+x2jQbn3fPpa6lVZdQ
+De14guXdcEsj1QVUMRL3wFCDwHIsi3gqOpCHdy5GmunFRNqUWmoGU+uHt3Kk031w
+DJdQY4YP+8tFWLPG3vKoPSf5EcG2Mf0hZiWiiIAX8sVw13W+oDlAQ0HKah/uxV77
+gM2ScBiiiOr92JIf3ftq2AjMuzrGhpKME/wG2DdcOqmq7U+tcVbambSc7SVa5nTM
+JXm8ZPOSH0Fax1PULPd3pyLLhfF0rnPiDLcVa6UzG1MaSJiGBurIf3D3OCHRjQQ6
+kVpF9VtXhWeziV8wkyt66HNcuqUs6HDBNkpxPTNacKcZmW8J/FlaiF0EEBECAB0W
+IQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/92xz+kKOiAJ4shO9b
+nZ2Nx9XzBBg4C0nUl05LyQCbBpk7t2NIPMKaNtjsPb+RV5HbiQa0O0lzbWFlbCBC
+b3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVyZSkgPGlzbWFlbC5ib3V5YUBlbnMu
+ZnI+iQJOBBMBCAA4FiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvwBZYCGwMFCwkI
+BwIGFQoJCAsCBBYCAwECHgECF4AACgkQyfztbKa3lFRK1w//cqsweiuXGPepyn0t
+AL/S/scM6r9IwcjD3HrZqmUNSDAqU6PJ0FFialOPuSQIyEvrpY1GL+TiVtnYyAit
+sbotxNxNQFwiBvqchg6xd1ftpjJihuo7RysNdSNAnlOxFlEz9X+EGkRqq8rCTpoS
+GA9+4uFyFKzfv9CDg7YUVX5GVsE3bsPWymfCW1boW0TQyL7xNrDPfzKpVRHFu7hi
+5OghiTbHbifmIolj5Mo0hGuXxz26gFzrufCjgxK9ycW7LnHEnnK0zX8Qfueir8RV
+EisuAXtKILgS5mmOj0ywsrva4Qtf5JW5SKymhgsKCWskfz0lq6S6ceIKaYBr4Syk
+0MLI82M0zDfGlLuRP6yQ3DTiTC4lWfXHdjyd0w4SwcuAQPCWz34gtUEGfMTyrd6O
+le6pYreL1NPzd/NakYsR1H1fsXVJkgpESktoDIkzooLmBV6Pjr+PEt4DvPZYqgKl
+AyD+aZeZ5HlTZCLbN9O38nDttWdAvsGjq82qvNI8A/d2Vvz4L1ND6NT71+wtC2QT
+a95epSBD64l/JtK99SW/HjLjyvV9O+Nu2p8ESTOEaQhyIudnWYU+er+Vwy7YtLvY
+y8L9/Xu9KvlBMjHBXAAV047KwkIQNrNyoTla5yQFSpv57hFYbx5CKTprpsl9Ic4v
+uPjC/GMgkAJ3yTwIgxa47hgUAtKIXQQQEQIAHRYhBNw4R0hwnSYZ/yhnIW0Mr/3b
+HP6QBQJb8AgEAAoJEG0Mr/3bHP6QyCcAnRuTQIMOpwxbyzjj+t0C9GdNJYmGAJ9v
+5c5kvNCFiJAFCbUD4OxJBNA28rQ9SXNtYWVsIEJvdXlhIChEb24ndCBjb250YWN0
+IG1lIHRoZXJlKSA8Ym91eWFAbWF0aC5qdXNzaWV1LmZyPokCTgQTAQgAOBYhBPgo
+Bv2hv1uaGzAU58n87Wymt5RUBQJb8AW0AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4B
+AheAAAoJEMn87Wymt5RUaT8P/2OvKAfgqu0zQX0JhKu/wd9AATVmLa8C48JPQMUn
+5Z9dQyDcFyKKfKbGCz9B5jTOrzHNX0VJfpDujOTiPIk6ci0KqAJ3Fz0gdpxIcEoW
+B2zg0nwDtGHsGMX8togpcbVgKqblp0XSsMAFV2FN5PsAnxkqdXPDmZ5iZSgs9roi
+9nxHPavbcr1cSAjsiRoFxFudzo7Q0Z/KLRlTuTSAX6B+vRAeyRB4NcXThKYZlAi6
+cr+xXTvPFddiQZgVBT+ICZRQY0gwgHpQcj70fNx1w6tTHfThlxInojKGlreOZov9
+A4TVeex/QagVTsjRAQuZ9yLMkx7JxakAxBPZ/OHuv7/K1Qdx90AJ8zQZ6uOXpUNl
+c2MDEBoTI/nbsgMeHI/Mj4ndxCBUMperZ1oCITl+AhaqEZ+LxTKyne41YJedlqjc
+5xnUVigz4ajmZPYmbO6eRDxisx4fMG7hI2HnNWak2xBDVOp1z2aqZY0xsG7o697d
+I9BeR9JxbIusx0Szq6GabwI5beEI1xLlT333Fe3XDtT0NIQQvW9byuYuyfp7H6Xm
+hFj2ut7jVI9xG932sJ8ioRJGCK1UcGYEL0ei4YZRv+mVysEJFjki2nlxspnG4C/V
+Q20jXnLAXOpKLiStkNJ15WsnzeoL4eq0AUOYMMmYKAquXXgpVs+xUDv6XathWA2v
+oZkAiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/9
+2xz+kEBpAJ4x7hASmdnDcyFGTyuRHj6NwsDtNwCfRVfqoiRcGmvDRA8U25cPk5XT
+ZYTRzlXOUwEQAAEBAAAAAAAAAAAAAAAA/9j/4AAQSkZJRgABAQEASABIAAD/2wBD
+AAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcp
+LDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACMAG4D
+AREAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAABgcEBQACAwEI/8QAQhAAAQIE
+BAIGBgYIBwEAAAAAAQIDAAQFEQYSITFBURMUImFxsQcjMoGRwUJDUmJjchUlNTaC
+odHwFiYzc4OS4bL/xAAZAQADAQEBAAAAAAAAAAAAAAAAAQIDBAX/xAAgEQEBAAID
+AQEBAQEBAAAAAAAAAQIRAyExQRJREyIy/9oADAMBAAIRAxEAPwB2JHaECEjiPGA4
+6GA3kMMgDy8AZAGQAp8XD/Nc5+VP/wAiJT9GeBv3e/5VQ4cEu8M3sAZAGQBFT7Qh
+JSOUBt4DZYww8O0AeQB5cc4AgzNXk5dfRh1Dj1r9Ghab/wAzpE3KQFdiSotTGIph
+4trQFpAFyDwtwjO8mqqYbHeByDQNCD61R0jTGyzcTrQmigyAMsYAyxgCtTNt5hqI
+SUnrKOYgN06yjnCVtnWUc4BtyenmWGVuurSlttJUpR2AGpMGyKbEHpZm3ulapLSW
+GTcIdWm6yOZ1sIj92q0Cf8UVp2Y6b9IOIVtZkkD366xOzkjujFc83mROKZcCjc9M
+kE/1hbV+Yq1VhC3TkUEKvcWNxE6UY3o4xKpueVIuKGRaSoWO5GsXhdXSM59Nhucb
+cbStJFlAEeEa7Q26yj7UPdJ71pv7Qhboedab+0Iexsu2p2ZuD0sJltZom5gkEuaQ
+jldxMPkZuk0gW2E05cetgIvfSJihZY/RcvODKpXr0NntKA4HkCeHdEWrkLBc67fK
+EoF+Khc/CEuMYZn5tYyMFwX0KQRbwtCtkXMbUk4eqBKgpC9eYN4n9xf+Vczh+fYv
+maUoDUHlD/cF47EmlTz0hPtFalsrQsdoGxtx1hs7DpolaTO5JZl7sdHmZPNKbAjx
+Fx7jFY34ys+rcl4/XGL0jbVQmODpgsG2JD/F1UVIVqmRKgcT8YbNcy8qOrqO/ZiL
+6uRLTKAU8WGloF/A3WpgUqjTc8gjOy0Si+2bYQr1C9pAzM469NOuKdUpxxRN766x
+LUXYWw6mYbEw+m9zpeMc8/kdPHh/THp9LaYQAlCR4CMvXRNLASSCbqSOUGha0ekW
+ym2QW8INBRVbCkjUJJ1BbCHCLpcA1SeBiscrEZ4ygLD1XmaFXUNzCypcutSSgnTX
+Q2jbf2OTLH5TvkHGpuVbfTey0hWpvvHRjdxzWdrJiXSraHRi1cZQlVjDhUFGqNgX
+zDaCxAtpjgepRcHFMQvHxaNIzUoG30YF/Cl9JM0sYVW2nNZb6EqI5an5ROXgw9LX
+DEiieniVpBCNLGMuTLUdPHNmzTpdEu2lKUgJHARzW9uqToQy1iBDhpRtaKJ4bFO0
+A+oTygLxKiXxS2WMSqWNFGyzaN8L/wAuXlnY9whWn2qX0SyS2k3bJ5co14/45uXX
+pjYYnOvpcUdcpt/KNazxaVWotys8W1HWwMBX0s0yM8sWyDbTtCK2z0ZNBys0INPO
+thwIsRmEQ0x8XLEzLimhBfazBNvaEJfwtMeU0PYXnCVIOSzicqrm4MK+Fj6XeBmg
+3LuuH2s9o5+V2cRgsz7DashKlHiEi8YadMqwYr9NS4lourSs8FIMVoerxDzTiLg7
+xW4WkWZqkhK9mYm2m1HYKO8IIipyXmFXYeQsDkYiztW+iwxmwheJAyDYrQlV78yY
+34/HNy+jOkUZCqQyEzLbRCbZSNY6OOfXHyW0Y4TXK0lp1ExNt3Uq4+EXU49K3Eja
+ahVS/LTSMmQJhwspuhRc20nUz7dvGIDZmYbWq6ZtKtDteAK1AeW0XElwoG6glRA9
+8JfTkp7MhSOnGoI3MTlLpWNm44YdkhKiYlr3UHLE8zaObO7jswx1dLadROyqkplz
+kSsi6xwiJZb231Z4i081l0zJnnAgIUOg49IL8deWusVlMNdFj/pvsZ0guO0txbg9
+Yi4FuNoz1dKvoPrM1WOtN9Tlm3hm7YNiUjgf75ReEx13U5/rf/MWtPdmzNOMvNhS
+Uq7DgTa45wrZL0NWzsP4ukutYokg3bpFNpzC17gE8PCNuPxy8vq1ammGWg31lQt9
+wxvjLI5rd1IYdMySJdb7pG/RsqV8orsumrs0GHC286+2sbpUyoHygLcQQhpSkHKk
+gnlFMqaOHZdkUI2Zb9k/RETV4+L2ntNijpSEJtk2AhxfwAzbTIdc9UjQn6IgjOg8
+ASlaW1fTQ352J1jhynseljd2X+ixltuYbGZIULcYjTqk6Y9KtMsKUEITpuBBelad
+6SvNT1FI02EOeM/XPqMu+c/RpUR3awo0+OqZZtkWQkCFpNnSfhuiSk3PzFYdZSp6
+XXkaWe5JGngSfjHXwzp53PQfOPFM1Mg7dKoD4x0uQZejxZWzM34OfKFVYIGMr/pw
+AH6seZhxOXoClnCpSQf71gSbmHf2D/CYmrx8XdO/Y6b75YIv4AZ0WcdP3j5xTOl7
+UOtMYkPS3U0U5m1HdQO49x090cvLjJt18Wdup/BfSpglsDhHNvT0ML0ytTWVlCm5
+hKXG1ZshTmze6FO7s8spEalVqeZQ+2uUzIOqFIQRvwsdovxHqdKz6lqz5wHL9pGX
+KbRF3LtpLPE1+ZyIzngLxU7RnlqC7CssZfDDeY3W6OkV4nWO3jx1HmZ5fqlhU05a
+g+k8XFecbRz0aejtIS3M2+2PKFkrBExgi9bB/DHmYIWfpdygs4k+ECThw5rQP4TC
+q8fF1TtaQm/2YS/gAqH+o9+Y+cUyoWxNklaVIzJSi/WVoJ2Psgxjyzrpvw3vtrSZ
+4XzZzkWNDyMcWUehhk7Lpk7Jzhf6wtTLlipIAKx/FBLNaaY49rlpMsWdVzpNtgtO
+/wAItprP+xBNPmUTInFzDnQJUAlpdlFPffv5RGV+M8vfXs9N5gWxYlZypHO8XxY7
+sjDlz1jaaVDFsPsDk2PKO5wTwqKwgmpPH8Q+cWxo09HySG5m/wBseULJeCNjAE1Z
+On0PmYIMi8ZFn0i0NmbeGz+oB+U+cTWmPi6p6gqlAjbLCXPC2xDPJpsnOTa05g1m
+OUfSN9BDt0zk3dF+1XprF9BmGX5Zlhlp3MwpBJUVW1uT7o5+XPVjq4uP1UyFWXIu
+dXfAQ6g+0rYjmIzuP67jWZfnqmXR6tIz8olsrvbTX+sYXCyujDOWLhFNkmLv5la8
+OkNoeulb0HazX2ULLSVZGxcbjwiphazyzkQKMtycfdnHgRlA6FJ5Hj746+HCTtwc
+/JbdHNQ1ZqAyfwx5RpU4+FnUtZ5/T6xXnF7ZaGGBT6t8Wt2h5Qsl4oWK1XrOX8MH
++ZggsLmUN3UlXdDZG5hz9hC3IxFaY+Leln9Tp/LAv4RnpEqahUxIJPqkErcAO5US
+Nfd5wqWE+oWFZNtmTYlEG6bE35m+scXLv9Xbv4pNPK9hhbt1JbVobpUOELDPR54b
+DDTlTo7pBbK0g7jjGu8cmWssVpMY3qEzLpl0srFhYgA3I+EKYRV5MrHeh0KerlVQ
+/UG1NSvtKSrQqHL3w8spjOk443K9iOj1aVqU3PBgpSQuyUfdT2QR3aCOnj6mnLyz
+vZyUD93mf9sRVGPhbz6gZ18X+tV5xWmWxfgdeZDwtqFfKFkvFVYxWUV5JHFr5wQZ
+eoLHo+m21AmbR/1/9hbT+aNqVTHKdTjLqWFGxFwIVVjNRS1fGdOwpTTJqUJufCbB
+hs6A/ePDw3hKkIGqzj9QemZ15RW46orUfE/KBUTqDVxITjZevkvfSMuTj/U6bcef
+5vZryjrM3LocQpK0LFwRqDHJZ/XXL9jSYpjDuvRI8csJSKaWhBu20gHnYQi1GPI6
+tJulBAWoGyu+KhXwmqa9N0esKbKih9lw5rbf2fIx3Y3fccOWPyvqHB861UsKyr7S
+hZaMqkj6KhoR/fdFbZya6QH8DtPPrdM04CtRVaw4xX6R+FrQ6EmilwJeU4Fm/agt
+2cx0gV3DT1WqImEzCUAIy2y34wbFxBLWO6iUlSsgA3JhaR+rVZW/SJVJ1gyss6WE
+EWWtGi1DlfgPCE0k/oEecU4sklVz3wKQ7WcUyq2VYJT8x84DaS4DjRaX7aNP/YAJ
+sK4lVRpoSk8SZN09le/Rq5+HMRjycf67nrbj5Pz1fDWllNzDCXEKStChdKkm4UOY
+jm18rp3/AB4tnXQQtK2qag2S6G+65gKlJWQhzFs84kdkry+8C0dfF/5cvJ6JMO4w
+qeHWnGpZ31CiFKbUnMkm1r24HbaNWFgrlPSS/NKQkvNt3PaJJ0hzSLL8HWHKoupv
+qzPBxNgRlMOyQsbbe0bEdZnqbUQ1LrbyFN+2qx3hyDLLVJWamweyDoNkxC5jpXrW
+V7QG4lRO1r84DR5hpbqUqSrK4ghST3/0gPTmhwOuIeQLH2VjlASUUh1JSRfXUQGn
+UrGUzhR9ptbinZZau00o3FufcfD+cRlhMl48lxNuk12RrcqJiTdC08Qd0+Mc2WNl
+1XVjlMpuK/EU+mlyz02QCVdlNzbW0TMbbpWVkm6S70+/1t0hpokqvmNySd47ccZJ
+pw223bnKTU4mdbadc6Rp0ELSRsddRDSnq6RhwkXAuFAwGJsLYvn8NzqX2CHWFH1j
+K9ljuPA98BWbG9dqTGJ52Vnqcq7a2LqSrQoObVJ74ueMMuqVSlG+u8Q6HNSiIA8J
+SdYA8NucAQVlUrNlxKFKbXbOEi5B52hBKXMC3qknMRuRDCKqX6W/SDPffNxgDrTl
+zNImumkHXGuYQsix7v6QrJfTls8XFYxBO10s9YASptOWw0BPFXjE44TGqz5LlNVT
+mXGc+MWh6ZZKilRSCU8YA7FG45jSAMaJSgDkbQBd0SsPUxbuUZkKHsnnzh70jLHa
+qHHxiVtV6JvDDjt8YA3ygI4wBrlGf3QBsEjLtAbLDlAG6QIQcrdpR5GGTpYWvAGx
+FlECAPLa35QBooBPSW4C8ASZXVRvyhlX/9mJAk4EEwEIADgWIQT4KAb9ob9bmhsw
+FOfJ/O1spreUVAUCW/AHrgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ
+/O1spreUVJ4nD/9tGS8cg2eUSwd0ExCl0dWsJRdM0mUYh17mXyVNLcvbglIkSdma
+v/Ty3ke533izRN/SkkU8vNthjKAohZmmXlaXrruEyHq2vfXcDg4+C7FJQ+O3PT2B
+S5ft3Ht2GmRpD2lWpeUlJ9BXF2EF5pSnHPOrlTHRUfjBCDU4uuSeKgioSyoc2iWb
+BBaSXyeQAUR+ppM1AYKUlCDxpLbe3nVCOUc+JgJzv+47EqwMyVODwzk7oFO4GMRm
+KTKlctb1ym75oV1tiZi2fL/KA2uAab/RMO0rfxa9HVWnJGvUEDMPlTfs7222zuLB
+55Fzllfx5rQlou+MLBQIV978HRZrDxZesQOOJ4/BwTPgQ42GREf+uf5/SG4Fn3Qh
+NZsvoaePMLN/QQEjM7eqOUzRJRVcdJfRH+LinIFrAqcmbbcp1bvq8LV5lbmlFJLF
+gimvW/shf/6Zu1YsfBhvLWInUCyoOPFa1tASF6qqi1hEOd8tQgNE/H/FSIehmTHT
+74kYPNRm+DzlvrW2JPVl24Nf/SWbOG/IzGBY/pDActTwYqnpXKR7eUt/YcPpmrPi
+kyIKX32U2vTBCE3yvCm0KRzrcSbTJGfVgmlxxqIuOtbeaBtf96m+o5z/xw9ro7Ek
+VZbsx6fPuWuLY/MqeLXl1EuiU6X1sr+skDY8lJeeiRt+Uq5mCZuEgWdM1IhdBBAR
+AgAdFiEE3DhHSHCdJhn/KGchbQyv/dsc/pAFAlvwCAQACgkQbQyv/dsc/pABQACf
+YaUOqzlafrzeGdwHwDleootu0UcAn2adbaKJ79QBtDVPkR77zV801JlXuQINBFvw
+A+gBEACt8AiUTMcyNXwN6kiOLPd+85IPlLwEVyofz8p2QBAxJsqKozlXXpnK7ahC
+RSiHt02EK39WiyZpeY1/2dGmdvyI1vc7ld3814Dveh4nf1GRSpDZ427cxayaclh+
+wRQ8nDWFOQUsMB3He/Z+aO6l/ZNvdVdzRUHda1XvN41nwXUL9FQUn/TLYgHbxa7P
+Yy18ZnNzH/xGSwDgRrqPEAZ8KOpbHEbNyYuYuv6IM8Xmbp8Q6bl2RyBNnrlphksJ
+kLvO6RLHUvvw5uX5bt+u3umoZ+yHUkP13NtQHTyZ8VTCQimkB6OisisOTnV8OjLG
+xtLEF/TjeGFAAoEnc8bQAPvrtONQL19rPkMB0gXYXPBbGw7eWYr3QpuOujUXcz9U
+0JSSEov7cUepdTY8LEYFw8U5WimKY6f/uJUVx/ukNPtuAljJji0cjIGEOX2XGlBV
+Ix/U3vywLBfUFW5hT+75z7UB3yG3Zexo0WSaQxxZ5PHxyPYBK1PvVkH0LvkbxJcr
+rouJJQ66chjRglUbv4lf85/cG1ZLu3Ds0UbuD0gE9sAEwXtfdgDmp/HB7mxwJr1O
+BRbTRv0Okx/lovWXkxt+hX+DXZ1u1qdZUW3zjmge8W7xag3epD21jIjFDODgUfDT
+fgJi2FQq+szpagfPN5j5aIQKHCZf0DLbBD+ZWYQdld5JZs2V5QARAQABiQI2BBgB
+CAAgFiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvwA+gCGwwACgkQyfztbKa3lFTa
+yxAAxQo/9dvOO74J+9XznCYb5iO1B1ksnVegSGVuId45JKXkCkuWvDOkcU8+ma38
+wo3MBoPLpSMCXc/mKQ0p0ntO1tD/Wf4nBBCvseWcsR6RR5Su5jYorm0qZ89IOEPN
+K2W2Z41X6DHyteB1dAyIyexOYoLKD7iWcQzga4/EoUPEwcr8BWWgGLBfRhXsYySz
+F3fQPS7KaemDLGbJfTDZCSqmsZPnlksSvGxEBwUwfCjfY+QHxzWPRFPkuQJJR6YW
+tiZ3z7jBRdRk/R5v2CJZJuGHcPPYQy6j2TYGONojm+ifaq1hz+A0aoy4P9qRW5Nl
+mm6yiqEoJe07DrMLxn3H3ucuOo7DiNWmkkjW8DfhFSd+3pFMSvKGujOJWN27UDEp
+ERWFX50gE15Sq4aPbMPNRejFQ1n75B4jfFQXg6WuwF3kwgHK3Y5T5vTEkbPgce9c
+SyyFWU7EA4DJGnt7/FoaPDTKOWI9WSkmjOSABTBNSaUiMSFA3Wg/T0aS5pETpkv2
+S/GVVX022orAGK8zEY1vr2a24itOAKpQwFRuMjqDCBVgKAsMtlPu8jv3Zm/AMcYM
+sRRnDWJh2TO8bqXXUG/o783fcTE3d1Ff7s4BfmBqpGHigZeehNvu+FshRDYaDrDN
+IS0fTqbsX/JjaCXwU/o2E6G4aE79Ut/IMsCYzItTDh2UmcS5Ag0EW/G8wgEQALBi
+2/A7Ev/92mYi4Gm//IJEKjm2Vc3NcX5LdSyPwdSLlHSRwvzZz7M0VeflcTYqssto
+VPVf4maDtLGbQJn43CLqjvIW/C6jzjfvoZf0gbHpNfKY1ENs5xgE0wd3ZdsqpQC6
+W9Pu+kN31QS9+RUKwiG2bNBIREChL/omqiLhNu3hDbZnB+uSByOk901XVrNmKa8G
+NzXSfJSCt0gP7XU6VpMqjxppA8Y2Vo7jnylbrgVJriTt6jtjDylBBQqmHSOXMT+q
+9kIWDSocKhSFHBMO6LYnAwbMef2kqio5zaKzZAuwis0zjOqKHwW54xL2T7djFav9
+VlgcAYN105iMLUiIl39HLeZnS5pUESOXRUv/qLwiQRvBlWBPIep3+ycM2eK8r5a1
+5EwCgN2nSl3KYjzTOisCmK1nQs+gQ1RMraeBGYEG0uIUvDxfoONTuYkM3dhWq2Xx
+V/OO6yUkfyOlBGUREe1PXAOsP0LtAFJha7kbh7Eg6GGU7gRYh2dG2Ln6Vmx1ldbS
+F3woFYPGNMsQmgEKxwyjKaq0Qhd/sKHrTpPz8PXfGP4dHegExKegS7Yof1VrKBB+
+L8Q8o1Oi8JPCjRp47iga5OYS1Vn3h5a07ajzSAxPsmF0lmF4tYk2MFxSs403ShiE
+BTjN4t6rjmnoQV/b+CuhpmvzxaYr736/jkY7s0I5ABEBAAGJBGwEGAEIACAWIQT4
+KAb9ob9bmhswFOfJ/O1spreUVAUCW/G8wgIbAgJACRDJ/O1spreUVMF0IAQZAQgA
+HRYhBB2wOl45wX3kd77c+/0dTvV/qVkCBQJb8bzCAAoJEP0dTvV/qVkC3tUP/2rR
+VDaSPj9+UYJtHGDfQmYCEqxROm5wGCJbNrUQspLeL8+XrsaUDh1ldNAQtoDqGjRp
+kwjJAS0OZfvCv7pI052NK/KVGaK5Tj2+0lxTAcGbAKoH8E2HWPlERpU9CRLvzvDE
+4GGxw2nw7aobNGbf9d98c9RpZuAul92BOClnpGEU4VzjKUk9IsSjZQVJnggQujxL
+qWWiwfGwVsj2PdgPao/P48cYNl5CACBgY19AAh7WzgJVz/6je/5NLdAAV+E31qSE
+EaZsvTBqrMOtH6iTn1GpJ73FsJ0BYVt9X99bRT0Vi0iWulBuhYfZG4PdCY6fv6uC
+d+6pAC+Y/M9npaLbBHscSlJheTyvfuB7bzYBY+Q87VHSOMuNni7U08FuiILFoF+e
+/ESU/v0Hde44ghiXKSaFO8djxc874KM9UlGWvw9UbmI8Z2uM0kDcrPZ/8tcjXOhp
+PEBib54ab4tKCUCtOmsF9ZiT0hOqYdP9bXW+6OGfCignJ7ABhPpANfx2Sn/28L9l
+PbF1nA5CkHdyo/ku1Z/lNq44yvrB8r0Ljq6s3KS69dUZqqrADeogOdi0/TrghtKU
+DERWGmQagYSzMIvsXoAI56MxXFLriSObmpFLTWq7cr/+Ju3AcaSkrpDSYi3U6vLL
+8NuXPhul1S/+yPwvX6Mk1Zkip9/Wg4SQeiT2R7xj8zMP/RJ8uKbnKpOftY89Kv0Y
+FZ4hE3FeBR3UJvkuPdQYNLQRluzh63Bzc4ClSxB9Ma7fmAEiuFtgEi4HLTMBDOHO
+uVMuWYcgubu9VBlAGLJ++gnKxCAJXEntuB49il8MjMsy+uv/cFCjPG9z/1pmWYrE
+XBNA+vcaOrNTS2IykAbqybcPYbBcN47bm+A4i5yqiahk0q++j4LOW/nf88xXO7xI
+V/4vQgemh7RHgHJOkKfzOPw/Kx3UjV1jA9gEUrusHE4R3Upxh0ZeQW19hUnVlao1
+TxxKEUryrRzckuRfc5ziMWNyJaZsPMkeBEhyY/CizDFPrsSXIAijfu8KFnxCsnaM
+ylFBWOu5FwsKMDXxu0QdwqpL2CM8p+q12z1VruNjpIc8bAc0/YMndjYnxzsqQEMV
+GQIDKWqh/m6v7sqbn65ZQcVAzSAriGcQxCOIoT/TA/J+/4BSk5c8TKlqT8NBT77B
+Z70vMr41mZus1A/ciI8AxgbYwlhuvTehdm74k/c7NSzTxeG3OumTlBR1I18C4AIi
+y4iM3O4H4jvEssWBUzpm3VJG0NvcN/M4YVZHX5yxWQuIFcghzb7sLYddmRvR9B0M
+Xowot//r/sgn43xv54sIvwe9MkCCU6j7ePYUlOUnn+vQ5i7rFN/UPub3V3toI2gg
+DRuKdymWEii1jA9KlmheLTFr
+=r9L+
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/systems/zoldene/base.nix b/systems/zoldene/base.nix
new file mode 100644
index 0000000..8ca5d52
--- /dev/null
+++ b/systems/zoldene/base.nix
@@ -0,0 +1,122 @@
+{ name, config, lib, pkgs, secrets, ... }:
+let
+ # udev rules to be able to boot from qemu in a rescue
+ udev-qemu-rules =
+ let disks = config.disko.devices.disk;
+ in builtins.concatStringsSep "\n" (lib.imap1 (i: d: ''
+ SUBSYSTEM=="block", KERNEL=="sd*", ENV{DEVTYPE}=="disk", ENV{ID_MODEL}=="QEMU_HARDDISK", ENV{ID_SERIAL_SHORT}=="QM0000${builtins.toString i}", SYMLINK+="${lib.removePrefix "/dev/" disks."${d}".device}"
+ SUBSYSTEM=="block", KERNEL=="sd*", ENV{DEVTYPE}=="partition", ENV{ID_MODEL}=="QEMU_HARDDISK", ENV{ID_SERIAL_SHORT}=="QM0000${builtins.toString i}", SYMLINK+="${lib.removePrefix "/dev/" disks."${d}".device}-part%E{PARTN}"
+ '') (builtins.attrNames disks));
+in
+{
+ services.openssh = {
+ settings.KbdInteractiveAuthentication = false;
+ hostKeys = [
+ {
+ path = "/persist/zpool/etc/ssh/ssh_host_ed25519_key";
+ type = "ed25519";
+ }
+ {
+ path = "/persist/zpool/etc/ssh/ssh_host_rsa_key";
+ type = "rsa";
+ bits = 4096;
+ }
+ ];
+ };
+
+ system.stateVersion = "23.05";
+
+ # Useful when booting from qemu in rescue
+ console = {
+ earlySetup = true;
+ keyMap = "fr";
+ };
+
+ services.udev.extraRules = udev-qemu-rules;
+ fileSystems."/persist/zfast".neededForBoot = true;
+ boot = {
+ zfs.forceImportAll = true; # needed for the first boot after
+ # install, because nixos-anywhere
+ # doesn't export filesystems properly
+ # after install (only affects fs not
+ # needed for boot, see fsNeededForBoot
+ # in nixos/lib/utils.nix
+ kernelParams = [ "boot.shell_on_fail" ];
+ loader.grub.devices = [
+ config.disko.devices.disk.sda.device
+ config.disko.devices.disk.sdb.device
+ ];
+ extraModulePackages = [ ];
+ kernelModules = [ "kvm-intel" ];
+ supportedFilesystems = [ "zfs" ];
+ kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
+ initrd = {
+ postDeviceCommands = lib.mkAfter ''
+ zfs rollback -r zfast/root@blank
+ '';
+ services.udev.rules = udev-qemu-rules;
+ availableKernelModules = [ "e1000e" "ahci" "sd_mod" ];
+ network = {
+ enable = true;
+ postCommands = "echo 'cryptsetup-askpass' >> /root/.profile";
+ flushBeforeStage2 = true;
+ ssh = {
+ enable = true;
+ port = 2222;
+ authorizedKeys = config.users.extraUsers.root.openssh.authorizedKeys.keys;
+ hostKeys = [
+ "/boot/initrdSecrets/ssh_host_rsa_key"
+ "/boot/initrdSecrets/ssh_host_ed25519_key"
+ ];
+ };
+ };
+ };
+ };
+ networking = {
+ hostId = "6251d3d5";
+ firewall.enable = false;
+ firewall.allowedUDPPorts = [ 43484 ];
+ # needed for initrd proper network setup too
+ useDHCP = lib.mkDefault true;
+
+ wireguard.interfaces.wg0 = {
+ generatePrivateKeyFile = true;
+ privateKeyFile = "/persist/zpool/etc/wireguard/wg0";
+ #presharedKeyFile = config.secrets.fullPaths."wireguard/preshared_key";
+ listenPort = 43484;
+
+ ips = [
+ "192.168.1.25/24"
+ ];
+ peers = [
+ ];
+ };
+ };
+
+ powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
+ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+ hardware.enableRedistributableFirmware = lib.mkDefault true;
+ system.activationScripts.createDatasets = {
+ deps = [ ];
+ text = ''
+ PATH=${pkgs.zfs}/bin:$PATH
+ '' + builtins.concatStringsSep "\n" (lib.mapAttrsToList (name: c: ''
+ if ! zfs list "${c._parent.name}/${name}" 2>/dev/null >/dev/null; then
+ ${c._create { zpool = c._parent.name; }}
+ fi
+ '') (config.disko.devices.zpool.zfast.datasets // config.disko.devices.zpool.zpool.datasets));
+ };
+
+ secrets.keys."wireguard/preshared_key/eldiron" = {
+ permissions = "0400";
+ user = "root";
+ group = "root";
+ text = let
+ key = builtins.concatStringsSep "_" (builtins.sort builtins.lessThan [ name "eldiron" ]);
+ in
+ "{{ .wireguard.preshared_keys.${key} }}";
+ };
+ secrets.decryptKey = "/persist/zpool/etc/ssh/ssh_host_ed25519_key";
+ # ssh-keyscan zoldene | nix-shell -p ssh-to-age --run ssh-to-age
+ secrets.ageKeys = [ "age1rqr7qdpjm8fy9nf3x07fa824v87n40g0ljrgdysuayuklnvhcynq4c8en8" ];
+}
diff --git a/systems/zoldene/disko.nix b/systems/zoldene/disko.nix
new file mode 100644
index 0000000..7df5697
--- /dev/null
+++ b/systems/zoldene/disko.nix
@@ -0,0 +1,87 @@
+{ cryptKeyFile, ... }: {
+ disko.devices = let
+ zpoolDatasets = {
+ "root" = { type = "zfs_fs"; options.mountpoint = "none"; };
+ "root/persist" = { type = "zfs_fs"; mountpoint = "/persist/zpool"; options.mountpoint = "legacy"; };
+ };
+ zfastDatasets = {
+ "root" = { type = "zfs_fs"; mountpoint = "/"; options.mountpoint = "legacy"; postCreateHook = "zfs snapshot zfast/root@blank"; };
+ "root/nix" = { type = "zfs_fs"; mountpoint = "/nix"; options.mountpoint = "legacy"; };
+ "root/persist" = { type = "zfs_fs"; mountpoint = "/persist/zfast"; options.mountpoint = "legacy"; };
+ "root/persist/var" = { type = "zfs_fs"; mountpoint = "/persist/zfast/var"; options.mountpoint = "legacy"; };
+ "root/persist/var/lib" = { type = "zfs_fs"; mountpoint = "/persist/zfast/var/lib"; options.mountpoint = "legacy"; };
+ };
+ in {
+ disk = {
+ sda = {
+ type = "disk";
+ device = "/dev/disk/by-id/ata-SAMSUNG_MZ7LM480HCHP-00003_S1YJNYAG700613";
+ content = {
+ type = "table";
+ format = "gpt";
+ partitions = [
+ { start = "2GiB"; end = "-8GiB"; name = "ssdLuksA"; content = { type = "luks"; name = "ssdA"; keyFile = cryptKeyFile; content = { type = "zfs"; pool = "zfast"; }; }; }
+ { start = "-8GiB"; end = "-2MiB"; name = "swapA"; flags = [ "swap" ]; content = { type = "swap"; }; }
+ { start = "2048s"; end = "4095s"; name = "ssdGrubA"; flags = [ "bios_grub" ]; }
+ { start = "4096s"; end = "2GiB"; name = "ssdBootA"; content = { type = "filesystem"; format = "ext4"; mountpoint = "/boot"; }; }
+ ];
+ };
+ };
+ sdb = {
+ type = "disk";
+ device = "/dev/disk/by-id/ata-SAMSUNG_MZ7LM480HCHP-00003_S1YJNYAG700682";
+ content = {
+ type = "table";
+ format = "gpt";
+ partitions = [
+ { start = "2GiB"; end = "-8GiB"; name = "ssdLuksB"; content = { type = "luks"; name = "ssdB"; keyFile = cryptKeyFile; content = { type = "zfs"; pool = "zfast"; }; }; }
+ { start = "-8GiB"; end = "-2MiB"; name = "swapB"; flags = [ "swap" ]; content = { type = "swap"; }; }
+ { start = "2048s"; end = "4095s"; name = "ssdGrubB"; flags = [ "bios_grub" ]; }
+ #{ start = "4096s"; end = "2GiB"; name = "ssdBootB"; content = { type = "filesystem"; format = "ext4"; }; } # non monté
+ ];
+ };
+ };
+ sdc = {
+ type = "disk";
+ device = "/dev/disk/by-id/ata-ST4000NM0245-1Z2107_ZC110SY1";
+ content = {
+ type = "table";
+ format = "gpt";
+ partitions = [
+ { start = "2048s"; end = "-34s"; name = "hddLuksA"; content = { type = "luks"; name = "bigA"; keyFile = cryptKeyFile; content = { type = "zfs"; pool = "zpool"; }; }; }
+ ];
+ };
+ };
+ sdd = {
+ type = "disk";
+ device = "/dev/disk/by-id/ata-ST4000NM0245-1Z2107_ZC110YXX";
+ content = {
+ type = "table";
+ format = "gpt";
+ partitions = [
+ { start = "2048s"; end = "-34s"; name = "hddLuksB"; content = { type = "luks"; name = "bigB"; keyFile = cryptKeyFile; content = { type = "zfs"; pool = "zpool"; }; }; }
+ ];
+ };
+ };
+ };
+
+ zpool = {
+ zpool = {
+ type = "zpool";
+ mode = "mirror";
+ mountRoot = "/";
+ rootFsOptions = { mountpoint = "none"; atime = "off"; xattr = "sa"; acltype = "posix"; };
+ options = { ashift = "12"; };
+ datasets = zpoolDatasets;
+ };
+ zfast = {
+ type = "zpool";
+ mode = "mirror";
+ mountRoot = "/";
+ rootFsOptions = { mountpoint = "none"; atime = "off"; xattr = "sa"; acltype = "posix"; };
+ options = { ashift = "12"; };
+ datasets = zfastDatasets;
+ };
+ };
+ };
+}
diff --git a/systems/zoldene/flake.lock b/systems/zoldene/flake.lock
new file mode 100644
index 0000000..0a9ba64
--- /dev/null
+++ b/systems/zoldene/flake.lock
@@ -0,0 +1,560 @@
+{
+ "nodes": {
+ "backports": {
+ "inputs": {
+ "flake-utils": "flake-utils_2",
+ "nixpkgs": "nixpkgs_6"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
+ "path": "../../backports",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../backports",
+ "type": "path"
+ }
+ },
+ "colmena": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs",
+ "stable": "stable"
+ },
+ "locked": {
+ "lastModified": 1687954574,
+ "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
+ "owner": "immae",
+ "repo": "colmena",
+ "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "immae",
+ "ref": "add-lib-get-flake",
+ "repo": "colmena",
+ "type": "github"
+ }
+ },
+ "disko": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_2"
+ },
+ "locked": {
+ "lastModified": 1687968164,
+ "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
+ "environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../environment",
+ "type": "path"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib"
+ },
+ "locked": {
+ "lastModified": 1687762428,
+ "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib_2"
+ },
+ "locked": {
+ "lastModified": 1675295133,
+ "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "impermanence": {
+ "locked": {
+ "lastModified": 1684264534,
+ "narHash": "sha256-K0zr+ry3FwIo3rN2U/VWAkCJSgBslBisvfRIPwMbuCQ=",
+ "owner": "nix-community",
+ "repo": "impermanence",
+ "rev": "89253fb1518063556edd5e54509c30ac3089d5e6",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "ref": "master",
+ "repo": "impermanence",
+ "type": "github"
+ }
+ },
+ "my-lib": {
+ "inputs": {
+ "colmena": "colmena",
+ "disko": "disko",
+ "flake-parts": "flake-parts",
+ "nixos-anywhere": "nixos-anywhere",
+ "nixpkgs": "nixpkgs_4"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
+ "path": "../../flakes/lib",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/lib",
+ "type": "path"
+ }
+ },
+ "mypackages": {
+ "inputs": {
+ "flake-parts": "flake-parts_2",
+ "nixpkgs": "nixpkgs_7",
+ "webapps-ttrss": "webapps-ttrss"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
+ "path": "../../mypackages",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../mypackages",
+ "type": "path"
+ }
+ },
+ "myuids": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
+ "path": "../../myuids",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../myuids",
+ "type": "path"
+ }
+ },
+ "nixos-2305": {
+ "locked": {
+ "lastModified": 1687938137,
+ "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixos-anywhere": {
+ "inputs": {
+ "disko": [
+ "my-lib",
+ "disko"
+ ],
+ "flake-parts": [
+ "my-lib",
+ "flake-parts"
+ ],
+ "nixos-2305": "nixos-2305",
+ "nixos-images": "nixos-images",
+ "nixpkgs": "nixpkgs_3",
+ "treefmt-nix": "treefmt-nix"
+ },
+ "locked": {
+ "lastModified": 1689945193,
+ "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "rev": "27161266077a177ac116e2cb72cc70af5f145189",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "nixos-anywhere",
+ "type": "github"
+ }
+ },
+ "nixos-images": {
+ "inputs": {
+ "nixos-2305": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixos-2305"
+ ],
+ "nixos-unstable": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1686819168,
+ "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixos-images",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1685564631,
+ "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib_2": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1675183161,
+ "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1687701825,
+ "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1687893427,
+ "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4b14ab2a916508442e685089672681dff46805be",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable-small",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1648725829,
+ "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
+ "locked": {
+ "lastModified": 1693158576,
+ "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_6": {
+ "locked": {
+ "lastModified": 1687502512,
+ "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_7": {
+ "locked": {
+ "lastModified": 1646497237,
+ "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
+ "type": "github"
+ }
+ },
+ "private-environment": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/environment",
+ "type": "path"
+ }
+ },
+ "private-system": {
+ "inputs": {
+ "backports": "backports",
+ "environment": "environment",
+ "mypackages": "mypackages",
+ "myuids": "myuids",
+ "secrets-public": "secrets-public"
+ },
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
+ "path": "../../flakes/private/system",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/private/system",
+ "type": "path"
+ }
+ },
+ "public-secrets": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../flakes/secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../flakes/secrets",
+ "type": "path"
+ }
+ },
+ "root": {
+ "inputs": {
+ "impermanence": "impermanence",
+ "my-lib": "my-lib",
+ "nixpkgs": "nixpkgs_5",
+ "private-environment": "private-environment",
+ "private-system": "private-system",
+ "public-secrets": "public-secrets"
+ }
+ },
+ "secrets-public": {
+ "locked": {
+ "lastModified": 1,
+ "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
+ "path": "../../secrets",
+ "type": "path"
+ },
+ "original": {
+ "path": "../../secrets",
+ "type": "path"
+ }
+ },
+ "stable": {
+ "locked": {
+ "lastModified": 1669735802,
+ "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "731cc710aeebecbf45a258e977e8b68350549522",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "treefmt-nix": {
+ "inputs": {
+ "nixpkgs": [
+ "my-lib",
+ "nixos-anywhere",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1687940979,
+ "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "0a4f06c27610a99080b69433873885df82003aae",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "webapps-ttrss": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1546759381,
+ "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "revCount": 9256,
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ },
+ "original": {
+ "ref": "master",
+ "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
+ "type": "git",
+ "url": "https://git.tt-rss.org/fox/tt-rss.git"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/systems/zoldene/flake.nix b/systems/zoldene/flake.nix
new file mode 100644
index 0000000..42466e8
--- /dev/null
+++ b/systems/zoldene/flake.nix
@@ -0,0 +1,29 @@
+{
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+ impermanence.url = "github:nix-community/impermanence/master";
+ my-lib.url = "path:../../flakes/lib";
+ public-secrets.url = "path:../../flakes/secrets";
+ private-environment.url = "path:../../flakes/private/environment";
+ private-system.url = "path:../../flakes/private/system";
+ };
+ outputs = inputs@{ self, nixpkgs, my-lib, ... }:
+ my-lib.lib.mkColmenaFlake {
+ name = "zoldene";
+ inherit self nixpkgs;
+ system = "x86_64-linux";
+ targetHost = "88.198.39.152";
+ targetUser = "root";
+ nixosModules = with inputs; {
+ impermanence = impermanence.nixosModule;
+ base = ./base.nix;
+ disko = ./disko.nix;
+ logging = ./logging.nix;
+
+ secrets = public-secrets.nixosModule;
+
+ environment = private-environment.nixosModule;
+ system = private-system.nixosModule;
+ };
+ };
+}
diff --git a/systems/zoldene/logging.nix b/systems/zoldene/logging.nix
new file mode 100644
index 0000000..09ee104
--- /dev/null
+++ b/systems/zoldene/logging.nix
@@ -0,0 +1,138 @@
+{ config, pkgs, name, ... }:
+# Initialization
+# CREATE INDEX ON LOGS (tag);
+# CREATE INDEX ON LOGS (time);
+# CREATE INDEX ON LOGS (((data->>'PRIORITY')::int));
+# CREATE INDEX ON LOGS ((data->>'_SYSTEMD_UNIT'));
+# CREATE INDEX ON LOGS ((data->>'SYSLOG_IDENTIFIER'));
+let
+ fluent-bit-config = {
+ pipeline = {
+ inputs = [
+ {
+ name = "systemd";
+ tag = "${name}.systemd";
+ DB = "/var/lib/fluentbit/fluent-bit.db";
+ }
+ ];
+ outputs = [
+ {
+ name = "loki";
+ match = "${name}.systemd";
+ line_format = "json";
+ labels = "job=fluentbit, server=${name}, priority=$PRIORITY, syslog_identifier=$SYSLOG_IDENTIFIER, systemd_unit=$_SYSTEMD_UNIT";
+ }
+ {
+ name = "pgsql";
+ match = "*";
+ host = "/run/postgresql";
+ user = "fluentbit";
+ table = "logs";
+ database = "fluentbit";
+ timestamp_key = "event_timestamp";
+ }
+ ];
+ };
+ };
+ yamlFormat = pkgs.formats.yaml {};
+ psqlVersion = pkgs.postgresql_13.psqlSchema;
+in
+{
+ disko.devices.zpool.zfast.datasets."root/persist/var/lib/loki" =
+ { type = "zfs_fs"; mountpoint = "/persist/zfast/var/lib/loki"; options.mountpoint = "legacy"; };
+ disko.devices.zpool.zfast.datasets."root/persist/var/lib/fluentbit" =
+ { type = "zfs_fs"; mountpoint = "/persist/zfast/var/lib/fluentbit"; options.mountpoint = "legacy"; };
+ disko.devices.zpool.zfast.datasets."root/persist/var/lib/postgresql" =
+ { type = "zfs_fs"; mountpoint = "/persist/zfast/var/lib/postgresql"; options.mountpoint = "legacy"; };
+ disko.devices.zpool.zfast.datasets."root/persist/var/lib/postgresql/${psqlVersion}" =
+ { type = "zfs_fs"; mountpoint = "/persist/zfast/var/lib/postgresql/${psqlVersion}"; options.mountpoint = "legacy"; };
+ environment.persistence."/persist/zfast".directories = [
+ {
+ directory = "/var/lib/postgresql";
+ user = config.users.users.postgres.name;
+ group = config.users.users.postgres.group;
+ mode = "0755";
+ }
+ {
+ directory = "/var/lib/fluentbit";
+ user = config.users.users.fluentbit.name;
+ group = config.users.users.fluentbit.group;
+ mode = "0755";
+ }
+ {
+ directory = "/var/lib/loki";
+ user = config.users.users.loki.name;
+ group = config.users.users.loki.group;
+ mode = "0755";
+ }
+ ];
+
+ ids.uids.fluentbit = 500;
+ ids.gids.fluentbit = 500;
+ users.users.fluentbit = {
+ name = "fluentbit";
+ home = "/var/lib/fluentbit";
+ uid = config.ids.uids.fluentbit;
+ group = "fluentbit";
+ isSystemUser = true;
+ extraGroups = [ "systemd-journal" ];
+ };
+ users.groups.fluentbit.gid = config.ids.gids.fluentbit;
+
+ services.loki = {
+ enable = true;
+ configuration = {
+ auth_enabled = false;
+ common = {
+ ring.kvstore.store = "inmemory";
+ ring.instance_addr = "127.0.0.1";
+ replication_factor = 1;
+ path_prefix = "/var/lib/loki";
+ };
+ server.log_level = "warn";
+ limits_config = {
+ reject_old_samples = false;
+ ingestion_rate_mb = 100;
+ ingestion_burst_size_mb = 200;
+ per_stream_rate_limit = "100MB";
+ per_stream_rate_limit_burst = "200MB";
+ };
+
+ schema_config.configs = [
+ {
+ from = "2020-10-24";
+ store = "boltdb-shipper";
+ object_store = "filesystem";
+ schema = "v11";
+ index.prefix = "index_";
+ index.period = "24h";
+ }
+ ];
+ };
+ };
+ services.postgresql = {
+ enable = true;
+ package = pkgs.postgresql_13;
+ ensureDatabases = [ "fluentbit" ];
+ ensureUsers = [
+ {
+ name = "fluentbit";
+ ensurePermissions."DATABASE \"fluentbit\"" = "ALL PRIVILEGES";
+ }
+ ];
+ };
+
+ environment.systemPackages = [
+ pkgs.fluent-bit
+ ];
+ systemd.services.fluent-bit = {
+ description = "Fluent-bit daemon";
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ ExecStart = "${pkgs.fluent-bit}/bin/fluent-bit -c ${yamlFormat.generate "fluent.yaml" fluent-bit-config}";
+ User = "fluentbit";
+ Group = "fluentbit";
+ SupplementaryGroups = [ "systemd-journal" ];
+ };
+ };
+}
--
cgit v1.2.3